Self‑hosting ToolJet: развертываем AI‑конструктор приложений

Разверните ToolJet — открытый AI‑конструктор приложений: пошаговое руководство по установке в Docker, настройке интеграций и обеспечению безопасности.

Не указано
Алексей Кузнецов
Алексей Кузнецов
Системный администратор18 января 2026 г.

Подготовка системы и установка зависимостей

Обновите системные пакеты и установите необходимые инструменты для работы Docker и загрузки файлов.

sudo apt update && sudo apt upgrade -y
sudo apt install -y curl git

Установка Docker и Docker Compose

Установите Docker через официальный скрипт и загрузите бинарник Docker Compose. Добавьте текущего пользователя в группу docker, чтобы избежать использования sudo.

# Установка Docker
 curl -fsSL https://get.docker.com -o get-docker.sh
 sudo sh get-docker.sh
 sudo usermod -aG docker $USER
 newgrp docker

# Установка Docker Compose
 sudo curl -L "https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
 sudo chmod +x /usr/local/bin/docker-compose

Создание пользователя и директории ToolJet

Создайте отдельного системного пользователя 'tooljet' для запуска сервисов и подготовьте директорию для хранения данных.

sudo useradd -m -s /bin/bash tooljet
sudo usermod -aG docker tooljet
sudo mkdir /opt/tooljet
sudo chown tooljet:tooljet /opt/tooljet

Настройка конфигурации (docker-compose и .env)

Перейдите в директорию ToolJet, скачайте стандартный docker-compose.yml и создайте файл переменных окружения .env с секретными ключами и настройками БД.

cd /opt/tooljet
sudo -u tooljet wget https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/docker-compose/docker-compose.yml
sudo -u tooljet nano .env

Содержимое файла .env

Заполните файл .env. Обязательно замените значения SECRET_KEY_BASE и POSTGRES_PASSWORD на сгенерированные криптостойкие строки.

TOOLJET_HOST=localhost
TOOLJET_PORT=3000

# Database
POSTGRES_USER=tooljet
POSTGRES_PASSWORD=СЛОЖНЫЙ_ПАРОЛЬ_123!@#$
POSTGRES_DB=tooljet
POSTGRES_HOST=postgres
POSTGRES_PORT=5432

# Secrets
SECRET_KEY_BASE=СГЕНЕРИРОВАННЫЙ_СЕКРЕТ_32_СИМВОЛОВ

# Redis (рекомендуется)
REDIS_URL=redis://redis:6379

Запуск контейнеров

Запустите сервисы в фоновом режиме. Docker Compose скачает образы и поднимет контейнеры ToolJet, PostgreSQL и Redis.

sudo -u tooljet docker-compose up -d

Проверка логов и статуса

Убедитесь, что контейнеры запустились без ошибок. Подождите 1-2 минуты, пока инициализируется база данных.

sudo -u tooljet docker-compose logs -f tooljet
# Нажмите Ctrl+C для выхода
sudo -u tooljet docker-compose ps

Первоначальная настройка через веб-интерфейс

Откройте браузер и перейдите по адресу http://IP_ВАШЕГО_СЕРВЕРА:3000. Создайте аккаунт администратора, укажите email, пароль и название организации.

Настройка Nginx и HTTPS (Production)

Установите Nginx и Certbot для проброса трафика с порта 80/443 на ToolJet (порт 3000) и получения бесплатного SSL-сертификата.

sudo apt install nginx certbot python3-certbot-nginx -y
sudo nano /etc/nginx/sites-available/tooljet

Конфигурация Nginx

Вставьте конфиг для проксирования запросов. Замените your-domain.com на ваш домен.

server {
    listen 80;
    server_name your-domain.com;

    location / {
        proxy_pass http://localhost: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;
    }
}

Активация Nginx и получение SSL

Активируйте сайт, проверьте конфигурацию и запустите Certbot для установки SSL.

sudo ln -s /etc/nginx/sites-available/tooljet /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d your-domain.com

Финальная настройка ToolJet

Вернитесь в интерфейс ToolJet (через HTTPS). Обновите хост в настройках (если требуется) и подключите первый источник данных (например, PostgreSQL).

