Блогқа оралу
Тамыз 19, 2026Нұсқаулықтар

Автоматты HTTPS бар Caddy веб-серверін қалай орнатуға болады

Ubuntu-да Caddy-ді ресми репозиторийден орнатыңыз, статикалық сайттар мен кері проксилер үшін Caddyfile жазыңыз, автоматты сертификаттарды, systemd, журналдарды және Nginx-тен көшудегі жиі қателерді түсініңіз.

Автоматты HTTPS бар Caddy веб-серверін қалай орнатуға болады

Caddy — әдепкі бойынша TLS сертификаттарын алатын және жаңартатын веб-сервер. Бір-екі домен орналастыратын шағын VPS үшін бұл Certbot таймерлері мен Nginx үзінді файлдарының бүкіл класын алып тастайды. Конфигурация тілі (Caddyfile) қысқа. Кері прокси, gzip және HTTP/2 — қалыпты мүмкіндіктер, қосымша модульдермен өткізілген демалыс емес.

Nginx кейбір командалар үшін әлі де дұрыс таңдау: шайқаста сыналған конфигтеріңіз бар немесе өте нақты модуль керек. Бұл нұсқаулық басқа жиі кездесетін жағдай үшін — жаңа Hiddence VPS-те include үзінділерін жаттамай жұмыс істейтін HTTPS қалайсыз. Caddy-ді ресми apt репозиторийінен орнатамыз, оның Let's Encrypt-пен қалай сөйлесетінін түсіндіреміз, статикалық сайт береміз, жергілікті қосымшаны проксилейміз, бірнеше домен орналастырамыз, журналдарға қараймыз және Apache немесе ескі Nginx-пен әдеттегі 80 порт тартыстарын қамтимыз.

Caddy қашан жақсы сәйкес келеді

Автоматты HTTPS — тақырып, бірақ күнделікті пайда — аз қозғалмалы бөлік. Caddy 80 және 443-ті тыңдайды, HTTP-ні HTTPS-ке бағыттайды және сертификаттарды деректер каталогында сақтайды. Әлі де VPS-ке қарайтын домен керек. Әлі де ACME-ні бұзбауыңыз керек (брандмауэр 80/tcp, :80-ді ұрлайтын басқа процесс жоқ). Wildcard сертификаттары DNS провайдері модулін қажет етеді — бұл бір хост сертификатынан ұзағырақ жол.

  • Автоматты HTTP→HTTPS және сертификатты жаңарту
  • Ұзын сервер блоктарының орнына оқылатын Caddyfile
  • Node, Python, қосымша конфигпен PHP-FPM немесе Docker бэкендтері үшін қабілетті кері прокси
  • Шифр кестесінсіз HTTP/2 және заманауи TLS әдепкілері
  • Ресми пакеттен systemd бірлігі

Талаптар

Caddy ACME HTTP-01-ді дәлелдемес бұрын домен осы VPS-ке шешілуі керек. DNS әлі таралып жатса, Caddy шығару сәтсіз болады және қайталап көреді; бұл «Caddy сынған» сияқты көрінеді, бірақ ол тек DNS. 80/443-ті иеленсе, алдымен Apache немесе Nginx-ті тоқтатыңыз.

  • Ubuntu 22.04 немесе 24.04
  • VPS IP-іне домен A жазбасы (IPv6 пайдалансаңыз AAAA да)
  • 80 және 443 порттары бос және брандмауэрде рұқсат етілген
  • Root немесе sudo

1-қадам: Caddy-ді ресми репозиторийден орнатыңыз

Ағымдағы TLS және ACME мінез-құлқын қаласаңыз, әдепкі Ubuntu universe-тен кездейсоқ ескі Caddy орнатпаңыз. Caddy жобасы apt көзін құжаттайды. Орнатқаннан кейін caddy пайдаланушысы бар және қызмет қосылған.

bash
ssh root@YOUR_VPS_IP
apt update && apt -y install debian-keyring debian-archive-keyring apt-transport-https curl gpg

curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | tee /etc/apt/sources.list.d/caddy-stable.list

apt update
apt -y install caddy

caddy version
systemctl status caddy --no-pager

2-қадам: Бірінші Caddyfile — статикалық сайт

Әдепкі Caddyfile — /etc/caddy/Caddyfile. Оны доменіңізбен ауыстырыңыз. Хост атауы localhost емес болса, конфиг жүктеле салысымен Caddy сертификат алуға тырысады. Сайт файлдарын caddy пайдаланушысы оқи алатын каталогқа қойыңыз (көбіне www-data стиліндегі рұқсаттар, бірақ пакет caddy пайдаланушысын пайдаланады).

bash
mkdir -p /var/www/example
echo '<h1>It works</h1>' > /var/www/example/index.html
chown -R caddy:caddy /var/www/example

cat >/etc/caddy/Caddyfile <<'EOF'
example.com {
    root * /var/www/example
    file_server
    encode gzip
}
EOF

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

# Watch issuance:
journalctl -u caddy -f

3-қадам: Жергілікті қосымшаны кері проксилеңіз

Gunicorn, Node немесе Docker 127.0.0.1:8000-де тыңдаса, Caddy жалғыз жалпыға ортақ процесс болуы керек. reverse_proxy директивасы көптеген қосымшалар үшін Host және X-Forwarded-* тақырыптарын ақылға қонымды түрде жібереді. Қосымша абсолютті HTTP URL-дерін генерацияласа, қосымшада сенімді прокси / HTTPS жалауларын орнатыңыз (Django SECURE_PROXY_SSL_HEADER, Express trust proxy және т.б.).

bash
app.example.com {
    encode gzip
    reverse_proxy 127.0.0.1:8000
}

# Several hosts in one file are normal:
# blog.example.com {
#     root * /var/www/blog
#     file_server
# }

4-қадам: Брандмауэр және systemd

80 және 443-ке рұқсат беріңіз. Caddy бірлігі — caddy.service; процесс сау болса, Caddyfile өңдеулерінен кейін reload жеткілікті. DNS плагині үшін орта айнымалыларын өзгертсеңіз, толық қайта іске қосу анығырақ. Сертификаттар әдепкі бойынша /var/lib/caddy/.local/share/caddy/ астында — қайта орнату кезінде жылдамдық шектеулерін ойласаңыз, сол жолды сақтық көшірмелерге қосыңыз.

bash
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

systemctl enable --now caddy
systemctl reload caddy

# Backup cert storage (path may vary slightly by version):
ls -la /var/lib/caddy/

5-қадам: Журналдар, сығу және тақырыптар

Қатынас журналдары бот жолды ұрғанда немесе 404-ті жөндегенде көмектеседі. Сайт бойынша журнал жүргізуге болады. Браузер қосымшасын орналастырсаңыз, қауіпсіздік тақырыптарын қосыңыз; HSTS-ті түсінбей үлкен тақырып жинағын көшірмеңіз (ұзын max-age қойғаннан кейін браузерлер есте сақтайды).

bash
example.com {
    root * /var/www/example
    file_server
    encode gzip
    log {
        output file /var/log/caddy/example.log
    }
    header {
        X-Content-Type-Options nosniff
        Referrer-Policy no-referrer-when-downgrade
        -Server
    }
}

mkdir -p /var/log/caddy
chown caddy:caddy /var/log/caddy
systemctl reload caddy

6-қадам: PHP және басқа қосымшалар

Caddy php_fastcgi директивасымен PHP-FPM-мен сөйлесе алады. Бұл көптеген WordPress немесе Laravel хосттары үшін жеткілікті, бірақ php-fpm орнатылып, сокет жолы сәйкес болуы керек. Мінсіз Nginx PHP конфигіңіз болса, бір кеште көшу міндетті емес — Caddy кері прокси + статика + автоматты TLS-те жарқырайды.

bash
example.com {
    root * /var/www/example
    php_fastcgi unix//run/php/php8.3-fpm.sock
    file_server
}

