Appearance
迁移
WARNING
- 迁移之前需要全量备份数据。不保证
4.3.x以下的版本能够完整迁移或迁移成功。如果遇到问题,请联系 UnivTown。 - 从上至下依次阅读所有符合你的实例初始状态的迁移说明
- 旧版本的操作系统(如CentOS7、Ubuntu 20.04、Debian 11)自带的包可能已经无法满足最低依赖要求
- 下列迁移操作要求完全停止 Mastodon 服务
从闭社版迁移
以下变更汇总相对基于 4.1.2 版本的闭社分支。
样式变更
- UnivTown Mastodon 现在默认使用 Mastodon Modern 主题
- 在移动设备视图中,侧边栏现在默认在底部,且不支持更改位置(可在设置 -> 管理 -> 站点设置 -> 外观中通过自定义 CSS 进行修改)
- 交互按钮的样式将回到 Mastodon Modern 下的默认样式
- 站点图标将变为 Mastodon 默认图标,现已支持自行设置站点图标和 Favicon
目前暂不支持的功能和服务
- 在时间线直接显示精确互动数量
- 对管理员隐藏账户邮箱
- 提问箱集成
- 新闻 bot 与热门链接页的集成
- 对邀请注册也检查邮件白名单
已经由上游实现的功能
- 引用贴文的配置和展示以上游实现为准。UnivTown Mastodon 对引用贴文的修改参见修改汇总
- Mastodon 已经支持悬停时展示资料卡,故不再实现提及时展示昵称而非用户名的功能
行为发生改变的功能
迁移说明
迁移时,阅读上述变更提示,确认可以接受后,检查当前实例的版本,然后继续阅读当前版本的迁移说明。
从原版/Glitch版/Chuckya迁移
- 阅读修改汇总,确认可以接受目前的修改。
- 检查当前实例的版本,然后继续阅读当前版本的迁移说明。
从上述分支以外的分支迁移
- 自行比对功能和行为差异,确认迁移可行且可以接受。
- 根据实际情况自行迁移。
从 3.x 迁移
- 从当前次要版本的下一个版本开始,逐个阅读原版 Mastodon 的发行说明,直到
3.5.x。记下需要的迁移步骤,暂不执行。 - 继续阅读下面的迁移说明
从 4.0.x / 4.1.x / 4.2.x 迁移
- 如果从源代码安装,安装 Libvips 取代 ImageMagick,具体版本要求参见最新更新日志中的依赖要求
- 需要在对应的环境中执行
bin/rails db:encryption:init生成对应的 Active Record 加密参数并将其添加到环境变量配置文件。记下此步骤,暂不执行 - StatsD 集成已经被移除,如果不使用 StatsD,可以忽略
- 继续阅读下面的迁移说明
从 4.3.x 迁移
- Redis Namespace 支持已被移除,如果使用 Redis Namespace,可参考此处指引;如果不使用 Redis Namespace,可以忽略
- 旧
Import::RelationshipWorker和ImportWorker的未完成 Sidekiq 作业队列将无法继续运行。如果有大量上述未完成作业,可以考虑先执行目前记录的所有步骤,更新到原版 Mastodon 4.3.x 运行一段时间 - 继续阅读下面的迁移说明
开始迁移
- 阅读修改汇总,确认可以接受目前的修改。
- 如果条件允许,从当前次要版本的下一个版本开始,逐个阅读原版 Mastodon 的发行说明,直到
4.5.x。 - 更新源代码或镜像
如果使用源代码部署,需要添加 https://git.univ.town/univtown/mastodon.git 为新 remote 并签出新分支。
bash
git remote rename origin old-origin
git remote add origin https://git.univ.town/univtown/mastodon.git
git fetch --all
git branch -M old-main
git checkout main如果使用容器部署,需要确保各个服务分别使用以下镜像:
Web - git.univ.town/univtown/mastodon:latest Sidekiq - git.univ.town/univtown/mastodon:latest Streaming - git.univ.town/univtown/mastodon-streaming:latest
如果部署了 Elasticsearch,可以使用 UnivTown 的预构建 Elasticsearch 镜像: git.univ.town/univtown/elasticsearch:9
使用源代码但原来并未配置 https://git.univ.town/univtown/mastodon.git 这个 remote 的,先添加这个 remote , git fetch --all 后签出追踪 git.univ.town/univtown/mastodon:main 的新分支。如果已经配置了这个 remote,签出追踪 git.univ.town/univtown/mastodon:main 的新分支即可。签出分支后按照常规的依赖更新步骤(大致步骤为:确保所有依赖满足最低版本要求之后执行 bundle install && yarn install)更新使用的依赖版本。注意老系统(如CentOS7、Ubuntu 20.04、Debian 11)自带的包可能已经无法满足最低依赖要求。各服务的最低版本要求参考 4.4.0 的 release note
- 更新依赖与配置
如果使用源码部署,需要按照最新一条更新日志中的依赖要求确保所有必要的依赖版本都符合最低要求。需要重新编译前端资产(如果使用早期版本,可能需要根据提示更新 yarn)。
如果使用容器部署,需要仔细对照docker-compose.yml修改其余配置,确保其符合要求。
- 更新配置
(1) 查看记录的所有待操作步骤中需要增加的环境变量,执行对应的命令并配置环境变量。如果使用了已经被弃用的功能,需要移除对应的环境变量。
(2) 如果使用源码部署,使用 /dist 中的 Systemctl 服务文件覆盖原有的服务文件,并按照实际情况更新对应的部分。
(3) 参考nginx.conf和反向代理配置文档更新反向代理配置。
- 清除 Rails 缓存
bash
RAILS_ENV=production bin/tootctl cache clear- 在对应的 Mastodon 环境运行数据库迁移,注意查看迁移中有无报错
bash
RAILS_ENV=production bundle exec rails db:migrate启动 Mastodon 服务,查看有无报错
如果在迁移之前配置了全文搜索,需要重新执行全量索引:
bin/tootctl search deploy --reset-chewy,如果为 docker 安装和其他自定义情况,需要自行确定对应的命令。如果之前使用的是原版搜索方案,需要先在 ElasticSearch 安装analysis-ik和analysis-stconvert。全文搜索的完整配置文档参见此处。