Self‑hosting ToolJet: развертываем AI‑конструктор приложений
Разверните ToolJet — открытый AI‑конструктор приложений: пошаговое руководство по установке в Docker, настройке интеграций и обеспечению безопасности.
Подготовка системы и установка зависимостей
Обновите системные пакеты и установите необходимые инструменты для работы 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):
- В панели администратора перейдите в Settings → Authentication.
- Включите Google OAuth.
- Укажите Client ID и Client Secret из Google Cloud Console.
- Добавьте Redirect URL:
https://your-domain.com/api/omniauth/google/callback.
Для LDAP:
- Включите LDAP в настройках, укажите сервер, DN, фильтр.
3. База данных
Если вы использовали docker-compose — PostgreSQL уже настроен. Для ручной настройки:
- Убедитесь, что
POSTGRES_HOST,POSTGRES_PORT,POSTGRES_USER,POSTGRES_PASSWORDкорректны. - ToolJet автоматически создаст схемы при первом запуске.
Проверка подключения к БД:
sudo -u tooljet docker-compose exec postgres psql -U tooljet -d tooljet -c "\dt"
4. Подключение внешних сервисов
ToolJet умеет подключаться к источникам данных.
Добавление источника данных:
- В интерфейсе перейдите в Data Sources → Add.
- Выберите тип (PostgreSQL, REST API, Google Sheets и т.д.).
- Укажите параметры подключения:
- Для PostgreSQL: host, port, database, username, password.
- Для REST: base URL, authentication (Bearer, Basic, API Key).
- Тестовое подключение:
Test Connection.
Пример конфигурации PostgreSQL:
- Host:
postgres(если в Docker-сети), иначе IP/домен. - Port:
5432 - Database:
production_db - Username:
analytics_user - Password:
секретный_пароль
Создание первого приложения: Краткое руководство по построению простого дашборда
Шаг 1: Создание приложения
- В интерфейсе нажмите + New Application.
- Выберите шаблон Blank или Dashboard Template.
- Назовите приложение:
Sales Dashboard.
Шаг 2: Добавление источника данных
Добавьте источник данных (например, PostgreSQL с таблицей sales):
CREATE TABLE sales (
id SERIAL PRIMARY KEY,
product VARCHAR(100),
amount DECIMAL(10,2),
date DATE
);
В ToolJet добавьте источник данных PostgreSQL с параметрами.
Шаг 3: Создание виджетов
- Перейдите в редактор приложения.
- На панели слева выберите Widgets → Chart.
- Привяжите виджет к источнику данных: выберите запрос SQL:
SELECT date, SUM(amount) as total FROM sales GROUP BY date ORDER BY date;
- Настройте тип графика (Line, Bar) и метрики.
Шаг 4: Интерактивные элементы
Добавьте Table widget для детального просмотра:
- Запрос:
SELECT * FROM sales; - Включите пагинацию.
Добавьте Filter для выбора даты (Date Range Picker), привяжите параметр к запросу.
Шаг 5: Публикация
- Нажмите Deploy.
- Добавьте приложение в общедоступные (если нужно).
- Ссылка:
https://your-domain.com/applications/sales-dashboard.
Безопасность и лучшие практики: HTTPS, бэкапы, обновления
HTTPS и reverse proxy
- Установите Nginx:
sudo apt install nginx -y
- Создайте конфигурацию:
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;
}
}
- Активируйте конфиг и перезагрузите:
sudo ln -s /etc/nginx/sites-available/tooljet /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
- Установите SSL (Let's Encrypt):
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your-domain.com
- Обновите
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
- Проверьте версию в официальном репозитории.
- Создайте бэкап данных.
- Измените образ в docker-compose.yml:
image: tooljet/tooljet:2.35.0 # замените на актуальную версию
- Обновите контейнеры:
sudo -u tooljet docker-compose up -d --build tooljet
- Проверьте логи и работу приложений.
Безопасность
- Используйте секреты в
.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:
- Клонируйте репозиторий ToolJet.
- Создайте папку
pluginsсindex.jsиpackage.json. - Регистрируйте коннектор через API ToolJet или через встроенный UI.
- Пример простого плагина: подключение к внутреннему 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 для последних инструкций и обновлений.