Mastodon
  • 什么是 Mastodon?
  • 使用 Mastodon
    • 注册帐户
    • 设置你的个人资料
    • 在你的账户发布内容
    • 使用网络功能
    • 处理不想看到的内容
    • 推广你和他人
    • 进行偏好设置
    • 更多设置
    • 在站点外使用 Mastodon
    • 迁移或离开账户
    • 运行你自己的站点
  • 运营 Mastodon
    • 准备你的服务器
    • 从源代码安装
    • 配置你的环境
    • 安装可选功能
      • 对象存储
      • 洋葱服务
      • 验证码
      • 单点登录
    • 配置全文搜索
    • 设置你的新实例
    • 使用管理 CLI
    • 升级到新版本
    • 备份你的服务器
    • 迁移到新机器
    • 扩大你的站点规模
    • 审核操作
    • 故障排除
      • 数据库索引损坏
    • 用户组
  • 开发 Mastodon 应用
    • API 入门指南
    • 使用公开数据
    • 获取客户端应用访问权限
    • 使用帐户登录
    • 库与实现
  • 向 Mastodon 项目做贡献
    • 技术概览
    • 设置开发环境
    • 代码结构
    • 路由
    • 漏洞赏金与责任披露
  • 遵循的标准
    • ActivityPub
    • WebFinger
    • 安全性
    • Microformats
    • OAuth
    • Bearcaps
  • REST API
    • Datetime 格式
    • 指南与最佳实践
    • OAuth 令牌
    • OAuth 作用域
    • 速率限制
  • API 方法
    • apps
      • oauth
      • emails
    • accounts
      • bookmarks
      • favourites
      • mutes
      • blocks
      • domain_blocks
      • filters
      • reports
      • follow_requests
      • endorsements
      • featured_tags
      • preferences
      • followed_tags
      • suggestions
      • tags
    • profile
    • statuses
      • media
      • polls
      • scheduled_statuses
    • timelines
      • conversations
      • lists
      • markers
      • streaming
    • grouped notifications
    • notifications
      • push
    • search
    • instance
      • trends
      • directory
      • custom_emojis
      • announcements
    • admin
      • accounts
      • canonical_email_blocks
      • dimensions
      • domain_allows
      • domain_blocks
      • email_domain_blocks
      • ip_blocks
      • measures
      • reports
      • retention
      • trends
    • proofs
    • oembed
  • API 实体
    • Account
    • AccountWarning
    • Admin::Account
    • Admin::CanonicalEmailBlock
    • Admin::Cohort
    • Admin::Dimension
    • Admin::DomainAllow
    • Admin::DomainBlock
    • Admin::EmailDomainBlock
    • Admin::Ip
    • Admin::IpBlock
    • Admin::Measure
    • Admin::Report
    • Announcement
    • Appeal
    • Application
    • Context
    • Conversation
    • CustomEmoji
    • DomainBlock
    • Error
    • ExtendedDescription
    • FamiliarFollowers
    • FeaturedTag
    • Filter
    • FilterKeyword
    • FilterResult
    • FilterStatus
    • IdentityProof
    • Instance
    • List
    • Marker
    • MediaAttachment
    • Notification
    • NotificationPolicy
    • NotificationRequest
    • Poll
    • Preferences
    • PreviewCard
    • PreviewCardAuthor
    • PrivacyPolicy
    • Reaction
    • Relationship
    • RelationshipSeveranceEvent
    • Report
    • Role
    • Rule
    • ScheduledStatus
    • Search
    • Status
    • StatusEdit
    • StatusSource
    • Suggestion
    • Tag
    • TermsOfService
    • Token
    • Translation
    • V1::Filter
    • V1::Instance
    • V1::NotificationPolicy
    • WebPushSubscription

从源代码安装

创建你自己的 Mastodon 站点的教程。

    • 前提条件
      • 系统存储库
      • 系统软件包
      • 创建 mastodon 用户
    • 配置
      • 配置 PostgreSQL
      • 设置 Mastodon
      • 获取SSL证书
      • 设置nginx
      • 设置 systemd 服务

前提条件

  • 一台运行 Ubuntu 24.04 或 Debian 12 的机器,你需要拥有root访问权限
  • 一个用于 Mastodon 站点的域名(或子域名),例如 example.com
  • 一个电子邮件发送服务或其他 SMTP 服务器

在以下示例中,我们将使用 example.com 作为域名。请记得在运行任何命令前将其替换为你自己的域名。

你将以 root 身份运行命令。如果你还不是 root 用户,请切换到 root:sudo -i

系统存储库

首先确保已安装 curl、 wget、 gnupg、 apt-transport-https、 lsb-release 和 ca-certificates:

apt install -y curl wget gnupg apt-transport-https lsb-release ca-certificates