Руководство: Как развернуть ToolJet — открытая основа для построения внутренних инструментов, дашбордов и бизнес-приложений

Введение: Почему ToolJet — отличный выбор для self-hosting

ToolJet — это open-source платформа (MIT-лицензия) для создания внутренних инструментов, админ-панелей, дашбордов и бизнес-приложений без глубокого фронтенда. Ключевые преимущества для self-hosting:

  • Полный контроль над данными и инфраструктурой. Подходит для конфиденциальных данных, регуляторики (GDPR, HIPAA в контексте собственной реализации).
  • Гибкая архитектура на базе Node.js и React. Поддерживает плагины, кастомные компоненты и скрипты.
  • Широкий набор коннекторов к БД, API, облачным сервисам, очередям (PostgreSQL, MySQL, MongoDB, Redis, REST, GraphQL, Kafka, Google Sheets, etc.).
  • Стоимость — нет месячной платы за базовый функционал; оплачиваются только коммерческие лицензии Pro/Enterprise при необходимости.
  • Экосистема: Template Marketplace, миграции, версионирование, интеграции с Git.

Этот гайд сфокусирован на production-развертывании с акцентом на надежность, безопасность и поддерживаемость.

Требования к системе: Что нужно для запуска ToolJet

Аппаратные требования (минимум для PoC)

  • CPU: 2 vCPU
  • RAM: 4 ГБ (рекомендуется 8 ГБ для нагрузки)
  • Диск: 20 ГБ свободного места (SSD предпочтителен)
  • Сеть: статический IP, доступ к внешним API, если используются внешние источники данных

Программные зависимости

  • Docker 20.10+ и Docker Compose 2.15+ (рекомендуемый путь)
  • ИЛИ Node.js 18+ (если собираете из исходников)
  • PostgreSQL 13+ (рекомендуемая СУБД для production)
  • Redis (опционально, но желателен для кэша и очередей)
  • Nginx или другой reverse proxy для HTTPS
  • Системный пользователь с ограниченными правами (не root)

Сеть и безопасность

  • Порт ToolJet: 80 по умолчанию (в контейнере), проброс на хост-машине (например, 3000)
  • Порт базы данных: 5432 (PostgreSQL), не должен быть доступен извне
  • HTTPS: необходим для production (сертификаты Let’s Encrypt или корпоративные)
  • Firewall: разрешите только нужные порты (80, 443, 22)

Конфигурация окружения

  • Создайте отдельного пользователя tooljet без sudo прав
  • Используйте системный менеджер процессов (systemd) для сервисов
  • Подготовьте переменные окружения (секреты храните в файле .env, не в Git)

Варианты развертывания: Docker Compose vs. сценарии для Proxmox и т.д.

1. Docker Compose (рекомендуемый способ)

Плюсы:

  • Простота, воспроизводимость, изоляция
  • Легко масштабировать (добавляем контейнеры, настраиваем reverse proxy)
  • Подходит для single-node и multi-node с Docker Swarm

Минусы:

  • Требует Docker-экосистемы
  • Мониторинг и логи требуют дополнительных настроек

Когда использовать:

  • Single-server deployment
  • Dev/Stage/Prod с одинаковым стеком
  • Kubernetes (через Helm Chart, если нужна оркестрация)

2. Установка из исходников (Node.js)

Плюсы:

  • Максимальная прозрачность и контроль
  • Возможность вносить кастомные изменения в код

Минусы:

  • Выше ручного труда (сборка, обновления, деплой)
  • Сложнее поддерживать стабильность

Когда использовать:

  • Внутренние ограничения (нет Docker)
  • Нужны глубокие модификации платформы

3. Облачные marketplace-решения (AWS/GCP/Azure)

Плюсы:

  • Быстрый старт
  • Интеграция с облачными сервисами

Минусы:

  • Зависимость от облачного провайдера
  • Дороже в долгосрочной перспективе

Когда использовать:

  • Для пилотных проектов с быстрым сроком

4. Proxmox/VM/ bare metal

Плюсы:

  • Полный контроль на уровне ОС
  • Подходит для гибридных окружений

Минусы:

  • Сложнее в управлении (особенно обновления)

