使用 Raspberry Pi 构建私有社交网络

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

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

同样,Raspberry Pi—Raspbian Lite 版本非常通用,可以帮助您设置许多有用的家庭服务(另请参阅我的Raspberry Pi 项目文章)。通过搜索开源软件并使用这款出色的设备进行测试,可以实现一些令人着迷的功能。一个值得尝试的有趣示例是在您的 Raspberry Pi 中安装 OpenSource Social Network。

什么是 OpenSource Social Network?

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

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

OSSN 支持的功能包括

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

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

我们需要什么

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

硬件

  • Raspberry Pi 3 model B+ 及其电源
  • 一张 micro SD 卡(如果是一张高性能卡更好,至少 16GB)
  • 一台装有 SFTP 软件的台式 PC(例如,免费的 Filezilla)用于将安装包传输到您的 RPI 中。

分步步骤

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

1. 安装 Raspbian Buster Lite OS

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

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

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

LAMP (Linux–Apache–Mysql–Php) 服务器通常附带 MySQL 数据库。在我们的项目中,我们将使用 MariaDB 代替,因为它更轻量级,并且适用于 Raspberry Pi。

3. 安装 Apache 服务器

sudo apt-get install apache2 -y
您现在应该能够通过浏览 http://<<YouRpiIPAddress>> 来检查 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 权限以管理数据库

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

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

默认 phpMyAdmin 登录凭据是

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

安装其他开源社交网络所需的软件包并设置 PHP

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

  • PHP 版本 5.6、7.0、7.1 中的任何一个
  • MYSQL 5 或更高版本
  • 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. 创建数据库并设置用户

返回 phpmyadmin 网页(浏览“http://<<YourRpiIPAddress>>/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 文件传输到 Raspberry Pi 上“/home/pi/download”路径下的新文件夹中。常见的(默认)SFP 连接参数是

  • 主机:您的 Raspberry Pi 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://<<YourRpiIPAddress>> 以启动安装向导

所有检查都应该没问题。单击页面末尾的“下一步”按钮。

阅读许可验证,然后单击页面末尾的“下一步”按钮以接受。

输入您选择的数据库用户、密码和数据库名称。还要记住输入 OSSN 数据文件夹。按“安装”。

输入您的管理员帐户信息,然后按“创建”按钮。

现在一切都应该没问题了。按“完成”访问管理仪表板。

因此,可以通过 URL “http://<<YourRpiIPAddress>>/administrator” 访问管理面板,而用户链接将是 “http://<<YourRpiIPAddress>>”。

本文最初发布于 peppe8o.com。经许可转载。

接下来阅读什么
标签
User profile image.
幸运的丈夫,开源爱好者。天生好奇。为我的根感到自豪,很高兴混合和学习不同的根

25 条评论

嗨 MF,
我也是 Docker 爱好者!但是 tyranwyn/ossn 镜像基于 linux/amd64,而 Raspberry PI 是基于 arm 的架构。您可以尝试,但很难在 PI 上工作... 如果您想使其在 Raspberry 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. 我们想保留“Powered by”声明

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

回复 作者:Gerald Waters

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

回复 作者:Arsalan Shah

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

@Gerald Waters

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

1. 保留版权声明
2. 保留“Powered by”声明

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

感谢非常全面的撰写。

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

“用户 'ossn_db_user'@'localhost' 访问被拒绝(使用密码:YES)”

这似乎是一个数据库权限问题,但我对 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(): 参数必须是数组或实现 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.