【失败】部署Mastodon

前言

部署Mastodon长毛象

下载镜像

1
docker pull ghcr.io/mastodon/mastodon

下载项目

1
2
git clone https://github.com/mastodon/mastodon.git
cd mastodon

配置Mastodon

通过配置引导创建配置文件

创建配置文件

1
touch .env.production

通过配置引导生成配置

1
docker-compose run --rm web bundle exec rake mastodon:setup

写入配置文件

.env.production
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
LOCAL_DOMAIN=mastondon.loli.fj.cn
SINGLE_USER_MODE=true
SECRET_KEY_BASE=
OTP_SECRET=
VAPID_PRIVATE_KEY=
VAPID_PUBLIC_KEY=
DB_HOST=db
DB_PORT=5432
DB_NAME=postgres
DB_USER=postgres
DB_PASS=
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=
SMTP_SERVER=smtp.mailgun.org
SMTP_PORT=587
SMTP_LOGIN=
SMTP_PASSWORD=
SMTP_AUTH_METHOD=plain
SMTP_OPENSSL_VERIFY_MODE=none
SMTP_FROM_ADDRESS=

通过配置文件模版手动配置

复制配置文件模版

1
cp .env.production.sample .env.production

配置域名

<domain>:域名

.env.production
1
LOCAL_DOMAIN=<domain>

配置REDIS

.env.production
1
2
REDIS_HOST=127.0.0.1
REDIS_PORT=6379

配置PostgreSQL

<password>:postgres中的mastodon用户密码

.env.production
1
2
3
4
5
DB_HOST=127.0.0.1
DB_USER=mastodon
DB_NAME=mastodon
DB_PASS=<password>
DB_PORT=5432

配置秘密

生成秘密
1
docker-compose run --rm web bundle exec rake secret
  • 生成三次
配置秘密
.env.production
1
2
3
PAPERCLIP_SECRET=45926834030f7cda9f68abdc7c7d88efb32c43e024cc5e64a86bf5fdee15a90fa0a8d30a43e5fdd8150d342eabba470ffea9b5105fede5db8d275260d4094c2b
SECRET_KEY_BASE=d6a1f814d8af438e6ee21a58c9e48709de88f0d068e5eacb510d170ddc4d41f0cf7f9461a82f77b134d66d24573febe74b78b764b28e4d8c7283c16001ffd60f
OTP_SECRET=dc6f7ef95a0c6d1c278015eaf7659db4e0a07f80c28628518260d3b52f8b63a97d912eada6066ef7d36167bf85d401ae1de192b9492dbb45bc0a97fe96e67608

配置VAPID_KEY

生成密钥对
1
docker-compose run --rm web bundle exec rake mastodon:webpush:generate_vapid_key
配置密钥对
  • 修改配置文件52行和53行
1
2
VAPID_PRIVATE_KEY=l0kJvAtOaqrx9zpHsZG0Fs3Lp2tSibQn4z5QsnsU8Ko=
VAPID_PUBLIC_KEY=BKx77XAPy5F8C2f9HcTocCSW7GSEbrtriqX7FK4s-Fbm1MrguTODManBFXP0lsUxo48NQ7XNbsQubk5ifUWssKE=

配置邮箱

  • 用于新账户激活时发送验证码
.env.production
1
2
3
4
5
6
SMTP_SERVER=
SMTP_PORT=
SMTP_LOGIN=
SMTP_PASSWORD=
SMTP_FROM_ADDRESS=
SMTP_TLS=true

初始化数据库

1
docker-compose run --rm web bundle exec rake bin/rails db:create

启动Mastodon容器

1
docker-compose up -d

配置Nginx

  • public目录发布
/etc/nginx/nginx.conf
1
2
3
4
server {
listen 80;
root /root/Mastodon/public;
}

完成

参考文献

萌贴士的博客
简书——lxj29
digitalixy
腾讯云开发者社区——KenTalk
CSDN——Mr_庄