Mastodon 建站笔记
一点说明
本文所记录的搭建非常缓慢,开始于二月,但给自己设定的 DDL 在六月。搭建过程完全碎片化,每次推进都基于“这会儿没什么事情不如搞一搞建站”,且超过一小时就会先放着下次再说,非常随性随意。每一步完成于哪一天、大概耗时都有记录,给想搭建却又嫌麻烦、觉得需要特意安排时间的朋友提供一个佛系搭建参考。
参考与致谢
参考:蓝盒子站长的利用 docker 搭建 Mastodon 实例和塔塔的小球飞象建站笔记。
感谢嘎嘎、塔塔和其他写下详细教程和笔记的朋友!因为你们和你们的教程,我这种没有参考不敢做事的人才能一点点把实例搭建起来。
特别感谢塔塔,给我每完成一步的嘟嘟点星星,给予我很大鼓励!
前期准备
前期准备主要是花钱,大多数运营商都支持 Visa、MasterCard 或 PayPal,godaddy 支持支付宝付款。
为能有更多选择,个人建议开通 PayPal,比办信用卡方便一些。本文中除 Scaleway 以外,所有支付都通过 PayPal 完成。如使用 PayPal 付款,建议付款时直接使用目标货币,而不使用 PayPal 提供的转换为人民币付款。这种情况下付款使用的是银行汇率,会比 PayPal 划算。
域名
常用的域名提供商很多,比如 NameCheap,godaddy 和 dynadot。可参考o3o站长给出的域名选购指南。
本站根据蓝盒子站长的推荐,在 NameCheap 购买域名。由于之前给博客换域名已经在 NameCheap 买过一次,而且很早就想好要买什么域名,所以这一步成为这个跨越几个月的搭建过程中最简单、最快速的一步。
该步骤完成于 2022.02.17。约耗时 15 分钟,主要在犹豫到底要不要这天买,实际操作只用掉两三分钟。以及早知道我这么快就要自建站,博客就换个域名了!两年后我博客必换域名!
邮件服务
使用 Zoho Mail 提供的 Business Mail 服务中的 Forever Free Plan。
由于本人需要很详细的操作步骤才敢进行下一步,这里找了个注册 Zoho Mail 的详细教程 —— 注册zoho免费企业邮箱。这个教程虽然详细,但稍微有点过时,有些操作的名称略有更改。如有需要,可再找其它教程参考。
该步骤完成于 2022.02.21。约耗时 40 分钟,因为一些步骤没有明确的参考不太敢试,必须找到别人这一步怎么做才动手。但实际上没关系,大胆试,不行重来嘛!
购买VPS
选择 Contabo 购买 VPS,在购买前将价格修改为欧元,选择5欧套餐,德国服务器,一次性购买 12 个月,其它选项全部默认。
这里塔塔提醒 Contabo 审核严格,最好真实 IP 购买,填写信息时不要太扯,不然会被要求提供身份证明。但我就是那个认真填写还被要求提供护照的倒霉蛋。由于目前和德国有 7 个小时时差,上午提供护照信息后,一直到下午四点多才收到确认邮件。
该步骤完成于 2022.03.02。约耗时 15 分钟加 19 小时,15 分钟是实际需要操作的时间,包括提供护照信息;19 小时是由于买服务器时护照不在手边,第二天上午才回复,下午收到确认。
建站
配置系统
这一部分参考蓝盒子站长教程。
配置 ssh-key
首先查看电脑当前用户的目录下是否存在.ssh目录,以及目录中是否存在id_rsa
和id_rsa.pub
两个文件。如果存在,公钥即为id_rsa.pub
中的内容。如果不存在,则输入命令:1
$ ssh-keygen -t rsa -C “your_email”
一路回车,直到生成一个矩形的图案为止,生成的这串字符就是后面需要的公钥。
接下来的步骤全部按照蓝盒子站长的教程进行,但我遇到了一个愚蠢的问题,不会保存 nano 编辑的内容并退出。即使编辑器下方有两行提醒,也没能正确保存文件。万一有朋友和我一样,可参考以下保存并退出的方法:
1
2
3
4
5
6
7# ^ 为键盘上的 Ctrl 键,以下方法直接使用 Ctrl 代替
# 退出,并根据提示保存
Ctrl + X 退出,按 y 选择保存,提示 file name to write,利用上下左右键选择要保存到的文件,回车保存
# 退出,并保存
Ctrl + X 退出,按 y 选择保存,回车
# 先保存,后退出
Ctrl + O 并回车保存,Ctrl + X 退出安装常用命令和配置防火墙
直接照抄蓝盒子站长给的命令,都非常顺利。
该步骤完成于 2022.03.03。约耗时 55 分钟,主要由于不会保存 nano 编辑的内容,根据各种教程也总是保存失败。中途一度试图换回之前常用的 vim,但事实证明两年没用就会忘记一切。如果能顺利保存,这一步十分钟以内就可以完成。
tips
虽然上次建站配置好了服务器端的公钥,但这次登录时,MobaXterm 一直返回错误信息:
1 | Disconnected: No supported authentication methods available (server sent: publickey) |
原因是服务器已经关闭账户密码登录,但使用 MobaXterm 登录时没有勾选 Use private key
并指定私钥文件。
具体步骤为 Session -> SSH -> Use private key and specify a private key for passwordless login
。
设置完成后即可顺利登录。
安装 docker 和 docker-compose
根据蓝盒子站长的教程,使用官方提供的一键脚本安装 docker。
1 | # 代码来自蓝盒子站长教程 |
该步骤完成于 2022.03.13。约耗时 15 分钟,包括一开始登录不上服务器而查找原因的时间,实际操作时间约 3 分钟。这一步骤完成后可以通过命令 docker-compose -h
检查 docker 是否真的安装成功。
拉取 Mastodon 镜像 & 初始化 PostgreSQL
这几项全部根据蓝盒子站长 2022-04-25 修改的教程进行。
- 拉取 Mastodon 镜像
直接复制粘贴代码,拉取版本为v3.5.1
,并修改docker-compose.yml
配置文件。 - 初始化 PostgreSQL
复制粘贴代码,并根据教程中的提醒检查代码运行情况。
该步骤完成于 2022.05.07。约耗时 20 分钟,大部分用于思考设个什么密码。以及如果太久没有建站,一定要先看看上一次都做了什么、用过什么命令,这次又因为忘记 nano
怎么退出而慌乱几秒。
配置 Mastodon
这一步骤仍然按照蓝盒子站长的教程进行,根据教程一步步慢慢做,看仔细每一步都要填什么就可以。
根据小球飞象建站笔记中踩坑提醒,如果使用的是 zoho 邮件服务,建议 SMTP server 使用国际版地址,否则可能配置失败,无法发送通知邮件。
1 | SMTP_SERVER=smtp.zoho.com |
该步骤完成于 2022.05.07。耗时约 40 分钟,大多数时间消耗在 docker-compose run --rm web bundle exec rake mastodon:setup
的每一小步上。尤其是 zoho 还突然登录不上,而我又因为时隔近两个月,完全忘记了管理员邮箱是什么,手忙脚乱几分钟。
还需注意的是,在这一步中,所有的密码都不可见。一开始没有意识到这一点,以为密码没有粘贴上,同一位置贴两三遍密码导致出错。以及 .env.production 配置信息一定要在电脑上保存一遍!
安装并配置 nginx
在进行这一步之前,根据蓝盒子站长的提示,先在购买域名的网站 DNS 设置中增加一个 A Record
,将设定的域名指向服务器。
- 安装 nginx
直接运行命令sudo apt install nginx -y
出现报错信息:
1 | Err:2 http://security.ubuntu.com/ubuntu focal-updates/main amd64 libnginx-mod-http-image-filter amd64 1.18.0-0ubuntu1.2 |
谷歌之后发现这是 Ubuntu 20.04
会出现的常见报错,在运行安装命令前应先运行:
1 | sudo apt-get update # 运行这一行之后可以尝试运行安装命令,如果仍报错再运行下一行 |
- 配置 nginx & 配置SSL证书 & 重启nginx
根据蓝盒子站长的教程配置,步骤中没有出错。
该步骤完成于 2022.05.07。约耗时 30 分钟,除了一开始找报错原因费点时间之外,都是运行命令、等待命令结束,操作非常简单。
小结
到这里站点已经上线,后续都是一些个性化修改,可以根据不同需求找相应的教程。
站点搭建实际用时 230 分钟,其中很多时间浪费在不敢做和注意力不集中上。如果不是像我一样每天找一点时间随手操作其中一个小步骤,而是空出一大段时间专心建站的话,应该两到三小时就能够完成上述所有步骤。
如果你和我一样也记不住整个过程中太多账号、用户名和密码,可以在电脑上建一个备忘录或在其它安全的地方记住密码。
备份 (未完成)
参考蓝盒子站长的教程:如何将Mastodon媒体上传至Scaleway云储存
装修
使用管理命令行
- 使用脚本简化命令
参考:使用 alias 脚本缩写 tootctl 命令。
由于前面的步骤一直主要参考蓝盒子站长的教程,所以这里第一步目标文件夹应为/home/mastodon/mastodon
,即cd /home/mastodon/mastodon
。 - 使用命令
1
2tootctl help # 帮助信息,如果正常运行说明上一步的简化命令脚本生效。
tootctl settings registrations close # 关闭注册
此处由于站点装修未完成,暂时关闭注册。也可以在网页端关闭注册。
开启全文搜索
参考蓝盒子站长给出的命令修改相应的配置文件,但在重启 docker 这一步骤报错:
1 | ERROR: yaml.parser.ParserError: while parsing a block mapping |
再次检查 docker-compose.yml
文件发现,只删除 #
会导致缩进不统一,导致对 block 的判断有误。每行在删除 #
的同时,应在行首再删除一个空格。
其余步骤根据教程中的命令,一步一步完成即可。
其它魔改
站点魔改有许多可用的教程,如:
Mastodon | 采用docker建站后的使用与维护
如何装饰你的站点:自定义CSS、中继站和自定义表情
进阶魔改:修改字数上限、媒体上限、投票上限、添加自定义主题、界面用语、非登陆用户有限显示、优化中文搜索,附阻止本站嘟文流入某站点方法