服务端部署指南
SSH-Go 管理平台提供 Web 管理界面,集中管理客户端和源码包。
功能特性
- Web 管理平台,集中管理客户端和源码包
- 客户端状态监控(IP、主机名、SSH 版本、在线状态)
- OpenSSH 源码包上传和 HTTP 直链下载
- 系统设置管理、IP 白名单访问控制
管理后台界面
仪表盘
系统概览,展示客户端总数、在线/离线数量、SSH 版本分布等关键指标。

快速使用
新手引导页面,提供客户端命令快速复制和配置指引。

客户端管理
客户端列表管理,支持搜索、状态筛选、分页查看,以及客户端详情和删除操作。

源码包管理
OpenSSH 源码包上传和管理,支持本地上传和远程 URL 下载,自动生成 HTTP 直链供客户端拉取。

访问控制
IP 白名单管理,保障管理平台和 API 接口的访问安全。
版本限制
访问IP控制功能仅专业版及以上版本支持,免费版不限制 IP 访问。

关于系统
系统版本信息。

Docker 部署
项目在 docker-compose/ 目录提供分层编排文件,按 .gvt/docker/images 中的实际镜像配置生成,包含 backend(服务端) 与 dashboard(前端管理) 两个镜像:
- backend:
ccr.ccs.tencentyun.com/ssh-go/backend:latest(端口12378,提供 API 与管理数据) - dashboard:
ccr.ccs.tencentyun.com/ssh-go/dashboard:latest(nginx,端口12380,反向代理到 backend)
编排文件说明
| 文件 | 说明 |
|---|---|
docker-compose.mysql.yml | 全栈部署(MySQL 内置) |
docker-compose.mariadb.yml | 全栈部署(MariaDB 内置) |
docker-compose.postgres.yml | 全栈部署(PostgreSQL 内置) |
docker-compose.external-db.yml | 仅应用(使用外部数据库) |
.env.example | 环境变量模板 |
README.md | 完整使用说明 |
内置数据库(全栈部署)
选择一种数据库,进入 docker-compose/ 目录启动:
cd docker-compose
# MySQL
docker compose -f docker-compose.mysql.yml up -d
# MariaDB
docker compose -f docker-compose.mariadb.yml up -d
# PostgreSQL
docker compose -f docker-compose.postgres.yml up -d部署后即可访问:
- 管理界面 (dashboard):http://localhost:12380
- 后端 API:http://localhost:12378
数据持久化目录(相对于 docker-compose/):
./data/mysql./data/mariadb./data/postgres:数据库文件./data/app:后端服务数据./data/uploads:OpenSSH 源码包上传目录
使用外部数据库
适用于已有 MySQL/MariaDB/PostgreSQL 实例的场景,不内置数据库:
cd docker-compose
docker compose -f docker-compose.external-db.yml up -d通过环境变量(参考 .env.example)指定外部数据库地址:
DB_DRIVER=mysql \
DB_HOST=your-db-host \
DB_PORT=3306 \
DB_USER=your-user \
DB_PASSWORD=your-password \
DB_NAME=ssh_upgrade \
docker compose -f docker-compose.external-db.yml up -d外部数据库位于宿主机时,可通过 host.docker.internal 访问宿主机。
手动创建数据库
如果使用外部数据库(非 Docker 内嵌),需先手动创建数据库和用户。选择对应数据库类型查看详细步骤:
缓存默认使用内置内存(
CACHE_DRIVER=memory),无需额外部署;如需 Valkey/Redis 请在.env中配置。
环境变量配置
项目提供 env.sh 环境变量模板文件,方便统一管理配置:
# 使用 env.sh 配置
cp env.sh .env
# 编辑 .env 修改参数后启动
docker compose --env-file .env up -d
# 或直接 source 加载
source env.sh && docker compose up -d配置文件 env.sh 内容:
# 时区
export TZ=Asia/Shanghai
# 服务端配置
export SSH_UPGRADE_DATA_DIR=/app/data
export SSH_UPGRADE_UPLOAD_DIR=/app/uploads
export SSH_UPGRADE_CORS_ALLOW_ALL=false
# 数据库配置
export DB_DRIVER=mysql
export DB_HOST=127.0.0.1
export DB_PORT=3306
export DB_USER=ssh_upgrade
export DB_PASSWORD=ssh_upgrade_pass
export DB_NAME=ssh_upgrade
# 缓存配置(默认内存缓存,无需额外部署)
export CACHE_DRIVER=memory
# 如需 Valkey/Redis 缓存,取消下方注释并配置
# export CACHE_DRIVER=valkey
# export VALKEY_HOST=127.0.0.1
# export VALKEY_PORT=6379
# export VALKEY_PASSWORD=
# export VALKEY_DB=01Panel 部署
1Panel 是流行的 Linux 服务器管理面板,支持自定义应用部署。
使用 docker-compose 编排文件
1Panel 支持直接上传 docker-compose 文件。可直接使用仓库 docker-compose/ 目录下的编排文件:
- 进入 1Panel 面板 → 应用商店 → 自定义应用 → 创建应用
- 填写应用名称(如
ssh-upgrade) - 将
docker-compose.mysql.yml(或其它数据库类型)内容粘贴到编排文件编辑器 - 确认
./data/目录挂载格式与 1Panel 的数据持久化规范一致 - 提交后即可一键安装
如需自定义镜像版本、端口或外部数据库,可参考 docker-compose/README.md 与 .env.example。
MySQL 编排示例
services:
mysql:
image: mysql:9.7.0
container_name: ssh-upgrade-mysql
environment:
MYSQL_ROOT_PASSWORD: ssh_upgrade_pass
MYSQL_DATABASE: ssh_upgrade
MYSQL_USER: ssh_upgrade
MYSQL_PASSWORD: ssh_upgrade_pass
volumes:
- ./data/mysql:/var/lib/mysql
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s
timeout: 5s
retries: 5
networks:
- ssh-upgrade-net
server:
image: ccr.ccs.tencentyun.com/ssh-go/backend:latest
container_name: ssh-upgrade-server
ports:
- "12378:12378"
environment:
SSH_UPGRADE_ADDR: ":12378"
SSH_UPGRADE_DATA_DIR: /app/data
SSH_UPGRADE_UPLOAD_DIR: /app/uploads
SSH_UPGRADE_CORS_ALLOW_ALL: "false"
DB_DRIVER: mysql
DB_HOST: mysql
DB_PORT: 3306
DB_USER: ssh_upgrade
DB_PASSWORD: ssh_upgrade_pass
DB_NAME: ssh_upgrade
CACHE_DRIVER: memory
volumes:
- ./data/app:/app/data
- ./data/uploads:/app/uploads
depends_on:
mysql:
condition: service_healthy
networks:
- ssh-upgrade-net
web:
image: ccr.ccs.tencentyun.com/ssh-go/dashboard:latest
container_name: ssh-upgrade-web
ports:
- "12380:12380"
environment:
BACKEND_HOST: ssh-upgrade-server:12378
depends_on:
- server
networks:
- ssh-upgrade-net
networks:
ssh-upgrade-net:
driver: bridge.env 配置文件
# 时区
TZ=Asia/Shanghai
# 服务端配置
SSH_UPGRADE_DATA_DIR=/app/data
SSH_UPGRADE_UPLOAD_DIR=/app/uploads
SSH_UPGRADE_CORS_ALLOW_ALL=false
# 数据库配置
DB_DRIVER=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_USER=ssh_upgrade
DB_PASSWORD=ssh_upgrade_pass
DB_NAME=ssh_upgrade
# 缓存配置(默认内存缓存,无需额外部署)
CACHE_DRIVER=memory
# 如需 Valkey/Redis 缓存,取消下方注释并配置
# CACHE_DRIVER=valkey
# VALKEY_HOST=127.0.0.1
# VALKEY_PORT=6379
# VALKEY_PASSWORD=
# VALKEY_DB=0环境变量参考
服务端配置
| 环境变量 | 默认值 | 描述 |
|---|---|---|
SSH_UPGRADE_ADDR | :12378 | Web 服务监听地址 |
SSH_UPGRADE_DATA_DIR | /var/lib/ssh-go-automatic-upgrade | 数据存储目录 |
SSH_UPGRADE_UPLOAD_DIR | /var/lib/ssh-go-automatic-upgrade/uploads | 源码包上传目录 |
SSH_UPGRADE_CORS_ALLOW_ALL | false | 是否允许所有跨域请求 |
TZ | Asia/Shanghai | 时区设置 |
数据库配置
| 环境变量 | 默认值 | 描述 |
|---|---|---|
DB_DRIVER | mysql | 数据库驱动:mysql/mariadb/postgres |
DB_HOST | 127.0.0.1 | 数据库主机地址 |
DB_PORT | 3306/5432 | 数据库端口 |
DB_USER | ssh_upgrade | 数据库用户名 |
DB_PASSWORD | - | 数据库密码 |
DB_NAME | ssh_upgrade | 数据库名 |
DB_SSLMODE | disable | PostgreSQL SSL 模式 |
缓存配置
| 环境变量 | 默认值 | 描述 |
|---|---|---|
CACHE_DRIVER | memory | 缓存驱动:memory(内置内存缓存,默认)| valkey | redis |
VALKEY_HOST | 127.0.0.1 | Valkey 主机地址(CACHE_DRIVER=valkey 时生效) |
VALKEY_PORT | 6379 | Valkey 端口 |
VALKEY_PASSWORD | - | Valkey 密码 |
VALKEY_DB | 0 | Valkey 数据库编号 |
REDIS_HOST | 127.0.0.1 | Redis 主机地址(CACHE_DRIVER=redis 时生效) |
REDIS_PORT | 6379 | Redis 端口 |
REDIS_PASSWORD | - | Redis 密码 |
REDIS_DB | 0 | Redis 数据库编号 |
访问管理平台
启动服务后,访问 http://your-server:12380 进入管理平台。
首次使用
首次访问时会自动跳转至初始化引导页,请在 Web 界面设置管理员用户名和密码,完成后即可登录管理平台。
使用流程
1. 上传源码包
- 登录管理平台
- 进入"源码包管理"页面
- 点击"选择文件"或拖拽上传 OpenSSH 源码包(.tar.gz 格式)
- 也可通过输入下载链接直接下载到服务器
- 上传完成后,系统自动生成 HTTP 直链
2. 配置客户端
sudo ssh-go-automatic-upgrade -server-url http://your-server:12378 -report -report-interval 53. 自动升级
客户端会定期向服务端上报状态,通过 /api/latest-package-url 接口获取最新源码包 URL,自动下载并编译安装最新版本。
备份与恢复
# 备份上传文件
tar -czf ssh-go-automatic-upgrade-backup-$(date +%Y%m%d).tar.gz uploads/
# 备份 MySQL 数据库
docker exec ssh-upgrade-mysql mysqldump -u ssh_upgrade -p ssh_upgrade_pass ssh_upgrade > db_backup.sql
# 恢复
docker-compose down
tar -xzf ssh-go-automatic-upgrade-backup-20260101.tar.gz
docker exec -i ssh-upgrade-mysql mysql -u ssh_upgrade -p ssh_upgrade_pass ssh_upgrade < db_backup.sql
docker-compose up -d