Когда использовать:

  • Если уже есть инфраструктура на Proxmox/VMware
  • Требуется полный контроль над ресурсами

Рекомендации

  • Начните с Docker Compose для любого варианта — это стандарт индустрии и упрощает миграции.
  • Для Proxmox: создайте LXC-контейнер или VM с Ubuntu 22.04, установите Docker — и используйте тот же Docker Compose.

Пошаговое развертывание: Ключевые команды и настройка

Шаг 1: Подготовка хоста (Ubuntu/Debian)

Обновите систему и установите зависимости:

sudo apt update && sudo apt upgrade -y
sudo apt install -y curl git

Шаг 2: Установка Docker и Docker Compose

# Установка Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
newgrp docker  # или перелогиньтесь

# Установка Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Шаг 3: Создание пользователя для ToolJet

sudo useradd -m -s /bin/bash tooljet
sudo usermod -aG docker tooljet

Шаг 4: Скачивание официального docker-compose.yml

Создайте директорию и скачайте файл:

cd /opt
sudo mkdir tooljet && sudo chown tooljet:tooljet tooljet
cd tooljet
sudo -u tooljet wget https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/docker-compose/docker-compose.yml

Шаг 5: Создание .env файла

Создайте файл переменных окружения:

sudo -u tooljet nano .env

Вставьте минимальную конфигурацию (замените секретные значения):

# ToolJet сервер
TOOLJET_HOST=localhost
TOOLJET_PORT=3000

# База данных PostgreSQL
POSTGRES_USER=tooljet
POSTGRES_PASSWORD=СЛОЖНЫЙ_ПАРОЛЬ_123!@#$
POSTGRES_DB=tooljet
POSTGRES_HOST=postgres
POSTGRES_PORT=5432

# Секреты
SECRET_KEY_BASE=СГЕНЕРИРОВАННЫЙ_СЕКРЕТ_32_СИМВОЛОВ_А_Б_В_Г_Д_1234567890

# Redis (опционально, но рекомендуется)
REDIS_URL=redis://redis:6379

# Email для уведомлений (опционально)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=ваш@gmail.com
SMTP_PASSWORD=ваш_пароль_приложения_для_gmail

Генерация секретов:

# Для SECRET_KEY_BASE (для разработки)
openssl rand -hex 32

# Для POSTGRES_PASSWORD
openssl rand -hex 16

Шаг 6: Запуск сервисов

sudo -u tooljet docker-compose up -d

Шаг 7: Проверка работы

sudo -u tooljet docker-compose logs -f tooljet  # логи сервера
sudo -u tooljet docker-compose ps                # статус контейнеров

Откройте в браузере: http://localhost:3000 (или IP вашего сервера).

Первоначальная конфигурация: Аутентификация, база данных, подключение внешних сервисов

1. Первая настройка

При первом запуске ToolJet предложит создать администратора. Заполните форму:

  • Email: admin@example.com
  • Password: Ваш надежный пароль
  • Organization: Название организации

2. Настройка аутентификации

ToolJet поддерживает несколько методов:

  • Email/пароль (по умолчанию)
  • OAuth (Google, GitHub, LDAP)
  • JWT-токены для API

Для OAuth (пример Google):

  1. В панели администратора перейдите в Settings → Authentication.
  2. Включите Google OAuth.
  3. Укажите Client ID и Client Secret из Google Cloud Console.
  4. Добавьте Redirect URL: https://your-domain.com/api/omniauth/google/callback.

Для LDAP:

  • Включите LDAP в настройках, укажите сервер, DN, фильтр.

3. База данных

Если вы использовали docker-compose — PostgreSQL уже настроен. Для ручной настройки:

  1. Убедитесь, что POSTGRES_HOST, POSTGRES_PORT, POSTGRES_USER, POSTGRES_PASSWORD корректны.
  2. ToolJet автоматически создаст схемы при первом запуске.

Проверка подключения к БД:

sudo -u tooljet docker-compose exec postgres psql -U tooljet -d tooljet -c "\dt"

4. Подключение внешних сервисов

ToolJet умеет подключаться к источникам данных.

