跳到正文

运维、备份与恢复

所有命令都应在包含 docker-compose.yml 的 TG Vault 项目目录执行。

更新

更新只需执行安装脚本:

./deploy/install.sh

安装脚本会自动获取最新代码、构建并启动服务,同时保留数据库和文件。已有地址直接按 Enter 保留即可。

健康检查

docker compose ps
curl -fsS http://127.0.0.1:51947/livez
curl -fsS http://127.0.0.1:51947/readyz
curl -I http://127.0.0.1:47832/

查看日志:

docker compose logs --tail=200 backend
docker compose logs --tail=100 frontend postgres
docker compose logs -f backend

常用操作

docker compose restart
docker compose stop
docker compose start
docker compose down

docker compose down 默认不会删除 named volumes。不要添加 -v,除非明确要永久删除 PostgreSQL、文件、密钥和 Telegram session。

备份

一次可恢复的备份必须来自同一维护窗口,并包含:

  1. PostgreSQL custom-format dump
  2. file-storage 卷中的完整 /data
  3. 版本、时间和 SHA-256 manifest

使用仓库脚本:

chmod +x deploy/backup.sh deploy/restore-verify.sh
BACKUP_DIR=./backups ./deploy/backup.sh

脚本会先检查目标空间,然后在数据库 dump 与文件卷归档期间停止 backend,避免上传、删除或 Telegram 后台写入跨越两个快照;结束或失败退出时会恢复 backend。

备份包含内部密钥、第三方存储凭据和 Telegram session。生成后应立即加密、限制权限并复制到异地;不要把 backups/ 提交到 Git。

恢复前验证

在隔离环境运行只读验证:

./deploy/restore-verify.sh ./backups/<backup-directory>

验证脚本会检查 manifest 与归档结构,但不能代替完整恢复演练。定期在隔离 Compose 项目中验证:

Docker 空间清理

先查看:

docker system df
docker system df -v

优先清理不会删除 named volumes 的资源:

docker builder prune -f
docker image prune -f
docker container prune -f
docker network prune -f

需要更大范围时,先确认镜像可重新构建并已有有效备份,再考虑:

docker image prune -a -f
不要对 TG Vault 服务器随意运行 docker system prune --volumesdocker volume prunedocker compose down -v。卷中包含数据库、文件、密钥和 session;误删后只能从备份恢复。

故障排查

backend 不健康

docker compose ps
docker compose logs --tail=250 backend
curl -i http://127.0.0.1:51947/livez
curl -i http://127.0.0.1:51947/readyz

livez=200readyz=503 通常表示数据库、默认存储或安全密钥没有就绪。

PostgreSQL 连接失败

docker compose exec postgres pg_isready -U tgvault -d tgvault
docker compose logs --tail=200 postgres

HTTPS、CORS 或 OAuth 失败

核对:

上传大文件失败

检查反向代理请求体限制、proxy_request_buffering、读写超时、临时磁盘、分片限制和后端日志。WebDAV 目标还应检查无活动与总上传超时。


返回文档中心 · 安全说明