Обзор развертывания Appwrite на сервере¶
Предварительные требования¶
Для успешного развертывания приложения необходимо наличие сервера с установленной операционной системой семейства Linux (Ubuntu или Debian).
Требования к системе и доступу:
-
Установленный Docker Compose plugin.
-
Права суперпользователя (root) для установки пакетов и управления контейнерами.
-
Наличие открытых портов 80 и 443 для работы веб-сервиса и SSL.
FDQN итоговой панели на домене hostkey.in¶
Для доступа к приложению используется следующий шаблон доменного имени:
| Параметр | Значение |
|---|---|
| Префикс | appwrite |
| Домен | hostkey.in |
| Полный шаблон | appwrite{Server_ID}.hostkey.in |
Структура файлов и каталогов¶
Все основные файлы конфигурации и данные приложения сосредоточены в следующих директориях:
-
/opt/appwrite— рабочая директория приложения, содержащая основной файлdocker-compose.ymlи файл переменных окружения.env. -
/data/nginx— конфигурация прокси-сервера Nginx и сертификаты SSL. -
/var/run/docker.sock— сокет Docker для взаимодействия контейнеров с Docker API.
Процесс установки приложения¶
Процесс развертывания включает в себя несколько этапов:
-
Подготовка системы: Установка пакета
docker-compose-pluginи обновление кэша репозиториев через пакетный менеджерapt. -
Создание окружения: Создание директории
/opt/appwriteс правами доступа0755. -
Развертывание конфигурации:
-
Генерация файла
docker-compose.ymlна основе шаблона. -
Создание файла
.envдля настройки параметров приложения (домен, пароли БД, параметры SMTP и т.s.). -
Запуск сервисов: Выполнение команды
docker compose up -d --remove-orphansв директории/opt/appwrite.
Права доступа и безопасность¶
-
Конфигурационный файл
.envзащищен правами доступа0600, что ограничивает возможность чтения файла только владельцем. -
Файлы конфигурации Nginx имеют права
0644. -
Для обеспечения безопасности базы данных MongoDB используется механизм аутентификации через
keyfile.
Базы данных¶
Приложение использует две основные системы управления базами данных:
-
MongoDB:
-
Версия:
8.2.5. -
Назначение: Основное хранилище данных приложения.
-
Особенности: Используется режим Replica Set для обеспечения целостности данных и аутентификации через файл ключей.
-
Redis:
-
Версия:
7.4.7-alpine. -
Назначение: Хранение кэша, сессий и управление очередями задач.
Контейнеры Docker и их запуск¶
Приложение разворачивается в составе нескольких контейнеров, управляемых через Docker Compose. Все контейнеры имеют политику перезапуска unless-stopped.
Основные сервисы приложения¶
| Имя образа | Назначение | Сеть |
|---|---|---|
appwrite/appwrite:1.9.0 | Основное ядро приложения (API, Console, Workers) | appwrite |
openruntimes/executor:0.7.22 | Исполнитель функций (Functions Executor) | appwrite, runtimes |
appwrite/browser:0.3.2 | Интерфейс браузера | appwrite |
Вспомогательные контейнеры (Workers и Tasks)¶
Для обеспечения работы фоновых процессов используются специализированные процессы внутри образа appwrite/appwrite:
worker-audits,worker-webhooks,worker-deletes,worker-databases,worker-functions,worker-mails,worker-migrations,worker-usageи другие.
Инфраструктурные контейнеры¶
| Имя образа | Назначение | Порты / Тома |
|---|---|---|
traefik:3.6 | Обратный прокси и балансировщик нагрузки | 80, 443, /var/run/docker.sock |
mongo:8.2.5 | База данных MongoDB | 27017 |
redis:7.4.7-alpine | Хранилище Redis | — |
Кастомные скрипты и дополнительные настройки¶
При развертывании выполняется автоматическая инициализация базы данных MongoDB. Скрипт внутри контейнера выполняет следующие действия:
-
Генерирует случайный
keyfileдля аутентификации в MongoDB. -
Инициализирует Replica Set (
rs0). -
Создает учетные записи пользователя (root и application user) с необходимыми правами доступа.
Инструкция по обновлению приложения¶
Для обновления основного приложения необходимо выполнить следующие действия:
-
Перейти в директорию с конфигурацией:
cd /opt/appwrite. -
Обновить образы до актуальных версий:
-
Перезапустить контейнеры для применения изменений:
Расположение конфигурационных файлов и данных¶
Данные приложения хранятся в именованных томах Docker (Docker Volumes):
-
appwrite-mongodb— данные базы данных. -
appwrite-redis— данные Redis. -
appwrite-uploads— загруженные пользователями файлы. -
appwrite-functions— исходный код функций. -
appwrite-builds— артефакты сборки функций. -
appwrite-certificates— SSL сертификаты.
Доступные порты для подключения¶
| Порт | Назначение | Примечание |
|---|---|---|
80 | HTTP трафик | Перенаправляется через Traefik/Nginx |
443 | HTTPS трафик | Основной порт для доступа к API и Console |
27017 | MongoDB | Доступен внутри сети Docker (внешний доступ ограничен) |
Запуск, остановка приложения¶
Управление жизненным циклом приложения осуществляется через Docker Compose:
-
Запуск:
docker compose up -d -
Остановка:
docker compose down -
Просмотр статуса:
docker compose ps