使用树莓派构建私有社交网络

关于如何使用低成本硬件和简单设置来创建你自己的社交网络的逐步说明。
185 位读者喜欢这篇文章。
Team of people around the world

在过去的几年里,社交网络已经彻底改变了人们的生活。人们每天都在使用社交渠道与朋友和家人保持联系。但是,关于隐私和数据安全的一个常见问题仍然存在。即使社交网络已经创建了复杂的隐私政策来保护用户,但如果你不想让你的数据公开,将你的数据维护在你自己的服务器上始终是最佳选择。

同样,一个树莓派——Raspbian Lite 版本非常通用,可以帮助你部署许多有用的家庭服务(另请参阅我的 树莓派项目 文章)。通过搜索开源软件并使用这个神奇的设备进行测试,可以实现一些令人上瘾的功能。一个值得尝试的有趣例子是在你的树莓派中安装 OpenSource Social Network。

什么是 OpenSource Social Network?

OpenSource Social Network (OSSN) 是一款用 PHP 编写的快速开发社交网络软件,它本质上允许你创建一个社交网络网站。OSSN 可用于构建不同类型的社交应用程序,例如

  • 私有 Intranet
  • 公共/开放网络
  • 社区

OSSN 支持诸如以下功能:

  • 照片
  • 个人资料
  • 好友
  • 表情符号
  • 搜索
  • 聊天

OSSN 运行在 LAMP 服务器上。它对硬件要求非常低,但拥有出色的用户界面,而且还对移动设备友好。

我们需要什么

这个项目非常简单,因为我们只安装远程 Web 服务,所以我们只需要一些廉价的零件。我将使用树莓派 3 Model B+,但它也应该适用于树莓派 3 Model A+ 或更新的开发板。

硬件

  • 带有电源的树莓派 3 Model B+
  • 一张 micro SD 卡(最好是性能良好的卡,至少 16GB)
  • 一台带有 SFTP 软件的台式电脑(例如免费的 Filezilla),用于将安装包传输到你的 RPI。

逐步操作步骤

我们将首先设置一个经典的 LAMP 服务器。 然后我们将设置数据库用户并安装 OpenSource Social Network。

1. 安装 Raspbian Buster Lite 操作系统

对于此步骤,你可以简单地按照我的 在你的树莓派中安装 Raspbian Buster Lite 文章进行操作。

确保你的系统是最新的。通过 ssh 终端连接并键入以下命令

sudo apt-get update
sudo apt-get upgrade
2. 安装 LAMP 服务器

LAMP (Linux–Apache–Mysql–Php) 服务器通常附带 MySQL 数据库。在我们的项目中,我们将使用 MariaDB 代替,因为它更轻量级,并且可以与树莓派一起使用。

3. 安装 Apache 服务器

sudo apt-get install apache2 -y
你现在应该可以通过浏览 http://<<你的树莓派 IP 地址>> 来检查 Apache 安装是否正确。

4. 安装 PHP

sudo apt-get install php -y
5. 安装 MariaDB 服务器和 PHP 连接器
sudo apt-get install mariadb-server php-mysql -y
6. 安装 PhpMyAdmin

PhpMyAdmin 在 OpenSource Social Network 中不是强制性的,但我建议你安装它,因为它简化了数据库管理。

sudo apt-get install phpmyadmin
在 phpMyAdmin 设置屏幕中,执行以下步骤
  • 使用空格键选择 apache (强制性),然后按 OK。
  • 选择 Yes 以使用 dbconfig-common 为 phpMyAdmin 配置数据库。
  • 输入你喜欢的 phpMyAdmin 密码,然后按 OK。
  • 再次输入你的 phpMyAdmin 密码以确认,然后按 OK

7. 授予 phpMyAdmin 用户 DB 权限以管理 DB

我们将使用 root 用户(默认密码为空)连接到 MariaDB 以授予权限。请记住在每行命令的末尾使用分号,如下所示

sudo mysql -uroot -p
grant all privileges on *.* to 'phpmyadmin'@'localhost';
flush privileges;
quit
8. 最后,重启 Apache 服务
sudo systemctl restart apache2.service
并通过浏览 http://<<你的树莓派 IP 地址>>/phpmyadmin/ 检查 phpMyAdmin 是否工作。

默认的 phpMyAdmin 登录凭据是

  • 用户:phpmyadmin
  • 密码:你在 phpMyAdmin 安装步骤中设置的密码

安装其他 Open Source Social Network 所需的软件包并设置 PHP

