bolt Valebyte VPS от $4/мес — NVMe, запуск за 60 секунд.

Получить VPS arrow_forward
eco Начальный Туториал

Установка и настройка Appwrite на VPS: развертывание Open-Source альтернативы Firebase для ваших приложений

calendar_month May 30, 2026 schedule 10 мин. чтения visibility 2364 просмотров
Установка и настройка Appwrite на VPS: развертывание Open-Source альтернативы Firebase для ваших приложений
info

Нужен сервер для этого гайда? Мы предлагаем выделенные серверы и VPS в 50+ странах с мгновенной настройкой.

Нужен сервер для этого гайда?

Разверните VPS или выделенный сервер за минуты.

Установка и настройка Appwrite на VPS: развертывание Open-Source альтернативы Firebase для ваших приложений

TL;DR

В данном руководстве мы разберем процесс полного цикла развертывания Appwrite — мощной open-source платформы Backend-as-a-Service (BaaS) — на собственном виртуальном сервере (VPS). Мы пройдем путь от выбора архитектуры и подготовки ОС до настройки SSL-сертификатов, SMTP и систем автоматизированного резервного копирования, что позволит вам полностью контролировать данные вашего приложения и значительно снизить расходы по сравнению с проприетарными облачными решениями.

  • Полный контроль над данными: Все пользовательские данные и файлы хранятся на вашем сервере, а не у стороннего провайдера.
  • Экономия: Отсутствие лимитов на количество запросов, пользователей или объем базы данных, характерных для Firebase.
  • Масштабируемость: Использование Docker-контейнеров позволяет легко переносить систему и расширять ресурсы.
  • Безопасность: Настройка собственного фаервола, изоляция сервисов и управление ключами шифрования.
  • Готовность к 2026 году: Использование актуальных версий Docker Compose V2 и Ubuntu 24.04/26.04 LTS.

1. Что мы настраиваем и зачем: Экосистема Appwrite

Схема: 1. Что мы настраиваем и зачем: Экосистема Appwrite
Схема: 1. Что мы настраиваем и зачем: Экосистема Appwrite

Современная разработка мобильных и веб-приложений требует наличия надежного бэкенда. Исторически сложилось так, что разработчики выбирали между написанием собственного API с нуля или использованием облачных платформ вроде Google Firebase. Однако Firebase накладывает серьезные ограничения: вы привязаны к экосистеме Google (Vendor Lock-in), стоимость растет экспоненциально при масштабировании, а ваши данные физически находятся под контролем корпорации.

Appwrite — это революционный ответ на эти вызовы. Это полноценная Backend-as-a-Service платформа, поставляемая в виде набора Docker-контейнеров. Она предоставляет "из коробки" все необходимые инструменты:

  • Аутентификация: Поддержка Email/Password, Magic Link, OAuth2 (Google, GitHub, Apple и еще 30+ провайдеров), телефонные номера.
  • База данных: Гибкая NoSQL-подобная структура поверх MariaDB с поддержкой коллекций, документов и сложных прав доступа.
  • Хранилище (Storage): Управление файлами с автоматическим сжатием, изменением размера изображений и проверкой на вирусы.
  • Cloud Functions: Возможность запускать серверный код на различных языках (Node.js, Python, PHP, Dart, Go) в ответ на события.
  • Realtime: Мгновенная синхронизация данных через WebSockets для чатов, уведомлений и совместной работы.

Развертывание Appwrite на собственном VPS дает вам суверенитет. Вы платите только за ресурсы сервера, а не за количество активных пользователей в месяц (MAU) или количество вызовов функций. В 2026 году, когда вопросы приватности данных и локализации серверов стали критическими, self-hosting становится не просто прихотью, а производственной необходимостью для бизнеса любого масштаба.

2. Какой VPS-конфиг нужен под эту задачу

Схема: 2. Какой VPS-конфиг нужен под эту задачу
Схема: 2. Какой VPS-конфиг нужен под эту задачу

Appwrite — это микросервисная архитектура. При запуске разворачивается около 15-20 контейнеров (MariaDB, Redis, InfluxDB, Telegraf, Traefik, микросервисы самого Appwrite). Это требует определенных ресурсов для стабильной работы, особенно в части оперативной памяти.

