Перейти к содержанию

Обзор развертывания Appwrite на сервере

Предварительные требования

Для успешного развертывания приложения на сервере необходимо наличие следующих компонентов и условий:

  • Операционная система на базе Debian/Ubuntu (поддержка пакетного менеджера apt).

  • Права доступа уровня root или пользователя с правами sudo.

  • Установленный пакет docker-compose.

  • Доступ к интернету для загрузки образов Docker и конфигурационных файлов.

  • Доменное имя в зоне hostkey.in.

  • Открытые порты 80 и 443 для внешнего доступа.

FQDN итоговой панели

Полное доменное имя (FQDN) для доступа к панели управления формируется по следующему шаблону:

appwrite<ID сервера>.hostkey.in:443

Где <ID сервера> заменяется на уникальный идентификатор сервера. Доступ осуществляется через протокол HTTPS.

Структура файлов и каталогов

Все файлы конфигурации и данные приложения размещаются в каталоге /opt/appwrite.

Основные файлы конфигурации:

  • /opt/appwrite/docker-compose.yml — файл оркестрации контейнеров.

  • /opt/appwrite/.env — файл переменных окружения с настройками домена и безопасности.

Внутренняя структура данных приложения организована через Docker volumes, которые монтируются в следующие логические пути внутри контейнеров:

  • /storage/uploads — загрузка файлов пользователями.

  • /storage/cache — кэш приложения.

  • /storage/config — конфигурационные файлы.

  • /storage/certificates — SSL-сертификаты.

  • /storage/functions — пользовательские функции.

  • /storage/builds — артефакты сборки функций.

  • /var/lib/mysql — данные базы данных MariaDB.

  • /data — данные кэша Redis.

Процесс установки приложения

Установка выполняется путем загрузки официальных файлов конфигурации от разработчика и запуска контейнеров.

  1. Создается каталог /opt/appwrite с правами доступа 0755.

  2. Скачивается файл docker-compose.yml с адреса https://appwrite.io/install/compose.

  3. Скачивается файл .env с адреса https://appwrite.io/install/env.

  4. В файле .env автоматически настраивается переменная _APP_DOMAIN в формате appwrite<ID сервера>.hostkey.in.

  5. В файле .env устанавливается переменная _APP_EMAIL_CERTIFICATES со значением hkadm@hostkey.com.

  6. Запускается команда docker compose up -d в директории /opt/appwrite.

Версия развертываемого приложения: appwrite/appwrite:1.5.10.

Контейнеры Docker и их запуск

Приложение развертывается как набор контейнеров Docker, управляемых через docker compose.

Основные сервисы:

  • traefik (версия 2.11) — обратный прокси-сервер и балансировщик нагрузки.

  • appwrite (версия 1.5.10) — основной API сервер.

  • appwrite-realtime — сервис для WebSocket соединений.

  • mariadb (версия 10.11) — реляционная база данных.

  • redis (версия 7.2.4-alpine) — кэш и брокер сообщений.

  • openruntimes-executor (версия 0.5.7) — среда выполнения функций.

  • appwrite-assistant (версия 0.4.0) — сервис ассистента.

Дополнительные рабочие процессы (workers) и задачи (tasks):

  • appwrite-worker-audits

  • appwrite-worker-webhooks

  • appwrite-worker-deletes

  • appwrite-worker-databases

  • appwrite-worker-builds

  • appwrite-worker-certificates

  • appwrite-worker-functions

  • appwrite-worker-mails

  • appwrite-worker-messaging

  • appwrite-worker-migrations

  • appwrite-task-maintenance

  • appwrite-worker-usage

  • appwrite-worker-usage-dump

  • appwrite-task-scheduler-functions

  • appwrite-task-scheduler-messages

Все контейнеры используют политику перезапуска unless-stopped.

Прокси серверы

В качестве обратного прокси-сервера используется контейнер traefik.

Настройки прокси:

  • Обрабатывает входящий трафик на портах 80 (HTTP) и 443 (HTTPS).

  • Использует метки Docker для маршрутизации трафика к сервисам appwrite и appwrite-realtime.

  • Принудительно перенаправляет HTTP-запросы на HTTPS (настройка traefik.http.routers.appwrite_api_https.tls=true).

  • Монтирует сокет Docker /var/run/docker.sock для динамического обнаружения сервисов.

  • Использует внешние тома для хранения конфигурации и сертификатов.

Базы данных

Приложение использует две базы данных, развернутые в контейнерах:

  1. MariaDB

  2. Образ: mariadb:10.11.

  3. Хранение данных: том appwrite-mariadb в директории /var/lib/mysql.

  4. Команда запуска включает параметр --innodb-flush-method=fsync.

  5. Автоматическое обновление включено (MARIADB_AUTO_UPGRADE=1).

  6. Пароль root и пароль пользователя задаются через переменные окружения, передаваемые из файла .env.

  7. Redis

  8. Образ: redis:7.2.4-alpine.

  9. Хранение данных: том appwrite-redis в директории /data.

  10. Ограничение памяти: 512mb.

  11. Политика удаления ключей: allkeys-lru.

  12. Количество образцов для LRU: 5.

Расположение конфигурационных файлов и данных

Конфигурация приложения полностью определяется файлами в директории /opt/appwrite.

Переменные окружения, используемые контейнерами, загружаются из файла /opt/appwrite/.env. Ключевые переменные включают:

  • _APP_DOMAIN — доменное имя приложения.

  • _APP_OPENSSL_KEY_V1 — ключ шифрования.

  • _APP_DB_HOST, _APP_DB_USER, _APP_DB_PASS — параметры подключения к базе данных.

  • _APP_REDIS_HOST, _APP_REDIS_PASS — параметры подключения к Redis.

  • _APP_STORAGE_* — параметры для внешних хранилищ (S3, Backblaze, Linode, Wasabi и др.).

  • _APP_FUNCTIONS_* — настройки выполнения функций.

Данные приложения сохраняются в именованных томах Docker:

  • appwrite-mariadb

  • appwrite-redis

  • appwrite-cache

  • appwrite-uploads

  • appwrite-certificates

  • appwrite-functions

  • appwrite-builds

  • appwrite-config

Доступные порты для подключения

Сервер слушает следующие порты для внешнего доступа:

Порт Протокол Описание
80 TCP HTTP (перенаправление на HTTPS)
443 TCP HTTPS (основной доступ к API и панели)

Внутренние порты контейнеров (например, 80 внутри контейнера appwrite) не экспонируются напрямую на хосте, а доступны только через сеть Docker и прокси traefik.

Запуск, остановка и обновление

Управление сервисами осуществляется через команды docker compose в директории /opt/appwrite.

Команды управления:

  • Запуск всех сервисов в фоновом режиме: docker compose up -d

  • Остановка всех сервисов: docker compose down

  • Перезапуск всех сервисов: docker compose restart

  • Просмотр логов: docker compose logs -f

  • Обновление образов и перезапуск: docker compose pull docker compose up -d

Для проверки статуса контейнеров используется команда: docker compose ps

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×