使用 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 软件的台式电脑(例如,免费的 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>> 以启动安装向导

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

阅读许可验证,然后点击页面末尾的 Next 按钮以接受。

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

输入您的管理员帐户信息,然后按 Create 按钮。

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

因此,可以使用 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”,但 “Open Source” 并不像我们大多数人定义的那样明确。简而言之,这是因为他们制定了一个独特的许可证,并且没有将其提交给 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

我们最终决定将许可证切换为最近 OSI 批准的 Cryptographic Autonomy License version 1.0。

回复 ,作者:Gerald Waters

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

@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

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

回复 ,作者: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.