Home » Как разместить сайт с помощью Caddy на Ubuntu 24.04
Как разместить сайт с помощью Caddy на Ubuntu 24.04

Как разместить сайт с помощью Caddy на Ubuntu 24.04

В этой статье разберёмся, как разместить сайт с помощью Caddy на Ubuntu 24.04. Почему это важно? Потому что Caddy — это не просто ещё один веб-сервер, а инструмент, который может сэкономить кучу времени, нервов и даже денег. Если ты когда-нибудь настраивал Nginx или Apache, то знаешь, сколько возни с конфигами, SSL, перезапусками и прочими радостями. Caddy же обещает всё это сделать за тебя, причём с минимальным количеством команд и магии. В итоге — меньше рутины, больше времени на код и эксперименты. Если тебе нужен быстрый старт, автоматизация и современный подход к хостингу сайтов — читай дальше.

Как это работает? Почему Caddy — это не просто «ещё один веб-сервер»

Caddy — это современный веб-сервер, написанный на Go. Его главная фишка — автоматическое получение и обновление SSL-сертификатов через Let’s Encrypt. То есть, ты просто указываешь домен, а Caddy сам заботится о безопасности. Не нужно вручную генерировать сертификаты, прописывать крон-джобы, следить за истечением срока действия — всё делается автоматически.

  • Автоматизация HTTPS: Caddy сам получает и обновляет сертификаты.
  • Простой конфиг: Один файл Caddyfile вместо километров конфигов.
  • Гибкость: Поддержка reverse proxy, статических файлов, PHP, FastCGI, балансировки и кучи плагинов.
  • Кроссплатформенность: Работает на Linux, Windows, macOS, ARM, даже на Raspberry Pi.

В отличие от Nginx и Apache, где SSL — это отдельная головная боль, Caddy делает всё сам. Это особенно круто, если у тебя несколько сайтов или микросервисов, и ты не хочешь тратить время на рутину. К тому же, Caddy умеет быть не только веб-сервером, но и reverse proxy, балансировщиком, сервером для API, и даже может служить точкой входа для Docker-контейнеров.

Как быстро и просто всё настроить: пошаговая инструкция

Давай по-честному: если ты умеешь пользоваться терминалом и не боишься sudo, то развернуть сайт на Caddy — дело пары минут. Вот пошаговый гайд для Ubuntu 24.04.

1. Установка Caddy

Официальный способ — через репозиторий. Не надо качать бинарники вручную, всё делается одной командой:


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

Проверяем, что всё ок:


caddy version

2. Готовим сайт

Пусть у тебя есть папка /var/www/mysite с сайтом (HTML, статика, что угодно). Если нет — создаём:


sudo mkdir -p /var/www/mysite
sudo chown -R $USER:$USER /var/www/mysite

Кидаем туда index.html или что душе угодно.

3. Настраиваем Caddyfile

Caddy ищет файл /etc/caddy/Caddyfile (или Caddyfile в текущей папке, если запускать вручную). Пример самого простого Caddyfile:


example.com {
  root * /var/www/mysite
  file_server
}

Всё. Просто укажи свой домен (example.com) и путь к сайту. Caddy сам получит сертификат, настроит HTTPS, отдаст статику.

4. Перезапускаем Caddy


sudo systemctl reload caddy

Или, если только что установил:


sudo systemctl enable --now caddy

Теперь сайт доступен по HTTPS. Без ручного возни с сертификатами.

5. Проверяем


curl -I https://example.com

Должен быть ответ 200 OK и заголовок server: Caddy.

Примеры, схемы, практические советы

Reverse Proxy для backend-приложения

Допустим, у тебя есть backend на 127.0.0.1:5000 (например, Flask, Node.js, Go, не важно). Caddyfile:


api.example.com {
  reverse_proxy 127.0.0.1:5000
}

Caddy сам проксирует запросы, автоматом выдаёт сертификат, не надо городить отдельный Nginx.

PHP-сайт (например, WordPress)


mysite.com {
  root * /var/www/mysite
  php_fastcgi unix//run/php/php8.2-fpm.sock
  file_server
}

Не забудь установить php-fpm:


sudo apt install php-fpm

Несколько сайтов на одном сервере


site1.com {
  root * /var/www/site1
  file_server
}
site2.com {
  root * /var/www/site2
  file_server
}

Caddy сам разрулит сертификаты для каждого домена.

