Caddy

Единственный веб-сервер, который делает HTTPS из коробки. Никаких certbot, cron-задач на обновление, ручной конфигурации TLS. Написал домен — Caddy сам получил сертификат.


Базовый Caddyfile

example.com {
    reverse_proxy localhost:8080
}
 
sub.example.com {
    reverse_proxy localhost:8080 {
        header_up Host localhost
    }
}

Статика

site.com {
    root * /var/www/site
    try_files {path} {path}.html {path}/ index.html
    file_server
    encode gzip zstd
}

try_files — для SPA и красивых URL. encode gzip zstd — сжатие.


Редиректы

site.com {
    redir /git https://github.com/user permanent
    redir /tg https://t.me/user permanent
    root * /var/www/site
    file_server
}

Проверка и перезагрузка

caddy validate --config /etc/caddy/Caddyfile
sudo systemctl reload caddy

Перезагрузка без даунтайма

Caddy перезагружается без даунтайма — текущие соединения завершаются, новые идут по новому конфигу.


Права на файлы

Caddy работает от пользователя caddy. Файлы должны быть читаемы:

chmod -R 644 /var/www/site/*   # файлы
chmod -R 755 /var/www/site/    # директории

Rsync с --chmod=F644 решает это автоматически. Подробнее: .


Caddy в Docker

services:
  caddy:
    image: caddy:latest
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - caddy_data:/data
      - caddy_config:/config
    restart: unless-stopped

Подробнее в .


Связанные статьи

  • — основы Docker для self-hosting
  • — P2P-синхронизация, Web UI через Caddy
  • — деплой статического сайта
  • — радио через Caddy reverse proxy

Связанные


← mrgnl