Характеристика Минимум (Dev) Рекомендуемо (Prod) Enterprise / High Load
Процессор (vCPU) 1 ядро 2-4 ядра 8+ ядер
Оперативная память (RAM) 2 GB 4-8 GB 16 GB+
Диск (NVMe SSD) 20 GB 50-100 GB 500 GB+
ОС Ubuntu 22.04 LTS Ubuntu 24.04 LTS Ubuntu 24.04/26.04 LTS

Для небольшого проекта или стадии разработки вполне достаточно VPS с указанными характеристиками (2 vCPU, 4GB RAM), так как Docker эффективно распределяет ресурсы. Однако, если вы планируете активно использовать Cloud Functions или ожидаете более 100 одновременных WebSocket-соединений, стоит рассмотреть варианты с большим объемом оперативной памяти.

Почему именно VPS, а не shared-хостинг? Appwrite требует Docker и прав суперпользователя (root) для управления сетевыми интерфейсами и томами данных. Shared-хостинг принципиально не подходит для таких задач. В случаях, когда нагрузка на базу данных становится экстремальной (миллионы записей), рекомендуется переходить на dedicated server, чтобы исключить влияние "соседей" по гипервизору на производительность дисковой подсистемы I/O.

Локация сервера: Выбирайте дата-центр максимально близко к вашей целевой аудитории. Для пользователей из Европы оптимальны локации в Нидерландах или Германии, для США — Ashburn или Hillsboro. Это минимизирует задержку (RTT) для Realtime-сервисов.

3. Подготовка сервера: Безопасность и зависимости

Схема: 3. Подготовка сервера: Безопасность и зависимости
Схема: 3. Подготовка сервера: Безопасность и зависимости

Прежде чем устанавливать Docker, необходимо подготовить "фундамент" системы. Мы будем использовать Ubuntu 24.04 LTS как наиболее стабильную и современную базу.

Первым делом обновим пакеты и установим базовые утилиты:


sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget git software-properties-common apt-transport-https ca-certificates lsb-release
    

Настройка безопасности — критический шаг. Мы создадим отдельного пользователя с правами sudo и настроим фаервол (UFW), чтобы закрыть все лишние порты.


# Создание пользователя (замените 'deploy' на ваше имя)
adduser deploy
usermod -aG sudo deploy

# Настройка фаервола
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw --force enable
    

Также рекомендуется настроить Fail2Ban для защиты от брутфорс-атак на SSH. Это стандарт де-факто для любого сервера, смотрящего в открытый интернет.


sudo apt install -y fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
    

Важный нюанс: Appwrite по умолчанию использует порты 80 и 443. Убедитесь, что на сервере не запущены Apache или Nginx, которые могут занимать эти порты. Проверить это можно командой sudo lsof -i :80.

4. Установка ПО — пошаговое развертывание Docker

Схема: 4. Установка ПО — пошаговое развертывание Docker
Схема: 4. Установка ПО — пошаговое развертывание Docker

Appwrite полностью полагается на Docker. В 2026 году мы используем Docker Engine и Docker Compose V2 (который теперь является плагином, а не отдельным бинарным файлом).

Установим Docker с официального репозитория:


# Добавляем GPG ключ Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Добавляем репозиторий
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Установка компонентов
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    

Проверим работоспособность и добавим нашего пользователя в группу docker, чтобы не использовать sudo для каждой команды:


sudo systemctl enable docker
sudo usermod -aG docker $USER
# Примените изменения групп (или перезайдите в SSH)
newgrp docker
docker --version
    

5. Процесс установки Appwrite: Разбор параметров

Схема: 5. Процесс установки Appwrite: Разбор параметров
Схема: 5. Процесс установки Appwrite: Разбор параметров

Appwrite предоставляет интерактивный скрипт установки, который сам скачивает нужные образы и генерирует файл docker-compose.yml и .env. Это самый надежный способ развертывания.


# Запуск инсталлятора
docker run -it --rm \
    --volume /var/run/docker.sock:/var/run/docker.sock \
    --volume "$(pwd)"/appwrite:/usr/src/code/appwrite:rw \
    --entrypoint="install" \
    appwrite/appwrite:latest
    

