Self-hosting. Caddy

Просто http сервер для публикации сайтов и организации реверс прокси. Для настройки используется файл конфигурации Caddyfile с json описанием сайтов. Имеет большое количество модулей и расширений, может гибко настраиваться.

Не имеет графического интерфейса, вся настройка через файл конфигурации. Поддерживает dns chelenge.

Официальный сайт: Caddy - The Ultimate Server with Automatic HTTPS
Проект на GitHub GitHub - caddyserver/caddy: Fast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS

Пример docker compose файла:

type: docker-compose
tags:
aliases:

  • Caddy
    program:
  • caddy
    modified: 2024-10-06T00:57:55+03:00
    dg-publish: true
    МОС: “[[Docker Compose]]”
services:
  caddy:
    image: ghcr.io/deniom3/caddy-cloudflare-transform:latest
    container_name: caddy
    restart: unless-stopped
    cap_add:
      - NET_ADMIN
    ports:
      - 80:80
      - 443:443 
    environment:
      ACME_AGREE: true
      CLOUDFLARE_API_TOKEN: <CLOUDFLARE_API_TOKEN>
      CLOUDFLARE_EMAIL: <CLOUDFLARE_EMAIL>
      DOMAIN: deniom.ru
    volumes:
      - ./data:/data
      - ./config:/config
      - ./logs:/logs
      - ./Caddyfile:/etc/caddy/Caddyfile  

[!note]-
Подобно разобрано в [[Настройка реверс прокси Caddy и Fail2Ban в docker|статье]]

Настройки проксирования указываются в [[Caddyfile|файле]]

Пример конфиг файла

type: conf
tags:
aliases: Caddyfile
program: caddy
modified: 2025-06-10T01:23:56+03:00
dg-publish: true

Пример настроек Caddy для использования как реверс прокси в домашней сети. Подробная настройка рассмотрена в [[Настройка реверс прокси Caddy и Fail2Ban в docker]].

(common) {
	header /* {
	-Server
	}
}

(cloudflare) {
	import common
	tls { 
		dns cloudflare {env.CLOUDFLARE_API_TOKEN}
	}
}

(local) {
	@allowed remote_ip 192.168.0.0/24
	handle {
		respond 401
	}
}

{
	log access-log {
		include http.log.access
		output file /logs/access.log {
		  roll_keep_for 48h
		}
		format transform `{ts} {request>headers>X-Forwarded-For>[0]:request>remote_ip} {request>host} {request>method} {request>uri} {status}` {
			time_format "02/Jan/2006:15:04:05"
		}
	}
}

home-assistant.{env.DOMAIN} {
	import cloudflare
	
	log
	
	reverse_proxy 192.168.0.125:8123
}

vaultwarden.{env.DOMAIN} {
	import cloudflare
	
	log
	
	reverse_proxy 192.168.0.132:10380 {
		header_up X-Real-IP {remote_host}
	}
}

nextcloud.{env.DOMAIN} {
	import cloudflare
	
	log
	
	reverse_proxy 192.168.0.133:11000
}

immich.{env.DOMAIN} {
	import cloudflare
	
	log
	
	reverse_proxy 192.168.0.136:2283
}

jackett.{env.DOMAIN} {
	import local
	import cloudflare
	
	log
	
	handle @allowed {
		reverse_proxy 192.168.0.134:9117
	}
}

plex.{env.DOMAIN} {
	import local
	import cloudflare
	
	log
	
	handle @allowed {
		reverse_proxy 192.168.0.134:32400
	}
}

portainer.{env.DOMAIN} {
	import local
	import cloudflare
	
	log
	
	handle @allowed {
		reverse_proxy 192.168.0.132:9000
	}
}

[!urls]- Упоминания:

  • [[Self-hosting программы]]
  • [[Настройка реверс прокси Caddy и Fail2Ban в docker]]

[!description]- Примечание
Примечание:: Легкий реверс прокси