Skip to content

itsharex/BackupX

 
 

Repository files navigation

English | 中文

BackupX

自托管服务器备份管理平台
一个二进制,一条命令,管好你所有服务器的备份。

Stars Release Go React SQLite License


仪表盘 备份任务
存储目标 备份记录

功能亮点

能力 说明
备份类型 文件/目录(多源路径)、MySQL、PostgreSQL、SQLite、SAP HANA
存储后端 阿里云 OSS、腾讯云 COS、七牛云、S3 兼容(AWS/MinIO/R2)、Google Drive、WebDAV、FTP/FTPS、本地磁盘
自动调度 Cron 定时 + 可视化编辑器 + 自动保留策略(按天数/份数清理)
多节点 Master-Agent 集群,统一管理多台服务器的备份
安全 JWT + bcrypt + AES-256-GCM 加密配置 + 可选备份文件加密 + 审计日志
通知 邮件 / Webhook / Telegram,备份成功或失败时自动推送
部署 单二进制 + 内嵌 SQLite,Docker 一键启动,零外部依赖

快速开始

1. 安装

Docker(推荐,无需克隆仓库):

# 创建 docker-compose.yml 后一键启动
docker compose up -d

# 或直接运行
docker run -d --name backupx -p 8340:8340 -v backupx-data:/app/data awuqing/backupx:latest

Docker Hub 镜像:awuqing/backupx,支持 linux/amd64 和 linux/arm64。

docker-compose.yml 参考
services:
  backupx:
    image: awuqing/backupx:latest
    container_name: backupx
    restart: unless-stopped
    ports:
      - "8340:8340"
    volumes:
      - backupx-data:/app/data
      # 挂载需要备份的宿主机目录(按需添加):
      # - /var/www:/mnt/www:ro
      # - /etc/nginx:/mnt/nginx-conf:ro
    environment:
      - TZ=Asia/Shanghai

volumes:
  backupx-data:

预编译包(裸机部署):

Releases 下载对应平台的压缩包:

tar xzf backupx-v*-linux-amd64.tar.gz && cd backupx-*
sudo ./install.sh        # 自动配置 systemd + Nginx

从源码构建:

git clone https://github.com/Awuqing/BackupX.git && cd BackupX
make build               # 构建前后端
make docker-cn           # 或用国内镜像构建 Docker(goproxy.cn / npmmirror / 阿里云 apk)

2. 打开控制台

浏览器访问 http://your-server:8340,首次打开会引导创建管理员账户。

3. 添加存储目标

进入 存储目标 页面,点击 添加,选择存储类型并填写凭证:

