feat(update): update the backend like nodes via quadlet restart [CI]
This commit is contained in:
1 parent
34190f5a04
commit
68c7113adf
23 files changed
+309
-357
No files matched your search
@@ -0,0 +1,50 @@
|
||||
# MoShiro Backend(面板)的 Podman Quadlet 单元(Podman 4.6 及以上),更新方式和 Agent、Probe 完全一样:
|
||||
# systemd 每次启动这个单元时 Pull=always 先从镜像仓库拉最新的镜像,Backend 在管理端确认更新之后有序退出(先把数据库备份到数据卷的 backups/),
|
||||
# Restart=always 把它拉起来,退出再被拉起就是更新(Backend 自己不下载、不替换任何东西)。
|
||||
# 不会自动重启:Backend 指挥所有节点,更新要管理员在管理端点「更新并重启」。
|
||||
# 回滚:新版启动时会迁移数据库,旧版不认比自己新的数据库。想回到旧版,先停服务,把 backups/pre-update-*.db 复制成数据卷里的 moshiro.db,再把 Image 固定成旧版本号。
|
||||
#
|
||||
# 安装(rootless,普通用户,不用 sudo):
|
||||
# mkdir -p ~/.config/containers/systemd ~/.config/moshiro
|
||||
# 写 ~/.config/moshiro/backend.env,chmod 600,每行一个变量,至少:
|
||||
# MoShiro__DataDirectory=/data
|
||||
# MoShiro__PublicUrl=https://panel.example.com # 面板对外的地址;passkey 绑定在这个域名上,改了会让已注册的 passkey 失效
|
||||
# ASPNETCORE_HTTP_PORTS=8080
|
||||
# 前面有反向代理(Caddy、cloudflared、frp)时再加 MoShiro__TrustedProxies(代理连到 Backend 的地址,rootless pasta 网络下是宿主的局域网地址和 127.0.0.1)
|
||||
# 和 MoShiro__TrustedProxyHeader(Cloudflare 用 CF-Connecting-IP,其他用 X-Forwarded-For),否则登录限流、审计和节点的国家识别看到的都是代理的地址。
|
||||
# 把本文件放进 ~/.config/containers/systemd/
|
||||
# systemctl --user daemon-reload && systemctl --user start moshiro-backend # Quadlet 会自动生成服务,不用 enable;[Install] 让它开机自启
|
||||
# loginctl enable-linger $USER # 退出登录后继续运行(需要管理员执行一次)
|
||||
# 第一次打开面板按页面引导认领:没有默认管理员,认领码在日志里(podman logs moshiro-backend)。
|
||||
# rootful:本文件放进 /etc/containers/systemd/,env 文件放 /etc/moshiro/backend.env,把下面的 EnvironmentFile 改成这个路径、
|
||||
# WantedBy 改成 multi-user.target,用 systemctl(不加 --user)。
|
||||
# 开发通道:把 Image 的 moshiro 换成 moshiro-dev,并在 env 文件里加 MoShiro__UpdateChannel=dev。固定版本:把 :latest 换成 :<版本号>(固定之后更新不会换版本)。
|
||||
# 说明见 docs/ops/deployment.md。
|
||||
[Unit]
|
||||
Description=MoShiro Backend
|
||||
After=network-online.target
|
||||
Wants=network-online.target
|
||||
|
||||
[Container]
|
||||
Image=registry.oeo.one/moshiro/moshiro-backend:latest
|
||||
ContainerName=moshiro-backend
|
||||
Pull=always
|
||||
PublishPort=127.0.0.1:8080:8080
|
||||
EnvironmentFile=%h/.config/moshiro/backend.env
|
||||
Volume=moshiro-backend-data:/data
|
||||
ReadOnly=true
|
||||
NoNewPrivileges=true
|
||||
DropCapability=ALL
|
||||
Tmpfs=/tmp:rw,noexec,nosuid,size=64m,mode=1777
|
||||
StopTimeout=30
|
||||
# 告诉 Backend:退出之后外面会重新拉取,所以「更新」就是退出(没有这一行,管理端不能更新 Backend)
|
||||
Environment=MOSHIRO_UPDATE=restart
|
||||
|
||||
[Service]
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
# 第一次拉取镜像可能要一会儿
|
||||
TimeoutStartSec=600
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
Reference in new issue
Block a user