如何在Raspberry Pi上安裝 Mastodon
- 分類:樹莓派主板教程
- 作者:杭州雋鵬電子科技有限公司
- 來源:MAKER:Emmet/譯:雋鵬
- 發(fā)布時間:2022-11-17 14:34
- 訪問量:0
【摘要】:Mastodon 是一款免費的開源軟件,可在 Raspberry Pi 上自行托管自己的社交網(wǎng)絡。
這個軟件是一個非常像推特的微博平臺,但與推特不同的是,它可以使用Mastodon來運行一個私人社交網(wǎng)絡。
?在本文中,我們將展示如何在樹莓派上安裝 Mastodon。
Mastodon 是一款免費的開源軟件,可在 Raspberry Pi 上自行托管自己的社交網(wǎng)絡。
這個軟件是一個非常像推特的微博平臺,但與推特不同的是,它可以使用Mastodon來運行一個私人社交網(wǎng)絡。
請注意,Mastodon 是一款相對笨重的軟件。使用內(nèi)存至少為 2GB 的 Raspberry Pi 4 時,將獲得最佳體驗。
此外,由于我們將使用更新版本的 PostgreSQL,必須使用 64 位操作系統(tǒng)。
需要的設備
本教程在運行最新版本 Raspberry Pi OS Buster 64 位的 Raspberry PI 400 上進行了測試。
開始在 Raspberry Pi 上使用 Mastodon 之前,需要做一些事情才能獲得這個自托管社交網(wǎng)絡的最佳體驗。
-
指向 Raspberry Pi 的 IP 地址的域名。Mastodon 需要一個域名才能正常運行。如果您嘗試通過未配置的主機進行連接,它將阻止連接。
如果有一個動態(tài) IP 地址,我們有一個關于如何在 Pi 上設置動態(tài) DNS的指南。
要在本地使用 Mastodon,您還可以指定一個域名,例如“ pimylifeup.local”,并修改系統(tǒng)上的主機文件以將該域指向Pi 的本地 IP。 -
一個可公開路由的 IP 地址,而不是 CG-NAT 后面的地址。還需要能夠將轉發(fā)端口移植80到443 Raspberry Pi 的本地 IP。
-
還應該使用事務性郵件服務,例如Sendgrid、Mailgun或Amazon SES。雖然這不是必需的,但它有助于確保更有可能收到 Mastodon 發(fā)送的電子郵件
準備 Raspberry Pi 以運行 Mastodon
在樹莓派上運行 Mastodon 軟件之前,我們必須安裝運行它所需的所有軟件。
在以下部分中,我們將引導您設置運行 Mastodon 所需的一切。
安裝設置所需的軟件
1.在安裝運行 Mastodon 所需的軟件之前,我們應該執(zhí)行更新。
使用以下兩個命令更新包列表緩存和任何過時的包。
sudoapt updatesudoapt upgrade
2.更新完成后,我們可以安裝我們需要的任何軟件來設置 Mastodon 依賴于我們的 Raspberry Pi 的各種軟件。
使用下面的命令來安裝我們運行 Mastodon 所需的幾乎所有東西。即使我們安裝了很多軟件,我們?nèi)匀恍枰O置更多軟件。
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 創(chuàng)建用戶
3.安裝基礎軟件后,我們可以創(chuàng)建一個用戶,Mastodon 將在我們的 Raspberry Pi 上運行。
我們可以使用useradd 命令來創(chuàng)建這個用戶,如下所示。該用戶的名稱為“ mastodon”。
sudouseradd mastodon -m
通過使用“ -m”選項,此命令將在創(chuàng)建用戶時創(chuàng)建一個主目錄。
安裝節(jié)點
4.Mastodon 社交網(wǎng)絡依賴于 Node.JS 運行時來實現(xiàn)其流媒體功能。
在繼續(xù)之前,請按照我們的指南將 Node.JS 安裝到 Raspberry Pi 上。
5.在設備上安裝 Node.JS 后,可以安全地繼續(xù)本教程。
為 Mastodon 設置 PostgreSQL
6.PostgreSQL 是我們需要在 Raspberry Pi 上為 Mastodon 設置的下一個軟件。
Mastodon 將使用 PostgreSQL 存儲來自您的自托管社交網(wǎng)絡的所有數(shù)據(jù)。
我們需要添加官方存儲庫來安裝最新版本的 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.現(xiàn)在我們已經(jīng)為 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 使用。
要安裝此數(shù)據(jù)庫軟件,請在終端中運行以下命令。
sudoaptinstall postgresql postgresql-contrib
在 Raspberry Pi 上為 Mastodon 創(chuàng)建 PostgreSQL 用戶
10.在Raspberry Pi 上安裝了 PostgreSQL后,我們的下一步是為 Mastodon 創(chuàng)建一個新的 SQL“用戶”,以便在連接到數(shù)據(jù)庫時使用。
為了能夠創(chuàng)建此用戶,我們需要使用以下命令啟動 PostgreSQL CLI。
sudo-u postgres psql
11.由于PostgreSQLident默認使用“”插件,我們只需要保證用戶與之前創(chuàng)建的用戶同名即可。
在 CLI 中使用以下命令創(chuàng)建名為“ mastodon”的 Postgre 用戶。
CREATEUSER mastodon CREATEDB;
CREATEDB在行尾使用“ ”,我們告訴 Postgres 這個新用戶可以創(chuàng)建數(shù)據(jù)庫。Mastodon 需要此權限才能正確安裝自身。
12.現(xiàn)在創(chuàng)建用戶后,可以通過鍵入以下內(nèi)容退出 CLI。
\q
啟用紗線
13.要在我們的 Raspberry Pi 上構建和運行 Mastodon,我們需要啟用 Yarn。Yarn 是 Node.JS 的包管理器。
可以使用以下兩個命令在系統(tǒng)上啟用 Yarn。
sudo corepack enablesudoyarnset version stable
在 Raspberry Pi 上為 Mastodon 安裝 Ruby
14.我們終于可以在 Raspberry Pi 上安裝 Ruby。Mastodon 使用 Ruby 生成其網(wǎng)頁和 REST API。
要安裝 Ruby,我們需要通過運行以下命令更改為 Mastodon 用戶。
sudosu mastodon
15.要在我們的 Raspberry Pi 上安裝和設置 Ruby,我們將使用一個名為“ rbenv”的工具。該工具使我們能夠輕松地為 Mastodon 用戶設置 Ruby 環(huán)境。
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.現(xiàn)在運行以下命令來調(diào)整“ .bashrc”文件。當 bash 終端啟動時,將執(zhí)行此文件中的命令。
我們添加的命令將初始化rbenv用于設置 Ruby 環(huán)境的“”實用程序。
echo'eval "$(~/.rbenv/bin/rbenv init - bash)"'>> ~/.bashrc
18.為確保我們所做的更改立即可用,請使用以下命令。
execbash
19.我們現(xiàn)在可以開始在我們的 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
現(xiàn)在我們已經(jīng)準備好了一切,我們需要在我們的 Raspberry Pi 上運行 Mastodon,我們終于可以繼續(xù)安裝這個社交網(wǎng)絡軟件了。
在接下來的部分中,將學習如何在設備上編譯和安裝 Mastodon。
將 Mastodon 存儲庫克隆到 Raspberry Pi
1.在我們繼續(xù)之前,必須確保仍然以 Mastodon 用戶身份運行。
如果沒有看到以“ mastodon@”開頭的 shell 會話,則需要運行以下命令。
sudosu mastodon
2.切換到“ mastodon”用戶后,可以使用 cd 命令切換到主目錄。
cd ~
3.現(xiàn)在我們位于主目錄中,我們可以將 Mastodon 代碼庫克隆到我們的 Raspberry Pi 中。
要克隆存儲庫,必須使用以下命令。
git clone https://github.com/mastodon/mastodon.git live
4.克隆 Mastodon 存儲庫后,我們需要再次使用 cd 命令切換到“ live”目錄。
cd live
5.我們現(xiàn)在可以使用“ git checkout”命令更改為taggedMastodon 的最新穩(wěn)定“ ”版本。
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”工具排除純粹用于開發(fā)或測試目的的包。
bundle config without 'development test'
8.最后,我們可以再次使用 bundle 命令將 Mastodon 的所有 Ruby 依賴項安裝到我們的 Raspberry Pi。
使用“ -j”選項,我們可以告訴包管理器使用我們擁有的盡可能多的 CPU 內(nèi)核。
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.系統(tǒng)將首先提示輸入 Mastodon 實例的域名。將此設置為計劃使用的確切域名至關重要。如果通過任何其他域連接,連接將被阻止。
對于我們的示例,我們將使用“ mastodon.pimylifeup.com”。
Your instance is identified by its domain name. Changing it afterward will break things.Domain name:
12.接下來,系統(tǒng)會詢問是否要在單用戶模式下運行 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.系統(tǒng)將詢問是否將 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.接下來,系統(tǒng)將提示指定 PostgreSQL 的帖子。
同樣,默認值很好,所以按ENTER鍵。
PostgreSQL port: (5432)
16.以下選項將詢問 Mastodon 數(shù)據(jù)庫的名稱。
要繼續(xù),可以安全地接受默認值并按ENTER鍵。
Name of PostgreSQL database: (mastodon_production)
17.接下來,將有機會指定要用于 Mastodon 的 PostgreSQL。
如果一直在按照本教程進行操作,則可以安全地使用默認值并按下該ENTER鍵。
Name of PostgreSQL user: (mastodon)
18.我們需要為 PostgreSQL 配置的最后一個設置是它的密碼。
由于我們創(chuàng)建了沒有用戶的 PostgreSQL 用戶,因此它將默認使用“ ident”進行身份驗證。只要運行 Mastodon 的用戶和 PostgreSQL 用戶匹配,我們就可以訪問數(shù)據(jù)庫。
將該字段留空,然后按ENTER鍵繼續(xù)。
Password of PostgreSQL user:
Redis 設置
19.下一步是為 Redis 服務器設置主機。
由于我們是在本地安裝的,所以我們可以通過按鍵使用默認選項ENTER。
Redis host: (localhost)
20.然后我們需要設置連接到 Redis 服務器時使用的端口。由于我們在本指南中沒有更改默認端口,因此按ENTER鍵使用默認值。
Redis port: (6379)
21.我們需要設置的最后一個選項是密碼。
跟我們在本地設置Redis的方式一樣,ENTER不用指定密碼直接按鍵。
Redis password:
云存儲設置
22.現(xiàn)在將有機會將 Mastodon 配置為對上傳的文件使用云存儲。
由于這不是我們計劃在本指南中涵蓋的內(nèi)容,因此我們將輸入“ N”并按ENTER。
如果想使用 AWS 等云存儲,需要輸入“ Y”并按照提示進行操作。
Do you want to store uploaded files on the cloud?
SMTP 選項
23.接下來,系統(tǒng)將提示是否要從 Raspberry Pi for Mastodon 發(fā)送電子郵件。不建議這樣做,因為 Outlook 和 Gmail 等電子郵件提供商可能會阻止您的服務器。
相反,應該使用事務性郵件服務,例如Sendgrid、Mailgun或Amazon SES。
如果想保持簡單的設置并且不擔心電子郵件的送達率,可以輸入“ Y”并按下ENTER鍵。
否則,要使用交易電子郵件服務,請鍵入“ N”并按ENTER。
Do you want to send e-mails from localhost?
如果選擇直接從 Raspberry Pi 發(fā)送電子郵件,請?zhí)敛襟E 30。
24.現(xiàn)在需要了解將要使用的 SMTP 服務的詳細信息。
需要了解的第一個細節(jié)是 SMTP 服務器的 IP 或域名。例如,如果使用的是 Mailgun,則應使用“ smtp.mailgun.org”。
SMTP Server: (smtp.mailgain.org)
25.接下來我們需要設置發(fā)送 SMTP 消息的端口。此端口因服務而異。
例如,使用 Mailgun 服務,將使用端口“ 587”。
SMTP port: (587)
26.為了能夠通過 SMTP 發(fā)送任何消息,需要一個用戶名和密碼。
首先,系統(tǒng)將提示輸入 SMTP 連接的密碼。郵件交易服務提供這些詳細信息。
SMTP username:
27.輸入用于 SMTP 連接的用戶名后,還需要輸入密碼。
SMTP password:
28.我們還可以控制用于 SMTP 的身份驗證類型。
此選項的默認值為“ plain”。確保檢查提供商以獲得正確的值。
SMTP authentication: (plain)
29.接下來需要指定 SMTP 驗證模式。如果不確定在這里選擇什么,可以選擇“ none”選項。
SMTP OpenSSL verify mode:
30. 現(xiàn)在可以選擇 Raspberry Pi 用來發(fā)送 Mastodon 電子郵件的電子郵件地址。
要使用您自己的,需要使用以下格式:“ NAME <EMAILADDRESS>”。例如,如果我們?yōu)槲覀兊木W(wǎng)站設置它,它將寫成“ PiMyLifeUP <[email protected]>”。
也可以按ENTER鍵使用默認值。
E-mail address to send e-mails "from": (Mastodon <notifications@DOMAINNAME>)
31.最后,系統(tǒng)會詢問是否要測試配置釘。
要測試所有設置是否有效,請按“ Y”,然后按ENTER鍵。
Send a test e-mail with this configuration right now? (Y/n)
完成配置
32.我們終于可以在 Raspberry Pi 上完成 Mastodon 的配置。
現(xiàn)在將詢問是否要將配置保存到“ .env.production”文件。
要保存更改,請鍵入“ Y”,然后按ENTER鍵。
Save configuration?
33.Mastodon 現(xiàn)在將要設置數(shù)據(jù)庫并安裝其所有數(shù)據(jù)。
輸入“ y”并按下ENTER讓 Mastodon 創(chuàng)建它的數(shù)據(jù)庫。
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 資產(chǎn)。
因為我們需要編譯這些,所以輸入“ 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?
創(chuàng)建管理員帳戶
35.在配置腳本結束之前,系統(tǒng)會詢問是否要創(chuàng)建 Mastodon 管理員帳戶。
現(xiàn)在是創(chuàng)建此帳戶的最佳時機,因此請輸入“ y”并按ENTER繼續(xù)。
Do you want to create an admin user straight away?
36.現(xiàn)在將要求為管理員帳戶指定一個用戶名。
可以隨意命名此用戶。輸入用戶名,然后按ENTER鍵。
Username: (admin)
37.接下來,可以指定要分配給您的管理員帳戶的電子郵件地址。將使用此電子郵件地址登錄管理員帳戶。
確保這是一個可以在使用時聯(lián)系到電子郵件地址。
E-mail:
38.創(chuàng)建帳戶后,它會自動生成一個密碼。保存此密碼,將使用它登錄帳戶。
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
在證書生成過程中,系統(tǒng)會提示一系列問題。
在樹莓派上為 Mastodon 配置 NGINX
41.現(xiàn)在讓我們將示例 Nginx 配置從 Mastodon 目錄復制到“ sites-available”目錄。
使用以下命令執(zhí)行此操作。
sudocp /home/mastodon/live/dist/nginx.conf /etc/nginx/sites-available/mastodon
42.我們需要在“ sites-available”目錄中的 mastodon 配置文件和“ ”目錄之間創(chuàng)建一個符號鏈接sites-enabled。
可以使用以下命令創(chuàng)建此符號鏈接。
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.在此文件中,需要找到并更改以下行。在需要換出的文件中將出現(xiàn)兩次。
這些線應該靠近每個“ 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 的配置進行了更改,因此我們需要通過運行以下命令來執(zhí)行重新加載。
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.復制服務文件后,我們現(xiàn)在可以使用以下命令啟用并啟動它們。
“ --now”選項告訴 systemd 啟動 Mastodon
sudo systemctl enable--now mastodon-web mastodon-sidekiq mastodon-streaming
50.此時,Mastodon 現(xiàn)已在 Raspberry Pi 上啟動并運行,并且可以通過選擇的域名完全訪問。
連接到 Raspberry Pi Mastodon 服務器
此時,終于在 Raspberry Pi 上安裝了 Mastodon 并準備好訪問它。
1.要訪問 Mastodon,必須轉到之前配置的域名。
對于我們的示例,我們將在 Web 瀏覽器中轉到以下地址。
https://mastodon.pimylifeup.com/
2.應該會看到 Mastodon 的登錄屏幕。使用右上角的表格,可以使用在設置過程中創(chuàng)建的管理員帳戶登錄。
3.現(xiàn)在已登錄到 Mastodon 帳戶?,F(xiàn)在可以開始在個人資料上“嘟嘟嘟”了。
或者,由于是管理員,還可以前往首選項屏幕并使用管理面板。
4.進入首選項屏幕后,查看左側邊欄以找到“ Administration”選項click。
5.在管理屏幕中,可以控制自托管 Mastodon 安裝的許多方面。
花點時間了解此屏幕中可用的所有工具,因為它將幫助管理社區(qū)。
結論
至此,應該在 Raspberry Pi 上安裝并運行 Mastodon。
Mastodon 是一個自托管的社交網(wǎng)絡,它使用 Twitter 推廣的微博風格。