В процессе установки скрипт задаст несколько важных вопросов:

  1. Choose your server HTTP port: Оставьте 80, если это основной сервис на сервере.
  2. Choose your server HTTPS port: Оставьте 443.
  3. Choose a unique secret API key: Нажмите Enter для генерации случайного ключа. Обязательно сохраните его позже из .env файла!
  4. Choose your server hostname: Укажите ваш домен (например, api.myapp.com). Это важно для генерации SSL через Let's Encrypt.
  5. Choose a DNS A record hostname: Снова укажите ваш домен.

После завершения скрипта будет создана директория appwrite. Перейдите в нее и запустите контейнеры:


cd appwrite
docker compose up -d
    

Первый запуск может занять до 5-10 минут, так как Docker должен скачать около 1.5 Гб образов. Вы можете следить за процессом с помощью команды docker compose logs -f.

6. Тонкая конфигурация: SSL, SMTP и переменные окружения

Схема: 6. Тонкая конфигурация: SSL, SMTP и переменные окружения
Схема: 6. Тонкая конфигурация: SSL, SMTP и переменные окружения

После того как контейнеры поднялись, Appwrite доступен по IP-адресу сервера. Однако для полноценной работы (особенно для Auth и Cookies) необходим домен и HTTPS.

Настройка HTTPS

Appwrite использует встроенный прокси-сервер Traefik. Он автоматически запрашивает сертификаты Let's Encrypt, если вы указали корректный домен в настройках. Убедитесь, что ваша A-запись домена в панели DNS указывает на IP вашего VPS.

Настройка почты (SMTP)

Без SMTP вы не сможете подтверждать регистрацию пользователей или сбрасывать пароли. Откройте файл .env в директории appwrite:


nano .env
    

Найдите и отредактируйте следующие параметры (пример для Mailgun или SendGrid):


_APP_SMTP_HOST=smtp.mailtrap.io
_APP_SMTP_PORT=587
_APP_SMTP_USER=your_username
_APP_SMTP_PASS=your_password
_APP_SMTP_ENCRYPTION=tls
[email protected]
    

Лимиты загрузки файлов

По умолчанию Appwrite может ограничивать размер загружаемых файлов. Если ваше приложение работает с видео или тяжелым контентом, измените:


_APP_STORAGE_LIMIT=52428800 # Размер в байтах (здесь 50MB)
    

После любых изменений в .env необходимо перезапустить контейнеры:


docker compose up -d
    

7. Укрепление защиты и оптимизация производительности

Схема: 7. Укрепление защиты и оптимизация производительности
Схема: 7. Укрепление защиты и оптимизация производительности

Запуск "из коробки" хорош для тестов, но для продакшена в 2026 году нужно предпринять дополнительные шаги по защите.

1. Ограничение доступа к Dashboard: По умолчанию консоль Appwrite доступна всем. Рекомендуется ограничить доступ к админ-панели по IP на уровне Traefik или использовать VPN (например, WireGuard) для доступа к серверу.

2. Изоляция базы данных: Убедитесь, что порты MariaDB (3306) и Redis (6379) не открыты наружу в UFW. Они должны быть доступны только внутри Docker-сети.

3. Swap-файл: Если у вас VPS с 2ГБ или 4ГБ RAM, Docker может упасть при нехватке памяти (OOM Killer). Создайте swap-файл на 2-4 ГБ:


sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
    

4. Очистка логов: Docker-контейнеры могут генерировать гигабайты логов. Настройте ротацию в /etc/docker/daemon.json:


{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}
    

8. Бэкапы и обслуживание: Стратегия выживания данных

Схема: 8. Бэкапы и обслуживание: Стратегия выживания данных
Схема: 8. Бэкапы и обслуживание: Стратегия выживания данных

Нет ничего хуже, чем потерять базу данных пользователей. В Appwrite нужно бэкапить три основные вещи:

  1. Файл .env (там хранятся ключи шифрования — без них данные в БД станут бесполезными).
  2. Дамп базы данных MariaDB.
  3. Содержимое папки storage (загруженные файлы).

Пример простого скрипта для бэкапа базы данных:


#!/bin/bash
BACKUP_DIR="/home/deploy/backups"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
mkdir -p $BACKUP_DIR

