Обзор развертывания 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.
Процесс установки приложения¶
Установка выполняется путем загрузки официальных файлов конфигурации от разработчика и запуска контейнеров.
-
Создается каталог
/opt/appwriteс правами доступа0755. -
Скачивается файл
docker-compose.ymlс адресаhttps://appwrite.io/install/compose. -
Скачивается файл
.envс адресаhttps://appwrite.io/install/env. -
В файле
.envавтоматически настраивается переменная_APP_DOMAINв форматеappwrite<ID сервера>.hostkey.in. -
В файле
.envустанавливается переменная_APP_EMAIL_CERTIFICATESсо значениемhkadm@hostkey.com. -
Запускается команда
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для динамического обнаружения сервисов. -
Использует внешние тома для хранения конфигурации и сертификатов.
Базы данных¶
Приложение использует две базы данных, развернутые в контейнерах:
-
MariaDB
-
Образ:
mariadb:10.11. -
Хранение данных: том
appwrite-mariadbв директории/var/lib/mysql. -
Команда запуска включает параметр
--innodb-flush-method=fsync. -
Автоматическое обновление включено (
MARIADB_AUTO_UPGRADE=1). -
Пароль root и пароль пользователя задаются через переменные окружения, передаваемые из файла
.env. -
Redis
-
Образ:
redis:7.2.4-alpine. -
Хранение данных: том
appwrite-redisв директории/data. -
Ограничение памяти:
512mb. -
Политика удаления ключей:
allkeys-lru. -
Количество образцов для 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 pulldocker compose up -d
Для проверки статуса контейнеров используется команда: docker compose ps