Добавление источника данных:

  1. В интерфейсе перейдите в Data Sources → Add.
  2. Выберите тип (PostgreSQL, REST API, Google Sheets и т.д.).
  3. Укажите параметры подключения:
    • Для PostgreSQL: host, port, database, username, password.
    • Для REST: base URL, authentication (Bearer, Basic, API Key).
  4. Тестовое подключение: Test Connection.

Пример конфигурации PostgreSQL:

  • Host: postgres (если в Docker-сети), иначе IP/домен.
  • Port: 5432
  • Database: production_db
  • Username: analytics_user
  • Password: секретный_пароль

Создание первого приложения: Краткое руководство по построению простого дашборда

Шаг 1: Создание приложения

  1. В интерфейсе нажмите + New Application.
  2. Выберите шаблон Blank или Dashboard Template.
  3. Назовите приложение: Sales Dashboard.

Шаг 2: Добавление источника данных

Добавьте источник данных (например, PostgreSQL с таблицей sales):

CREATE TABLE sales (
    id SERIAL PRIMARY KEY,
    product VARCHAR(100),
    amount DECIMAL(10,2),
    date DATE
);

В ToolJet добавьте источник данных PostgreSQL с параметрами.

Шаг 3: Создание виджетов

  1. Перейдите в редактор приложения.
  2. На панели слева выберите Widgets → Chart.
  3. Привяжите виджет к источнику данных: выберите запрос SQL:
SELECT date, SUM(amount) as total FROM sales GROUP BY date ORDER BY date;
  1. Настройте тип графика (Line, Bar) и метрики.

Шаг 4: Интерактивные элементы

Добавьте Table widget для детального просмотра:

  • Запрос: SELECT * FROM sales;
  • Включите пагинацию.

Добавьте Filter для выбора даты (Date Range Picker), привяжите параметр к запросу.

Шаг 5: Публикация

  1. Нажмите Deploy.
  2. Добавьте приложение в общедоступные (если нужно).
  3. Ссылка: https://your-domain.com/applications/sales-dashboard.

Безопасность и лучшие практики: HTTPS, бэкапы, обновления

HTTPS и reverse proxy

  1. Установите Nginx:
sudo apt install nginx -y
  1. Создайте конфигурацию:
sudo nano /etc/nginx/sites-available/tooljet
server {
    listen 80;
    server_name your-domain.com;

    location / {
        proxy_pass http://localhost: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;
    }
}
  1. Активируйте конфиг и перезагрузите:
