主题
服务部署
本文档介绍通过 1Panel 部署 IPAM 主服务(前端 + 后端 + 缓存)。数据库需提前部署,详见 数据库部署。
部署方式
1. 外部数据库 + 外部 Valkey 缓存
仅部署前端和后端容器,数据库和 Valkey 缓存通过环境变量接入外部已有的资源。
Docker Compose 配置
在 1Panel 的 Docker Compose 应用中粘贴以下内容:
yaml
services:
ipam-backend:
image: ccr.ccs.tencentyun.com/ipam-go/server:latest
container_name: ipam-backend
network_mode: host
restart: unless-stopped
volumes:
- /etc/machine-id:/etc/machine-id:ro
- ./config:/app/config
- ./uploads:/app/uploads
- ./backup:/app/backup
- ./logs:/app/logs
environment:
- TZ=${TZ:-Asia/Shanghai}
- SERVER_HOST=${SERVER_HOST:-0.0.0.0}
- SERVER_PORT=${SERVER_PORT:-12389}
- DB_TYPE=${DB_TYPE:-mysql}
- DB_HOST=${DB_HOST:-127.0.0.1}
- DB_PORT=${DB_PORT:-3306}
- DB_USER=${DB_USER:-ipam}
- DB_PASSWORD=${DB_PASSWORD:-password}
- DB_NAME=${DB_NAME:-ipam}
- JWT_SECRET=${JWT_SECRET:-your-jwt-secret-key-change-me}
- CACHE_DRIVER=${CACHE_DRIVER:-valkey}
- CACHE_HOST=${CACHE_HOST:-127.0.0.1}
- CACHE_PORT=${CACHE_PORT:-6379}
- CACHE_PASSWORD=${CACHE_PASSWORD:-}
- CACHE_DB=${CACHE_DB:-0}
- CACHE_DEFAULT_TTL=${CACHE_DEFAULT_TTL:-300}
- CACHE_CLEANUP_INTERVAL=${CACHE_CLEANUP_INTERVAL:-60}
- LOG_CONSOLE_LEVEL=${LOG_CONSOLE_LEVEL:-warn}
- LOG_FILE_LEVEL=${LOG_FILE_LEVEL:-debug}
- LOG_MAX_SIZE=${LOG_MAX_SIZE:-10}
- LOG_MAX_BACKUPS=${LOG_MAX_BACKUPS:-5}
- LOG_MAX_AGE=${LOG_MAX_AGE:-30}
- LOG_COMPRESS=${LOG_COMPRESS:-true}
- SCAN_LOG_MAX_SIZE=${SCAN_LOG_MAX_SIZE:-500}
ipam-frontend:
image: ccr.ccs.tencentyun.com/ipam-go/dashboard:latest
container_name: ipam-frontend
network_mode: host
restart: unless-stopped
environment:
- TZ=${TZ:-Asia/Shanghai}
- BACKEND_HOST=localhost
- BACKEND_PORT=12389
depends_on:
- ipam-backend1Panel 环境变量配置
ini
# ==============================================================================
# 1. 时间与区域
# ==============================================================================
TZ=Asia/Shanghai
# ==============================================================================
# 2. HTTP 服务
# ==============================================================================
SERVER_HOST=0.0.0.0
SERVER_PORT=12389
# ==============================================================================
# 3. 数据库
# ==============================================================================
DB_TYPE=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_USER=ipam
DB_PASSWORD=password
DB_NAME=ipam
# ==============================================================================
# 4. JWT 鉴权
# ==============================================================================
JWT_SECRET=your-jwt-secret-key-change-me
# ==============================================================================
# 5. 缓存
# ==============================================================================
# 缓存驱动:memory(内置)/ redis / valkey
CACHE_DRIVER=valkey
# Redis/Valkey 地址(memory 驱动时无效)
CACHE_HOST=127.0.0.1
# Redis/Valkey 端口(默认 6379)
CACHE_PORT=6379
# Redis/Valkey 密码
CACHE_PASSWORD=
# Redis/Valkey 数据库编号(0~15)
CACHE_DB=0
# 缓存默认过期时间(秒,默认 300)
CACHE_DEFAULT_TTL=300
# 内置缓存清理间隔(秒,仅 memory 驱动生效)
CACHE_CLEANUP_INTERVAL=60
# ==============================================================================
# 6. 日志
# ==============================================================================
LOG_CONSOLE_LEVEL=warn
LOG_FILE_LEVEL=debug
LOG_MAX_SIZE=10
LOG_MAX_BACKUPS=5
LOG_MAX_AGE=30
LOG_COMPRESS=true
# ==============================================================================
# 7. 网络扫描
# ==============================================================================
SCAN_LOG_MAX_SIZE=500部署步骤
- 在 1Panel 中创建 Docker Compose 应用
- 将上述 Docker Compose 配置粘贴到 compose 配置中
- 将上述环境变量粘贴到环境变量配置中
- 点击部署
访问 http://<服务器IP>:12380 即可进入系统。
使用
network_mode: host,无需端口映射。 前端 Nginx 默认监听 12380 端口,后端 Go 服务默认监听 12389 端口。
2. 外部数据库 + 内置缓存
仅部署前端和后端容器,使用内置 memory 缓存,无需部署外部 Valkey 服务。数据库需提前部署,详见 数据库部署。
Docker Compose 配置
yaml
services:
ipam-backend:
image: ccr.ccs.tencentyun.com/ipam-go/server:latest
container_name: ipam-backend
network_mode: host
restart: unless-stopped
volumes:
- /etc/machine-id:/etc/machine-id:ro
- ./config:/app/config
- ./uploads:/app/uploads
- ./backup:/app/backup
- ./logs:/app/logs
environment:
- TZ=${TZ:-Asia/Shanghai}
- SERVER_HOST=${SERVER_HOST:-0.0.0.0}
- SERVER_PORT=${SERVER_PORT:-12389}
- DB_TYPE=${DB_TYPE:-mysql}
- DB_HOST=${DB_HOST:-127.0.0.1}
- DB_PORT=${DB_PORT:-3306}
- DB_USER=${DB_USER:-ipam}
- DB_PASSWORD=${DB_PASSWORD:-password}
- DB_NAME=${DB_NAME:-ipam}
- JWT_SECRET=${JWT_SECRET:-your-jwt-secret-key-change-me}
- CACHE_DRIVER=${CACHE_DRIVER:-memory}
- CACHE_HOST=${CACHE_HOST:-127.0.0.1}
- CACHE_PORT=${CACHE_PORT:-6379}
- CACHE_PASSWORD=${CACHE_PASSWORD:-}
- CACHE_DB=${CACHE_DB:-0}
- CACHE_DEFAULT_TTL=${CACHE_DEFAULT_TTL:-300}
- CACHE_CLEANUP_INTERVAL=${CACHE_CLEANUP_INTERVAL:-60}
- LOG_CONSOLE_LEVEL=${LOG_CONSOLE_LEVEL:-warn}
- LOG_FILE_LEVEL=${LOG_FILE_LEVEL:-debug}
- LOG_MAX_SIZE=${LOG_MAX_SIZE:-10}
- LOG_MAX_BACKUPS=${LOG_MAX_BACKUPS:-5}
- LOG_MAX_AGE=${LOG_MAX_AGE:-30}
- LOG_COMPRESS=${LOG_COMPRESS:-true}
- SCAN_LOG_MAX_SIZE=${SCAN_LOG_MAX_SIZE:-500}
ipam-frontend:
image: ccr.ccs.tencentyun.com/ipam-go/dashboard:latest
container_name: ipam-frontend
network_mode: host
restart: unless-stopped
environment:
- TZ=${TZ:-Asia/Shanghai}
- BACKEND_HOST=localhost
- BACKEND_PORT=12389
depends_on:
- ipam-backend1Panel 环境变量配置
ini
# ==============================================================================
# 1. 时间与区域
# ==============================================================================
TZ=Asia/Shanghai
# ==============================================================================
# 2. HTTP 服务
# ==============================================================================
SERVER_HOST=0.0.0.0
SERVER_PORT=12389
# ==============================================================================
# 3. 数据库
# ==============================================================================
DB_TYPE=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_USER=ipam
DB_PASSWORD=password
DB_NAME=ipam
# ==============================================================================
# 4. JWT 鉴权
# ==============================================================================
JWT_SECRET=your-jwt-secret-key-change-me
# ==============================================================================
# 5. 缓存
# ==============================================================================
# 缓存驱动:memory(内置)/ redis / valkey
CACHE_DRIVER=memory
# Redis/Valkey 地址(memory 驱动时无效)
CACHE_HOST=127.0.0.1
# Redis/Valkey 端口(默认 6379)
CACHE_PORT=6379
# Redis/Valkey 密码
CACHE_PASSWORD=
# Redis/Valkey 数据库编号(0~15)
CACHE_DB=0
# 缓存默认过期时间(秒,默认 300)
CACHE_DEFAULT_TTL=300
# 内置缓存清理间隔(秒,仅 memory 驱动生效)
CACHE_CLEANUP_INTERVAL=60
# ==============================================================================
# 6. 日志
# ==============================================================================
LOG_CONSOLE_LEVEL=warn
LOG_FILE_LEVEL=debug
LOG_MAX_SIZE=10
LOG_MAX_BACKUPS=5
LOG_MAX_AGE=30
LOG_COMPRESS=true
# ==============================================================================
# 7. 网络扫描
# ==============================================================================
SCAN_LOG_MAX_SIZE=500部署步骤
- 在 1Panel 中创建 Docker Compose 应用
- 将上述 Docker Compose 配置粘贴到 compose 配置中
- 将上述环境变量粘贴到环境变量配置中
- 点击部署
访问 http://<服务器IP>:12380 即可进入系统。
使用
network_mode: host,无需端口映射。 前端 Nginx 默认监听 12380 端口,后端 Go 服务默认监听 12389 端口。
3. 外部缓存配置
如需使用外部 Redis 或 Valkey,修改环境变量:
ini
CACHE_DRIVER=redis
CACHE_HOST=192.168.1.100
CACHE_PORT=6379
CACHE_PASSWORD=your-redis-password
CACHE_DB=0或使用 Valkey:
ini
CACHE_DRIVER=valkey
CACHE_HOST=192.168.1.100
CACHE_PORT=6379
CACHE_PASSWORD=your-valkey-password
CACHE_DB=0镜像地址
| 组件 | 镜像 |
|---|---|
| 后端 | ccr.ccs.tencentyun.com/ipam-go/server:latest |
| 前端 | ccr.ccs.tencentyun.com/ipam-go/dashboard:latest |
安全建议
- 修改默认密码:首次登录后立即修改所有默认账户密码
- 使用 HTTPS:生产环境必须使用 HTTPS
- 防火墙配置:仅开放必要的端口
- 定期更新:及时更新镜像版本
- 访问控制:限制管理后台访问IP
- 审计日志:启用操作审计功能
故障排查
服务无法启动
bash
# 查看容器日志
docker logs ipam-backend
# 查看前端容器日志
docker logs ipam-frontend
# 检查容器状态
docker compose ps
# 检查配置文件
cat ./config/config.toml数据库连接失败
bash
# 测试数据库连接
mysql -u ipam_user -p -h localhost ipam
# 检查数据库服务
systemctl status mysql