部署mastodon站点


这篇文章是在digitalocean的2C 2G Debian 11 x64服务器下部署的,此时的mastodon版本为4.1.2。

以下命令均以一个非root但具有sudo权限的用户的身份执行。

准备环境

1.保持系统最新、安装必要软件包

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

在实践过程中第三条命令似乎不会造成任何改动

2.安装Node 16.x

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
source ~/.bashrc
nvm install --lts=gallium
nvm use lts/gallium
node -v

在实践过程中直接添加apt源并安装的方式似乎会出现报错

3.安装Postgresql和Redis

sudo wget -O /usr/share/keyrings/postgresql.asc https://www.postgresql.org/media/keys/ACCC4CF8.asc
sudo 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
sudo apt update
sudo apt install postgresql redis-server

4.补充安装Mastodon文档要求的其它包

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

5.安装Yarn

npm install --global yarn
corepack enable
yarn set version classic

6.安装Ruby

cd
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
cd ~/.rbenv && src/configure && make -C src
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/plugins/ruby-build
RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install 3.0.6
rbenv global 3.0.6
gem install bundler --no-document

注意:随着mastodon版本变化,需要的rbenv版本也随之改变
安装过程可能需要耗费相当长时间

7.创建数据库用户

sudo -u postgres psql

在输入下面的SQL语句时,请注意替换对应的用户名及密码。如保持USER字段为mastodon不变,后续可能出现使用密码无法登录的情况(不保证不是因为我输错密码)

CREATE USER mastodon PASSWORD 'XXXXXXX' CREATEDB;
\q

部署Mastodon

1.拉取源码存储库

cd
git clone https://github.com/mastodon/mastodon.git live && cd live
git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)

2.安装依赖


  目录