Встановлення та налаштування 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
Сучасна розробка мобільних та веб-застосунків вимагає наявності надійного бекенду. Історично склалося так, що розробники обирали між написанням власного 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-конфіг потрібен для цього завдання
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. Підготовка сервера: Безпека та залежності
Перш ніж встановлювати 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
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: Розбір параметрів
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
У процесі встановлення скрипт поставить кілька важливих питань:
- Choose your server HTTP port: Залиште 80, якщо це основний сервіс на сервері.
- Choose your server HTTPS port: Залиште 443.
- Choose a unique secret API key: Натисніть Enter для генерації випадкового ключа. Обов'язково збережіть його пізніше з .env файлу!
- Choose your server hostname: Вкажіть ваш домен (наприклад,
api.myapp.com). Це важливо для генерації SSL через Let's Encrypt. - 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 та змінні оточення
Після того як контейнери піднялися, 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