# 42_104 Caddy 靜態檔案伺服器,用 Docker Compose 運行,把 `caddy/www/` 目錄掛載到 `:80` 提供瀏覽。`www/` 裡是一堆各自獨立、可直接開啟的 HTML demo(圖表、QR/發票掃描、Lit + Tailwind 範例、羅盤等),沒有共用的 build 流程或框架。 ## 啟動 ```sh cd caddy ./run.sh # docker-compose up -d ./stop.sh # docker-compose down ``` 啟動後開 `http://localhost/` 瀏覽 `www/`,或直接連 `http://localhost/<檔名>.html`。 > 若機器上沒裝 `docker-compose`,可用等效的 `docker run` 啟動: > ```sh > docker run -d --name caddy --restart unless-stopped -p 80:80 \ > -v "$PWD/Caddyfile:/etc/caddy/Caddyfile" \ > -v "$PWD/caddy_data:/data" \ > -v "$PWD/www:/var/www/static" \ > -e TZ=Asia/Taipei caddy > ``` ## 部署 遠端伺服器:`192.168.42.104`(主機 CT104,Linux),caddy 根目錄在 `/opt/caddy`,web 內容在 `/opt/caddy/www`(由 `timmy` 帳號擁有、可寫,免密碼 SSH)。 更新內容用 rsync: ```sh rsync -av caddy/www/<目錄或檔案> timmy@192.168.42.104:/opt/caddy/www/ ``` 上線後即可從 `http://192.168.42.104/<路徑>` 存取。 ## 其他腳本 | 腳本 | 作用 | |------|------| | `list_docker_compose_services.sh` | `docker-compose ps` | | `view-output-from-containers.sh` | `docker-compose logs -f` | | `enter_caddy_container.sh` | 進入運行中的容器 shell | ## 結構 - `caddy/Caddyfile` — 伺服器設定,掛載到 `/etc/caddy/Caddyfile`。改完需 `./stop.sh && ./run.sh` 重啟。 - `caddy/docker-compose.yaml` — 單一 `caddy` service,bind-mount `Caddyfile`、`caddy_data/`(憑證/狀態)、`www/`。Port 80,`TZ=Asia/Taipei`。 - `caddy/www/` — 提供的內容。新增 demo 只要丟一個 `.html`(及資產子目錄)進去,refresh 瀏覽器即可。