Huginn на Ubuntu 24.04: пошаговая установка
Если вам тесно в лимитах Zapier и IFTTT и не хочется отдавать доступ к почте, API и вебхукам стороннему облаку — логичный шаг поставить агентную систему автоматизации у себя. Huginn — открытый проект на Ruby on Rails, который умеет следить за сайтами, RSS-лентами, API и вебхуками, а затем действовать по вашим правилам: слать письма, публиковать в Telegram, дёргать другие сервисы. Установка немного дольше, чем у типового Node-приложения, — Rails-стек тянет за собой Ruby, отдельную базу и фоновые процессы, — но ниже расписан весь путь по шагам, без Docker, с systemd-сервисами и SSL на домене.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Что понадобится
Huginn — не самое лёгкое приложение: сборка ассетов (assets:precompile) и одновременная работа нескольких фоновых процессов требуют памяти с запасом. На 1 ГБ RAM сборка ассетов почти гарантированно упадёт по OOM.
| Ресурс | Минимум | Комфортно |
|---|---|---|
| RAM | 2 ГБ (+ своп) | 4 ГБ |
| CPU | 1 vCPU | 2 vCPU |
| Диск | 20 ГБ SSD | 40 ГБ SSD |
| ОС | Ubuntu 24.04 LTS, чистая установка | — |
| Домен | не обязателен для теста | нужен для SSL |
Дальше всё выполняется от sudo-пользователя без root, если не указано иное.
Системные пакеты, пользователь и своп
Обновляем систему и ставим сборочные зависимости — они нужны, чтобы собрать нативные расширения Ruby-гемов (nokogiri, pg и другие) и обработать изображения:
sudo apt update && sudo apt -y upgrade
sudo apt install -y git curl build-essential libssl-dev libreadline-dev \
zlib1g-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev \
libcurl4-openssl-dev libffi-dev libpq-dev imagemagick libmagickwand-dev \
pkg-config autoconf bison
Создаём отдельного системного пользователя — Huginn не должен работать от root, и это же упростит настройку systemd-юнитов:
sudo useradd -m -s /bin/bash huginn
sudo passwd -l huginn # блокируем вход по паролю, останется su/sudo -iu
Если оперативной памяти меньше 4 ГБ, добавьте своп — иначе assets:precompile на шаге сборки с высокой вероятностью убьёт процесс:
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
free -h
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверPostgreSQL и Redis
Huginn поддерживает и PostgreSQL, и MySQL — ниже вариант с PostgreSQL как более предсказуемый в связке с Rails. Если разворачиваете базу отдельно или хотите более подробный разбор настройки — есть отдельная статья по установке PostgreSQL на Ubuntu 24.04.
sudo apt install -y postgresql postgresql-contrib redis-server
sudo systemctl enable --now postgresql redis-server
Создаём роль и базу для приложения:
sudo -u postgres psql <<'SQL'
CREATE ROLE huginn WITH LOGIN PASSWORD 'замените_на_свой_пароль';
CREATE DATABASE huginn_production OWNER huginn ENCODING 'UTF8';
SQL
Проверьте, что стандартный pg_hba.conf в Ubuntu 24.04 уже разрешает подключение к 127.0.0.1 по паролю (scram-sha-256 или md5) — обычно так и есть из коробки, менять ничего не нужно. Redis проверяется одной командой:
redis-cli ping # должно вернуть PONG
Ruby через rbenv и .env-конфигурация
Ruby ставим версионным менеджером rbenv — так проще подобрать версию, которую реально требует Huginn (она зафиксирована в файле .ruby-version репозитория). Работаем уже от пользователя huginn:
sudo -iu huginn
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
cd ~/.rbenv && src/configure && make -C src
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
exec $SHELL
Клонируем сам Huginn и ставим ту версию Ruby, которую требует проект:
git clone https://github.com/huginn/huginn.git ~/huginn
cd ~/huginn
cat .ruby-version # смотрим требуемую версию
rbenv install "$(cat .ruby-version)"
rbenv local "$(cat .ruby-version)"
gem install bundler
Node.js для сборки фронтенд-ассетов ставим системно, от root, через NodeSource (актуальная LTS-ветка на конец августа 2026 — уточните версию под ваш случай, ниже пример с 20.x):
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
Готовим .env из шаблона и заполняем ключевые переменные:
cd ~/huginn
cp .env.example .env
Минимальный набор правок в .env:
DATABASE_ADAPTER=postgresql
DATABASE_NAME=huginn_production
DATABASE_USERNAME=huginn
DATABASE_PASSWORD=замените_на_свой_пароль
DATABASE_HOST=localhost
DATABASE_PORT=5432
REDIS_URL=redis://localhost:6379
APP_SECRET_TOKEN=вставьте_вывод_openssl_rand_hex_64
DOMAIN=huginn.example.com
FORCE_SSL=true
TIMEZONE=Europe/Moscow
INVITATION_CODE=придумайте_код_для_приглашений
APP_SECRET_TOKEN генерируется отдельной командой:
openssl rand -hex 64
INVITATION_CODE стоит задать обязательно — без него любой, кто найдёт ваш сайт, сможет зарегистрироваться и получить доступ к агентам.
Установка: bundle, база, ассеты
Ставим гемы в production-режиме, исключая группы для разработки и не тот СУБД-адаптер, который не используете:
cd ~/huginn
bundle install --deployment --without development test mysql
Создаём схему базы и заполняем стартовыми данными:
RAILS_ENV=production bundle exec rake db:create db:schema:load db:seed
Собираем фронтенд-ассеты — самый тяжёлый по памяти шаг, именно здесь чаще всего вылезает OOM на слабых тарифах:
RAILS_ENV=production bundle exec rake assets:precompile
Если процесс падает с ошибкой нехватки памяти — это почти всегда своп, который вы не добавили на шаге 2 (см. раздел выше), либо слишком маленький тариф для сборки. Первый пользователь, зарегистрированный через веб-интерфейс после запуска, автоматически становится администратором — держите это в уме и не публикуйте домен без INVITATION_CODE, пока не создали свой аккаунт.
Systemd, Nginx и SSL
В корне репозитория есть файл Procfile — в нём перечислены процессы, которые Huginn ожидает видеть в проде (обычно это веб-сервер и один-два фоновых воркера для очереди задач и планировщика). Откройте его и перенесите каждую строку в отдельный systemd-юнит по этому шаблону, подставив реальную команду:
# /etc/systemd/system/huginn-web.service
[Unit]
Description=Huginn web
After=network.target postgresql.service redis-server.service
[Service]
Type=simple
User=huginn
WorkingDirectory=/home/huginn/huginn
Environment=RAILS_ENV=production
Environment=PORT=3000
ExecStart=/home/huginn/.rbenv/shims/bundle exec rails server -e production -p 3000 -b 127.0.0.1
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
По тому же образцу создайте huginn-worker.service и huginn-schedule.service, заменив ExecStart на соответствующие строки из Procfile. Включаем и запускаем всё разом:
sudo systemctl daemon-reload
sudo systemctl enable --now huginn-web huginn-worker huginn-schedule
sudo systemctl status huginn-web
Теперь отдаём приложение наружу через nginx как reverse proxy на 127.0.0.1:3000:
# /etc/nginx/sites-available/huginn
server {
listen 80;
server_name huginn.example.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
sudo ln -s /etc/nginx/sites-available/huginn /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
SSL выпускаем certbot'ом:
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d huginn.example.com
Не забудьте открыть файрвол — если UFW ещё не настроен, здесь есть пошаговая инструкция по установке и настройке UFW на Ubuntu 24.04:
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Можно ли поставить Huginn на MySQL вместо PostgreSQL?
Да, проект поддерживает оба адаптера. Меняете DATABASE_ADAPTER=mysql2 в .env, ставите mysql-server и libmysqlclient-dev вместо postgres-пакетов и исключаете из bundle install группу postgresql, а не mysql.
Сколько реально нужно памяти в проде, а не на этапе сборки?
Зависит от количества и активности агентов — тех, что часто дёргают внешние API и обрабатывают большие ответы, будет заметно больше по памяти, чем тихих RSS-чекеров. Для одного-двух десятков агентов обычно достаточно тарифа на 2 ГБ с включённым свопом; при росте числа сценариев ориентируйтесь на реальную нагрузку через htop, а не на цифры из статьи.
После перезагрузки сервера Huginn не отвечает.
Проверьте, что все три unit'а (huginn-web, huginn-worker, huginn-schedule) включены командой enable, а не просто запущены через start — иначе они не поднимутся автоматически. То же самое касается postgresql и redis-server.
Нужен ли обязательно Docker?
Нет, описанный выше способ полностью нативный. У проекта есть и docker-compose вариант — он избавляет от возни с rbenv и системными библиотеками, но даёт меньше контроля над версиями и процессом сборки; если чистая установка кажется избыточной, посмотрите официальный docker-compose.yml в репозитории Huginn.
Как ограничить, кто может зарегистрироваться на моём инстансе?
Через переменную INVITATION_CODE в .env — без правильного кода регистрация в веб-интерфейсе недоступна. Задайте её до того, как откроете домен наружу.
Как обновить Huginn до новой версии?
Останавливаете сервисы, делаете git pull, bundle install --deployment, bundle exec rake db:migrate, bundle exec rake assets:precompile, затем systemctl restart huginn-web huginn-worker huginn-schedule. Перед обновлением на проде стоит сделать бэкап базы.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →