Обзор развертывания Appwrite на сервере¶
Предварительные требования и базовые условия¶
-
Операционная система: Распределение Linux на основе Debian (требуется пакетный менеджер APT).
-
Привилегии: Доступ root или sudo для установки системных пакетов и управления контейнерами Docker.
-
Настройка домена: Доменное имя должно разрешаться в публичный IP-адрес сервера.
-
Порты: Порты 80 (HTTP) и 443 (HTTPS) должны быть открыты на межсетевом экране (firewall) для внешнего доступа.
-
Программное обеспечение: Должны быть установлены Docker Engine и Docker Compose.
Настройка FQDN¶
Приложение настроено для доступа через следующее Полностью Квалифицированное Имя Домена (FQDN): appwrite<Server ID>.hostkey.in
Система использует зону hostkey.in с префиксом appwrite. Финальная структура URL зависит от конкретного идентификатора сервера (Server ID), назначенного экземпляру.
Структура файлов и каталогов¶
Файлы приложения, конфигурации и данные хранятся в следующих местах:
-
Каталог установки:
/opt/appwrite -
Файл Docker Compose:
/opt/appwrite/docker-compose.yml -
Конфигурация окружения:
/opt/appwrite/.env -
Томы хранилища (Storage Volumes): Управляются внутренними именованными томами Docker (например,
appwrite-uploads,appwrite-config,appwrite-mariadb).
Процесс установки приложения¶
Процесс установки включает загрузку официального шаблона Docker Compose и файла окружения, настройку параметров домена и запуск сервисов.
-
Версия Docker Compose: Система устанавливает
docker-composeчерез пакетный менеджер APT. -
Версия приложения: Appwrite
1.5.10. -
Исполнение:
-
Создается каталог
/opt/appwrite. -
Файл
docker-compose.ymlзагружается с адресаhttps://appwrite.io/install/compose. -
Файл
.envзагружается с адресаhttps://appwrite.io/install/env. -
Переменная
_APP_DOMAINустанавливается в значениеappwrite<Server ID>.hostkey.in. -
Переменная
_APP_EMAIL_CERTIFICATESустанавливается в значениеhkadm@hostkey.com. -
Сервисы запускаются с помощью команды
docker compose up -d.
-
Права доступа и безопасность¶
-
Режим сети: Контейнер прокси-сервера Traefik использует режим сети
hostдля прямого связывания с портами 80 и 443. -
Ограничения: Для ограничения маршрутизации Traefik сервисами с меткой
traefik.constraint-label-stack=appwriteиспользуются метки Docker (Docker labels). -
Открытые сервисы: Внешне порты 80 и 443 открывает только контейнер Traefik; остальные контейнеры имеют только внутренний доступ.
-
SSL/TLS: Для основных соединений API и WebSocket через правила маршрутизации Traefik принудительно используется HTTPS.
Базы данных¶
Приложение использует два основных сервиса баз данных:
-
MariaDB:
-
Образ:
mariadb:10.11 -
Том:
appwrite-mariadb(монтирован в/var/lib/mysql) -
Конфигурация: Настроен с флагом
--innodb-flush-method=fsync.
-
-
Redis:
-
Образ:
redis:7.2.4-alpine -
Том:
appwrite-redis(монтирован в/data) -
Настройки: Максимальный объем памяти установлен на 512 МБ с политикой вытеснения
allkeys-lru.
-
Контейнеры Docker и их развертывание¶
Приложение состоит из нескольких контейнеров, оркестрированных через Docker Compose. Все контейнеры используют драйвер логирования json-file с ограничением в 5 файлов и максимальным размером 10 МБ на файл.
Основные сервисы (Core Services)¶
-
Traefik: Обратный прокси и балансировщик нагрузки (
traefik:2.11). -
Appwrite API: Основной сервис приложения (
appwrite/appwrite:1.5.10). -
Appwrite Realtime: Обработчик WebSocket (
appwrite/appwrite:1.5.10с точкой входаrealtime). -
MariaDB: База данных (
mariadb:10.11). -
Redis: Кеш и брокер сообщений (
redis:7.2.4-alpine). -
Appwrite Assistant: Сервис AI-помощника (
appwrite/assistant:0.4.0). -
OpenRuntimes Executor: Окружение выполнения функций (
openruntimes/executor:0.5.7).
Контейнеры рабочих процессов и задач (Workers and Task Containers)¶
Следующие рабочие процессы обрабатывают фоновые задачи:
-
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-worker-usage -
appwrite-worker-usage-dump -
appwrite-task-maintenance -
appwrite-task-scheduler-functions -
appwrite-task-scheduler-messages
Тома Docker (Docker Volumes)¶
Для сохранения данных определены следующие именованные тома:
-
appwrite-mariadb -
appwrite-redis -
appwrite-cache -
appwrite-uploads -
appwrite-certificates -
appwrite-functions -
appwrite-builds -
appwrite-config
Прокси-серверы¶
-
Программное обеспечение прокси: Traefik (
traefik:2.11). -
Расположение конфигурации:
/storage/config(отображен из томаappwrite-config). -
Точки входа (Entry Points):
-
appwrite_web: Порт 80 (HTTP). -
appwrite_websecure: Порт 443 (HTTPS).
-
-
Маршрутизация:
-
HTTP-трафик на порту 80 маршрутизируется на сервисы Appwrite API и WebSocket.
-
HTTPS-трафик на порту 443 маршрутизируется с включенным TLS.
-
-
Ограничения: Traefik управляет только контейнерами, помеченными меткой
traefik.constraint-label-stack=appwrite.
Расположение файлов конфигурации и данных¶
-
Основная конфигурация:
/opt/appwrite/docker-compose.yml -
Переменные окружения:
/opt/appwrite/.env -
SSL-сертификаты: Хранятся в томе
appwrite-certificates. -
Пользовательские конфигурации Nginx:
/data/nginx/user_conf.d(Упоминаются в внешней настройке Nginx). -
Секреты Let's Encrypt:
/data/nginx(Упоминаются в внешней настройке Nginx).
Доступные порты для подключения¶
| Порт | Протокол | Сервис | Описание |
|---|---|---|---|
| 80 | TCP | Traefik | Точка входа HTTP для API и WebSocket. |
| 443 | TCP | Traefik | Точка входа HTTPS с поддержкой TLS. |
Запуск, остановка и обновление¶
Управление приложением осуществляется с помощью команд Docker Compose, выполняемых из каталога /opt/appwrite.
Запуск сервисов¶
Для запуска стека приложения в режиме отложенного выполнения (detached mode):
Остановка сервисов¶
Для остановки стека приложения:
Перезапуск сервисов¶
Для перезапуска всех сервисов:
Обновление образов¶
Для загрузки последних образов, определенных в файле Docker Compose: