用海外云服务器搭建 Mastodon 去中心化社交服务器完整教程:自建联邦宇宙(Fediverse)实例、ActivityPub 跨实例互通与 tootctl 运维实战(2026 最新版)
Meta Description: 2026 最新 Mastodon 自建教程:海外云服务器从源码部署联邦宇宙实例,覆盖 PostgreSQL/Redis、Nginx + HTTPS、S3 对象存储、SMTP、跨实例互通与 tootctl 运维,附价格表与 10 条问答。
- 前言
- 先搞清楚:Mastodon 到底是什么
- 部署前的硬性前置条件(三个不可逆决策)
- 服务器初始化与系统依赖
- 拉取源码与安装 Ruby 环境
- 生成配置与初始化数据库
- Nginx 反向代理 + Let's Encrypt HTTPS
- 启动三个 systemd 服务
Meta Description: 2026 最新 Mastodon 自建教程:海外云服务器从源码部署联邦宇宙实例,覆盖 PostgreSQL/Redis、Nginx + HTTPS、S3 对象存储、SMTP、跨实例互通与 tootctl 运维,附价格表与 10 条问答。
关键词:Mastodon 搭建教程、自建 Mastodon 服务器、联邦宇宙 Fediverse、ActivityPub 实例部署、Mastodon 配置要求、Mastodon 对象存储、Mastodon Nginx 反向代理、Mastodon tootctl 运维、Mastodon 和 Discourse 区别、海外云服务器自建社交平台
前言
如果你要的不是「一个封闭的社区」,而是一个公开的社交身份——能像发微博一样公开发布、能被全网其他实例的人关注和转发、而数据完整地留在自己手里——那么你要的既不是论坛,也不是群聊,而是 Mastodon。它是 ActivityPub 协议下最具代表性的开源实现,也是「联邦宇宙」(Fediverse)里节点数量最多的软件:每个自建实例既是一个独立站点,又通过协议和成百上千个其他实例互联互通,你关注的人可以分布在任何一个实例上,彼此都能看到、回复和转发。
和常见的「装个 Docker 一键跑起来」不同,Mastodon 是一个完整的 Rails 应用,官方只给「从源码安装」这一条生产主线:它需要 Ruby、Node.js、PostgreSQL、Redis 四件套,跑起 web / sidekiq / streaming 三个常驻进程,再配 Nginx 反代和 HTTPS。本文给出一份可直接复制执行的完整教程,从服务器选型、安全加固、依赖安装、源码部署、配置向导、Nginx + Let's Encrypt、systemd 服务、S3 对象存储,一路讲到 tootctl 日常运维和实例运营,最后附一份配置价格对比表和 10 条常见问题解答。
🚀 需要一台海外云服务器来跑 Mastodon?通过 5.chengzicloud.cloud 购买阿里云国际版 / 腾讯云国际版 / AWS,享专属折扣。
一、先搞清楚:Mastodon 到底是什么
一句话概括:Mastodon 是一个开源的、去中心化的微博客服务器程序。你把它装在自己的域名下,就得到了一台可以被全网访问的「小微博」;它不属于任何一个中心平台,而是通过 ActivityPub 协议与其它实例互相投递内容,这些互通的实例统称为 Fediverse(联邦宇宙)。
1.1 它和中心化社交平台的根本区别
中心化平台(微博、X/Twitter)里,「平台」是唯一的数据与规则中心;Mastodon 里没有中心——每个实例各自存储自己的用户和内容,彼此用 ActivityPub 交换活动(activities)。这带来两个直接后果:其一,你可以只关注某个实例的人,也可以关注任意实例的人;其二,你所在实例的运营者(就是你自己)决定内容审核、数据留存和是否与其他实例互通,平台封号、算法限流、突然改规则这类风险不再由第三方单方面决定。
1.2 和站内其他「社区/社交」方案的分工
站内已经有 Discourse 论坛、Rocket.Chat 团队 IM 和 WordPress 这套「社区三件套」,它们和 Mastodon 解决的问题完全不同,务必先分清边界再动手:
| 站内既有方案 | 它解决的问题 | 与本文的关系 |
|---|---|---|
Discourse(discourse-forum-self-hosted-deploy-guide) | 一个服务器上的封闭异步论坛,分层长帖讨论 | 本文的对照面:Discourse 是「一个社区」,Mastodon 是「一个公开社交身份 + 联邦互通」 |
Rocket.Chat(rocketchat-selfhosted-im-team-chat-deploy-guide) | 团队/组织内部的私密实时 IM | 面向内部成员,不对外联邦;Mastodon 是公开社交流 |
WordPress / Typecho(wordpress-blog-deploy-guide) | 单向发布的博客文章 | 读者只能读与评论;Mastodon 是双向关注、转发、时间线 |
| Mastodon(本文) | 公开短帖 + 时间线 + 跨实例联邦互通 | 适合想做去中心化社交账号/小社区,并希望与全网实例打通的场景 |
一句话选型:要「关起门来讨论」选 Discourse,要「内部即时沟通」选 Rocket.Chat,要「对外单向发文章」选 WordPress,要「公开社交 + 和全网实例互通」才轮到 Mastodon。
1.3 自建 Mastodon 适合谁
- 想拥有自己的社交账号与数据:发过的帖、关注关系、粉丝全部存在你自己的数据库和磁盘里。
- 想运营一个小型兴趣实例:可以只做「我一个人的实例」,也可以开放注册、做一个小圈子。
- 想接入 Fediverse 生态:你的实例能关注任意其它实例的用户,也能被别人关注,内容可以跨站传播。
如果不打算和全网互通、也不在意数据自持,只是想要个内部讨论区,那 Discourse 更省事——这是本站反复强调的边界,先想清楚再动手。
二、部署前的硬性前置条件(三个不可逆决策)
Mastodon 官方文档在安装页最开头就列了三条前置条件,其中两条一旦上线就无法回头,务必先确认:
2.1 一个独立域名(上线后不能改)
官方前置条件写明需要一个域名(或子域名),例如 example.com。Mastodon 会把实例域名写进每一条账号地址(@用户名@你的域名)和联邦投递记录里——实例上线、有用户和粉丝之后,域名基本无法更改,改了等于整个身份体系重来。另外实例必须独占这个域名的根路径,不能挂在 example.com/mastodon 这类子目录下。建议一开始就想好一个稳定、长期持有的域名,不要用临时域名试水。
2.2 一个可用的 SMTP 邮箱服务(不是可选)
官方前置条件同样写明需要 SMTP 服务器(自建邮件服务或第三方邮件发送服务)。Mastodon 靠邮件做注册确认、密码重置、通知,没有 SMTP 实例几乎无法完成注册流程。站内《邮件服务器搭建》一文给了自建方案;如果不想自建,用任意第三方 SMTP 即可,把地址、端口、账号密码填进配置即可。
2.3 服务器规格:内存是硬约束
官方文档没有给死的最低配置,但生产经验很明确:Mastodon 的瓶颈是内存。它同时跑 web(Puma)、后台任务(Sidekiq)、流式推送(streaming)三个进程,Sidekiq 还要处理跨实例投递和媒体下载,2 GB 内存是勉强能跑的下限,4 GB 是舒适的入门档。磁盘则随媒体文件(尤其是从其它实例缓存过来的图片视频)持续增长,80 GB SSD 起步、并配合第九节的清理命令使用。配置推荐与价格见第十一节。
三、服务器初始化与系统依赖
3.1 上线前先做安全加固
官方前置条件建议在装任何东西之前先加固系统:禁用密码登录(只留密钥)、装 fail2ban 防爆破、只放行 SSH / HTTP / HTTPS 端口。完整清单见站内《网站安全加固指南》,这里给最关键的三步(Ubuntu / Debian):
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
apt install -y fail2ban
systemctl restart fail2ban
官方文档给出的是 iptables 版本(/etc/iptables/rules.v4 + iptables-persistent),效果等价,用 ufw 更省心。切记先确认自己是用密钥登录的再禁用密码登录,否则会把自己锁在门外。
3.2 安装 Node.js 与 PostgreSQL 官方源
Mastodon 需要较新的 Node.js(官方安装页使用 Node 24.x)和 PostgreSQL(官方安装路径已指向 PostgreSQL 18)。先装基础工具,再添加两个官方源:
apt install -y curl wget gnupg lsb-release ca-certificates
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_24.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list
wget -O /usr/share/keyrings/postgresql.asc https://www.postgresql.org/media/keys/ACCC4CF8.asc
echo "deb [signed-by=/usr/share/keyrings/postgresql.asc] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/postgresql.list
3.3 安装系统依赖包
官方安装页给出的完整依赖清单如下,一次装齐(含编译 Ruby 所需的开发库、图片视频处理所需的 imagemagick / ffmpeg / libvips、以及 nginx / redis / postgresql / certbot):
apt update
apt install -y \
imagemagick ffmpeg libvips-tools libpq-dev libxslt1-dev file git \
protobuf-compiler pkg-config autoconf bison build-essential \
libssl-dev libyaml-dev libreadline-dev zlib1g-dev libffi-dev \
libgdbm-dev nginx nodejs redis-server postgresql certbot \
python3-certbot-nginx libidn-dev libicu-dev libjemalloc-dev
装完启用 corepack,让后续的 yarn 能自动按项目要求安装正确版本:
corepack enable
3.4 创建数据库用户
Mastodon 需要一个 PostgreSQL 用户。官方推荐最简单的 ident 认证(同名的 Linux 用户可直接使用,无需单独设密码):
sudo -u postgres psql -c "CREATE USER mastodon CREATEDB;"
提示:官方文档建议用 pgTune 按你的服务器规格生成一份 PostgreSQL 性能配置(DB 类型选 “Web application”),再写入
/etc/postgresql/18/main/postgresql.conf并systemctl restart postgresql。默认配置能跑,但调优后响应更稳。
四、拉取源码与安装 Ruby 环境
Mastodon 用 rbenv 管理 Ruby 版本,项目根目录里的 .ruby-version 决定了要装的版本。先创建运行用户,再切换过去操作:
adduser --disabled-password mastodon
su - mastodon
4.1 拉取最新稳定版代码
官方用 git 克隆到 ~/live,并用一条命令自动检出最新的稳定 tag:
git clone https://github.com/mastodon/mastodon.git live && cd live
git checkout $(git tag -l | grep '^v[0-9.]*$' | sort -V | tail -n 1)
截至本文撰写时,Mastodon 的最新稳定版为 v4.7.3。生产环境请始终使用 tag(形如 v4.7.3)而不是 main 分支,main 是开发线。
4.2 安装 rbenv 与 Ruby
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
source ~/.bashrc
git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install
RUBY_CONFIGURE_OPTS=--with-jemalloc 让 Ruby 链接 jemalloc 内存分配器,官方推荐这样编译以改善内存表现——对 Mastodon 这种常驻进程尤其重要。rbenv install 不跟版本号时,会读取 .ruby-version 自动装对应版本。
4.3 安装 Ruby 与前端依赖
bundle config deployment 'true'
bundle config without 'development test'
bundle install
yarn install
前两条 bundle config 只在首次安装时需要;以后重装或更新依赖,只跑 bundle install 即可。
五、生成配置与初始化数据库
Mastodon 提供一个交互式配置向导,一步完成「生成配置文件 + 预编译前端资源 + 建立数据库结构」:
RAILS_ENV=production bin/rails mastodon:setup
向导会依次问你要域名、是否开启单用户模式、SMTP 相关参数、是否使用对象存储等,并自动把答案写进 .env.production。跑完后可以用编辑器再细调这个文件(官方配置文档在 docs.joinmastodon.org/admin/config/)。几个值得留意的配置项:
LOCAL_DOMAIN:实例主域名,就是账号地址里@后面的那一段,上线后不要改。SMTP_SERVER/SMTP_PORT/SMTP_LOGIN/SMTP_PASSWORD:注册、通知邮件都靠它。SINGLE_USER_MODE:个人单用户实例可设为true,对外表现为一个个人主页;想开放注册就保持关闭。AUTHORIZED_FETCH/LIMITED_FEDERATION_MODE:前者要求其它实例带签名才能拉取你的公开内容(更私密但可能影响互通),后者进入「仅白名单实例互通」的受限联邦模式。
向导末尾会在仍然处于 mastodon 用户下时提示你配置已完成,此时退出回 root:
exit
六、Nginx 反向代理 + Let's Encrypt HTTPS
Mastodon 仓库自带一个 Nginx 配置模板,直接复制过来即可,只改域名和证书路径:
cp /home/mastodon/live/dist/nginx.conf /etc/nginx/sites-available/mastodon
ln -s /etc/nginx/sites-available/mastodon /etc/nginx/sites-enabled/mastodon
rm /etc/nginx/sites-enabled/default
先申请证书:
certbot certonly --nginx -d 你的域名
证书会存到 /etc/letsencrypt/live/你的域名/。然后编辑 /etc/nginx/sites-available/mastodon:把模板里的 example.com 换成你的域名,并取消这两行的注释:
ssl_certificate /etc/letsencrypt/live/你的域名/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/你的域名/privkey.pem;
关键一步:让 Nginx 的 www-data 用户能穿透到 Mastodon 用户的家目录,否则前端静态资源 403:
chmod o+x /home/mastodon
systemctl restart nginx
此时访问域名,你会看到一张大象敲电脑的报错页——这是正常的,因为 Mastodon 的应用进程还没启动。证书与反代的完整原理见站内《Nginx 反向代理 + SSL 证书配置完整指南》。
七、启动三个 systemd 服务
Mastodon 生产环境要跑 三个常驻服务,仓库同样自带模板:
cp /home/mastodon/live/dist/mastodon-*.service /etc/systemd/system/
如果前面有任何路径或用户名与默认不同,先核对一遍 /etc/systemd/system/mastodon-*.service。然后启动并设为开机自启:
systemctl daemon-reload
systemctl enable --now mastodon-web mastodon-sidekiq mastodon-streaming
三个服务的分工必须清楚:
| 服务 | 角色 | 挂了会怎样 |
|---|---|---|
mastodon-web | Puma 应用服务器,处理网页与 API 请求 | 网页直接打不开 |
mastodon-sidekiq | 后台任务:跨实例投递、媒体下载、邮件、清理等 | 帖子发不出去、联邦不同步 |
mastodon-streaming | 实时时间线推送(WebSocket/SSE) | 时间线不自动刷新,需手动刷新 |
刷新页面,大象报错页应该消失了——Mastodon 正式上线。此时可以从「管理」后台或命令行创建第一个账号。
八、进阶:对象存储与全文搜索
8.1 S3 兼容对象存储(媒体文件)
默认媒体文件存在本机磁盘。实例一旦活跃,媒体会成为磁盘增长最大的来源,官方强烈建议改用 S3 兼容对象存储(Mastodon 对 AWS S3、MinIO、Cloudflare R2、Wasabi 等均支持)。开一个 S3_ENABLED=true,并配好下面这组环境变量(写进 .env.production):
- 写操作(上传/删除/改权限)用:
S3_REGION、S3_ENDPOINT、S3_BUCKET、AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、S3_SIGNATURE_VERSION、S3_OVERRIDE_PATH_STYLE; - 读操作(把媒体 URL 发给浏览器/其它实例)用:
S3_PROTOCOL、S3_HOSTNAME,或用S3_ALIAS_HOST来「隐藏」存储商、把媒体走你自己的反代/CDN。
两个官方提醒务必注意:其一,服务文件必须带 CORS 头(例如 Access-Control-Allow-Origin: *),否则部分前端功能不可用;其二,如果之后更换了媒体域名,必须至少提前一周把新域名加进实例的 Content-Security-Policy 头,因为 Mastodon 的 Service Worker 会缓存旧值最长一周,否则用户会看到图片全部破裂。自建对象存储可用站内《MinIO 对象存储搭建教程》。若用 Cloudflare R2(不支持 ACL),需把 S3_PERMISSION 设为空字符串,告诉 Mastodon 不要去设置 ACL。
8.2 全文搜索(可选,Elasticsearch)
Mastodon 的全文搜索默认可直接用 PostgreSQL,但若实例帖子量大、想获得更好的搜索体验,可接 Elasticsearch:设 ES_ENABLED=true 并配好 ES 地址与凭据,然后执行一次 tootctl search deploy 建立索引。中小型实例通常不必上 ES,按需再开。
九、tootctl 常用运维命令
tootctl 是 Mastodon 自带的命令行运维工具,在 live 目录下用 RAILS_ENV=production bin/tootctl 执行(下面的命令均可直接照用)。几个必须掌握的:
// 创建一个已激活的管理员账号
RAILS_ENV=production bin/tootctl accounts create 用户名 --email 邮箱 --confirmed --role Owner
// 修改账号:重置密码 / 批准待审 / 启用禁用 / 改 2FA
RAILS_ENV=production bin/tootctl accounts modify 用户名 --reset-password
RAILS_ENV=production bin/tootctl accounts modify 用户名 --approve
// 清理 7 天前从其它实例缓存过来的媒体(最常用的省磁盘命令)
RAILS_ENV=production bin/tootctl media remove --days 7
// 清理 90 天前、无人互动的远端状态(数据库瘦身,计算量大)
RAILS_ENV=production bin/tootctl statuses remove --days 90
// 清掉链接预览卡片缓存
RAILS_ENV=production bin/tootctl preview_cards remove --days 120
// 剔除已失联的远端账号(对方实例已下线)
RAILS_ENV=production bin/tootctl accounts cull
// 清空缓存、重建时间线 feed
RAILS_ENV=production bin/tootctl cache clear
RAILS_ENV=production bin/tootctl feeds build
省磁盘三件套:media remove(清缓存的远端媒体)+ preview_cards remove(清预览卡)+ media remove-orphans(清无主媒体文件,注意会遍历每个对象、较慢且部分对象存储按次计费)。建议把它们放进定时任务定期跑。实例数据与数据库的备份思路,与站内《服务器备份与容灾恢复方案》一致:重点备份 PostgreSQL 数据库 + .env.production + 本机媒体目录(若用对象存储则媒体不必备份)。
十、实例运营:注册、联邦与内容留存
- 注册模式:
tootctl settings registrations open | close | approved可随时开关注册;approved表示需要你人工审批(可要求填写注册理由)。个人实例可直接关掉注册或开SINGLE_USER_MODE。 - 联邦策略:默认与全网互通。若想收紧,可在后台做域名屏蔽/限制,或开
LIMITED_FEDERATION_MODE只与白名单实例互通——代价是你能看到和被看到的内容都变少,按需权衡。 - 内容留存:后台「管理 > 内容留存(Content retention)」可设置远端媒体缓存的保留时长和用户归档的保留期限。这个清理任务由后台调度器自动执行,不需要你自己配 cron。
- 性能调优:web 的并发由
WEB_CONCURRENCY(进程数)和MAX_THREADS(每进程线程数)控制——线程先吃满 CPU、进程先吃满内存,按实例规模调小或调大。实例增长到需要横向扩展时,官方还提供了 PgBouncer 事务连接池、独立 Redis、只读副本、Web 负载均衡等一整套扩容路径;据官方说明,一个约 5 万账号(1–2 万月活)的社区,流式连接的平均并发在 800–1200 左右,需要多进程 streaming 配合 Nginx 负载均衡。
十一、海外云服务器配置推荐与价格对比
下表价格为当日直读官方定价页的档位-规格映射(DigitalOcean Droplet 与 AWS Lightsail);阿里云国际版 / 腾讯云国际版为区间参考,实际以控制台为准(价格随地域、套餐调整,这里只做量级参考)。带 * 的 vCPU 为突发型(burstable)。
| 服务商 | 内存 | vCPU | 系统盘 | 月流量 | 参考月价 |
|---|---|---|---|---|---|
| DigitalOcean Droplet | 2 GB | 1 | 50 GB SSD | 2 TB | $12 |
| DigitalOcean Droplet | 4 GB | 2 | 80 GB SSD | 4 TB | $24 |
| DigitalOcean Droplet | 8 GB | 4 | 160 GB SSD | 5 TB | $48 |
| DigitalOcean Droplet | 16 GB | 8 | 320 GB SSD | 6 TB | $96 |
| AWS Lightsail | 2 GB | 2* | 60 GB SSD | 3 TB | $12 |
| AWS Lightsail | 4 GB | 2 | 80 GB SSD | 4 TB | $24 |
| AWS Lightsail | 8 GB | 2 | 160 GB SSD | 5 TB | $44 |
| AWS Lightsail | 16 GB | 4 | 320 GB SSD | 6 TB | $84 |
| 阿里云国际版 轻量/ECS | 2–4 GB | 2 | 40–80 GB | 按套餐 | 约 $12–$30 |
| 腾讯云国际版 轻量/CVM | 2–4 GB | 2 | 40–80 GB | 按套餐 | 约 $12–$30 |
选型口诀:2 GB 内存是下限,4 GB 起步,8 GB 才舒服。个人或小圈子实例,DO / Lightsail 的 $24 档(2 核 4G / 80 GB SSD)是性价比最优解;只做单用户个人实例、且媒体全部走对象存储,$12 档也能跑。
声明:本文价格数据采集于 2026 年 10 月,仅为公开官网参考区间,实际以各家官网实时价格为准,金额单位均为美元(USD)。
推荐方案
综合成本与体验,给两套可以直接照抄的组合:
方案 A:个人实例(预算优先)
- 香港 / 新加坡节点,2 核 4G、80 GB SSD、4 TB 月流量(DO / Lightsail 约 $24);
- 按本文第三到第七节从源码部署,开
SINGLE_USER_MODE; - 媒体接对象存储(第八节),本机只留数据库与少量缓存;
- Nginx + Let's Encrypt 提供 HTTPS,只放行 22/80/443。
方案 B:小圈子实例(体验优先)
- 2 核 8G~4 核 8G、160 GB SSD 以上、5 TB 月流量;
- 开放注册并设「需审批」,媒体全部走 S3 兼容对象存储 + CDN;
- 定时跑
tootctl media remove --days 7等清理命令; - 上 PgBouncer 连接池,关注官方扩容文档以备增长。
部署后的日常维护:定期备份 PostgreSQL 数据库与 .env.production;关注官方仓库的版本更新(升级时要走官方的 RAILS_ENV=production bin/rails db:migrate 流程);媒体磁盘占用靠 tootctl media usage 随时查看;实例升级前先在快照上演练一遍,避免线上出问题回不去。
🚀 需要海外云服务器来部署 Mastodon?通过 5.chengzicloud.cloud 购买阿里云国际版 / 腾讯云国际版 / AWS,享专属折扣。
常见问题(FAQ)
Mastodon 和 Discourse、Rocket.Chat 到底有什么区别?我该选哪个?
三者解决的问题不同。Discourse 是一个服务器上的封闭异步论坛(长帖讨论);Rocket.Chat 是团队内部的私密实时 IM;Mastodon 是公开的、可通过 ActivityPub 跨实例联邦互通的社交网络。要「社区讨论」选 Discourse,要「内部 IM」选 Rocket.Chat,要「公开社交 + 和全网实例互通 + 数据自持」才选 Mastodon。
自建 Mastodon 需要什么样的服务器配置?
内存是硬约束:web + sidekiq + streaming 三进程常驻,2 GB 是下限、4 GB 舒适、8 GB 更好;磁盘随媒体增长,80 GB SSD 起步并配合清理命令。个人实例 2 核 4G、小圈子 2 核 8G 以上较稳妥。见第十一节价格表。
域名上线后还能改吗?换域名会怎样?
基本不能改。域名会写进每条账号地址(@用户名@域名)和所有联邦投递记录,官方也把「需要一个域名」列为前置条件。改域名等于整个身份体系重来,用户、粉丝、已有互动关系全部对不上。所以一开始就要用稳定、长期持有的域名,不要拿临时域名试水。
一定要配 SMTP 邮箱吗?不配会怎样?
必须配。官方前置条件明确要求 SMTP 服务器——注册确认、密码重置、通知邮件全靠它,没有 SMTP 实例几乎无法完成注册流程。可以用自建邮件服务,也可以用任意第三方 SMTP。
媒体文件一定要用对象存储吗?不用会怎样?
技术上不是必须,默认存本机磁盘即可。但媒体是磁盘增长的最大来源(尤其从其它实例缓存过来的图片视频),长期跑下去很容易把系统盘撑爆。官方推荐用 S3 兼容对象存储;若坚持本机存储,就务必定期跑 tootctl media remove 等清理命令。
实例能和别的实例互通吗?需要额外配置吗?
默认就能互通。只要你的实例有公网域名和有效 HTTPS,其它实例就能通过 ActivityPub 投递内容、你的用户也能关注任意实例的人。想把范围收紧,可在后台做域名屏蔽,或开 LIMITED_FEDERATION_MODE(只与白名单实例互通,代价是可见内容变少)。
tootctl 提示找不到命令或报错怎么办?
tootctl 要在 Mastodon 代码目录下、以正确的方式调用:RAILS_ENV=production bin/tootctl ...。它读的是当前目录下的配置,所以必须在 ~/live(Mastodon 根目录)里执行;版本较老的实例可能是 bin/tootctl 与 bin/tootctl 之外的路径,以你克隆的实际版本为准。
磁盘被媒体文件撑爆了怎么办?
先看占用:RAILS_ENV=production bin/tootctl media usage。然后依次清理:media remove --days 7(清远端缓存媒体)、preview_cards remove(清预览卡)、media remove-orphans(清无主文件,较慢)。根治办法是把媒体迁到对象存储,本机只保留数据库与少量缓存。
个人单用户实例怎么关掉公开注册?
两种方式:其一,配置里把 SINGLE_USER_MODE 设为 true,实例对外呈现为一个个人主页;其二,直接执行 tootctl settings registrations close 关闭注册。想之后临时开放,再 tootctl settings registrations open 即可。
CentOS 7 能装吗?
不建议。Mastodon 官方安装页明确面向 Ubuntu 24.04 或 Debian 13,且依赖较新的 Ruby(用 rbenv 编译)、Node 24 和 PostgreSQL 18。CentOS 7 已 EOL,内核与基础库都偏旧,编译 Ruby 和跑现代依赖会踩坑。新机一律选 Ubuntu 22.04/24.04 或 Debian 12/13,把时间花在实例运营上,别和旧系统较劲。 延伸阅读:
- Discourse 自建论坛搭建完整教程
- Rocket.Chat 自建团队 IM(即时通讯)教程
- Nginx 反向代理 + SSL 证书配置完整指南
- 用海外服务器搭建 MinIO 对象存储(S3 兼容)教程
- 网站安全加固指南:端口、权限与防爆破
- 服务器备份与容灾恢复方案
本文由 5.chengzicloud.cloud 提供,点击访问首页了解更多海外云服务器部署方案和专属优惠。