Схема работы

  • Пользователь → DNS → Сервер с Caddy
  • Caddy → (file_server или reverse_proxy) → Ваше приложение или статика
  • SSL/HTTPS — автоматом

Положительные и отрицательные кейсы

Кейс Плюсы Минусы Рекомендации
Статический сайт Мгновенный запуск, автоматический HTTPS, минимум настроек Меньше тонких настроек, чем в Nginx Идеально для лендингов, портфолио, документации
Reverse Proxy для API Простота, автоматизация сертификатов, поддержка WebSocket Меньше готовых рецептов для сложных сценариев Отлично для микросервисов, backend-приложений
WordPress/PHP Работает, поддержка FastCGI Меньше туториалов, чем для Apache/Nginx Для продакшена — тестируй на dev-сервере
Много сайтов на одном сервере Автоматическое управление сертификатами для каждого домена Сложнее интеграция с панелями управления Для DevOps и автоматизации — топ

Похожие решения, программы и утилиты

  • Nginx — классика, гибкий, но требует ручной настройки SSL.
  • Apache — старый добрый, но сложнее в конфигурировании и автоматизации.
  • Traefik — современный reverse proxy, хорош для Docker и Kubernetes, но чуть сложнее для новичков.
  • HAProxy — мощный балансировщик, но не для статики и не для новичков.

Статистика и сравнение

Сервер Авто-SSL Reverse Proxy Лёгкость настройки Расход памяти Поддержка HTTP/3
Caddy Да (по умолчанию) Да Очень просто ~20-40 МБ Да
Nginx Нет (через certbot) Да Средне ~10-30 МБ Да (с 1.25+)
Apache Нет (через certbot) Да Сложно ~30-60 МБ Нет (на момент написания)
Traefik Да Да Средне ~30-50 МБ Да

Интересный факт: Caddy — первый веб-сервер, который включил автоматический HTTPS по умолчанию. Это реально меняет подход к безопасности сайтов.

Нестандартные способы использования

  • Локальная разработка с HTTPS: Caddy может выдавать self-signed сертификаты для локальных доменов. Удобно для тестирования OAuth, WebRTC и прочих штук, требующих HTTPS.
  • Автоматизация деплоя: Caddy легко интегрируется с CI/CD пайплайнами. Просто копируешь новый Caddyfile — и всё работает.
  • Docker + Caddy: Можно запускать Caddy в контейнере, проксируя трафик к другим контейнерам. Есть даже официальный Docker-образ.
  • Сервер для SPA и PWA: Caddy отлично отдаёт статику, поддерживает Brotli и Gzip, HTTP/2 и HTTP/3 — всё из коробки.

Какие новые возможности открываются и чем это поможет в автоматизации и скриптах?

  • Zero-downtime reload: Caddy может перезагружаться без дропов соединений. Это важно для продакшена.
  • JSON API для управления: Можно управлять конфигом через HTTP API, что удобно для автоматизации.
  • Плагины: Легко расширяется — например, можно добавить поддержку Cloudflare, IP-банов, rate limiting и т.д.
  • Интеграция с systemd: Caddy работает как systemd-сервис, логируется в journalctl, легко мониторится.
  • Скрипты для деплоя: Можно писать скрипты, которые автоматически генерируют Caddyfile и перезапускают сервер после деплоя.

Вывод — заключение и рекомендации

Caddy — это не просто альтернатива Nginx или Apache, а реально современный инструмент для тех, кто ценит своё время и нервы. Если тебе нужно быстро поднять сайт, API, или кучу микросервисов с HTTPS — Caddy даст фору большинству конкурентов. Он особенно хорош для автоматизации, CI/CD, Docker-окружений, и вообще для всех, кто не хочет тратить жизнь на ручную настройку SSL и перезапуски демонов.

  • Для статических сайтов, лендингов, портфолио — must have.
  • Для backend-приложений и микросервисов — отличная точка входа.
  • Для автоматизации и DevOps — просто, быстро, надёжно.
  • Для WordPress и PHP — работает, но тестируй на dev-сервере.

Если хочешь попробовать — бери VPS здесь или выделенный сервер тут. А если уже есть сервер — просто ставь Caddy и забудь про ручную возню с сертификатами.

Официальная документация: https://caddyserver.com/docs/

В общем, если хочется современного, простого и надёжного веб-сервера — Caddy стоит попробовать. А если уже используешь — делись кейсами и лайфхаками в комментах!


В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.

Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.

Leave a reply

Your email address will not be published. Required fields are marked