# Дамп базы данных прямо из контейнера
docker compose exec -T mariadb mysqldump -u user -p'password' appwrite > $BACKUP_DIR/db_backup_$TIMESTAMP.sql

# Сжатие
tar -czvf $BACKUP_DIR/appwrite_files_$TIMESTAMP.tar.gz ./appwrite/storage
    

Рекомендуется использовать инструменты вроде Restic или BorgBackup для отправки зашифрованных бэкапов в удаленное объектное хранилище (S3). Это защитит вас в случае физического выхода сервера из строя.

Обновление Appwrite: Процесс обновления максимально прост. Измените версию в docker-compose.yml (или просто оставьте latest) и выполните:


docker compose pull
docker compose up -d
docker image prune -f # Удаление старых образов для очистки места
    

9. Troubleshooting + FAQ: Решение типичных проблем

Какой VPS-конфиг минимально подойдёт?

Минимально Appwrite запустится на 2 ГБ RAM и 1 ядре CPU. Однако это будет работать медленно: консоль будет "подтормаживать", а функции будут выполняться с задержкой. Для комфортной работы и возможности запуска хотя бы нескольких Cloud Functions мы настоятельно рекомендуем 4 ГБ RAM. Это обеспечит стабильность базы данных MariaDB, которая чувствительна к объему кэша.

Что выбрать — VPS или dedicated для этой задачи?

Для 90% проектов достаточно VPS. Современные NVMe-диски на VPS обеспечивают отличную скорость. Переходить на dedicated стоит только если у вас огромный объем медиа-файлов и тысячи одновременных запросов к БД в секунду, где важна гарантированная производительность дисковой подсистемы без влияния других клиентов провайдера.

Ошибка "Connection Refused" при обращении к API?

Проверьте статус контейнеров: docker compose ps. Чаще всего падает контейнер appwrite-worker-usage или traefik из-за нехватки памяти. Также убедитесь, что порты 80/443 открыты в фаерволе сервера.

Не приходят письма для подтверждения Email?

Проверьте настройки SMTP в .env. Помните, что многие VPS-провайдеры блокируют порт 25 по умолчанию. Используйте порт 587 или 465. Проверить соединение можно командой: docker compose exec appwrite sh -c "nc -zv smtp.yourserver.com 587".

Как сбросить пароль администратора?

В Appwrite нет прямой команды "сбросить пароль" через CLI для первого пользователя. Если вы потеряли доступ, проще всего создать нового пользователя через UI (если регистрация открыта) и вручную через базу данных выдать ему права администратора в таблице пользователей, но это требует глубокого понимания структуры БД. Лучше сразу настройте SMTP.

Appwrite занимает слишком много места на диске, что делать?

Основной потребитель места — контейнеры InfluxDB (метрики) и логи Docker. Вы можете отключить сбор метрик в .env, установив _APP_USAGE_STATS=disabled, если вам не нужны графики в админ-панели. Также регулярно делайте docker system prune.

10. Выводы и следующие шаги

Мы успешно развернули полноценную инфраструктуру Appwrite на VPS. Теперь у вас есть мощный бэкенд, который поддерживает авторизацию, базы данных, хранилище файлов и серверные функции, при этом вы сохраняете полный контроль над своими данными и расходами.

Ваши следующие шаги для развития проекта:

  • Интеграция SDK: Подключите Appwrite SDK к вашему приложению (Flutter, React, Vue, Swift или Android).
  • Настройка CI/CD: Автоматизируйте деплой ваших Cloud Functions через GitHub Actions, чтобы код обновлялся на сервере при каждом push.
  • Мониторинг: Установите Grafana и Prometheus для отслеживания нагрузки на сервер, чтобы вовремя заметить необходимость апгрейда ресурсов.

Self-hosting — это путь к независимости. С Appwrite этот путь становится доступным даже для небольших команд, предоставляя инструменты уровня корпоративных систем на обычном виртуальном сервере.

Был ли этот гайд полезен?

Ваш отзыв помогает нам улучшать гайды.

Поделиться записью:

Отправьте гайд тому, кому он может пригодиться.

Telegram VKVK WhatsApp Facebook LinkedIn XX

установка и настройка appwrite на vps: развертывание open-source альтернативы firebase для ваших приложений
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.