用 Docker Compose 一键部署 10 个实用自托管服务
云服务越来越贵,隐私问题越来越严峻——2026 年,越来越多的开发者和技术爱好者开始把数据”搬回家”。只需一台闲置的 x86 主机或树莓派,加上 Docker,你就能拥有媲美商业 SaaS 的完整服务栈。
本文精选 10 个实战价值最高的自托管服务,给出开箱即用的 Docker Compose 配置,帮你快速搭建属于自己的私有云生态。
前置准备
在开始之前,确认环境满足以下要求:
# 安装 Docker Engine 和 Docker Compose Plugin
curl -fsSL https://get.docker.com | sh
# 验证版本
docker --version # >= 24.x
docker compose version # >= 2.x
所有服务统一使用同一个 Docker 网络,方便容器间通信:
docker network create homelab
建议目录结构:
~/homelab/
├── nextcloud/
├── homeassistant/
├── adguard/
├── gitea/
├── vaultwarden/
├── jellyfin/
├── portainer/
├── npm/
├── stirling-pdf/
└── changedetection/
10 个服务全解析
1. Nextcloud — 私有云盘
替代 Google Drive / iCloud,支持文件同步、相册、Office 协同编辑。
# ~/homelab/nextcloud/docker-compose.yml
services:
nextcloud-db:
image: mariadb:11
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD: changeme
volumes:
- ./db:/var/lib/mysql
networks:
- homelab
nextcloud:
image: nextcloud:29
restart: unless-stopped
ports:
- "8080:80"
environment:
MYSQL_HOST: nextcloud-db
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD: changeme
volumes:
- ./data:/var/www/html
depends_on:
- nextcloud-db
networks:
- homelab
networks:
homelab:
external: true
亮点:100+ 官方应用,Nextcloud Talk 可替代 Zoom,Memories 应用媲美 Google Photos。
2. Home Assistant — 智能家居中枢
接管小米、涂鸦、HomeKit 等生态,本地自动化,断网照跑。
# ~/homelab/homeassistant/docker-compose.yml
services:
homeassistant:
image: ghcr.io/home-assistant/home-assistant:stable
restart: unless-stopped
network_mode: host # 需要广播局域网设备发现
privileged: true
environment:
- TZ=Asia/Shanghai
volumes:
- ./config:/config
注意:使用
network_mode: host才能正确发现局域网 IoT 设备,这是 HA 的推荐部署方式。
3. AdGuard Home — 全网去广告 DNS
将路由器 DNS 指向它,全家设备自动屏蔽广告和追踪器,无需客户端。
# ~/homelab/adguard/docker-compose.yml
services:
adguardhome:
image: adguard/adguardhome:latest
restart: unless-stopped
ports:
- "53:53/tcp"
- "53:53/udp"
- "3000:3000/tcp" # 初始配置 Web UI
- "8083:80/tcp" # 配置完成后的 Web UI
volumes:
- ./workdir:/opt/adguardhome/work
- ./confdir:/opt/adguardhome/conf
networks:
- homelab
networks:
homelab:
external: true
初次访问 http://<IP>:3000 完成向导,之后管理界面迁移到端口 8083。
4. Gitea — 轻量私有 Git
自托管代码仓库,配合 Forgejo Actions 可实现完整 CI/CD,内存占用仅约 100MB。
# ~/homelab/gitea/docker-compose.yml
services:
gitea:
image: gitea/gitea:1.22
restart: unless-stopped
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=sqlite3
- TZ=Asia/Shanghai
ports:
- "3001:3000"
- "2222:22"
volumes:
- ./data:/data
networks:
- homelab
networks:
homelab:
external: true
SSH 推送映射到宿主机 2222 端口,避免与系统 SSH 冲突:
# ~/.ssh/config
Host gitea.home
HostName 192.168.1.100
Port 2222
5. Vaultwarden — 密码管理器
Bitwarden 协议的轻量实现,官方客户端完全兼容,资源占用仅官方版的 1/10。
# ~/homelab/vaultwarden/docker-compose.yml
services:
vaultwarden:
image: vaultwarden/server:latest
restart: unless-stopped
ports:
- "8082:80"
environment:
- WEBSOCKET_ENABLED=true
- SIGNUPS_ALLOWED=false # 初始注册完成后设为 false
- TZ=Asia/Shanghai
volumes:
- ./data:/data
networks:
- homelab
networks:
homelab:
external: true
安全要点:Vaultwarden 必须配合 HTTPS 使用(后文 Nginx Proxy Manager 负责),否则浏览器扩展会拒绝连接。
6. Jellyfin — 媒体服务器
替代 Plex,完全免费无订阅,支持硬件转码,自动刮削海报和字幕。
# ~/homelab/jellyfin/docker-compose.yml
services:
jellyfin:
image: jellyfin/jellyfin:latest
restart: unless-stopped
ports:
- "8096:8096"
environment:
- TZ=Asia/Shanghai
volumes:
- ./config:/config
- ./cache:/cache
- /mnt/media:/media:ro # 挂载媒体库(只读)
# 启用 Intel 核显硬件转码(可选)
devices:
- /dev/dri:/dev/dri
networks:
- homelab
networks:
homelab:
external: true
在管理后台「控制台 → 播放 → 转码」中开启 VAAPI 硬件加速,4K 转码 CPU 占用从 300% 降到 15%。
7. Portainer — 容器可视化管理
Web UI 管理所有容器,查看日志、资源监控、一键启停,新手必备。
# ~/homelab/portainer/docker-compose.yml
services:
portainer:
image: portainer/portainer-ce:latest
restart: unless-stopped
ports:
- "9000:9000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./data:/data
networks:
- homelab
networks:
homelab:
external: true
8. Nginx Proxy Manager — 反向代理 + SSL
可视化管理反向代理规则,自动申请 Let’s Encrypt 证书,告别手写 Nginx 配置。
# ~/homelab/npm/docker-compose.yml
services:
nginx-proxy-manager:
image: jc21/nginx-proxy-manager:latest
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "81:81" # 管理 Web UI
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
networks:
- homelab
networks:
homelab:
external: true
配置完成后,通过 NPM 为 Vaultwarden、Nextcloud 等服务配置域名和 SSL,实现内网 HTTPS 访问。
9. Stirling-PDF — 本地 PDF 全能工具箱
替代 Smallpdf / ILovePDF,所有操作在本地处理,敏感文档零泄露风险。支持合并、拆分、压缩、OCR、格式转换等 50+ 功能。
# ~/homelab/stirling-pdf/docker-compose.yml
services:
stirling-pdf:
image: frooodle/s-pdf:latest
restart: unless-stopped
ports:
- "8085:8080"
environment:
- DOCKER_ENABLE_SECURITY=false
- LANGS=zh_CN
volumes:
- ./trainingData:/usr/share/tessdata # OCR 语言包
- ./config:/configs
networks:
- homelab
networks:
homelab:
external: true
10. ChangeDetection — 网页变更监控
监控任意网页内容变化,价格波动、政策更新、商品库存——第一时间推送通知。
# ~/homelab/changedetection/docker-compose.yml
services:
changedetection:
image: ghcr.io/dgtlmoon/changedetection.io:latest
restart: unless-stopped
ports:
- "5000:5000"
environment:
- TZ=Asia/Shanghai
volumes:
- ./datastore:/datastore
networks:
- homelab
# 可选:使用 Playwright 渲染 JS 动态页面
playwright-chrome:
image: browserless/chrome:latest
restart: unless-stopped
environment:
- SCREEN_WIDTH=1920
- SCREEN_HEIGHT=1024
networks:
- homelab
networks:
homelab:
external: true
配合 Bark、Telegram Bot 或 Apprise 可实现多渠道推送。
一键启动所有服务
将以上所有 docker-compose.yml 按目录存放后,可用脚本批量启动:
#!/bin/bash
# ~/homelab/start-all.sh
SERVICES=(
nextcloud homeassistant adguard gitea
vaultwarden jellyfin portainer npm
stirling-pdf changedetection
)
for svc in "${SERVICES[@]}"; do
echo "▶ Starting $svc..."
docker compose -f ~/$svc/docker-compose.yml up -d
done
echo "✅ All services started."
端口速查表
| 服务 | 端口 | 说明 |
|---|---|---|
| Nextcloud | 8080 | 私有云盘 |
| Home Assistant | 8123 | 智能家居 |
| AdGuard Home | 8083 | DNS 管理后台 |
| Gitea | 3001 | 代码仓库 |
| Vaultwarden | 8082 | 密码管理 |
| Jellyfin | 8096 | 媒体服务器 |
| Portainer | 9000 | 容器管理 |
| Nginx Proxy Manager | 81 | 反向代理管理 |
| Stirling-PDF | 8085 | PDF 工具箱 |
| ChangeDetection | 5000 | 网页监控 |
安全加固建议
- 永远不要直接暴露到公网:使用 Cloudflare Tunnel 或 Tailscale 做内网穿透,比开放端口安全得多
- 定期备份数据卷:推荐 Borgbackup + 异地存储,至少 3-2-1 备份策略
- 关闭不用的注册功能:Vaultwarden 的
SIGNUPS_ALLOWED=false、Gitea 的注册限制 - 保持镜像更新:
docker compose pull && docker compose up -d定期执行
总结
这 10 个服务覆盖了日常生活和开发中绝大多数场景:
- 存储与协作:Nextcloud + Gitea
- 安全与隐私:Vaultwarden + AdGuard Home
- 娱乐与效率:Jellyfin + Stirling-PDF + ChangeDetection
- 基础设施:Portainer + Nginx Proxy Manager + Home Assistant
整套栈在 4GB 内存的机器上完全可以运行(Home Assistant 单独 host 网络除外)。如果你手头有闲置的 NUC、旧笔记本或工控机,今天就可以开始搭建自己的 HomeLab。
数据在自己手里,才真正安心。
延伸阅读
- Awesome-Selfhosted — 最全自托管服务列表,按分类整理,定期更新
- r/selfhosted — Reddit 社区,问题讨论和最新推荐
- LinuxServer.io — 维护了大量经过优化的 Docker 镜像,文档详尽
- Cloudflare Tunnel 教程 — 无公网 IP 也能安全访问家庭服务器的最佳方案




