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

Отримати VPS arrow_forward
eco Початковий Туторіал

Встановлення та на

calendar_month May 30, 2026 schedule 10 хв. читання visibility 724 переглядів
Установка и настройка 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 цей шлях стає доступним навіть для невеликих команд, надаючи інструменти рівня корпоративних систем на звичайному віртуальному сервері.

Поділитися цим записом:

встановлення і налаштування Appwrite на VPS: розгортання open-source
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.