sudo ln -s /etc/nginx/sites-available/tooljet /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
  1. Установите SSL (Let's Encrypt):
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your-domain.com
  1. Обновите TOOLJET_HOST в .env на your-domain.com.

Бэкапы PostgreSQL

Создайте скрипт /opt/tooljet/backup.sh:

#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/opt/tooljet/backups"
sudo -u tooljet docker-compose exec postgres pg_dump -U tooljet tooljet > $BACKUP_DIR/tooljet_$DATE.sql
gzip $BACKUP_DIR/tooljet_$DATE.sql
find $BACKUP_DIR -name "*.sql.gz" -mtime +30 -delete

Добавьте в cron:

sudo crontab -e
# Добавьте строку: 0 3 * * * /opt/tooljet/backup.sh

Обновления ToolJet

  1. Проверьте версию в официальном репозитории.
  2. Создайте бэкап данных.
  3. Измените образ в docker-compose.yml:
image: tooljet/tooljet:2.35.0  # замените на актуальную версию
  1. Обновите контейнеры:
sudo -u tooljet docker-compose up -d --build tooljet
  1. Проверьте логи и работу приложений.

Безопасность

  • Используйте секреты в .env, не храните в Git.
  • Ограничьте доступ к административной панели через IP-фильтры Nginx.
  • Включите 2FA для администраторов (настройка в интерфейсе).
  • Регулярно обновляйте Docker-образы и ОС.
  • Мониторинг: подключите cAdvisor, Prometheus + Grafana для контейнеров.

Интеграции и расширения: Что можно подключить к ToolJet

Встроенные коннекторы

  • Базы данных: PostgreSQL, MySQL, SQLite, MongoDB, Redis, Cassandra, etc.
  • API: REST, GraphQL, WebSocket.
  • Облака: AWS (S3, DynamoDB), Google Cloud, Azure, Snowflake.
  • Сервисы: Google Sheets, Airtable, Notion, Slack, Telegram, Excel.
  • Очереди: Kafka, RabbitMQ, SQS.
  • Файловое хранилище: Google Drive, OneDrive.

Кастомные плагины

Разработайте плагин на TypeScript/JavaScript:

  1. Клонируйте репозиторий ToolJet.
  2. Создайте папку plugins с index.js и package.json.
  3. Регистрируйте коннектор через API ToolJet или через встроенный UI.
  4. Пример простого плагина: подключение к внутреннему API через OAuth2.

Интеграции с CI/CD

  • Используйте GitHub Actions для автоматических обновлений и тестов.
  • Подключите ToolJet к Git для версионирования приложений (настройка в Settings → Git Integration).

Аутентификация через SSO

  • Поддержка SAML, OIDC (Okta, Azure AD).
  • Настройка через переменные окружения или UI.

Заключение: Сравнение с облачными сервисами и дорожная карта

ToolJet vs. облачные платформы (Retool, Appsmith, Bubble)

АспектToolJet (Self-hosted)Retool (Cloud)Appsmith (Self-hosted)
ЦенаБесплатно (Open Source)Платно ($10+/пользователь/мес)Бесплатно (Open Source)
Контроль данныхПолныйОграниченПолный
МасштабируемостьЗависит от инфраструктурыГотоваяЗависит от инфраструктуры
ПоддержкаКомьюнити/EnterpriseОт провайдераКомьюнити/Enterprise
ИнтеграцииМногообразныеМногообразныеХорошие

Дорожная карта ToolJet

  • 2024: Улучшение Performance, новые коннекторы (AI/ML), улучшение UI/UX.
  • Enterprise фичи: RBAC, Audit Logs, High Availability.
  • Комьюнити: Маркетплейс шаблонов, плагинов.

Когда выбирать ToolJet

  • Выбирайте ToolJet, если нужен контрол над данными, низкая стоимость и кастомизация.
  • Избегайте, если нет ресурсов на поддержку инфраструктуры или требуется быстрый старт без IT-отдела.

Часто задаваемые вопросы (FAQ)

1. Как обновить ToolJet без потери данных?

Всегда делайте бэкап БД перед обновлением. Используйте команду docker-compose up -d --build tooljet с новым тегом образа.

2. Что делать, если ToolJet не запускается?

Проверьте логи: docker-compose logs tooljet. Убедитесь, что .env корректен, порты свободны, а PostgreSQL доступен.

3. Можно ли использовать ToolJet с MySQL?

Да, выберите источник данных MySQL в интерфейсе. Параметры подключения: хост, порт, пользователь, пароль.

4. Как настроить HTTPS с Let's Encrypt?

Используйте Nginx как reverse proxy и certbot. Пример выше в разделе Безопасность.

5. Поддерживается ли multitenancy?

Да, через создание отдельных рабочих пространств (Workspaces) и приложений. Для изоляции используйте разные БД (опционально).

6. Что такое ToolJet Pro/Enterprise?

Коммерческие версии с премиум-поддержкой, LDAP/SSO, аудитом, высокой доступностью и SLA. Базовый функционал Open Source бесплатен.

7. Как подключить ToolJet к Git?

В Settings → Git Integration введите репозиторий и токен. ToolJet будет выгружать/загружать приложения в виде JSON-файлов.

8. Можно ли развернуть ToolJet в Kubernetes?

Да, используйте официальный Helm Chart:

helm repo add tooljet https://tooljet.github.io/helm-chart
helm install tooljet tooljet/tooljet

9. Где хранятся данные ToolJet?

Данные хранятся в PostgreSQL (приложения, пользователи, метаданные). Файлы (если загружаются) — в локальном хранилище контейнера или в подключенном S3.

10. Как отключить регистрацию новых пользователей?

В Settings → General включите "Require invitation only" или настройте ограничения по домену email.


Важно: Этот гайд актуален на момент написания. Всегда проверяйте официальную документацию ToolJet на tooljet.com/docs для последних инструкций и обновлений.

Поделиться:TelegramX / TwitterVK