Docker下的Mastodon升级
起因
(Mastodon的安装参考前文《Docker下的Mastodon安装笔记》)
运维这个事情有个原则就是:能不动就不动。不过因为最近毛毛象爆了一个严重安全漏洞(CVE-2024-23832),不补不行,所以搞了一次升级,为了保险起见,先进行了一次中版本的升级,比3.4.x升级到3.5.x,即使如此,也还是有一些工作要做的。
中版本升级
参考官方文档:V3.5.0 Upgrade notes
- 首先当然是备份:
docker exec mastodon_db pg_dump -Fc -U postgres postgres > name_of_the_backup.dump
,不过我这边已经在docker-compose里指定了容器名称,所以没有_1后缀 - 然后是升级mastodon。因为用了docker,所以不需要考虑ruby和node的版本,只要看看postgresql版本是否大于9.5,redis版本是否大于4,ES版本是否大于7,这些我这边都没问题,不需要更新。
- 然后是升级以后的操作:
# 运行预部署数据库迁移命令:
docker-compose run --rm -e SKIP_POST_DEPLOYMENT_MIGRATIONS=true web rails db:migrate
# docker方式不需要预编译,直接重启mastodon
docker-compose down
docker-compose up -d
# 清除缓存
docker-compose run --rm web bin/tootctl cache clear
# 完成数据库迁移
docker-compose run --rm web rails db:migrate
# 再次重启mastodon
docker-compose down
docker-compose up -d
大版本升级
大版本升级(3.x升级到4.x)参考官方文档:v4.0.0 Upgrade notes,基本上跟中版本升级是一样的。
- 老规矩,先备份:
docker exec mastodon_db pg_dump -Fc -U postgres postgres > name_of_the_backup.dump
- 然后升级mastodon。
- 最后是升级后的操作:
# 数据库迁移
docker-compose run --rm -e SKIP_POST_DEPLOYMENT_MIGRATIONS=true web rails db:migrate
# docker方式不需要预编译,直接重启mastodon
docker-compose down
docker-compose up -d
# 清除缓存
docker-compose run --rm web bin/tootctl cache clear
# 完成数据库迁移
docker-compose run --rm web rails db:migrate
# 再次重启mastodon
docker-compose down
docker-compose up -d
4.x中版本升级
之前的升级方式都差不多,到4.x有一些不同,特别是升级到4.2.x。
-
4.0.x升级到4.1.x参考官方文档:v4.1.0 Upgrade notes
-
4.1.x升级到4.2.x参考官方文档:v4.2.0 Upgrade notes
-
虽然文档没说,但先备份准没错:
docker exec mastodon_db pg_dump -Fc -U postgres postgres > name_of_the_backup.dump
-
然后升级mastodon。依赖版本跟之前是一样的。
-
最后是升级后的操作:
# 4.0.x升级到4.1.x
# 数据库迁移
docker-compose run --rm web rails db:migrate
# docker方式不需要预编译,直接重启mastodon
docker-compose down
docker-compose up -d
# 4.1.x升级到4.2.x
# Postgresql版本需要10及以上,增加对LibreTranslate版本1.3.3及以上和ImageMagick版本6.9.7-7及以上的要求
# 数据库迁移
docker-compose run --rm -e SKIP_POST_DEPLOYMENT_MIGRATIONS=true web bundle exec rails db:migrate
# 重启mastodon
docker-compose down
docker-compose up -d
# 运行部署后数据迁移命令
docker-compose run --rm web bundle exec rails db:migrate
# 如果使用ES,需要更新一下索引
docker-compose run --rm web bin/tootctl search deploy --reset-chewy
推送到[go4pro.org]