使用 Docker Compose 搭建自托管服务全记录

2025-12-15 · Albert

自托管(Self-Hosting)是掌控个人数据和服务的最佳方式。本文记录了我使用 Docker Compose 搭建一整套自托管服务的过程,包括反向代理、认证、数据库等核心组件。

为什么选择 Docker Compose

相比直接安装软件,容器化部署有明显优势:

项目结构

我将所有服务按功能拆分到不同目录,每个服务独立一个 docker-compose.yml,通过外部网络互联:

/opt/docker-services/
├── npm/                # Nginx Proxy Manager
│   ├── docker-compose.yml
│   └── data/
├── authelia/           # 统一认证
│   ├── docker-compose.yml
│   └── config/
├── postgres/           # PostgreSQL 数据库
│   ├── docker-compose.yml
│   └── data/
└── app/                # 业务应用
    └── docker-compose.yml

网络规划

所有服务共享一个名为 proxy-network 的外部 Docker 网络,这样 Nginx Proxy Manager 可以通过容器名访问后端服务:

# 创建外部网络
docker network create proxy-network

# 在每个 docker-compose.yml 中引用
networks:
  proxy-network:
    external: true

部署顺序

推荐按以下顺序启动服务:

数据备份

定时备份是自托管的生命线。我使用一个简单的 cron 脚本,每天凌晨打包所有 data 目录:

# /etc/cron.d/backup-services
0 4 * * * tar czf /backup/services-$(date +\%F).tar.gz /opt/docker-services/*/data/

总结

Docker Compose 让自托管变得非常轻松。只要规划好网络和持久化存储,就能在一台小服务器上跑起一整套私有服务。关键是做好备份,这样即使服务器出问题,也能快速恢复。