Bareos容器化部署实用指南

生产环境的真实部署绝对不需要Bareos容器化部署深度指南上面的所有步骤都做一遍。那份文档是“完整参考手册”,实际部署时会根据需求做大量简化。

一、实际生产部署的简化方案

1.1 最小可行配置(MVP)

# docker-compose.yml(90%的生产环境只用这个)
version: '3.8'

services:
  # 只需要这4个核心服务
  postgres:
    image: postgres:15-alpine
    environment:
      POSTGRES_PASSWORD: bareos123
      POSTGRES_USER: bareos
      POSTGRES_DB: bareos
    volumes:
      - postgres_data:/var/lib/postgresql/data

  director:
    image: bareos/bareos-director:latest
    depends_on:
      - postgres
    ports:
      - "9101:9101"
    volumes:
      - ./bareos-dir:/etc/bareos/bareos-dir.d
      - /backup/storage:/backup/storage

  storage:
    image: bareos/bareos-storage:latest
    depends_on:
      - director
    volumes:
      - /backup/storage:/backup/storage
      - ./bareos-sd:/etc/bareos/bareos-sd.d

  webui:
    image: bareos/bareos-webui:latest
    depends_on:
      - director
    ports:
      - "80:80"

volumes:
  postgres_data:

1.2 快速启动脚本

#!/bin/bash
# 3分钟部署脚本
mkdir -p bareos/{config,storage}
cd bareos

# 1. 创建docker-compose.yml(上面那个简版)
cat > docker-compose.yml << 'EOF'
# 上面的简化版本
EOF

# 2. 创建基础配置文件
mkdir -p config/director config/storage

# 3. 启动服务
docker-compose up -d

echo "Bareos部署完成!"
echo "Web界面: http://服务器IP"
echo "配置目录: ./config/"

二、真实生产的核心步骤(只需7步)

第一步:准备目录

mkdir -p /opt/bareos/{config,storage,logs}
cd /opt/bareos

第二步:创建docker-compose.yml

version: '3.8'
services:
  postgres:
    image: postgres:15-alpine
    restart: always
    environment:
      POSTGRES_PASSWORD: change_me_123
    volumes:
      - ./data/postgres:/var/lib/postgresql/data

  director:
    image: bareos/bareos-director:latest
    restart: always
    ports: ["9101:9101"]
    depends_on: [postgres]
    volumes:
      - ./config/director:/etc/bareos/bareos-dir.d
      - ./storage:/backup

  storage:
    image: bareos/bareos-storage:latest
    restart: always
    depends_on: [director]
    volumes:
      - ./storage:/backup
      - ./config/storage:/etc/bareos/bareos-sd.d

  webui:
    image: bareos/bareos-webui:latest
    restart: always
    ports: ["80:80"]
    depends_on: [director]

第三步:创建最小配置文件

# 创建Director基础配置
mkdir -p config/director

cat > config/director/director.conf << 'EOF'
Director {
  Name = bareos-dir
  DirPort = 9101
  QueryFile = "/usr/lib/bareos/scripts/query.sql"
  WorkingDirectory = "/var/lib/bareos"
  PidDirectory = "/run/bareos"
  Maximum Concurrent Jobs = 10
}
EOF

cat > config/director/catalog.conf << 'EOF'
Catalog {
  Name = MyCatalog
  dbdriver = postgresql
  dbname = "bareos"
  dbuser = "bareos"
  dbpassword = "change_me_123"
}
EOF

# 创建Storage配置
mkdir -p config/storage

cat > config/storage/storage.conf << 'EOF'
Storage {
  Name = File
  Address = storage
  SDPort = 9103
  Password = "storage_password"
  Device = FileStorage
  Media Type = File
}
EOF

cat > config/storage/device.conf << 'EOF'
Device {
  Name = FileStorage
  Media Type = File
  Archive Device = /backup
  LabelMedia = yes
  Random Access = yes
  AutomaticMount = yes
}
EOF

第四步:启动服务

docker-compose up -d

第五步:配置客户端

# 为Linux客户端生成配置文件
cat > linux-client.conf << 'EOF'
Client {
  Name = linux-server-fd
  Address = 192.168.1.100  # 改为实际IP
  Password = "client_secret"
  File Retention = 30 days
}
EOF

# 复制到客户端并安装
# scp linux-client.conf user@client:/etc/bareos/bareos-fd.d/director/

