Как установить и настроить Hugo на VPS
Hugo — сверхбыстрый генератор статических сайтов на языке Go, и установить Hugo на VPS стоит, когда нужен молниеносный, безопасный и дешёвый в обслуживании сайт: блог, документация, лендинг или портфолио. Hugo собирает готовый HTML из шаблонов и Markdown-файлов, а веб-сервер отдаёт статику без базы данных и PHP — отсюда мгновенная загрузка и минимальная поверхность для атак. В этом руководстве развернём Hugo на VPS: установим сам генератор, создадим сайт, соберём статику, настроим отдачу через Nginx, выпустим SSL и наладим обновление сайта.
Сразу проясним модель работы, она непривычна после WordPress. Hugo — это инструмент сборки: вы пишете контент в Markdown, Hugo превращает его в набор статических HTML-файлов в каталоге public, и уже эти файлы отдаёт Nginx. Никакой базы, никакого исполняемого кода на сервере при отдаче страниц — только готовый HTML, CSS и JS. Это даёт феноменальную скорость и почти нулевые требования к ресурсам: статику тянет даже самый минимальный VPS от 1 ГБ RAM. Сервер нужен, чтобы собирать сайт и отдавать его посетителям с вашего домена и SSL.
Возникает резонный вопрос: если Hugo генерирует статику, зачем вообще VPS — нельзя ли положить готовые файлы на бесплатный хостинг? Можно, но свой сервер даёт то, чего бесплатные площадки не гарантируют: собственный домен и SSL без ограничений, полный контроль над заголовками и кэшированием, отсутствие сторонней рекламы и лимитов, возможность держать рядом другие сервисы (например, форму обратной связи или аналитику), а также стабильную доступность из нужных регионов. Для серьёзного проекта, который должен работать предсказуемо и выглядеть профессионально, собственный VPS — правильный фундамент, а Hugo превращает его в один из самых быстрых сайтов, какие вообще бывают.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Установка Hugo на сервер
Обновите систему и установите Hugo. Проще всего взять свежую версию с официальных релизов, так как в репозиториях дистрибутивов Hugo часто устаревший. Скачайте актуальный .deb-пакет расширенной версии (extended — она нужна для обработки SCSS) и установите его:
apt update && apt -y upgrade
cd /tmp
wget https://github.com/gohugoio/hugo/releases/download/v0.134.0/hugo_extended_0.134.0_linux-amd64.deb
apt -y install ./hugo_extended_0.134.0_linux-amd64.deb
Номер версии замените на актуальный из релизов. Проверьте, что Hugo установился и это именно extended-версия:
hugo version
В выводе должно быть +extended. Расширенная сборка обязательна, если тема использует SCSS/Sass, иначе получите ошибку при сборке. Также поставьте Git — он нужен для установки тем как модулей или подмодулей:
apt -y install git
Создание сайта и подключение темы
Создайте новый сайт Hugo. Команда сформирует структуру каталогов проекта:
cd /var/www
hugo new site vashdomen.ru
cd vashdomen.ru
Появится структура: content (ваши статьи в Markdown), themes (темы оформления), static (статические файлы), layouts (шаблоны), и конфиг hugo.toml. Hugo сам не поставляется с оформлением — нужно подключить тему. Возьмём тему как git-подмодуль (замените на нужную из каталога тем Hugo):
git init
git submodule add https://github.com/theNewDynamic/gohugo-theme-ananke themes/ananke
Затем укажите тему и базовый адрес в конфиге hugo.toml: пропишите theme = 'ananke' и baseURL = 'https://vashdomen.ru/'. Базовый URL важен — он подставляется во все ссылки собранного сайта, и без правильного значения ссылки и ресурсы будут вести не туда.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPSНаполнение и сборка статики
Добавьте первую страницу. Hugo создаст Markdown-файл с заготовкой метаданных:
hugo new content posts/pervyj-post.md
Откройте файл, напишите текст в Markdown и уберите draft: true из шапки (черновики по умолчанию не публикуются). Когда контент готов, соберите сайт — Hugo сгенерирует статические файлы в каталог public:
hugo --minify
Флаг --minify сжимает HTML, CSS и JS для скорости. После сборки в каталоге public лежит полностью готовый сайт — именно его будет отдавать Nginx. Проверить сайт локально перед публикацией можно встроенным сервером hugo server, который поднимает предпросмотр с автоперезагрузкой, но для боевой отдачи используется Nginx.
Настройка Nginx и отдача сайта
Установите Nginx и настройте его на отдачу каталога public:
apt -y install nginx
Создайте конфиг виртуального хоста в /etc/nginx/sites-available/vashdomen.ru, где корнем (root) укажите /var/www/vashdomen.ru/public, а index — index.html. Активируйте конфиг и перезагрузите Nginx:
ln -s /etc/nginx/sites-available/vashdomen.ru /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
Направьте A-запись домена на IP сервера и дождитесь распространения DNS:
dig +short vashdomen.ru
Откройте http://vashdomen.ru — увидите собранный сайт. Поскольку Nginx отдаёт готовую статику, сайт работает мгновенно и выдерживает большой трафик даже на скромном VPS.
Выпуск SSL и автоматизация сборки
Выпустите бесплатный SSL через certbot:
apt -y install certbot python3-certbot-nginx
certbot --nginx -d vashdomen.ru -d www.vashdomen.ru
Certbot настроит HTTPS и редирект, сертификат продлевается автоматически. Теперь про удобный рабочий процесс. Каждый раз после правки контента нужно пересобирать сайт командой hugo --minify. Чтобы не делать это вручную, автоматизируйте: например, храните исходники в git-репозитории и настройте на сервере хук или скрипт, который при получении обновлений выполняет git pull и hugo --minify. Простой вариант — скрипт деплоя:
cd /var/www/vashdomen.ru && git pull && hugo --minify
Такой скрипт можно запускать вручную или по расписанию. Более продвинутый путь — CI/CD, когда сборка запускается автоматически при пуше в репозиторий.
Обслуживание, обновления и производительность
Hugo как инструмент нужно периодически обновлять — новые версии приносят функции и исправления. Обновление сводится к установке свежего пакета релиза, как при первичной установке. Темы, подключённые как подмодули, обновляются командой git submodule update --remote. Всегда проверяйте сборку после обновления Hugo или темы: изредка меняется синтаксис шаблонов.
По производительности статический сайт и так очень быстр, но можно выжать больше: включите в Nginx сжатие (gzip/brotli) и кэширование статики заголовками, при большом трафике поставьте перед сервером CDN. Резервное копирование простое: исходники (Markdown, конфиг, тема) храните в git-репозитории — это и есть ваш бэкап, из которого сайт пересобирается за секунды. Собранный public бэкапить не нужно, он всегда воспроизводим. Ресурсов Hugo почти не требует, но если на том же сервере крутятся другие сервисы, память можно нарастить — на VPS MAATRIX это делается без переустановки.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPSОбсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Частые вопросы
Чем Hugo лучше WordPress?
Hugo отдаёт готовую статику без базы и PHP: сайт грузится мгновенно, выдерживает большой трафик на минимальном сервере и почти неуязвим для взлома (нет исполняемого кода при отдаче). Расплата — контентом управляют через файлы и пересборку, а не через привычную админку.
Зачем нужна extended-версия Hugo?
Расширенная сборка (+extended) умеет обрабатывать SCSS/Sass, который используют многие темы. Без неё сборка таких тем падает с ошибкой. Всегда ставьте extended-версию — она универсальна.
Как обновлять сайт после установки?
Правите Markdown-контент и пересобираете сайт командой hugo --minify. Процесс удобно автоматизировать через git и скрипт деплоя (git pull && hugo --minify) или полноценный CI/CD при пуше в репозиторий.
Хватит ли минимального VPS?
Для статики Hugo — более чем: отдача готовых HTML почти не нагружает сервер, и минимального тарифа достаточно даже под заметный трафик. На VPS MAATRIX при необходимости ресурсы увеличиваются без переустановки, если добавите другие сервисы.
Нужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.