Skip to content

从源代码安装

假设我们使用的发行版为 Debian Trixie,使用 /home/mastodon/live 来存储数据。我们的主用户是一个具有 sudo 权限的用户 gargron。所有需要 sudo 的操作均由 gargron 执行。

1. 创建服务账户

我们为 Mastodon 单独创建一个用户(此处用户名为 mastodon):

bash
sudo adduser --disabled-password --disabled-login mastodon

2. 安装依赖

使用 gargron 用户,执行全局依赖安装操作:

(1) 安装必要软件包

bash
sudo apt update
sudo apt upgrade
sudo apt install -y curl wget gnupg lsb-release ca-certificates

(2) 安装并启用 PostgreSQL

bash
sudo apt install -y postgresql-common
sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh
sudo apt install postgresql-18
sudo systemctl enable --now postgresql

(3) 安装并启用 Redis

bash
sudo apt-get install lsb-release curl gpg
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
sudo chmod 644 /usr/share/keyrings/redis-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
sudo apt-get update
sudo apt-get install redis
sudo systemctl enable --now redis-server

(4) 安装其它系统依赖

bash
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

(5) 切换至 mastodon 用户

bash
sudo su - mastodon

(6) 安装 Node 环境

bash
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
source ~/.bashrc
nvm ls-remote
nvm install --lts
nvm use --lts
node -v
corepack enable yarn
yarn -v

(7) 安装 Ruby 环境

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

3. 配置数据库

(1) 回到 gargron 用户

bash
exit

(2) 进入 PostgreSQL 命令行

bash
sudo -u postgres psql

在输入下面的SQL语句时,请注意替换对应的用户名及密码。

sql
CREATE USER mastodon PASSWORD 'XXXXXXX' CREATEDB;
\q

4. 配置 Mastodon

(1) 切换至 mastodon 用户

bash
sudo su - mastodon

(2) 拉取源码存储库

bash
cd
git clone https://git.univ.town/univtown/mastodon live
cd live

(3) 安装依赖

bash
RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install
bundle config deployment 'true'
bundle config without 'development test'
bundle install -j$(getconf _NPROCESSORS_ONLN)
yarn install

(4) 生成配置

bash
RAILS_ENV=production bin/rails mastodon:setup

按提示进行配置。并记下创建的管理员用户密码

(5) 修改配置

参考修改环境变量配置文件进行修改,必须修改的地方有:

5. 配置反向代理

参见配置反向代理

6. 配置 systemd 服务

(1) 为 mastodon 用户启用 linger

bash
# 切换到 gargron 用户
sudo loginctl enable-linger mastodon

(2) 导入 systemctl 服务配置文件

bash
# 切换到 mastodon 用户
mkdir -p ~/.config/systemd/user
cp /home/mastodon/live/dist/mastodon-{web,streaming,sidekiq}.service ~/.config/systemd/user/

(3) 启动并配置开机自启:

bash
systemctl --user daemon-reload
systemctl --user enable --now mastodon-{web,sidekiq,streaming}

如遇报错,可使用 journalctl --user <服务文件名> 查找原因。如果遇到错误且无法解决,可以向其它管理员或 admin@univ.town 寻求帮助。


至此,服务部署完成,你可以访问你的网站并登录账户了。后续的管理与配置参见安装后续配置