Обзор развертывания Appwrite на сервере¶
Предварительные условия и основные требования¶
Для развертывания приложения должны быть соблюдены следующие системные требования:
-
Операционная система: Linux (предпочтительно на базе Debian/Ubuntu для использования пакетного менеджера
apt). -
Привилегии: Требуются права root или доступ через sudo для установки пакетов и управления Docker.
-
Компоненты Docker:
- Должен быть установлен
docker-compose-plugin.
- Должен быть установлен
-
Сетевые порты:
-
Порт
80: HTTP-трафик (Внутренний/Внешний). -
Порт
443: HTTPS-трафик (Внешний). -
Порт
8080: Интерфейс управления Traefik (только Localhost).
-
FQDN итоговой панели в домене hostkey.in, если доступно, в формате 'Server ID'.hostkey.in:¶
Приложение использует динамический поддомен, основанный на настроенном префиксе и Server ID:
- Формат:
appwrite<ServerID>.hostkey.in
Структура файлов и директорий¶
Для конфигурации, хранения данных (persistence) и сертификатов используются следующие директории:
| Путь | Описание |
|---|---|
/opt/appwrite | Основная директория приложения, содержащая файлы развертывания |
/data/nginx/user_conf.d | Пользовательские конфигурации Nginx |
/var/run/docker.sock | Docker socket для оркестрации контейнеров |
/tmp | Общий хост-монтинг (mount) для executor и runtimes |
Процесс установки приложения¶
Приложение развертывается с использованием метода на базе docker-compose. Версия основного приложения, используемая в основной конфигурации — appwrite/appwrite:1.9.0.
Развертывание включает:
-
Создание директории
/opt/appwriteс правами доступа0755. -
Размещение файлов
docker-compose.ymlи.envв корне приложения. -
Выполнение команды
docker compose up -d --remove-orphansвнутри директории/opt/appwrite.
Права доступа и безопасность¶
-
Права на файлы:
-
Конфигурационные файлы в
/opt/appwrite/.envограничены режимом0600. -
Для основной директории приложения установлены права
0755.
-
-
Сетевая изоляция: Контейнеры взаимодействуют через выделенные сети Docker:
gateway,appwriteиruntimes. -
Безопасность Traefik: Traefik настроен на прослушивание интерфейса loopback хоста для управления (
127.0.0.1:8080) и стандартных портов для публичного трафика.
Базы данных¶
Приложение использует две основные системы баз данных:
| База данных | Image | Роль |
|---|---|---|
| MongoDB | mongo:8.2.5 | Основное хранилище данных (поддерживает Replica Set) |
| Redis | redis:7.4.7-alpine | Кэширование и управление сессиями |
Экземпляр MongoDB инициализируется как replica set (rs0) с включенной аутентификацией через сгенерированный keyfile для безопасного взаимодействия между контейнерами.
Docker-контейнеры и их развертывание¶
Развертывание состоит из нескольких функциональных контейнеров, управляемых через docker compose.
| Имя контейнера | Image | Роль |
|---|---|---|
appwrite-traefik | traefik:3.6 | Edge router и SSL termination |
appwrite | appwrite/appwrite:1.9.0 | Основная логика приложения |
appwrite-console | appwrite/console:7.8.26 | Административный веб-интерфейс |
appwrite-realtime | appwrite/appwrite:1.9.0 | Сервис Realtime WebSocket |
appwrite-worker-* | appwrite/appwrite:1.9.0 | Различные фоновые воркеры (Audits, Webhooks и т. д.) |
appwrite-assistant | appwrite/assistant:0.4.0 | Интеграция с AI Assistant |
openruntimes-executor | openruntimes/executor:0.7.22 | Движок выполнения функций (execution engine) |
appwrite-mongodb | mongo:8.2.5 | Сервис базы данных |
appwrite-redis | redis:7.4.7-alpine | Сервис кэширования |
Прокси-серверы¶
Система использует Traefik в качестве основного обратного прокси (reverse proxy) и балансировщика нагрузки.
-
SSL/TLS: Traefik выполняет SSL termination, используя сертификаты, хранящиеся в volume
appwrite-certificates. -
Правила маршрутизации:
-
Консоль доступна по префиксу пути
/console. -
Realtime-сервисы доступны по префиксу пути
/v1/realtime. -
Весь остальной трафик направляется к основному Appwrite API.
-
Расположение конфигурационных файлов и данных¶
Конфигурация и персистентные данные управляются через Docker volumes:
| Имя Volume | Назначение |
|---|---|
appwrite-mongodb | Файлы базы данных MongoDB |
appwrite-redis | Данные Redis |
appwrite-uploads | Загруженные пользователем файлы |
appwrite-config | Конфигурация приложения и сертификаты |
appwrite-functions | Исходный код функций и их сборки (builds) |
appwrite-builds | Скомпилированные бинарные файлы функций |
appwrite-sites | Контент статических сайтов |
Доступные порты для подключения¶
| Порт | Сервис | Тип доступа |
|---|---|---|
80 | HTTP (Traefik) | Публичный |
443 | HTTPS (Traefik) | Публичный |
27017 | MongoDB | Внутренний/Локальный |
8080 | Traefik Dashboard | Только Localhost |
Запуск, остановка и обновление¶
Управление сервисами выполняется с помощью следующих команд из директории /opt/appwrite:
-
Запуск сервисов:
docker compose up -d -
Остановка сервисов:
docker compose down -
Обновление конфигурации: После изменения
.envилиdocker-compose.ymlвыполнитеdocker compose up -d --remove-orphans.