- Home »

Как разместить сайт с помощью 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 стоит попробовать. А если уже используешь — делись кейсами и лайфхаками в комментах!
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.