存储类型 需要填写
阿里云 OSS Region + AccessKey ID/Secret + Bucket
腾讯云 COS Region + SecretId/SecretKey + Bucket(格式 name-appid
七牛云 Kodo Region + AccessKey/SecretKey + Bucket
S3 兼容 Endpoint + AccessKey + Bucket
Google Drive Client ID/Secret → 点击授权完成 OAuth
WebDAV 服务器地址 + 用户名/密码
FTP 主机 + 端口 + 用户名/密码
本地磁盘 目标目录路径

国内云厂商只需填 Region 和 AccessKey,系统自动组装 Endpoint。

添加后点击 测试连接 确认配置正确。

4. 创建备份任务

进入 备份任务 页面,点击 新建,三步完成:

  1. 基础信息 — 任务名称、备份类型、Cron 表达式(留空则仅手动执行)
  2. 源配置 — 文件备份选择源路径(支持多个)、数据库备份填写连接信息
  3. 存储与策略 — 选择存储目标、压缩策略、保留天数、是否加密

保存后可以点击 立即执行 测试,在 备份记录 页面实时查看执行日志。

5. 配置通知(可选)

进入 通知配置 页面,支持邮件、Webhook、Telegram 三种方式,可分别配置成功/失败时是否推送。


部署指南

Docker 部署

docker compose up -d     # 使用上方的 docker-compose.yml

备份宿主机目录时需要挂载路径(在 docker-compose.yml 的 volumes 中添加):

volumes:
  - backupx-data:/app/data
  - /var/www:/mnt/www:ro              # 挂载需要备份的目录
  - /etc/nginx:/mnt/nginx-conf:ro     # 可以挂载多个

通过环境变量调整配置:

environment:
  - TZ=Asia/Shanghai
  - BACKUPX_LOG_LEVEL=debug
  - BACKUPX_BACKUP_MAX_CONCURRENT=4

裸机部署

# 使用预编译包
tar xzf backupx-v*-linux-amd64.tar.gz && cd backupx-*
sudo ./install.sh

# 或从源码
make build
sudo ./deploy/install.sh

安装脚本自动完成:创建系统用户 → 安装二进制到 /opt/backupx/ → 配置 systemd → 配置 Nginx 反向代理。

Nginx 反向代理(裸机部署时)

server {
    listen 80;
    server_name backup.example.com;

    location / {
        root /opt/backupx/web;
        try_files $uri $uri/ /index.html;
    }

    location /api/ {
        proxy_pass http://127.0.0.1:8340;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

配置文件

配置文件路径 ./config.yaml,也可通过 BACKUPX_ 前缀环境变量覆盖:

server:
  port: 8340
database:
  path: "./data/backupx.db"
security:
  jwt_secret: ""          # 留空自动生成并持久化到数据库
  encryption_key: ""      # 留空自动生成
backup:
  temp_dir: "/tmp/backupx"
  max_concurrent: 2
log:
  level: "info"           # debug | info | warn | error
  file: "./data/backupx.log"

密码重置

忘记管理员密码时通过 CLI 重置:

# 裸机
./backupx reset-password --username admin --password newpass123

# Docker
docker exec -it backupx /app/bin/backupx reset-password --username admin --password newpass123

多节点集群

BackupX 支持 Master-Agent 模式管理多台服务器��

  1. Web 控制台 → 节点管理添加节点,系统生成 Token
  2. 在远程服务器部署 Agent 并使用 Token 连接 Master
  3. 创建备份任务时选择对应节点,Master 自动下发任务

创建文件备份任务时,可通过可视化目录浏览器远程选择 Agent 节点上的目录,无需手动输入路径。


开发指南

环境要求: Go >= 1.25 · Node.js >= 20 · npm

# 开发模式
make dev-server          # 终端 1:后端(默认 :8340)
make dev-web             # 终端 2:前端(Vite HMR)

# 测试
make test                # 运行全部测试

# 构建
make build               # 前后端一起构建
make docker              # Docker 构建
make docker-cn           # 国内 Docker 构建(镜像加速)

发版

git tag v1.2.3 && git push --tags
# GitHub Actions 自动:编译双架构二进制 → 发布 GitHub Release → 推送 Docker Hub 镜像

也可在 GitHub Actions 页面手动触发 Release workflow。


API 参考

所有接口以 /api 为前缀,使用 JWT Bearer Token 认证。

模块 端点 说明
认证 POST /auth/setup 初始化管理员
POST /auth/login 登录
PUT /auth/password 修改密码
备份任务 GET|POST /backup/tasks 列表 / 创建
GET|PUT|DELETE /backup/tasks/:id 详情 / 更新 / 删除
PUT /backup/tasks/:id/toggle 启用/禁用
POST /backup/tasks/:id/run 手动执行
备份记录 GET /backup/records 列表(支持筛选)
GET /backup/records/:id/logs/stream 实时日志 (SSE)
GET /backup/records/:id/download 下载
POST /backup/records/:id/restore 恢复
存储目标 GET|POST /storage-targets 列表 / 添加
POST /storage-targets/test 测试连接
节点 GET|POST /nodes 列表 / 添加
GET /nodes/:id/fs/list 目录浏览
通知 GET|POST /notifications 列表 / 添加
仪表盘 GET /dashboard/stats 概览统计
审计日志 GET /audit-logs 操作审计
系统 GET /system/info 系统信息

技术栈

组件 技术
后端 Go · Gin · GORM · SQLite · robfig/cron
前端 React 18 · TypeScript · ArcoDesign · Vite · Zustand · ECharts
存储 AWS SDK v2 · Google Drive API v3 · gowebdav · jlaffaye/ftp
安全 JWT · bcrypt · AES-256-GCM

Contributing

欢迎提交 Issue 和 Pull Request!

License

Apache License 2.0

About

BackupX 是一个面向 Linux / macOS 服务器的自托管备份管理平台。通过企业级 Web 控制台,轻松配置目录备份、数据库备份,并将备份文件安全存储到阿里云 OSS、腾讯云 COS、七牛云 Kodo、Google Drive、S3 兼容存储、WebDAV 或本地磁盘。

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Go 65.4%
  • TypeScript 32.8%
  • CSS 0.5%
  • Shell 0.5%
  • Dockerfile 0.4%
  • Makefile 0.2%
  • Other 0.2%