# Confirm FPM is running:
systemctl status php8.3-fpm

Тоқтау тосынсыйларысыз Nginx-тен көшу

Caddy-ді бастамас бұрын Nginx-ті тоқтатыңыз, әйтпесе олар 80/443 үшін таласады. IP де көшірсеңіз, бір күн бұрын DNS TTL-ді төмендетіңіз. A жазбасын ауыстырмас бұрын жаңа VPS-ке соғу үшін curl --resolve-пен сынаңыз. Кері қайтару керек болса, Nginx конфигтерін бір апта git-те ұстаңыз.

  • systemctl stop nginx && systemctl disable nginx
  • Caddy орнатыңыз, Caddyfile-ды тексеріңіз, Caddy-ді бастаңыз
  • curl -I --resolve example.com:443:NEW_IP https://example.com
  • IP жаңа болса ғана DNS-ті өзгертіңіз
  • Қайта шығару автоматты; сол хост атауына қарсы Certbot та іске қоспаңыз

Ақаулықтарды жою

ACME сәтсіздіктері дерлік әрқашан DNS, брандмауэр немесе 80 портындағы басқа қызмет. Caddy журнал жолдары tls.obtain туралы айтады. Сайт HTTP-де жұмыс істеп, HTTPS-те істемесе, шығару аяқталмаған. Тым көп сертификат көрсеңіз, Let's Encrypt жылдамдық шектеулеріне тап болдыңыз — сынағанда өндіріс емес, staging CA пайдаланыңыз.

  • validate сәтсіз: Caddyfile синтаксисі, жақша жетіспейді
  • root-та permission denied: сайт каталогы үшін chown caddy
  • bind: address already in use — ss -tulpn | grep -E ':80|:443'
  • сертификат уақыты бітті: VPS-тен dig +short домен, ufw allow 80
  • 502 reverse_proxy: бэкенд өшірулі немесе контейнер желісінен localhost-қа қате прокси

Қауіпсіздік ескертпелері

Caddy-дің TLS әдепкілері сақтық. Сіздің жұмысыңыз — қосымша қауіпсіздігі және SSH. Caddy әкімші API-ін жалпыға ортақ интерфейсте қоспаңыз. Әдепкі әкімші нүктесі жергілікті; солай қалдырыңыз. Интернеттен Caddyfile пайдалансаңыз, әр matcher-ді оқыңыз — /*-ті ішкі IP-ге reverse_proxy ететін үзінді ашық прокси болуы мүмкін.

  • Әкімші API-ін ашпаңыз
  • Пакетті жаңартып ұстаңыз
  • HSTS-ті барлық хост атаулары үшін HTTPS жұмыс істейтініне сенімді болғаннан кейін ғана
  • ACME жылдамдық шектеулерін қорғау үшін сынақ пен өндіріс хост атауларын бөліңіз

Кеңестер

  • caddy fmt --overwrite /etc/caddy/Caddyfile файлды оқылатын ұстайды
  • Ұқсас сайттар көп болса import үзінділерін пайдаланыңыз
  • Docker үшін тіркелген Caddyfile бар caddy:alpine бейнесі жиі
  • Wildcard сертификаттары DNS модулі мен API токенін қажет етеді — сол токенді қорғаңыз
  • Бүкіл файлды қайта жазбас бұрын journalctl -u caddy оқыңыз

VPS-тегі Caddy: ресми пакет, қысқа Caddyfile, ашық 80/443 порттары, серверге қазірдің өзінде қарайтын DNS және өңдеулерден кейін systemd reload. Оны статикалық файл сервері немесе Gunicorn, Node не Docker алдындағы кері прокси ретінде пайдаланыңыз. Автоматты HTTPS ACME 80 портында жауап бере алғанда жұмыс істейді; шығару сәтсіз болса, Caddy-ді кінәламас бұрын DNS пен порт қақтығыстарын түзетіңіз. Жиі қайта орнатсаңыз /var/lib/caddy сақтық көшірмелеңіз.