docs-mastodon/content/zh-cn/admin/install.md

244 lines
7.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: 从源代码安装
description: 创建你自己的 Mastodon 站点的教程。
menu:
docs:
weight: 20
parent: admin
---
## 前提条件 {#pre-requisites}
* 一台运行 **Ubuntu 24.04****Debian 12** 的机器你需要拥有root访问权限
* 一个用于 Mastodon 站点的**域名**(或子域名),例如 `example.com`
* 一个电子邮件发送服务或其他 **SMTP 服务器**
在以下示例中,我们将使用 `example.com` 作为域名。请记得在运行任何命令前将其替换为你自己的域名。
你将以 root 身份运行命令。如果你还不是 root 用户,请切换到 root`sudo -i`
### 系统存储库 {#system-repositories}
首先确保已安装 curl、 wget、 gnupg、 apt-transport-https、 lsb-release 和 ca-certificates
```bash
apt install -y curl wget gnupg apt-transport-https lsb-release ca-certificates
```
#### Node.js {#node-js}
```bash
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 {#postgresql}
```bash
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
```
### 系统软件包 {#system-packages}
```bash
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 {#yarn}
启用`corepack`,以便自动安装正确版本的`yarn`
```bash
corepack enable
```
### 创建 `mastodon` 用户 {#creating-the-mastodon-user}
执行以下命令,创建用于运行 Mastodon 的用户:
```bash
adduser --disabled-password mastodon
```
## 配置 {#setup}
### 配置 PostgreSQL {#setting-up-postgresql}
#### 性能配置(可选) {#performance-configuration-optional}
为获得最佳性能,你可以使用 [pgTune](https://pgtune.leopard.in.ua/#/) 生成适当的配置,并在使用 `systemctl restart postgresql` 重启 PostgreSQL 之前编辑 `/etc/postgresql/17/main/postgresql.conf` 中的值。
#### 创建用户 {#creating-a-user}
你需要创建一个供 Mastodon 使用的 PostgreSQL 用户。在简单配置中,最简单的方法是使用 "ident" 认证,即 PostgreSQL 用户没有单独的密码,可以由具有相同用户名的 Linux 用户使用。
打开命令行:
```bash
sudo -u postgres psql
```
在命令行中执行:
```sql
CREATE USER mastodon CREATEDB;
\q
```
完成!
### 设置 Mastodon {#setting-up-mastodon}
现在是下载 Mastodon 代码的时候了。切换到 mastodon 用户:
```bash
su - mastodon
```
#### 检出代码 {#checking-out-the-code}
使用 git 下载 Mastodon 的最新稳定版本:
```bash
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 {#installing-ruby}
我们将使用 rbenv 来管理 Ruby 版本,因为它简化了获取正确版本和在新版本可用时进行更新的过程。
安装 rbenv 和 ruby-build
```bash
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版本
```bash
RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install
```
#### 安装最后的依赖项 {#installing-the-last-dependencies}
现在安装 Ruby 和 JavaScript 依赖项:
```bash
bundle config deployment 'true'
bundle config without 'development test'
bundle install -j$(getconf _NPROCESSORS_ONLN)
yarn install
```
{{< hint style="info" >}}
仅在首次安装依赖项时需要执行两个 `bundle config` 命令。如果你之后要更新或重新安装依赖项,只需执行 `bundle install` 就足够了。
{{< /hint >}}
#### 生成配置 {#generating-a-configuration}
运行交互式设置向导:
```bash
RAILS_ENV=production bin/rails mastodon:setup
```
这将:
* 创建一个配置文件
* 运行资源预编译
* 创建数据库架构
配置文件保存为 `.env.production`。你可以查看并按照喜好编辑它。请参考[配置文档]({{< relref "config" >}})。
现在你已完成 mastodon 用户的操作,切回 root 用户:
```bash
exit
```
### 获取SSL证书 {#acquiring-a-ssl-certificate}
我们将使用 Let's Encrypt 获取免费的 SSL 证书:
```bash
certbot certonly --nginx -d example.com
```
这将获取证书并将其保存在 `/etc/letsencrypt/live/example.com/` 目录下。
### 设置nginx {#setting-up-nginx}
从 Mastodon 目录复制 nginx 的配置模板:
```bash
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` 用户可以访问资源文件:
```bash
chmod o+x /home/mastodon
```
重启 nginx 使更改生效:
```bash
systemctl restart nginx
```
此时,你应该能够在浏览器中访问你的域名,看到大象撞击电脑屏幕的错误页面。这是因为我们还没有启动 Mastodon 进程。
### 设置 systemd 服务 {#setting-up-systemd-services}
从 Mastodon 目录复制 systemd 服务模板:
```sh
cp /home/mastodon/live/dist/mastodon-*.service /etc/systemd/system/
```
如果你修改了默认设置,请检查用户名和路径是否正确:
```sh
$EDITOR /etc/systemd/system/mastodon-*.service
```
最后,启动并启用新的 systemd 服务:
```sh
systemctl daemon-reload
systemctl enable --now mastodon-web mastodon-sidekiq mastodon-streaming
```
Mastodon 服务现在将在开机时自动启动。
{{< hint style="success" >}}
**太好了!以上就是安装 Mastodon 的全部步骤。现在你可以在浏览器中访问你的站点了!**
{{< /hint >}}
{{< translation-status-zh-cn raw_title="Installing from source" raw_link="/admin/install/" last_translation_time="2025-04-21" raw_commit="6addd5cf525adec1859f48c52dafcfe1f96e558a">}}