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

Обзор развертывания 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.

  • Исполнение:

    1. Создается каталог /opt/appwrite.

    2. Файл docker-compose.yml загружается с адреса https://appwrite.io/install/compose.

    3. Файл .env загружается с адреса https://appwrite.io/install/env.

    4. Переменная _APP_DOMAIN устанавливается в значение appwrite<Server ID>.hostkey.in.

    5. Переменная _APP_EMAIL_CERTIFICATES устанавливается в значение hkadm@hostkey.com.

    6. Сервисы запускаются с помощью команды 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):

cd /opt/appwrite
docker compose up -d

Остановка сервисов

Для остановки стека приложения:

cd /opt/appwrite
docker compose stop

Перезапуск сервисов

Для перезапуска всех сервисов:

cd /opt/appwrite
docker compose restart

Обновление образов

Для загрузки последних образов, определенных в файле Docker Compose:

cd /opt/appwrite
docker compose pull

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