云服务越来越贵,隐私问题越来越严峻——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 网页监控

安全加固建议

  1. 永远不要直接暴露到公网:使用 Cloudflare Tunnel 或 Tailscale 做内网穿透,比开放端口安全得多
  2. 定期备份数据卷:推荐 Borgbackup + 异地存储,至少 3-2-1 备份策略
  3. 关闭不用的注册功能:Vaultwarden 的 SIGNUPS_ALLOWED=false、Gitea 的注册限制
  4. 保持镜像更新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。

数据在自己手里,才真正安心。


延伸阅读