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

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

Процесс установки приложения

Процесс развертывания включает в себя несколько этапов:

  1. Подготовка системы: Установка пакета docker-compose-plugin и обновление кэша репозиториев через пакетный менеджер apt.

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

  3. Развертывание конфигурации:

  4. Генерация файла docker-compose.yml на основе шаблона.

  5. Создание файла .env для настройки параметров приложения (домен, пароли БД, параметры SMTP и т.s.).

  6. Запуск сервисов: Выполнение команды docker compose up -d --remove-orphans в директории /opt/appwrite.

Права доступа и безопасность

  • Конфигурационный файл .env защищен правами доступа 0600, что ограничивает возможность чтения файла только владельцем.

  • Файлы конфигурации Nginx имеют права 0644.

  • Для обеспечения безопасности базы данных MongoDB используется механизм аутентификации через keyfile.

Базы данных

Приложение использует две основные системы управления базами данных:

  1. MongoDB:

  2. Версия: 8.2.5.

  3. Назначение: Основное хранилище данных приложения.

  4. Особенности: Используется режим Replica Set для обеспечения целостности данных и аутентификации через файл ключей.

  5. Redis:

  6. Версия: 7.4.7-alpine.

  7. Назначение: Хранение кэша, сессий и управление очередями задач.

Контейнеры 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. Скрипт внутри контейнера выполняет следующие действия:

  1. Генерирует случайный keyfile для аутентификации в MongoDB.

  2. Инициализирует Replica Set (rs0).

  3. Создает учетные записи пользователя (root и application user) с необходимыми правами доступа.

Инструкция по обновлению приложения

Для обновления основного приложения необходимо выполнить следующие действия:

  1. Перейти в директорию с конфигурацией: cd /opt/appwrite.

  2. Обновить образы до актуальных версий:

    docker compose pull
    

  3. Перезапустить контейнеры для применения изменений:

    docker compose up -d
    

Расположение конфигурационных файлов и данных

Данные приложения хранятся в именованных томах 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

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