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

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

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

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

什么是 OpenSource Social Network?

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

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

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://<<YourRpiIPAddress>> 来检查 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://<<YourRpiIPAddress>>/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 文件传输到树莓派上“/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 出于安全原因建议将此文件夹创建在已发布的文档根目录之外。因此,我们将创建此选择加入文件夹并授予权限
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 许可证”... 它是 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

我们正在审查归属保证许可证,它听起来很有前景,适合上述 1, 2 点。

回复 ,作者:Arsalan Shah

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

@Gerald Waters

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

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

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

感谢非常全面的撰写。

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

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

这似乎是数据库权限问题,但我对 MSQL 非常生疏(而且从来都不是很好!)

如果您能给我任何帮助,我将不胜感激。
Jim

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

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 文件)。直接从树莓派使用 wget 代替。

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

回复 ,作者:jokre07(未验证)

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

嗨 Anthony。本指南是关于在树莓派中进行本地安装。它在树莓派 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本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.