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 进行开发的说明。

    • Vagrant 使用快速入门
    • 从源代码手动安装
      • 设置
      • 运行
    • 在开发中使用电子邮件
    • 用于测试的有用命令
    • 更新你的开发实例

Vagrant 使用快速入门

为了方便起见,Mastodon 仓库包含一个 Vagrantfile,用于快速设置开发环境,无需手动配置。要使用此开发环境,请使用二进制可执行文件或通过包管理器安装 Vagrant。

安装 Vagrant 后,为方便起见,建议安装一个插件来自动更新你机器的 hosts 文件。这将允许你通过 http://mastodon.local 访问开发环境,而无需手动编辑 hosts 文件。为此,请执行以下操作:

vagrant plugin install vagrant-hostsupdater

然后可以启动虚拟机:

vagrant up

启动虚拟机后,你可以启动 Foreman 任务执行器来启动各种 Mastodon 进程:

vagrant ssh -c "cd /vagrant && foreman start"

Mastodon 进程完全启动后,你可以在浏览器中加载 http://mastodon.local 以访问 VM 中的 Mastodon 实例。你可以使用用户名 admin@mastodon.local 和密码 mastodonadmin 以默认管理员用户身份登录。

对源代码的任何更改将在保存文件后立即生效。

要将 VM 重置为全新状态,你可以销毁它并重新启动它:

vagrant destroy
vagrant up

从源代码手动安装

你可以按照生产指南中的前提条件说明进行配置,但不要创建 mastodon 用户。你也不必安装 nginx、certbot 和 python-certbot-nginx,因为开发环境自带 Web 服务器。 如果你使用的是 Windows,在 WSL2 上设置和运行开发环境也已证明是可行的。

设置

在项目目录中运行以下命令:

bundle install
yarn install

在开发环境中,Mastodon 将使用 PostgreSQL 作为当前已登录的 Linux 用户,并使用 ident 方法。确保你已为当前已登录的用户创建了 PostgreSQL 用户和数据库:

sudo -u postgres createuser $YOUR_USERNAME_HERE --createdb

现在,你可以创建数据库 mastodon_development 和 mastodon_test,将 schema 加载到其中,并将 db/seeds/ 中定义的种子数据加载到 mastodon_development 中。

rails db:setup

现在,你可以在浏览器中启动 http://localhost:3000 并使用默认管理员用户 (admin@localhost / mastodonadmin) 登录。

默认情况下,Mastodon 将在端口 3000 上运行。如果你为其配置了其他端口,则生成的管理员帐户也将使用该端口号。

运行

需要运行多个进程才能实现 Mastodon 的全部功能,尽管可以选择性地省略它们。要仅使用一个命令运行所有进程,你可以安装并使用 Foreman:

gem install foreman --no-document
foreman start

这将启动 Procfile.dev 中定义的进程,这将为你提供:一个 Rails 服务端、一个 Webpack 服务端、一个流式 API 服务端和一个 Sidekiq。当然,你也可以根据需要单独运行任何这些进程。

在开发中使用电子邮件

在开发模式下,Mastodon 将使用一个名为 Letter Opener 的 gem 来“发送”电子邮件,这允许你在浏览器中调试电子邮件,而无需通过 SMTP 服务器实际发送电子邮件。

为了使用电子邮件,你需要运行 Sidekiq、Redis 和 PostgreSQL,然后可以通过访问 http://localhost:3000/letter_opener/ 来查看电子邮件。

如果你在 docker 中进行开发,则需要设置 REMOTE_DEV=true 环境变量。

用于测试的有用命令

rspec
运行 Ruby 测试套件
yarn run test
运行 JavaScript 测试套件
rubocop
检查 Ruby 代码是否符合我们的代码风格

更新你的开发实例

bundle install
更新 Ruby gems 并安装任何新的依赖项
yarn install
更新 Javascript 包并安装任何新的依赖项
RAILS_ENV=development rails db:migrate
为你的开发实例的数据库运行新的数据库迁移

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

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

赞助商

Dotcom-Monitor LoadView Stephen Tures Swayable SponsorMotion

加入Mastodon · 博客 ·

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