Node.js

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_20.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list

PostgreSQL

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

系统软件包

apt update
apt install -y \
  imagemagick ffmpeg libvips-tools libpq-dev libxml2-dev libxslt1-dev file git-core \
  g++ libprotobuf-dev protobuf-compiler pkg-config gcc autoconf \
  bison build-essential libssl-dev libyaml-dev libreadline6-dev \
  zlib1g-dev libncurses5-dev libffi-dev libgdbm-dev \
  nginx nodejs redis-server redis-tools postgresql postgresql-contrib \
  certbot python3-certbot-nginx libidn11-dev libicu-dev libjemalloc-dev

Yarn

启用corepack,以便自动安装正确版本的yarn:

corepack enable

创建 mastodon 用户

执行以下命令,创建用于运行 Mastodon 的用户:

adduser --disabled-password mastodon

配置

配置 PostgreSQL

性能配置(可选)

为获得最佳性能,你可以使用 pgTune 生成适当的配置,并在使用 systemctl restart postgresql 重启 PostgreSQL 之前编辑 /etc/postgresql/17/main/postgresql.conf 中的值。

创建用户

你需要创建一个供 Mastodon 使用的 PostgreSQL 用户。在简单配置中,最简单的方法是使用 “ident” 认证,即 PostgreSQL 用户没有单独的密码,可以由具有相同用户名的 Linux 用户使用。

打开命令行:

sudo -u postgres psql

在命令行中执行:

CREATE USER mastodon CREATEDB;
\q

完成!

设置 Mastodon

现在是下载 Mastodon 代码的时候了。切换到 mastodon 用户:

su - mastodon

检出代码

使用 git 下载 Mastodon 的最新稳定版本:

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)

安装 Ruby

我们将使用 rbenv 来管理 Ruby 版本,因为它简化了获取正确版本和在新版本可用时进行更新的过程。 安装 rbenv 和 ruby-build:

git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
exec bash
git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build

完成这些后,我们可以安装正确的Ruby版本:

RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install

安装最后的依赖项

现在安装 Ruby 和 JavaScript 依赖项:

bundle config deployment 'true'
bundle config without 'development test'
bundle install -j$(getconf _NPROCESSORS_ONLN)
yarn install
仅在首次安装依赖项时需要执行两个 bundle config 命令。如果你之后要更新或重新安装依赖项,只需执行 bundle install 就足够了。

生成配置

运行交互式设置向导:

RAILS_ENV=production bin/rails mastodon:setup

这将:

  • 创建一个配置文件
  • 运行资源预编译
  • 创建数据库架构

配置文件保存为 .env.production。你可以查看并按照喜好编辑它。请参考配置文档。

现在你已完成 mastodon 用户的操作,切回 root 用户:

exit

获取SSL证书

我们将使用 Let’s Encrypt 获取免费的 SSL 证书:

certbot certonly --nginx -d example.com

这将获取证书并将其保存在 /etc/letsencrypt/live/example.com/ 目录下。

设置nginx

从 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

然后编辑 /etc/nginx/sites-available/mastodon 以

  1. 将 example.com 替换为你自己的域名

  2. 取消注释 ssl_certificate 和 ssl_certificate_key(如果你使用自己的证书,请忽略此步骤):

    ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;;
    
  3. 进行你可能需要的任何其他调整。

允许其他用户遍历 mastodon 用户的主目录,以便 nginx 的 www-data 用户可以访问资源文件:

chmod o+x /home/mastodon

重启 nginx 使更改生效:

systemctl restart nginx

此时,你应该能够在浏览器中访问你的域名,看到大象撞击电脑屏幕的错误页面。这是因为我们还没有启动 Mastodon 进程。

设置 systemd 服务

从 Mastodon 目录复制 systemd 服务模板:

cp /home/mastodon/live/dist/mastodon-*.service /etc/systemd/system/

如果你修改了默认设置,请检查用户名和路径是否正确:

$EDITOR /etc/systemd/system/mastodon-*.service

最后,启动并启用新的 systemd 服务:

systemctl daemon-reload
systemctl enable --now mastodon-web mastodon-sidekiq mastodon-streaming

Mastodon 服务现在将在开机时自动启动。

太好了!以上就是安装 Mastodon 的全部步骤。现在你可以在浏览器中访问你的站点了!

翻译状态: 本文是英文页面 Installing from source 的翻译,最后翻译时间:2025-04-21,点击这里可以查看翻译后页面的改动。

最后更新于 April 21, 2025 · 改进此页面
也可在此找到: English

赞助商

Dotcom-Monitor LoadView Stephen Tures Swayable SponsorMotion

加入Mastodon · 博客 ·

查看源代码 · CC BY-SA 4.0 · 版权信息