Hetzner-Web 一键部署全记录(Docker 版)
本文记录我将 Hetzner-Web 推送到 GitHub 之后,如何将部署流程收敛为“一行命令完成安装”的全流程。目标是:任何服务器只需执行一条命令,即可拉起完整服务。
项目简介
Hetzner-Web 是一个轻量的 Hetzner Cloud 流量控制台,核心功能包括:
日 / 小时流量统计视图
流量触顶风险提示
DNS 检查与重建操作
清晰的可视化仪表盘
Basic Auth 登录保护
技术栈:后端 FastAPI + Python,前端 Vue 3 CDN + 原生 JS/CSS。
部署目标
将原本需要多步执行的操作,压缩成“一条命令”。理想流程:
自动拉取仓库代码
自动生成配置文件
自动 Docker 编译并启动
服务器环境准备
推荐环境:
Linux(Ubuntu / Debian / CentOS 均可)
Docker
Docker Compose
Git
如果是新机器,可快速安装 Docker:
curl -fsSL https://get.docker.com | bash一键安装脚本设计
为简化部署,我在仓库新增脚本:
scripts/install-docker.sh脚本逻辑:
clone / pull 仓库
生成配置文件(config.yaml / web_config.json / report_state.json)
docker compose up -d --build
一键安装命令
curl -fsSL https://raw.githubusercontent.com/liuweiqiang0523/Hetzner-Web/main/scripts/install-docker.sh | bash可选自定义安装目录:
curl -fsSL https://raw.githubusercontent.com/liuweiqiang0523/Hetzner-Web/main/scripts/install-docker.sh | INSTALL_DIR=/srv/hetzner-web bash可用环境变量:
INSTALL_DIR:安装目录(默认 /opt/hetzner-web)BRANCH:分支(默认 main)REPO_URL:仓库地址
配置文件说明
脚本会自动生成:
config.yamlweb_config.jsonreport_state.json
config.yaml
关键字段:
hetzner.api_token(必填)traffic.limit_gbcloudflare.record_map(可选)rebuild.snapshot_id_map(可选)
web_config.json
usernamepasswordtracking_start(可选)
启动与访问
脚本执行完后,容器已自动启动:
docker compose up -d --build访问地址:
http://<server-ip>:1227Nginx 反向代理(推荐)
线上建议配 HTTPS + 反向代理:
server {
listen 443 ssl;
server_name hz.example.com;
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
location / {
proxy_pass http://127.0.0.1:1227;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}更新方式
版本更新只需重新执行一键脚本:
curl -fsSL https://raw.githubusercontent.com/liuweiqiang0523/Hetzner-Web/main/scripts/install-docker.sh | bash脚本会自动检测并执行 git pull。
总结
这次部署的核心是把“手动流程”标准化为“一键脚本”,优势是:
部署成本低
重复部署方便
适合多台机器批量使用
后续可继续扩展脚本,比如:自动 HTTPS、systemd 守护、监控报警等。




