Как установить и настроить Appsmith на VPS
Держать в облаке Appsmith Cloud — значит отдавать внешнему сервису доступ к строкам подключения ваших боевых баз, а рано или поздно ещё и упираться в лимиты бесплатного плана. Appsmith — это конструктор внутренних админ-панелей и дашбордов, который умеет подключаться напрямую к PostgreSQL, MySQL, MongoDB, REST и GraphQL API и собирать рабочий интерфейс за часы, а не недели разработки. Разворачиваем self-hosted версию на собственном VPS через Docker Compose — с нуля, с SSL и без сюрпризов.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Что такое Appsmith и когда он нужен
Appsmith — low-code платформа с открытым кодом для сборки внутренних инструментов: панелей для саппорта, дашбордов для менеджеров, форм для ручного ввода данных, CRUD-интерфейсов поверх существующей БД. Разработчик подключает источник данных, пишет запросы (SQL или JS-функции), а интерфейс собирает drag-and-drop из готовых виджетов — таблиц, форм, графиков, кнопок.
Отличие от Retool или Budibase — в лицензии и модели self-hosting: Appsmith Community Edition полностью бесплатен без ограничения по числу пользователей на своей инфраструктуре, тогда как у части конкурентов бесплатный self-hosted план урезан по количеству редакторов. Из похожих по духу инструментов с открытым кодом стоит упомянуть NocoDB — но NocoDB ближе к Airtable-подобной надстройке над таблицей, а Appsmith — это именно конструктор приложений с логикой, JS-биндингами и множеством источников данных одновременно.
Типичные сценарии: внутренняя CRM на 5-20 сотрудников, панель модерации контента, дашборд метрик из нескольких БД сразу, форма для ручных корректировок в продакшен-таблицах без прямого доступа к базе.
Требования к серверу и подготовка
Appsmith в Docker-развёртывании — не самый лёгкий сервис: под капотом у него MongoDB, Redis, RabbitMQ (в некоторых конфигурациях) и сам движок на Java/Node. Официальная рекомендация — минимум 2 vCPU и 4 ГБ RAM, на 2 ГБ сервис стартует, но при заходе нескольких пользователей начинает свопиться.
| Параметр | Минимум | Комфортно |
|---|---|---|
| CPU | 2 vCPU | 4 vCPU |
| RAM | 4 ГБ | 8 ГБ |
| Диск | 20 ГБ SSD | 40+ ГБ SSD |
| ОС | Ubuntu 24.04 LTS | Ubuntu 24.04 LTS |
Для команды до 10-15 человек с несколькими приложениями конфигурации 4 ГБ / 2 vCPU обычно хватает с запасом. Если планируете держать рядом ещё и БД, к которой Appsmith подключается, закладывайте ресурсы отдельно — сам движок и данные лучше не смешивать на одном инстансе.
Перед установкой обновите систему и поставьте Docker, если его ещё нет:
apt update && apt upgrade -y
curl -fsSL https://get.docker.com | sh
systemctl enable --now docker
docker --version
docker compose version
Подробный разбор установки Docker с нуля и связанных с ним тонкостей — в статье про Docker Compose для продакшена.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверУстановка через официальный скрипт
Appsmith поставляет установочный скрипт, который сам разворачивает docker-compose.yml, настраивает Nginx внутри контейнера-обёртки и опционально включает SSL через встроенный сертбот. Это самый быстрый путь для одного приложения на сервере:
mkdir -p /opt/appsmith && cd /opt/appsmith
curl -L https://gist.githubusercontent.com/appsmith-bot/asset/install.sh -o install.sh
На практике надёжнее не гнаться за гист-ссылками, которые со временем меняются, а взять актуальный скрипт с официального сайта проекта (docs.appsmith.com → Self-Hosting → Docker) и запускать его вручную после просмотра содержимого — никогда не выполняйте curl | bash вслепую на боевом сервере:
curl -L https://gist.githubusercontent.com/appsmith-bot/main/install.sh -o install.sh
less install.sh # обязательно просмотрите перед запуском
bash install.sh
Скрипт задаст несколько вопросов: домен (или IP, если пока без домена), нужен ли автоматический SSL через Let's Encrypt, версию образа (latest или конкретный тег). После завершения он поднимет контейнеры и покажет URL для первого входа.
Установка вручную через Docker Compose
Ручной способ даёт больше контроля — удобнее держать конфиг в git, менять переменные окружения, добавлять свои сети и volume-бэкапы. Структура каталога:
mkdir -p /opt/appsmith/{stacks,data} && cd /opt/appsmith
Минимальный docker-compose.yml, использующий официальный образ appsmith-ce (внутри уже упакованы все зависимые сервисы для одноконтейнерного варианта):
services:
appsmith:
image: index.docker.io/appsmith/appsmith-ce:latest
container_name: appsmith
restart: unless-stopped
ports:
- "127.0.0.1:8080:80"
- "127.0.0.1:8443:443"
volumes:
- ./stacks:/appsmith-stacks
environment:
- APPSMITH_DISABLE_TELEMETRY=true
ulimits:
nofile:
soft: 1048576
hard: 1048576
Ключевой момент — том ./stacks:/appsmith-stacks: там хранится встроенная MongoDB, конфигурация Redis и все загружаемые ассеты. Именно этот каталог нужно бэкапить и именно его теряют при неаккуратном docker compose down -v.
Порты сознательно забинжены на 127.0.0.1 — наружу сервис будет смотреть через внешний Nginx с SSL, о нём ниже. Поднимаем:
docker compose up -d
docker compose logs -f appsmith
Первый старт занимает 2-5 минут — внутри инициализируется MongoDB и накатываются миграции. Дождитесь строки о готовности сервера, затем проверьте:
curl -I http://127.0.0.1:8080
Nginx как обратный прокси и SSL
Разворачивать сервис за отдельным Nginx с Certbot удобнее, чем полагаться на встроенный в образ, — проще совмещать несколько приложений на одном сервере и управлять сертификатами централизованно. Разница между Caddy и Nginx для таких задач разобрана в статье Caddy или Nginx — что выбрать для сервера; здесь возьмём классический Nginx.
apt install -y nginx
Конфиг /etc/nginx/sites-available/appsmith.conf:
server {
listen 80;
server_name appsmith.example.com;
location / {
proxy_pass http://127.0.0.1:8080;
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;
proxy_read_timeout 90s;
client_max_body_size 100m;
}
}
client_max_body_size стоит увеличить заранее — Appsmith позволяет загружать ассеты (изображения, файлы через File Picker виджет), и дефолтный лимит Nginx в 1 МБ будет резать загрузку.
ln -s /etc/nginx/sites-available/appsmith.conf /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
SSL через Certbot — сравнение с acme.sh есть в статье Certbot или acme.sh — что выбрать:
apt install -y certbot python3-certbot-nginx
certbot --nginx -d appsmith.example.com
После этого не забудьте открыть 80/443 и закрыть прямой доступ к 8080 в фаерволе — порты уже забинжены на localhost, но проверьте правила ufw отдельно, если он у вас настроен.
Первый запуск и создание рабочего пространства
Откройте https://appsmith.example.com — появится форма регистрации первого администратора (self-hosted инстанс не требует внешней авторизации, аккаунт создаётся локально). После входа:
- Создайте Workspace — логическую группу приложений (например, отдельно для саппорта и отдельно для финансов).
- Добавьте Datasource — подключение к БД или API. Appsmith поддерживает PostgreSQL, MySQL, MongoDB, Redis, S3, REST API, GraphQL и ещё десяток коннекторов из коробки.
- Создайте первое приложение (App) внутри Workspace и начните собирать интерфейс из готовых виджетов на канвасе.
Пример подключения к внешней PostgreSQL (если база разворачивалась по инструкции PostgreSQL на Ubuntu 24.04):
- Host: IP или хостнейм сервера с БД (не localhost, если БД в другом контейнере/сервере)
- Port: 5432
- Database name, Username, Password — из вашей конфигурации
- SSL Mode:
require, если БД слушает внешние подключения через TLS
Если БД крутится на этом же сервере в отдельном контейнере, подключайте Appsmith к общей Docker-сети, а не к 127.0.0.1 — из контейнера localhost ведёт внутрь самого контейнера, а не на хост.
Управление, обновления и бэкапы
Appsmith хранит все данные (пользователи, приложения, datasource-креды в зашифрованном виде) внутри тома appsmith-stacks, поэтому бэкап сводится к архивированию одной директории:
docker compose stop appsmith
tar -czf appsmith-backup-$(date +%F).tar.gz -C /opt/appsmith stacks
docker compose start appsmith
Останавливать сервис на секунду при бэкапе — разумная перестраховка (MongoDB внутри пишет журнал, «горячий» tar иногда даёт неконсистентный снапшот при большой нагрузке). Для регулярных бэкапов вынесите это в cron и держите хотя бы 5-7 последних архивов.
Обновление до новой версии:
cd /opt/appsmith
docker compose pull
docker compose up -d
Перед апдейтом на минорную/мажорную версию всегда делайте свежий бэкап stacks — миграции схемы внутри встроенной MongoDB иногда необратимы, откатиться на старый образ без старого дампа данных не получится.
Мониторинг ресурсов простым способом:
docker stats appsmith --no-stream
Если контейнер регулярно упирается в память — это чаще всего Node.js-процесс сервера приложений, а не сама БД; в таком случае апгрейд VPS до 8 ГБ RAM решает проблему быстрее, чем тонкая настройка лимитов JVM/Node внутри контейнера.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Appsmith бесплатен полностью или есть скрытые лимиты?
Community Edition (self-hosted) бесплатен без ограничения числа пользователей и приложений. Платные тарифы касаются облачной версии Appsmith Cloud и корпоративных функций вроде SSO через SAML — для команды до пары десятков человек community-версии на своём VPS достаточно.
Можно ли поставить Appsmith и NocoDB на один сервер?
Да, если ресурсов хватает (от 8 ГБ RAM суммарно) — оба идут в отдельных Docker-контейнерах за одним Nginx на разных поддоменах, конфликтов портов не будет при разной привязке к localhost.
Появится ли внешняя MongoDB вместо встроенной?
Появится, если нужен HA-кластер или вы хотите переиспользовать существующий MongoDB-инстанс — в переменных окружения образа есть параметры APPSMITH_MONGODB_URI для внешней базы, но для одного сервера встроенная MongoDB внутри тома проще в обслуживании.
Что делать, если после обновления приложение не открывается?
Проверьте логи docker compose logs appsmith на ошибки миграции, и если версия оказалась неудачной — откатите образ на предыдущий тег и восстановите каталог stacks из бэкапа, сделанного перед обновлением.
Appsmith подходит для внешнего (публичного) приложения, а не только внутреннего инструмента?
Технически можно, но платформа спроектирована под internal tools — для публичных клиентских интерфейсов с высокой нагрузкой лучше писать отдельный фронтенд, а Appsmith оставить для админки и внутренних дашбордов.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →