如何在Raspberry Pi上安装 Mastodon
- 分类:树莓派主板教程
- 作者:杭州隽鹏电子科技有限公司
- 来源:MAKER:Emmet/译:隽鹏
- 发布时间:2022-11-17 14:34
- 访问量:0
【摘要】:Mastodon 是一款免费的开源软件,可在 Raspberry Pi 上自行托管自己的社交网络。
这个软件是一个非常像推特的微博平台,但与推特不同的是,它可以使用Mastodon来运行一个私人社交网络。
在本文中,我们将展示如何在树莓派上安装 Mastodon。
Mastodon 是一款免费的开源软件,可在 Raspberry Pi 上自行托管自己的社交网络。
这个软件是一个非常像推特的微博平台,但与推特不同的是,它可以使用Mastodon来运行一个私人社交网络。
请注意,Mastodon 是一款相对笨重的软件。使用内存至少为 2GB 的 Raspberry Pi 4 时,将获得最佳体验。
此外,由于我们将使用更新版本的 PostgreSQL,必须使用 64 位操作系统。
需要的设备
本教程在运行最新版本 Raspberry Pi OS Buster 64 位的 Raspberry PI 400 上进行了测试。
开始在 Raspberry Pi 上使用 Mastodon 之前,需要做一些事情才能获得这个自托管社交网络的最佳体验。
-
指向 Raspberry Pi 的 IP 地址的域名。Mastodon 需要一个域名才能正常运行。如果您尝试通过未配置的主机进行连接,它将阻止连接。
如果有一个动态 IP 地址,我们有一个关于如何在 Pi 上设置动态 DNS的指南。
要在本地使用 Mastodon,您还可以指定一个域名,例如“ pimylifeup.local”,并修改系统上的主机文件以将该域指向Pi 的本地 IP。 -
一个可公开路由的 IP 地址,而不是 CG-NAT 后面的地址。还需要能够将转发端口移植80到443 Raspberry Pi 的本地 IP。
-
还应该使用事务性邮件服务,例如Sendgrid、Mailgun或Amazon SES。虽然这不是必需的,但它有助于确保更有可能收到 Mastodon 发送的电子邮件
准备 Raspberry Pi 以运行 Mastodon
在树莓派上运行 Mastodon 软件之前,我们必须安装运行它所需的所有软件。
在以下部分中,我们将引导您设置运行 Mastodon 所需的一切。
安装设置所需的软件
1.在安装运行 Mastodon 所需的软件之前,我们应该执行更新。
使用以下两个命令更新包列表缓存和任何过时的包。
sudoapt updatesudoapt upgrade
2.更新完成后,我们可以安装我们需要的任何软件来设置 Mastodon 依赖于我们的 Raspberry Pi 的各种软件。
使用下面的命令来安装我们运行 Mastodon 所需的几乎所有东西。即使我们安装了很多软件,我们仍然需要设置更多软件。
sudoaptinstallcurl lsb-release imagemagick ffmpeg libpq-dev libxml2-dev libxslt1-dev file git-core g++ libprotobuf-dev protobuf-compiler pkg-config nodejs gcc autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm-dev nginx redis-server redis-tools certbot python3-certbot-nginx libidn11-dev libicu-dev libjemalloc-dev
在 Raspberry Pi 上为 Mastodon 创建用户
3.安装基础软件后,我们可以创建一个用户,Mastodon 将在我们的 Raspberry Pi 上运行。
我们可以使用useradd 命令来创建这个用户,如下所示。该用户的名称为“ mastodon”。
sudouseradd mastodon -m
通过使用“ -m”选项,此命令将在创建用户时创建一个主目录。
安装节点
4.Mastodon 社交网络依赖于 Node.JS 运行时来实现其流媒体功能。
在继续之前,请按照我们的指南将 Node.JS 安装到 Raspberry Pi 上。
5.在设备上安装 Node.JS 后,可以安全地继续本教程。
为 Mastodon 设置 PostgreSQL
6.PostgreSQL 是我们需要在 Raspberry Pi 上为 Mastodon 设置的下一个软件。
Mastodon 将使用 PostgreSQL 存储来自您的自托管社交网络的所有数据。
我们需要添加官方存储库来安装最新版本的 PostgreSQL。
首先使用以下命令将 Postgre 存储库的 GPG 密钥保存到设备。
curl-L https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor|sudotee /usr/share/keyrings/postgresql-archive-keyring.gpg >/dev/null
7.现在我们已经为 PostgreSQL 添加了 GPG 密钥,我们可以使用下面的命令将存储库添加到我们的源列表中。
echo"deb [arch=arm64 signed-by=/usr/share/keyrings/postgresql-archive-keyring.gpg] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main"|sudotee /etc/apt/sources.list.d/postgresql.list
8.当我们更改可用存储库时,我们需要再次更新包列表缓存。
通过运行以下命令更新包列表缓存。
sudoapt update
9.我们终于可以将 PostgreSQL 安装到我们的 Raspberry Pi 上供 Mastodon 使用。
要安装此数据库软件,请在终端中运行以下命令。
sudoaptinstall postgresql postgresql-contrib
在 Raspberry Pi 上为 Mastodon 创建 PostgreSQL 用户
10.在Raspberry Pi 上安装了 PostgreSQL后,我们的下一步是为 Mastodon 创建一个新的 SQL“用户”,以便在连接到数据库时使用。
为了能够创建此用户,我们需要使用以下命令启动 PostgreSQL CLI。
sudo-u postgres psql
11.由于PostgreSQLident默认使用“”插件,我们只需要保证用户与之前创建的用户同名即可。
在 CLI 中使用以下命令创建名为“ mastodon”的 Postgre 用户。
CREATEUSER mastodon CREATEDB;
CREATEDB在行尾使用“ ”,我们告诉 Postgres 这个新用户可以创建数据库。Mastodon 需要此权限才能正确安装自身。
12.现在创建用户后,可以通过键入以下内容退出 CLI。
\q
启用纱线
13.要在我们的 Raspberry Pi 上构建和运行 Mastodon,我们需要启用 Yarn。Yarn 是 Node.JS 的包管理器。
可以使用以下两个命令在系统上启用 Yarn。
sudo corepack enablesudoyarnset version stable
在 Raspberry Pi 上为 Mastodon 安装 Ruby
14.我们终于可以在 Raspberry Pi 上安装 Ruby。Mastodon 使用 Ruby 生成其网页和 REST API。
要安装 Ruby,我们需要通过运行以下命令更改为 Mastodon 用户。
sudosu mastodon
15.要在我们的 Raspberry Pi 上安装和设置 Ruby,我们将使用一个名为“ rbenv”的工具。该工具使我们能够轻松地为 Mastodon 用户设置 Ruby 环境。
rbenv使用以下命令克隆“”实用程序的代码存储库。
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
16.我们还需要为“ ”工具克隆“ ruby-build”插件。rbenv
可以通过在终端中运行以下命令来克隆此工具。
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
17.现在运行以下命令来调整“ .bashrc”文件。当 bash 终端启动时,将执行此文件中的命令。
我们添加的命令将初始化rbenv用于设置 Ruby 环境的“”实用程序。
echo'eval "$(~/.rbenv/bin/rbenv init - bash)"'>> ~/.bashrc
18.为确保我们所做的更改立即可用,请使用以下命令。
execbash
19.我们现在可以开始在我们的 Raspberry Pi 上安装 Ruby 3.0.3,方法是在终端中使用以下命令。
像这样安装 Ruby 可确保我们在 Raspberry Pi 上拥有 Mastodon 期望的确切版本。
RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install3.0.3
请注意,编译过程可能需要一些时间。
20.Ruby 安装完成后,我们的下一步是将其声明为要使用的 Ruby 的全球版本。为此,只需要使用以下命令。
rbenv global 3.0.3
21.最后,我们需要使用 Ruby 包管理器来安装“ bundler”。
可以使用“ gem”安装此软件包,如下所示。
gem install bundler --no-document
在树莓派上安装 Mastodon
现在我们已经准备好了一切,我们需要在我们的 Raspberry Pi 上运行 Mastodon,我们终于可以继续安装这个社交网络软件了。
在接下来的部分中,将学习如何在设备上编译和安装 Mastodon。
将 Mastodon 存储库克隆到 Raspberry Pi
1.在我们继续之前,必须确保仍然以 Mastodon 用户身份运行。
如果没有看到以“ mastodon@”开头的 shell 会话,则需要运行以下命令。
sudosu mastodon
2.切换到“ mastodon”用户后,可以使用 cd 命令切换到主目录。
cd ~
3.现在我们位于主目录中,我们可以将 Mastodon 代码库克隆到我们的 Raspberry Pi 中。
要克隆存储库,必须使用以下命令。
git clone https://github.com/mastodon/mastodon.git live
4.克隆 Mastodon 存储库后,我们需要再次使用 cd 命令切换到“ live”目录。
cd live
5.我们现在可以使用“ git checkout”命令更改为taggedMastodon 的最新稳定“ ”版本。
git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)
安装 Mastodon 及其依赖项
6.我们的第一步是使用以下命令将“ deployment”选项设置为“ ”。true
bundle config deployment 'true'
7.然后我们使用“ bundle”工具排除纯粹用于开发或测试目的的包。
bundle config without 'development test'
8.最后,我们可以再次使用 bundle 命令将 Mastodon 的所有 Ruby 依赖项安装到我们的 Raspberry Pi。
使用“ -j”选项,我们可以告诉包管理器使用我们拥有的尽可能多的 CPU 内核。
bundle install -j$(nproc)
9.安装 Ruby 包后,我们可以使用 yarn 为 Mastodon 安装 Node.JS 依赖项。
使用以下命令安装这些依赖项。
yarninstall --pure-lockfile
为 Raspberry Pi 配置 Mastodon
10.我们终于可以开始在 Raspberry Pi 上配置 Mastodon 本身的最后过程了。
要开始此过程,请在命令行中运行以下命令。
RAILS_ENV=production bundle exec rake mastodon:setup
通用设置
11.系统将首先提示输入 Mastodon 实例的域名。将此设置为计划使用的确切域名至关重要。如果通过任何其他域连接,连接将被阻止。
对于我们的示例,我们将使用“ mastodon.pimylifeup.com”。
Your instance is identified by its domain name. Changing it afterward will break things.Domain name:
12.接下来,系统会询问是否要在单用户模式下运行 Raspberry Pi 的 Mastodon 实例。单用户模式意味着只有一个公共配置文件。
Y如果只想自己使用此 Mastodon 服务器,请输入“ ”。
或者,按“ N”键,然后按ENTER键来拥有多个用户。
Single user mode disables registrations and redirects the landing page to your public profile.Do you want to enable single user mode?
13.系统将询问是否将 Mastodon 作为 docker 容器运行。
由于我们不使用 Docker 来运行 Mastodon,因此请按“ N”键,然后按ENTER键。
Are you using Docker to run Mastodon?
PostgreSQL 设置
14.以下提示将要求您为 PostgreSQL 设置主机。
默认值为“ /var/run/postgresql”,因此可以放心地按下该ENTER键。
PostgreSQL host: (/var/run/postgresql)
15.接下来,系统将提示指定 PostgreSQL 的帖子。
同样,默认值很好,所以按ENTER键。
PostgreSQL port: (5432)
16.以下选项将询问 Mastodon 数据库的名称。
要继续,可以安全地接受默认值并按ENTER键。
Name of PostgreSQL database: (mastodon_production)
17.接下来,将有机会指定要用于 Mastodon 的 PostgreSQL。
如果一直在按照本教程进行操作,则可以安全地使用默认值并按下该ENTER键。
Name of PostgreSQL user: (mastodon)
18.我们需要为 PostgreSQL 配置的最后一个设置是它的密码。
由于我们创建了没有用户的 PostgreSQL 用户,因此它将默认使用“ ident”进行身份验证。只要运行 Mastodon 的用户和 PostgreSQL 用户匹配,我们就可以访问数据库。
将该字段留空,然后按ENTER键继续。
Password of PostgreSQL user:
Redis 设置
19.下一步是为 Redis 服务器设置主机。
由于我们是在本地安装的,所以我们可以通过按键使用默认选项ENTER。
Redis host: (localhost)
20.然后我们需要设置连接到 Redis 服务器时使用的端口。由于我们在本指南中没有更改默认端口,因此按ENTER键使用默认值。
Redis port: (6379)
21.我们需要设置的最后一个选项是密码。
跟我们在本地设置Redis的方式一样,ENTER不用指定密码直接按键。
Redis password:
云存储设置
22.现在将有机会将 Mastodon 配置为对上传的文件使用云存储。
由于这不是我们计划在本指南中涵盖的内容,因此我们将输入“ N”并按ENTER。
如果想使用 AWS 等云存储,需要输入“ Y”并按照提示进行操作。
Do you want to store uploaded files on the cloud?
SMTP 选项
23.接下来,系统将提示是否要从 Raspberry Pi for Mastodon 发送电子邮件。不建议这样做,因为 Outlook 和 Gmail 等电子邮件提供商可能会阻止您的服务器。
相反,应该使用事务性邮件服务,例如Sendgrid、Mailgun或Amazon SES。
如果想保持简单的设置并且不担心电子邮件的送达率,可以输入“ Y”并按下ENTER键。
否则,要使用交易电子邮件服务,请键入“ N”并按ENTER。
Do you want to send e-mails from localhost?
如果选择直接从 Raspberry Pi 发送电子邮件,请跳至步骤 30。
24.现在需要了解将要使用的 SMTP 服务的详细信息。
需要了解的第一个细节是 SMTP 服务器的 IP 或域名。例如,如果使用的是 Mailgun,则应使用“ smtp.mailgun.org”。
SMTP Server: (smtp.mailgain.org)
25.接下来我们需要设置发送 SMTP 消息的端口。此端口因服务而异。
例如,使用 Mailgun 服务,将使用端口“ 587”。
SMTP port: (587)
26.为了能够通过 SMTP 发送任何消息,需要一个用户名和密码。
首先,系统将提示输入 SMTP 连接的密码。邮件交易服务提供这些详细信息。
SMTP username:
27.输入用于 SMTP 连接的用户名后,还需要输入密码。
SMTP password:
28.我们还可以控制用于 SMTP 的身份验证类型。
此选项的默认值为“ plain”。确保检查提供商以获得正确的值。
SMTP authentication: (plain)
29.接下来需要指定 SMTP 验证模式。如果不确定在这里选择什么,可以选择“ none”选项。
SMTP OpenSSL verify mode:
30. 现在可以选择 Raspberry Pi 用来发送 Mastodon 电子邮件的电子邮件地址。
要使用您自己的,需要使用以下格式:“ NAME <EMAILADDRESS>”。例如,如果我们为我们的网站设置它,它将写成“ PiMyLifeUP <mastodon@pimylifeup.com>”。
也可以按ENTER键使用默认值。
E-mail address to send e-mails "from": (Mastodon <notifications@DOMAINNAME>)
31.最后,系统会询问是否要测试配置钉。
要测试所有设置是否有效,请按“ Y”,然后按ENTER键。
Send a test e-mail with this configuration right now? (Y/n)
完成配置
32.我们终于可以在 Raspberry Pi 上完成 Mastodon 的配置。
现在将询问是否要将配置保存到“ .env.production”文件。
要保存更改,请键入“ Y”,然后按ENTER键。
Save configuration?
33.Mastodon 现在将要设置数据库并安装其所有数据。
输入“ y”并按下ENTER让 Mastodon 创建它的数据库。
Now that configuration is saved, the database schema must be loaded.If the database already exists, this will erase its contents.Prepare the database now?
34.在配置过程中你会被问到的最后一件事是你是否想让 Raspberry PI 编译 Mastodon 的 CSS 和 JS 资产。
因为我们需要编译这些,所以输入“ Y”并按下ENTER键。
The final step is compiling CSS/JS assets.This may take a while and consume a lot of RAM.Compile the assets now?
创建管理员帐户
35.在配置脚本结束之前,系统会询问是否要创建 Mastodon 管理员帐户。
现在是创建此帐户的最佳时机,因此请输入“ y”并按ENTER继续。
Do you want to create an admin user straight away?
36.现在将要求为管理员帐户指定一个用户名。
可以随意命名此用户。输入用户名,然后按ENTER键。
Username: (admin)
37.接下来,可以指定要分配给您的管理员帐户的电子邮件地址。将使用此电子邮件地址登录管理员帐户。
确保这是一个可以在使用时联系到电子邮件地址。
E-mail:
38.创建帐户后,它会自动生成一个密码。保存此密码,将使用它登录帐户。
You can login with the password: 9a1792ae3228847855d6d415875a1a79
为 Mastodon 服务器获取 SSL 证书
39.至此,我们终于完成了 Mastodon 用户。
通过运行以下命令返回到普通用户。
exit
40.为了帮助保持 Raspberry Pi 的 Mastodon 连接安全,应该在 HTTPS 下运行它。为此,需要为域名生成一个证书。
由于在本指南前面安装了 certbot,我们可以通过运行以下命令从 Lets Encrypt 请求证书。
确保将“替换YOURDOMAIN.com"为正在使用的域名。
certbot --nginx-d YOURDOMAIN.com
在证书生成过程中,系统会提示一系列问题。
在树莓派上为 Mastodon 配置 NGINX
41.现在让我们将示例 Nginx 配置从 Mastodon 目录复制到“ sites-available”目录。
使用以下命令执行此操作。
sudocp /home/mastodon/live/dist/nginx.conf /etc/nginx/sites-available/mastodon
42.我们需要在“ sites-available”目录中的 mastodon 配置文件和“ ”目录之间创建一个符号链接sites-enabled。
可以使用以下命令创建此符号链接。
sudoln-s /etc/nginx/sites-available/mastodon /etc/nginx/sites-enabled/mastodon
43.我们的下一步是编辑 Raspberry Pi 的 Mastodon Nginx 配置文件,以便它使用域名。
使用下面显示的命令,使用nano 文本编辑器开始编辑配置文件。
sudonano /etc/nginx/sites-enabled/mastodon
44.在此文件中,需要找到并更改以下行。在需要换出的文件中将出现两次。
这些线应该靠近每个“ server {”块的顶部。
server_name example.com;
将其替换为正在使用的域名。例如,我们使用“ mastodon.pimylifeup.com”。
server_name mastodon.pimylifeup.com;
45.我们的下一步是将 Nginx 文件配置为指向之前获得的 SSL 证书
在文件中找到以下两行。
# ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
找到这两行后,需要删除它们前面的主题标签。还需要将“ example.com”更改为域名。
例如,使用我们的域名“ mastodon.pimylifeup.com”,这些行将如下所示。
ssl_certificate /etc/letsencrypt/live/mastodon.pimylifeup.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mastodon.pimylifeup.com/privkey.pem;
46.完成更改后,可以按CTRL+保存并退出X,然后按Y, 然后按ENTER键。
47.由于我们对 Nginx 的配置进行了更改,因此我们需要通过运行以下命令来执行重新加载。
sudo systemctl reload nginx
在 Raspberry Pi 上为 Mastodon 设置服务文件
48.我们需要做的最后一项任务是设置一个服务来管理在我们的 Raspberry Pi 上运行 Mastodon。
幸运的是,这些服务文件与 Maston 代码库捆绑在一起。
使用如下所示的 cp 命令将 systemd 服务复制到相关目录。
sudocp /home/mastodon/live/dist/mastodon-*.service /etc/systemd/system/
49.复制服务文件后,我们现在可以使用以下命令启用并启动它们。
“ --now”选项告诉 systemd 启动 Mastodon
sudo systemctl enable--now mastodon-web mastodon-sidekiq mastodon-streaming
50.此时,Mastodon 现已在 Raspberry Pi 上启动并运行,并且可以通过选择的域名完全访问。
连接到 Raspberry Pi Mastodon 服务器
此时,终于在 Raspberry Pi 上安装了 Mastodon 并准备好访问它。
1.要访问 Mastodon,必须转到之前配置的域名。
对于我们的示例,我们将在 Web 浏览器中转到以下地址。
https://mastodon.pimylifeup.com/
2.应该会看到 Mastodon 的登录屏幕。使用右上角的表格,可以使用在设置过程中创建的管理员帐户登录。
3.现在已登录到 Mastodon 帐户。现在可以开始在个人资料上“嘟嘟嘟”了。
或者,由于是管理员,还可以前往首选项屏幕并使用管理面板。
4.进入首选项屏幕后,查看左侧边栏以找到“ Administration”选项click。
5.在管理屏幕中,可以控制自托管 Mastodon 安装的许多方面。
花点时间了解此屏幕中可用的所有工具,因为它将帮助管理社区。
结论
至此,应该在 Raspberry Pi 上安装并运行 Mastodon。
Mastodon 是一个自托管的社交网络,它使用 Twitter 推广的微博风格。