我们需要为 OpenSource Social Network 的首次设置向导准备我们的系统。所需的软件包是

  • PHP 版本 5.6、7.0、7.1 中的任何一个
  • MYSQL 5 OR >
  • APACHE
  • MOD_REWRITE
  • 应启用 PHP 扩展 cURL & Mcrypt
  • PHP GD 扩展
  • PHP ZIP 扩展
  • 启用 PHP 设置 allow_url_fopen
  • PHP JSON 支持
  • PHP XML 支持
  • PHP OpenSSL

因此,我们将使用以下终端命令安装它们

sudo apt-get install php7.3-curl php7.3-gd php7.3-zip php7.3-json php7.3-xml

1. 启用 MOD_REWRITE

sudo a2enmod rewrite
2. 编辑默认的 Apache 配置以使用 mod_rewrite
sudo nano /etc/apache2/sites-available/000-default.conf
3. 添加该部分,以便你的 000-default.conf 文件看起来像如下所示(不包括注释)
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    # SECTION TO ADD --------------------------------
        <Directory /var/www/html>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Require all granted
        </Directory>
    # END SECTION TO ADD --------------------------------
</VirtualHost>
4. 安装 Mcrypt
sudo apt install php-dev libmcrypt-dev php-pear
sudo pecl channel-update pecl.php.net
sudo pecl install mcrypt-1.0.2
5. 通过在 "/etc/php/7.3/apache2/php.ini" 中添加(或取消注释)“extension=mcrypt.so”来启用 Mcrypt 模块
sudo nano /etc/php/7.3/apache2/php.ini
allow_url_fopen 应该已经在 "/etc/php/7.3/apache2/php.ini" 中启用。OpenSSL 应该已经在 php7.3 中安装。

6. 我建议的另一个设置是将 PHP 最大上传文件大小编辑为 16 MB

sudo nano /etc/php/7.3/apache2/php.ini
7. 查找带有 upload_max_filesize 参数的行并将其设置为如下所示
upload_max_filesize = 16M
8. 保存并退出。重启 Apache
sudo systemctl restart apache2.service

安装 OSSN

1. 创建 DB 并设置用户

返回 phpmyadmin 网页(浏览 "http://<<你的树莓派 IP 地址>>/phpmyadmin/")并登录

用户:phpmyadmin

密码:在 phpmyadmin 安装步骤中设置的密码

点击数据库选项卡

创建一个数据库,并记下数据库名称,因为稍后在安装过程中需要输入它。

现在是为 OSSN 创建数据库用户的时候了。 在这个例子中,我将使用以下凭据

用户:ossn_db_user

密码:ossn_db_password

因此,终端命令将是(如果之前没有更改,root 密码仍然为空)

sudo mysql -uroot -p
CREATE USER 'ossn_db_user'@'localhost' IDENTIFIED BY 'ossn_db_password';
GRANT ALL PRIVILEGES ON ossn_db.* TO 'ossn_db_user'@'localhost';
flush privileges;
quit
2. 安装 OSSN 软件

OSSN 下载页面 在你的本地 PC 上下载 OSSN 安装 zip 文件。 在撰写本文时,此文件名为 "ossn-v5.2-1577836800.zip"。

使用你喜欢的 SFTP 软件,通过 SFTP 将整个 zip 文件传输到树莓派上 "/home/pi/download" 路径下的一个新文件夹中。 常见的(默认)SFP 连接参数是

  • 主机:你的树莓派 IP 地址
  • 用户:pi
  • 密码:raspberry (如果你没有更改 pi 的默认密码)
  • 端口:22

返回终端

