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

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

Развертывание включает:

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

  2. Размещение файлов docker-compose.yml и .env в корне приложения.

  3. Выполнение команды 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.

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