Установка Hugo на Ubuntu 18.04
Важно: команды в статье предполагают доступ под root или пользователя с sudo. Замените примеры имён и адреса на ваши реальные значения.
О чём статья
- Установка Hugo из релиза (.deb)
- Создание сайта, страницы «About» и первой записи блога
- Подключение темы и настройка шаблона
- Сборка и запуск локального сервера Hugo
- Альтернативные варианты установки и развёртывания (snap, сборка из исходников)
- Мини-плейбук для DevOps: systemd + Nginx
- Контроль качества, список проверок и рекомендации по безопасности
Требования
- Сервер с Ubuntu 18.04
- Настроенный статический IP 136.243.240.39 (примеры в статье)
- Доступ root или sudo
Начало работы — обновление системы
Перед установкой рекомендуется обновить пакеты:
apt-get update -y
apt-get upgrade -yПосле обновления перезагрузите сервер, чтобы все изменения вступили в силу.
Установка Hugo (.deb из релизов GitHub)
По умолчанию в стандартных репозиториях Ubuntu 18.04 может не быть последней версии Hugo. Приведён пример установки конкретного релиза v0.58.2:
wget https://github.com/gohugoio/hugo/releases/download/v0.58.2/hugo_0.58.2_Linux-64bit.deb
dpkg -i hugo_0.58.2_Linux-64bit.deb
# если есть ошибки зависимостей
apt-get install -fПроверка установки:
hugo versionОжидаемый вывод (пример):
Hugo Static Site Generator v0.58.2-253E5FDC linux/amd64 BuildDate: 2019-09-13T08:05:59ZСправка по командам Hugo:
hugo --help(Команды и флаги перечислены в выводе справки — используйте их для настройки сборки и сервера.)
Создание сайта и первой структуры контента
Создаём новый сайт с именем test.example.com:
hugo new site test.example.comПосле создания вы увидите подсказки о дальнейших шагах: добавлении темы, создании контента и запуске сервера.
Просмотр содержимого каталога сайта:
ls test.example.com/Ожидаемая структура:
archetypes config.toml content data layouts static themesСоздаём страницу «About» и первую запись блога
cd test.example.com
hugo new about.md
# откроется файл content/about.md
nano content/about.mdПример содержимого about.md (установите draft: false чтобы страница публиковалась):
---
title: "About"
date: 2019-09-10T06:57:08Z
draft: false
---
I am hitesh jethva working as a technical writer.Создаём пост блога:
hugo new post/first.md
nano content/post/first.mdПример поста:
---
title: "First"
date: 2019-09-10T06:58:51Z
draft: false
---
## This is my first blog post
Hi How are you!Переведите и отредактируйте контент под свои нужды.
Настройка темы
В примере используется тема hugo-strata-theme. Скачиваем тему в каталог themes:
cd themes
wget https://github.com/digitalcraftsman/hugo-strata-theme/archive/master.zip
unzip master.zip
mv hugo-strata-theme-master hugo-strata-themeКопируем пример конфигурации темы в корневой config.toml сайта:
cat hugo-strata-theme/exampleSite/config.toml > ../config.tomlОткройте ../config.toml и настройте baseURL и меню. Пример правки baseURL:
baseurl = "/"Добавим пункт About в главное меню:
[[menu.main]]
name = "About"
url = "about"
weight = 5Скопируйте или создайте файл layouts/index.html в корне сайта, чтобы использовать шаблон темы для главной страницы:
nano /root/test.example.com/layouts/index.htmlВставьте следующий минимальный фрагмент, использующий partials темы:
{{ define "main" }}
{{ if not .Site.Params.about.hide }}
{{ partial "about" . }}
{{ end }}
{{ if not .Site.Params.portfolio.hide }}
{{ partial "portfolio" . }}
{{ end }}
{{ if not .Site.Params.recentposts.hide }}
{{ partial "recent-posts" . }}
{{ end }}
{{ if not .Site.Params.contact.hide }}
{{ partial "contact" . }}
{{ end }}
{{ end }}Сборка сайта и запуск встроенного сервера
Собираем статические файлы Hugo:
cd /root/test.example.com
hugoПример вывода сборки:
| EN
+------------------+----+
Pages | 17
Paginator pages | 0
Non-page files | 0
Static files | 26
Processed images | 0
Aliases | 5
Sitemaps | 1
Cleaned | 0
Total in 18 msЗапускаем сервер для локального просмотра и связываем с IP сервера:
hugo server --bind=0.0.0.0 --baseUrl=http://136.243.240.39 -D -FВы увидите сообщение о том, что веб-сервер доступен по адресу http://136.243.240.39:1313/
Просмотр в браузере
Откройте http://136.243.240.39:1313/. Вы увидите сгенерированный сайт, пункт About и записи блога.




