Обзор развертывания Appwrite на сервере¶
Предварительные требования¶
Для успешного развертывания приложения требуются следующие условия:
-
Операционная система: Ubuntu или Debian.
-
Права доступа: права суперпользователя (
root) для установки системных пакетов и управления Docker. -
Доменное имя: наличие настроенного домена, указывающего на IP сервера.
-
Порты:
-
80(HTTP) — для получения SSL-сертификатов и перенаправления трафика. -
443(HTTPS) — основной порт для работы приложения. -
27017(MongoDB) — внутренний доступ к базе данных.
FQDN итоговой панели на домене hostkey.in¶
| Параметр | Значение |
|---|---|
| Префикс | appwrite |
| Домен | hostkey.in |
| Полный шаблон | appwrite{Server_ID_from_Invapi}.hostkey.in |
Структура файлов и каталогов¶
Основные директории, используемые в системе:
-
/opt/appwrite— рабочая директория приложения (содержит конфигурацию Docker). -
/data/nginx— конфигурации прокси-сервера Nginx и файлы для Certbot. -
/data/nginx/user_conf.d— пользовательские конфигурационные файлы Nginx.
Процесс установки приложения¶
Развертывание выполняется в несколько этапов:
-
Подготовка системы: установка плагина
docker-compose-pluginи обновление кэша пакетов через менеджер пакетовapt. -
Создание окружения: создание директории
/opt/appwriteс правами доступа0755. -
Развертывание конфигурации:
-
Создание файла
docker-compose.ymlв/opt/appwrite. -
Создание файла переменных окружения
.envв/opt/appwrite(права доступа0600). -
Запуск контейнеров: выполнение команды
docker compose up -d --remove-orphansиз директории/opt/appwrite.
Права доступа и безопасность¶
-
Ограничение прав: файл конфигурации
.envдоступен только владельцу (0600). -
Изоляция сети: контейнеры приложения работают в выделенной Docker-сети
appwrite, что ограничивает их взаимодействие с другими процессами на хосте. -
Безопасность базы данных: MongoDB запускается в режиме аутентификации с использованием файла ключа (
keyfile) для обеспечения безопасности репликации.
Базы данных¶
Приложение использует две основные системы управления базами данных:
| Тип БД | Образ | Назначение |
|---|---|---|
| MongoDB | mongo:8.2.5 | Основное хранилище данных приложения (режим Replica Set) |
| Redis | redis:7.2.4-alpine | Хранение сессий и кэширование |
Данные MongoDB хранятся в Docker-томе appwrite-mongodb.
Контейнеры Docker и их запуск¶
Приложение разворачивается через Docker Compose и включает в себя следующие сервисы:
Основные сервисы приложения¶
| Имя контейнера | Образ | Порты (внутри) | Описание |
|---|---|---|---|
appwrite | appwrite/appwrite:1.9.0 | 80 | Основное API приложение |
appwrite-console | appwrite/console:7.8.26 | 80 | Панель управления (доступна по пути /console) |
appwrite-realtime | appwrite/appwrite:1.9.0 | 80 | Сервис Realtime (WebSocket) |
Вспомогательные сервисы и воркеры¶
Приложение использует множество специализированных контейнеров на базе образа appwrite/appwrite:1.9.0 для выполнения фоновых задач:
-
Воркеры:
appwrite-worker-audits,appwrite-worker-webhooks,appwrite-worker-deletes,appwrite-worker-databases,appwrite-worker-functions,appwrite-worker-mails,appwrite-worker-messaging,appwrite-worker-usage. -
Планировщики и задачи:
appwrite-task-maintenance,appwrite-task-scheduler-functions,appwrite-task-scheduler-messages,appwrite-task-stats-resources.
Инфраструктурные контейнеры¶
| Имя контейнера | Образ | Описание |
|---|---|---|
appwrite-traefik | traefik:3.6 | Обратный прокси и балансировщик нагрузки |
appwrite-mongodb | mongo:8.2.5 | База данных MongoDB |
appwrite-redis | redis:7.4.7-alpine | Хранилище в оперативной памяти |
openruntimes-executor | openruntimes/executor:0.7.22 | Исполнитель функций (Functions Executor) |
Кастомные скрипты и дополнительные настройки¶
В процессе развертывания выполняются следующие действия:
-
Инициализация MongoDB: при первом запуске выполняется скрипт, который генерирует
keyfile, настраивает Replica Set (rs0) и создает учетные записи пользователя (root и application user). -
Настройка SSL: используется контейнер
jonasal/nginx-certbotдля автоматического получения и обновления сертификатов Let's Encrypt.
Инструкция по обновлению приложения¶
Для обновления основного приложения необходимо выполнить следующие действия:
-
Перейти в директорию с конфигурацией:
-
Подтянуть новые версии образов:
-
Перезапустить контейнеры:
Расположение конфигурационных файлов и данных¶
| Тип | Путь / Том |
|---|---|
| Основной конфиг Docker | /opt/appwrite/docker-compose.yml |
| Переменные окружения | /opt/appwrite/.env |
| Конфигурация Nginx (SSL) | /data/nginx/user_conf.d |
| Данные MongoDB | Том appwrite-mongodb |
| Данные Redis | Том appwrite-redis |
Доступные порты для подключения¶
-
443 — HTTPS доступ к API и консоли управления.
-
80 — HTTP (перенаправляется на 443).
-
27017 — MongoDB (доступен внутри сети Docker).