第六步:创建备份任务

通过Web界面(http://服务器IP): 1. 登录(默认无密码) 2. 添加客户端 3. 创建备份任务 4. 立即运行测试

或使用命令行:

docker exec bareos_director_1 bconsole
# 在bconsole中
configure add client name=linux-server address=192.168.1.100
run job=BackupClient1

第七步:监控检查

# 查看状态
docker-compose ps
docker-compose logs director

# 测试恢复
docker exec bareos_director_1 bconsole << EOF
list jobs
restore client=linux-server
yes
EOF

三、根据实际情况的选择性增强

3.1 需要TLS加密才加

# 修改director服务
director:
  volumes:
    - ./tls:/etc/bareos/tls
  environment:
    BAREOS_TLS_ENABLE: "yes"

3.2 需要监控才加

# 添加监控服务(可选)
prometheus:
  image: prom/prometheus:latest
  ports: ["9090:9090"]
  volumes:
    - ./config/prometheus.yml:/etc/prometheus/prometheus.yml

3.3 需要邮件告警才加

# 在director配置中添加
cat >> config/director/messages.conf << 'EOF'
Messages {
  Name = Standard
  mailcommand = "/usr/bin/bsmtp -h smtp.company.com -f bareos@company.com %r"
  mail = admin@company.com = all
}
EOF

四、真实生产经验建议

4.1 按需逐步添加

第1周:基础部署 + 测试备份恢复
第2周:添加监控(只看基础状态)
第3周:配置邮件告警
第1月:考虑TLS加密
第3月:如果需要才加高可用

4.2 关键配置项(必须改的)

# 1. 修改默认密码
POSTGRES_PASSWORD=改为强密码
客户端密码=改为不同密码

# 2. 设置存储路径
# 确保/storage有足够空间

# 3. 配置网络白名单(重要!)
# 在防火墙中只允许可信IP访问9101/9102端口

4.3 真实案例的典型配置

# 一个50人公司的实际配置
version: '3.8'
services:
  postgres:
    image: postgres:15
    volumes: ["./data/db:/var/lib/postgresql/data"]
    environment:
      POSTGRES_PASSWORD: "Bareos@2024!"

  director:
    image: bareos/bareos-director:23.0
    ports: ["9101:9101"]
    volumes:
      - "./config:/etc/bareos"
      - "/mnt/nas/backup:/backup"

  webui:
    image: bareos/bareos-webui:23.0
    ports: ["8080:80"]

  # 其他都用默认值

4.4 运维命令速查

# 日常只用这些命令
docker-compose ps           # 查看状态
docker-compose logs -f      # 查看日志
docker-compose restart      # 重启服务

# 备份管理
docker exec -it bareos-director bconsole  # 管理控制台

# 紧急恢复
docker-compose down && docker-compose up -d  # 重启所有

五、避坑指南

5.1 不要一开始就做的

  • ❌ 不要先配置TLS(除非有合规要求)
  • ❌ 不要先部署高可用(除非业务24x7)
  • ❌ 不要配置复杂告警(先用日志监控)
  • ❌ 不要启用所有高级功能(按需开启)

5.2 必须做的

  • ✅ 改默认密码
  • ✅ 测试备份和恢复
  • ✅ 设置存储空间监控
  • ✅ 配置简单的成功/失败通知

5.3 推荐部署流程

# Day 1: 部署
./1-deploy-basic.sh      # 基础部署

# Day 2: 配置
./2-configure-clients.sh # 添加客户端
./3-test-backup.sh       # 测试备份

# Day 3: 监控
./4-add-monitoring.sh    # 简单监控

# Week 2: 优化
# 根据实际需求添加功能

六、快速开始模板

我为您准备了一个真正可用的简化版本:

# 下载并运行
wget https://example.com/bareos-simple.tar.gz
tar zxvf bareos-simple.tar.gz
cd bareos-simple

# 编辑配置文件(改密码和IP)
vi .env
vi config/clients.conf

# 启动
docker-compose up -d

# 访问 http://your-server-ip

核心思想:从简开始,按需添加。90%的生产环境只需要基础配置就能良好运行。复杂的特性是为了应对特定场景,不是必须的。

您完全可以从最简单的配置开始,运行起来后再根据实际遇到的问题逐步优化。这样既能快速上线,又能避免过度工程化。