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]