cd /home/pi/download/ #Enter directory where OSSN installation files have been transferred
unzip ossn-v5.2-1577836800.zip #Extracts all files from zip
cd /var/www/html/ #Enter Apache web directory
sudo rm index.html #Removes Apache default page - we'll use OSSN one
sudo cp -R /home/pi/download/ossn-v5.2-1577836800/* ./ #Copy installation files to web directory
sudo chown -R www-data:www-data ./
创建一个数据文件夹:OSSN 需要一个文件夹来存储数据。 出于安全原因,OSSN 建议在已发布的文档根目录之外创建此文件夹。 因此,我们将创建此 opt-in 文件夹并授予权限
sudo mkdir /opt/ossn_data
sudo chown -R www-data:www-data /opt/ossn_data/
浏览 http://<<你的树莓派 IP 地址>> 以启动安装向导

所有检查都应该没问题。 点击页面底部的 Next 按钮。

阅读许可验证并点击页面底部的 Next 按钮以接受。

输入你选择的数据库用户、密码和 DB 名称。 还要记住输入 OSSN 数据文件夹。 按 Install。

输入你的管理员帐户信息并按 Create 按钮。

现在一切都应该没问题了。 按 Finish 以访问管理仪表板。

因此,可以通过 URL "http://<<你的树莓派 IP 地址>>/administrator" 访问管理面板,而用户链接将是 "http://<<你的树莓派 IP 地址>>"。

本文最初发表在 peppe8o.com 上。 经许可转载。

接下来阅读什么
标签
User profile image.
幸运的丈夫,对开源充满热情。 天生好奇。 为我的根感到自豪,乐于混合和学习不同的根

25 条评论

你好 MF,
我也是 Docker 爱好者! 但是 tyranwyn/ossn 镜像基于 linux/amd64,而树莓派是基于 arm 的架构。 你可以尝试,但几乎无法在 PI 上运行... 如果你想让它在树莓派上的 Docker 中运行,你应该从 apache 创建一个自定义镜像,注入 ossn 包并将其链接到 MariaDB 镜像(都是基于 arm 的)。

回复 作者 MF (未验证)

那个 "Opensource Social Network License"... 它是 OSI 批准的许可证吗? 为什么是新许可证?

尽管标题是 "OpenSource Social Network",但它并不像我们大多数人定义的那样,明确地是 "开源" 的。 简而言之,这是因为他们制作了一个独特的许可证,并且没有将其提交给 OSI 进行评估。

根据他们被指出这一点时的评论来判断,我怀疑他们是否倾向于改变这种状况。请参阅 https://github.com/opensource-socialnetwork/opensource-socialnetwork/is…

就目前情况而言,我很失望地看到 opensource.com 上发表关于此软件的文章,但至少没有关于许可的免责声明。

理想情况下,可以鼓励该项目寻找他们认为合适的,经过 OSI 批准的许可。

@Gerald Waters

我们是一个小团队,专注于开发。我们不是律师,所以很难决定使用哪个许可,我们过去使用 GPL,但更改为我们的自定义许可。代码用于开源目的,但我们希望保留我们的署名。

1. 我们想保留版权
2. 我们想保留“由...驱动”的声明

这就是我们创建自定义许可的目的,如果有任何许可适合这一点,请告诉我们,我们乐于讨论并很高兴更改为 OSI 批准的许可。

回复 作者: Gerald Waters

我们正在审查 Attribution Assurance License,听起来很有希望,它符合上面第 1、2 点。

回复 作者: Arsalan Shah

我们最终决定将许可切换到最近获得 OSI 批准的 Cryptographic Autonomy License 1.0 版。

回复 作者: Gerald Waters

干得漂亮,感谢分享。我个人认为今年夏天可以做这件事来练习,和家人朋友一起玩。

@Gerald Waters

我们是一个专注于开发的小团队,我们不是律师,所以很难找出哪个许可最好。我们唯一想要的是

1. 保留版权声明
2. 保留“由...驱动”的声明

所以现在你建议哪个许可合适?我们会研究一下。

感谢这份非常全面的文档。

我按照安装说明进行到登录 OSS web 设置页面,但是当我输入详细信息时,我遇到了错误

"Access denied for user 'ossn_db_user'@'localhost' (using password: YES)"(用户“ossn_db_user'@'localhost' 访问被拒绝(使用密码:是))

这似乎是数据库权限问题,但我对 MSQL 非常生疏(而且一直都不太擅长!)

如果您能给我任何帮助,我将非常感激,请。
Jim

好的,Jim。我怀疑您的设置缺少以下部分(来自 RPI 终端)。如果您的安装中修改了 OSSN 数据库名称、数据库用户和数据库密码,请使用您修改后的名称,而不是默认的。

sudo mysql -uroot -p
CREATE USER 'ossn_db_user'@'localhost' IDENTIFIED BY 'ossn_db_password';
GRANT ALL PRIVILEGES ON ossn_db.* TO 'ossn_db_user'@'localhost';
flush privileges;
quit

- 第一行将您连接到 mysql 终端控制台。默认密码为空(所以,只需按 ENTER 键)。
- 第二行为 OSSN 创建用户(仅设置为本地连接并使用定义的密码)
- 第三行为您的数据库用户授予仅在创建的数据库中使用的所有权限
- 第四行使这些更改生效(如果您不刷新权限,这些更改将不会生效/提交)
- 第五行关闭 mysql 终端控制台

请告诉我这是否解决了您的问题

回复 作者: Jim Ford (未验证)

嗨,Giuseppe。

我很抱歉到现在才回复您的有益评论。我忘记了我在这里发布了我的查询,并且以为我将其发布在发布原始安装说明的论坛上,并且一直在等待那里的回复!

我最终重新安装了系统,然后一切都正常了。但是,在测试我创建的 Open Source Social Network 站点时,我发现我无法通过电子邮件邀请人们加入。问题是 Pi 上没有安装邮件服务器,所以看起来我必须安装一个 - 这似乎不是一件简单的事情。

您是否在您的 Pi 上安装了邮件服务器?如果是,请问您有什么建议吗?

祝您一切顺利,Jim

回复 作者: peppe8o

嗨,Giuseppe。

我很抱歉到现在才回复您的有益评论。我忘记了我在这里发布了我的查询,并且以为我将其发布在发布原始安装说明的论坛上,并且一直在等待那里的回复!

我最终重新安装了系统,然后一切都正常了。但是,在测试我创建的 Open Source Social Network 站点时,我发现我无法通过电子邮件邀请人们加入。问题是 Pi 上没有安装邮件服务器,所以看起来我必须安装一个 - 这似乎不是一件简单的事情。

您是否在您的 Pi 上安装了邮件服务器?如果是,请问您有什么建议吗?

祝您一切顺利,Jim

回复 作者: peppe8o

在 MariaDB 中保留 root 密码的漏洞足以让火车通过。即使是弱密码也比没有密码好几个数量级。

回复 作者: peppe8o

为什么不在说明/文章中跳过 SFTP 部分(以及需要额外的 PC 来传输 OSSN zip 文件)。直接从 Raspberry Pi 使用 wget 代替。

嗨,jokre07,
您的笔记是正确的。此外,您必须使用 Windows PC 来刷写 Raspberry PI OS 并远程控制像我使用的那样的无头安装(Raspberry PI 的硬件很差,因此避免桌面环境有助于提高性能)。
我更喜欢使用 windows,因为我不知道 OSSN 是否有最新版本的目录,所以从网页下载应该可以确保拥有最新版本

回复 作者: jokre07 (未验证)

不错的文章,但该软件无法正常工作,它充满了问题并且无法干净利落地安装。
我解决了无法在 Amazon 实例上检测到 mod rewrite 的问题,然后下一步我填写了所有必需的字段,然后单击安装,结果却得到“所有字段都是必需的!”
我建议人们不要浪费时间。

嗨,Anthony。本指南是关于在 Raspberry PI 中进行本地安装。它可以在 Raspberry PI 3 Model B+ 上正常工作。
如果您尝试了 AWS 安装,也许您应该寻找合适的指南。我只能建议您向 OSSN 询问 AWS 安装指南。
如果您不遵守本指南确定的要求,当然可能无法正常工作......

回复 作者: Anthony Dawson (未验证)

嗨,Giuseppe。
我已经安装了系统,但我只能从 LAN 访问它,而不能从 WAN 访问它。我将端口 80 转发到 Pi 的 LAN 地址,并且我看到 Apache 访问日志显示该请求已通过 - 但仅此而已。
(我上周尝试在此网站上注册,但尚未收到确认电子邮件。)
Jim

如果您是从本地地址安装的,然后想从外部域使用它,请记住相应地更新 /var/www/html/configurations/ossn.config.site.php 文件($Ossn->url 参数)。

关于激活电子邮件,根据 https://www.opensource-socialnetwork.org/wiki/view/891/account-you 应该
- 安装 php-mail (sudo apt install php-mail)
- 安装 MTA (sudo apt install postfix) -> 使用 Internet 站点和您的域名地址

这样,验证电子邮件也应该有效。

回复 作者: Jim Ford (未验证)

非常感谢 Giuseppe。

我将 PHP 配置文件更改为我的外部 IP 地址,现在可以正常工作了。

我还使用这个出色的指南安装了 EXIM

https://www.sbprojects.net/projects/raspberrypi/exim4.php

它运行良好并且易于配置。

感谢您的帮助。

Jim

我做错了什么?

./libraries/sql.lib.php#613 中的警告
count(): Parameter must be an array or an object that implements Countable(count():参数必须是数组或实现 Countable 的对象)

回溯

./libraries/sql.lib.php#2128: PMA_isRememberSortingOrder(array)
./libraries/sql.lib.php#2062: PMA_executeQueryAndGetQueryResponse(
array,
boolean true,
string 'ossn_db',
string 'ossn_users',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
string '',
string './themes/pmahomme/img/',
NULL,
NULL,
NULL,
string 'SELECT * FROM `ossn_users`',
NULL,
NULL,
)
./sql.php#221: PMA_executeQueryAndSendQueryResponse(
array,
boolean true,
string 'ossn_db',
string 'ossn_users',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
string '',
string './themes/pmahomme/img/',
NULL,
NULL,
NULL,
string 'SELECT * FROM `ossn_users`',
NULL,
NULL,
)

Creative Commons License本作品采用 Creative Commons Attribution-Share Alike 4.0 International License 许可。
© . All rights reserved.