Заголовки изображений демонстрируют стандартный интерфейс темы и страницы сайта.
Альтернативные способы установки Hugo
- Установка через snap (быстро, актуальные сборки):
snap install hugo --channel=extended/stableПреимущество: автоматические обновления snap. Недостаток: может отличаться путь установки и требования к ядру.
- Сборка из исходников (go build) — когда нужна кастомная сборка или последняя версия из master:
apt-get install golang-go git -y
GO111MODULE=on go get -u github.com/gohugoio/hugo- PPA / менеджеры пакетов (редко для Hugo) — следите за надёжными репозиториями.
Когда использовать каждый вариант: snap для простоты, .deb для контролируемых релизов, сборка из исходников для разработки.
Развёртывание для продакшна: systemd + Nginx (мини-плейбук)
Если хотите, чтобы сайт работал как служба и был доступен по порту 80/443, соберите сайт в статические файлы и раздавайте их через Nginx или другой веб-сервер.
Пример рабочих шагов (статический сайт в /var/www/test.example.com):
- Соберите сайт локально на сервере:
hugo -D
# результат в папке public/
cp -r public/* /var/www/test.example.com/- Настройте Nginx серверный блок:
# /etc/nginx/sites-available/test.example.com
server {
listen 80;
server_name test.example.com 136.243.240.39;
root /var/www/test.example.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}- Включите блок и перезапустите Nginx:
ln -s /etc/nginx/sites-available/test.example.com /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx- (Опционально) systemd юнит для автоматической сборки и деплоя при обновлении репозитория:
# /etc/systemd/system/hugo-deploy.service
[Unit]
Description=Build and deploy Hugo site
[Service]
Type=oneshot
WorkingDirectory=/root/test.example.com
ExecStart=/usr/bin/hugo -D
ExecStartPost=/bin/cp -r public/* /var/www/test.example.com/
[Install]
WantedBy=multi-user.targetЗапускайте вручную или через CI/CD при деплое.
Отладка и распространённые проблемы
- Проблема: hugo: command not found — проверьте, установлен ли бинарник в PATH или используйте полный путь /usr/bin/hugo.
- Проблема: неправильные права в /var/www — убедитесь, что Nginx имеет доступ к файлам (chown -R www-data:www-data /var/www/test.example.com).
- Проблема: тема не отображается — проверьте, что каталог темы лежит в themes и config.toml ссылается на неё.
- Проблема: draft: true — контент по умолчанию не публикуется; используйте -D флаг при сборке/сервере.
Контроль качества и тесты приёмки
Критерии приёмки
- Сайт успешно собирается командой hugo без ошибок
- Содержимое public/ содержит index.html и статические ресурсы
- Nginx отдаёт главную страницу по HTTP 200
- Меню и страницы (About, Blog) открываются и отображают ожидаемый контент
Тесты (ручные шаги)
- Запустите hugo и убедитесь в отсутствии ошибок
- Откройте http://136.243.240.39:1313/ (для dev) или http://test.example.com (prod)
- Проверьте Mobile/desktop отображение
Роли и чек-лист перед запуском
DevOps:
- Проверить версии Hugo и зависимостей
- Настроить автоматизацию сборки и копирования в /var/www
- Настроить Nginx и SSL (Let’s Encrypt)
Разработчик контента:
- Проверить front matter у страниц (title, date, draft)
- Протестировать публикацию новой записи локально
Администратор безопасности:
- Ограничить доступ к серверу SSH (ключи, отключить пароль)
- Обновить систему и пакеты
Мини-методология деплоя
- Разработка локально или в ветке feature
- Сборка статического сайта (hugo -D)
- Прогон тестов и визуальная проверка
- Копирование в /var/www либо выгрузка в CDN/хостинг (Netlify, GitHub Pages)
- Переключение Nginx и проверка
Безопасность и конфиденциальность
- Hugo генерирует статический сайт — минимальные риски на сервере приложений. Тем не менее, важно:
- Защитить сервер с Hugo (SSH, обновления)
- Если собираете из пользовательского контента — фильтруйте HTML/JS при генерации
- При использовании аналитики и форм проверьте соответствие требованиям конфиденциальности (GDPR)
Когда этот подход не подойдёт
- Если вам нужен динамический контент с пользовательскими сессиями или частые изменения в базе данных — лучше рассмотреть CMS с серверной логикой (WordPress, Django, Rails).
- Если необходима встроенная система комментариев без внешних сервисов — потребуются дополнительные решения (Serverless функции или сторонние сервисы).
Резюме
Hugo — быстрый и удобный генератор статических сайтов, его легко установить на Ubuntu 18.04 из .deb или snap. Процесс включает: установку, создание сайта, добавление темы, сборку и запуск сервера. Для продакшн-развёртывания рекомендую генерировать статические файлы и раздавать их через Nginx с автоматизированным процессом деплоя.
Короткое объявление для команды (100–200 слов)
Hugo установлен и успешно протестирован на Ubuntu 18.04. Быстрая инструкция включает создание сайта, настройку темы hugo-strata-theme и запуск встроенного сервера. Для продакшна рекомендуется собирать статический контент и раздавать его через Nginx; можно настроить unit systemd для автоматизированного деплоя. Для CI/CD используйте сборку hugo и выгрузку в /var/www или хостинг статических сайтов (Netlify, GitHub Pages). При необходимости помогу настроить автоматизацию и SSL.
Если нужны примеры systemd, Nginx-конфиг или CI-конфигурация (GitHub Actions/GitLab CI), скажите какую систему вы используете — подготовлю шаблон.
Заключение
В этой инструкции вы узнали, как установить Hugo на Ubuntu 18.04, создать сайт с страницей About и первой записью, подключить тему и запустить сервер. Для продакшна — используйте статическую сборку и Nginx. Задавайте вопросы по конкретным шагам, конфигам или деплою.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента