
Databasement生产环境配置清单环境变量、队列Worker与安全加固要点【免费下载链接】databasementSelf-hosted database backup manager with a web UI. Schedule, backup, and restore MySQL, PostgreSQL, MariaDB, Microsoft SQL Server, MongoDB, SQLite Redis to S3, SFTP, Samba or local storage. SSH Tunnel support.项目地址: https://gitcode.com/gh_mirrors/da/databasementDatabasement 是一款自托管的数据库备份管理工具提供 Web 界面来调度、备份和恢复 MySQL、PostgreSQL、MariaDB、SQL Server、MongoDB、SQLite 与 Redis备份文件可存入 S3、SFTP、Samba 或本地存储并支持 SSH 隧道。要把 Databasement 部署到生产环境只需盯住三件事环境变量、队列 Worker和安全加固。本文整理了一份可直接照做的配置清单。一、生产环境变量配置清单Databasement 的所有核心行为都由.env环境变量驱动官方在 docker-compose.yml 中为 app 和 worker 两个服务共享同一份.env。以下是生产环境必须检查的变量1. 基础必填项变量说明生产建议值APP_KEY应用加密密钥必填用docker run --rm davidcrty/databasement:1 php artisan key:generate --show生成APP_URL应用完整访问地址https://backup.yourdomain.comAPP_DEBUG调试模式必须false否则错误详情会暴露给访问者APP_DISPLAY_TIMEZONEUI、备份文件名与计划任务使用的时区如Asia/Shanghai数据内部始终以 UTC 存储LOG_CHANNEL日志通道stderr由 Docker 统一收集LOG_LEVEL最低日志级别warning2. 数据库连接Databasement 自身的数据库Databasement 需要一个应用数据库存放用户、数据库服务器与备份配置支持 SQLite、MySQL/MariaDB 和 PostgreSQL。生产环境建议 MySQL 或 PostgreSQLSQLite 需保证/data卷持久化# 生产示例MySQL DB_CONNECTIONmysql DB_HOSTyour-mysql-host DB_PORT3306 DB_DATABASEdatabasement DB_USERNAMEdatabasement DB_PASSWORDsecure-password-here注意请为 Databasement 创建专用账号不要直接使用 root。完整配置说明见 application.md。3. 反代与限流变量说明说明TRUSTED_PROXIES可信代理 IP/CIDR反代环境下建议*或列出代理网段否则 HTTPS 与客户端 IP 识别会出错API_RATE_LIMIT每个 API Token 每分钟请求上限默认300设0关闭仅作用于/api/v1/*Web 界面不受影响排查反代问题时可临时开启APP_DEBUGtrue访问/health/debug确认is_trusted_proxy与secure是否为true排查完务必关回。二、队列 Worker 配置备份任务的心脏Databasement 的备份、恢复、快照清理等任务全部走 Laravel 队列。生产上最常见的坑就是Worker 没跑起来导致备份任务永远排队相关实现见 config/queue.php。1. 两种部署方式二选一方式一单容器在.env中开启容器内嵌 WorkerENABLE_QUEUE_WORKERtrue方式二Docker Compose 独立 worker 服务推荐备份任务崩溃或重启不影响 Web 界面。官方推荐命令worker: image: davidcrty/databasement:1 restart: unless-stopped deploy: replicas: 1 # 调大可并行执行更多备份 command: sh -c php artisan db:wait --check-migrations php artisan queue:work --queuebackups,default --tries3 --timeout3600 --sleep3 --max-jobs1000 env_file: .env关键点--queuebackups,default同时消费备份队列和默认队列replicas大于 1 即可并行执行多个备份是扩容吞吐的唯一旋钮--timeout3600要大于单库最大转储时长避免大库任务被中途杀掉Worker 启动前会执行db:wait --check-migrations确保数据库就绪。2. 超时与重试的联动机制队列的retry_after框架默认只有 90 秒而备份任务默认超时可长达 7200 秒——如果不处理正在执行的 dump 会被第二个 Worker 重复领取。Databasement 通过 QueueTimeouts.php 自动把retry_after抬升到“任务超时 300 秒”并用防重叠锁保证同一备份不会跑两遍。⚠️一个必须记住的运维要点Worker 启动时才读取一次超时配置因此修改界面上的备份任务超时后要重启 worker 服务才能生效。三、安全加固要点1. 关闭调试 配置 HTTPS 反代APP_DEBUGfalse生产日志级别LOG_LEVELwarning用 Nginx/Traefik 等反代终结 TLSTraefik 需显式指向容器内2226 端口配合TRUSTED_PROXIES让应用正确识别X-Forwarded-For与X-Forwarded-Proto。2. 备份文件加密压缩方式选择encrypted后备份会用 7-Zip 做 AES-256 加密密钥默认取APP_KEY。生产环境建议设置独立密钥BACKUP_ENCRYPTION_KEYbase64:$(openssl rand -base64 32)⚠️更换密钥后旧密钥加密的备份将无法恢复。请单独备份并妥善保管该密钥见 backup.md。3. S3 凭据最小化S3 卷的凭据在 Web 界面按卷配置仅需s3:PutObject / GetObject / DeleteObject / ListBucket权限且限定到具体 bucket。在 AWS 上也可留空凭据走实例角色IRSA/EC2 Role免密访问。4. Hook 脚本风险备份成功后的 Hook 脚本以Worker 进程权限执行、且只允许管理员编辑能直接调用容器内的curl、ssh等工具。生产上请把它当作服务端自动化对待只写入可信逻辑避免写入敏感凭据。5. 其他加固项非 root 运行默认 PUID/PGID 为 1000可按宿主用户调整rootless 环境用user指令并提前修正/data权限SSO 登录支持 Google/GitHub/GitLab/通用 OIDC设置OAUTH_ONLY_MODEtrue可隐藏密码登录、强制走 SSO并按 OIDC 组映射 admin/member/viewer 角色变量清单见 .env 中的 OAuth 段落与 sso.md失败通知备份/恢复失败、快照文件缺失会自动推送邮件、Slack、Discord、Telegram、Webhook 等渠道生产务必至少配置一条通道见 notification.md。四、上线前验证清单 ✅docker compose ps确认 app、worker、数据库服务全部 healthycurl http://localhost:2226/health返回健康检查结果修改.env后执行docker compose restart app worker环境变量对两个服务都生效手动触发一次小库备份确认快照落盘、日志无报错检查时区计划任务时间应与APP_DISPLAY_TIMEZONE一致。Databasement 的生产部署并不复杂.env管住配置、Worker 保证任务消费、反代与密钥管住安全。按这份清单逐项打勾你的数据库备份系统就能稳定地跑在正式环境里。【免费下载链接】databasementSelf-hosted database backup manager with a web UI. Schedule, backup, and restore MySQL, PostgreSQL, MariaDB, Microsoft SQL Server, MongoDB, SQLite Redis to S3, SFTP, Samba or local storage. SSH Tunnel support.项目地址: https://gitcode.com/gh_mirrors/da/databasement创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考