用海外云服务器搭建 Mastodon 去中心化社交服务器完整教程:自建联邦宇宙(Fediverse)实例、ActivityPub 跨实例互通与 tootctl 运维实战(2026 最新版)

📅 · ChengziCloud - 一站式云端服务

一句话结论

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-webPuma 应用服务器,处理网页与 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 Droplet2 GB150 GB SSD2 TB$12
DigitalOcean Droplet4 GB280 GB SSD4 TB$24
DigitalOcean Droplet8 GB4160 GB SSD5 TB$48
DigitalOcean Droplet16 GB8320 GB SSD6 TB$96
AWS Lightsail2 GB2*60 GB SSD3 TB$12
AWS Lightsail4 GB280 GB SSD4 TB$24
AWS Lightsail8 GB2160 GB SSD5 TB$44
AWS Lightsail16 GB4320 GB SSD6 TB$84
阿里云国际版 轻量/ECS2–4 GB240–80 GB按套餐约 $12–$30
腾讯云国际版 轻量/CVM2–4 GB240–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,把时间花在实例运营上,别和旧系统较劲。 延伸阅读:

本文由 5.chengzicloud.cloud 提供,点击访问首页了解更多海外云服务器部署方案和专属优惠。