【有趣好玩的Docker项目-Docker Compose部署】Caddy 统一反向代理服务【caddy】

1.721k 字  |  6 分钟

适用于在 VPS 上部署 Caddy 作为统一反向代理入口,配合 Docker Compose、模块化配置结构、自动 HTTPS 证书管理等最佳实践。

# Caddy 统一反向代理部署指南(Docker Compose 模板)

本项目用于在 VPS 上部署 Caddy,作为所有服务的统一入口,支持自动 HTTPS、模块化配置、反代多个容器服务(如 Portainer、Yacht、WordPress、Typecho 等)。目录结构清晰,适合长期维护和扩展。

---

## 📁 项目结构

/opt/docker-stack/

├── caddy/

├── compose.yaml # Docker Compose 主配置文件

├── Caddyfile # 主 Caddy 配置文件(引用子配置)

├── conf.d/ # 每个服务一个子配置文件

│ ├── portainer.caddy

│ ├── yacht.caddy

│ └── typecho.caddy

├── data/

├── certs-caddy/ # 自动 HTTPS 证书存储目录

└── config/ # Caddy 内部状态缓存

代码

---

## 🚀 安装步骤

### 1. 创建网络(供 Caddy 与其他容器通信)

```bash

docker network create caddy_net

2. 编写 compose.yaml

yaml

version: "3.8"

services:

  caddy:

    image: caddy:latest

    container_name: caddy

    restart: unless-stopped

    ports:

      - "80:80"

      - "443:443"

    volumes:

      - ./Caddyfile:/etc/caddy/Caddyfile

      - ./conf.d:/etc/caddy/conf.d

      - ./data/certs-caddy:/data

      - ./data/config:/config

      - /var/run/docker.sock:/var/run/docker.sock  # 可选:用于自动服务发现

    networks:

      - caddy_net

networks:

  caddy_net:

    external: true

3. 编写主 Caddyfile

caddyfile

# 导入所有 conf.d 子配置文件

import /etc/caddy/conf.d/*.caddy

4. 编写子配置文件(示例)

conf.d/portainer.caddy

caddyfile

portainer.example.com {

    reverse_proxy portainer:9000

}

conf.d/typecho.caddy

caddyfile

blog.example.com {

    root * /var/www/html

    php_fastcgi typecho:9000

    file_server

    encode gzip

    rewrite * /index.php

}

✅ 启动服务

bash

cd /opt/docker-stack/caddy

docker compose up -d

🔐 HTTPS 证书说明

所有证书自动存储在 data/certs-caddy/ 目录下,由 Caddy 自动申请和续签(使用 Let’s Encrypt)。

不建议手动修改该目录内容。

若需迁移或备份,请保留该目录以避免重新申请证书。

🧠 config 目录说明

data/config/ 用于存储 Caddy 的运行状态、配置缓存等。

若使用 Caddy API 动态配置,该目录会自动更新。

静态配置用户可忽略该目录,但仍建议保留。

🧩 服务接入建议

所有服务(如 Portainer、Yacht、WordPress)需加入 caddy_net 网络。

在各自的 Compose 文件中添加:

yaml

networks:

  - caddy_net

📖 参考文档

Caddy 官方文档

Docker Compose 官方文档

Caddy Docker 镜像说明

🎯 总结

Caddy 是现代、高性能的反向代理服务器,支持自动 HTTPS 和模块化配置。

本模板结构清晰,适合长期维护和多服务扩展。

推荐配合 Portainer/Yacht 做容器管理,Prometheus/Grafana 做监控,实现完整替代 1Panel 的架构。

评论(没有评论)

谢谢你请我喝咖啡~

扫码打赏,支持一下