Appearance
从源代码安装
假设我们使用的发行版为 Debian Trixie,使用 /home/mastodon/live 来存储数据。我们的主用户是一个具有 sudo 权限的用户 gargron。所有需要 sudo 的操作均由 gargron 执行。
1. 创建服务账户
我们为 Mastodon 单独创建一个用户(此处用户名为 mastodon):
bash
sudo adduser --disabled-password --disabled-login mastodon2. 安装依赖
使用 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-build3. 配置数据库
(1) 回到 gargron 用户
bash
exit(2) 进入 PostgreSQL 命令行
bash
sudo -u postgres psql在输入下面的SQL语句时,请注意替换对应的用户名及密码。
sql
CREATE USER mastodon PASSWORD 'XXXXXXX' CREATEDB;
\q4. 配置 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 寻求帮助。
至此,服务部署完成,你可以访问你的网站并登录账户了。后续的管理与配置参见安装后续配置。