Compose-Examples:自托管开源项目 Docker Compose 示例合集使用指南
Compose-Examples(Awesome Docker Compose Examples)是一个由社区维护的 Docker Compose 示例仓库,收录了大量自托管 FOSS 与商业项目的现成 docker-compose 配置。它不是单个服务,而是一个「部署模板库」——你想自托管 Nextcloud、Vaultwarden、Traefik、Authelia、Uptime Kuma、Ollama 等,都能在里面找到一份写好的 Compose 文件,改改路径和密码就能 docker compose up 跑起来,省去从零编排的麻烦。
一、项目官方信息
| 项目 | 信息 |
|---|---|
| GitHub 仓库 | https://github.com/Haxxnet/Compose-Examples |
| 在线网页版 | https://haxxnet.github.io/Compose-Examples/ |
| 开源协议 | 仓库根目录未声明 LICENSE 文件(示例配置以参考用途提供,使用前请自行确认各上游项目协议) |
| 主要内容 | Docker Compose YAML 配置 + Markdown 说明(YAML / Markdown 为主) |
| Star 数 | 7.4k+ |
| 维护者 | LRVT(l4rm4nd) |
说明:仓库 README 中的图片均为徽章、打赏按钮与贡献者头像,不属于项目官方产品图,故本文不设「官方图片」小节,封面亦不使用占位图。
二、环境要求
- Docker Engine:已安装并正常运行(见 https://docs.docker.com/engine/install/ )。
- Docker Compose:支持
docker compose子命令(Compose v2,见 https://docs.docker.com/compose/install/ )。 - 目录约定:示例默认把数据卷挂载在
/mnt/docker-volumes/<容器名>/;你可以通过环境变量DOCKER_VOLUME_STORAGE改成自己的根路径;未设置时回退到默认路径。 - 目录权限:bind mount 的属主 UID:GID 通常需要设为
1000:1000,具体看每个示例里的注释。 - 网络:示例不预定义 Docker 网络,需按你的反代 / 代理环境自行调整。
三、完整部署步骤
1. 克隆仓库
git clone https://github.com/Haxxnet/Compose-Examples
cd Compose-Examples/examples
所有示例都在 examples/ 目录下,每个子目录对应一个项目(如 examples/vaultwarden、examples/nextcloud、examples/traefik)。
2. 进入你想部署的示例
cd vaultwarden
3. 阅读注释并按需修改
官方 README 强调,直接 up 之前必须手动调整以下内容:
- 卷挂载路径:确认宿主机目录存在且属主正确(通常
1000:1000); - 示例配置文件:示例附带的 config 还没放到正确的 bind mount 路径,需要你挪过去;
- 默认凭据:出于安全考虑必须改成自己的强密码,建议放进独立的
.env文件或 secrets 管理平台; - Docker 网络:按你的反代(Traefik / Nginx Proxy Manager / Caddy)配置接入。
如果要改默认卷根路径,先导出环境变量:
export DOCKER_VOLUME_STORAGE="/your/data/path"
4. 启动
docker compose up
后台常驻可加 -d:
docker compose up -d
5. 验证
docker compose ps 查看容器状态;docker compose logs -f 看启动日志;按示例 README 给出的端口访问 Web 界面,确认改好的凭据能登录。
四、示例覆盖范围(官方分类摘录)
仓库按用途分类,常用类别包括:
- 个人仪表盘:Homepage、Homer、Dashy、Homarr、Flame、Heimdall;
- 密码管理:Vaultwarden、Bitwarden Unified、Passbolt CE;
- 反向代理 / 网关:Traefik、Nginx Proxy Manager、Caddy(自动续 TLS 证书);
- 身份管理 / SSO:Authelia、Authentik、Keycloak、ZITADEL、lldap;
- LLM / AI:Ollama + Open WebUI、Serge;
- VPN / 远程访问:wg-easy、WireGuard、IPSec VPN、OpenVPN-AS、Firezone、Headscale、Guacamole;
- DNS:AdGuard Home、Technitium DNS、Pi-hole、Cloudflare DDNS;
- 自动化与监控:n8n、Home Assistant、Portainer、Uptime Kuma、Grafana+Loki+Promtail 监控栈、Watchtower、Beszel;
- 影视 / 媒体:Plex、Jellyfin、*Arr 套件、Immich;
- 文件同步:Nextcloud、ownCloud oCIS、Seafile、MinIO、Syncthing、SFTPGo;
- 以及文档管理、笔记、Wiki、博客、电商、分析、安全、URL 缩短、家谱、资产管理等几十个分类。
五、使用方法与安全提示
官方 README 明确给出了生产使用的注意事项:
- 这些示例最初面向本地开发 / 折腾环境设计;若要部署到生产或暴露到公网,必须遵循通用加固与安全规范;
- 改掉所有默认凭据,用独立
.env或 secrets 管理平台存放密钥; - 建立备份流程并经过演练的灾难恢复计划;
- 使用反向代理统一暴露 Web 服务,并提供受信 SSL 证书的加密 HTTPS 通道;
- 在线浏览版仓库见 https://haxxnet.github.io/Compose-Examples/ ,可按分类快速查找示例。
六、常见问题 FAQ
Q1:docker compose up 后容器立刻退出 / 权限报错?
多半是 bind mount 目录属主不对。按示例注释把宿主机目录改成对应 UID:GID(通常 1000:1000),并确认目录已存在。
Q2:数据想放在非 /mnt/docker-volumes 的盘?
导出环境变量 DOCKER_VOLUME_STORAGE=/your/path,示例里的卷路径会基于它拼接;或直接编辑 compose 文件里的宿主机路径。
Q3:示例里的密码 / 密钥能直接用吗?
不能。官方反复提醒:默认凭据出于安全必须修改,建议放进 .env 文件,不要写死在 compose 里提交到 Git。
Q4:这些配置能直接上生产吗? 可以用,但要做加固:改默认凭据、配反代与 HTTPS、做备份与灾备;示例本身是起点,不是开箱即用的生产方案。
Q5:怎么知道某个示例用哪个端口、依赖哪些配置?
进入对应 examples/<项目> 目录,阅读目录内的 README 与 compose 注释;每个示例都附带了说明与示例配置文件。
Q6:仓库没有 LICENSE,我能随便用吗? 示例配置本身是参考模板;但它们编排的各个上游项目(如 Nextcloud、Vaultwarden)各有自己的开源协议,自托管部署时请遵循对应上游协议。
七、跳转链接
- GitHub 仓库:https://github.com/Haxxnet/Compose-Examples
- 在线示例浏览:https://haxxnet.github.io/Compose-Examples/
- 示例目录:https://github.com/Haxxnet/Compose-Examples/tree/main/examples