MAATRIX / Блог / Как установить и настроить Appsmith на VPS

Как установить и настроить Appsmith на VPS

MAATRIX

Держать в облаке 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 ГБ сервис стартует, но при заходе нескольких пользователей начинает свопиться.

ПараметрМинимумКомфортно
CPU2 vCPU4 vCPU
RAM4 ГБ8 ГБ
Диск20 ГБ SSD40+ ГБ SSD
ОСUbuntu 24.04 LTSUbuntu 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 инстанс не требует внешней авторизации, аккаунт создаётся локально). После входа:

  1. Создайте Workspace — логическую группу приложений (например, отдельно для саппорта и отдельно для финансов).
  2. Добавьте Datasource — подключение к БД или API. Appsmith поддерживает PostgreSQL, MySQL, MongoDB, Redis, S3, REST API, GraphQL и ещё десяток коннекторов из коробки.
  3. Создайте первое приложение (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 ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →