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

Обзор развертывания Nextcloud на сервере

Предварительные требования

Для корректной работы приложения требуются следующие параметры и доступ к ресурсам:

  • Операционная система: CentOS, Rocky Linux или AlmaLinux (для автоматической настройки брандмауэра).

  • Порты:

  • 80/tcp — для HTTP и проверки SSL.

  • 443/tcp — для защищенного HTTPS соединения.

  • 22/tcp — для удаленного доступа по SSH.

  • Права доступа: Требуются права суперпользователя (root) для управления Docker, конфигурационными файлами и системными службами.

FDQN итоговой панели на домене hostkey.in

Доменное имя формируется в соответствии со следующим шаблоном:

Параметр Значение
Префикс nextcloud
Домен hostkey.in
Полный шаблон nextcloud{Server_ID}.hostkey.in

Структура файлов и каталогов

Основные файлы конфигурации и данные приложения располагаются в следующих директориях:

  • /opt/nextcloud — рабочая директория приложения (конфигурационные файлы, скрипты настройки).

  • /opt/nginx — конфигурация прокси-сервера Nginx.

  • /opt/nginx/user_conf.d — пользовательские конфигурации виртуальных хостов.

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

Развертывание выполняется комбинированным методом: через Docker Compose и последующую программную настройку внутри контейнеров.

  1. Подготовка окружения: Создаются необходимые директории для конфигураций и тома (volumes) для хранения данных.

  2. Запуск инфраструктуры: Разворачивается стек контейнеров с помощью docker compose.

  3. Получение SSL-сертификатов: С помощью Certbot через веб-проверку (webroot) выпускаются сертификаты Let's Encrypt для домена.

  4. Первоначальная настройка приложения: Выполняется установочный скрипт /opt/nextcloud/set_configuration.sh, который:

  5. Инициализирует базу данных через occ maintenance:install.

  6. Настраивает доверенные домены (trusted domains).

  7. Конфигурирует кэширование через Redis и APCu для повышения производительности.

  8. Устанавливает приложение OnlyOffice внутри Nextcloud.

  9. Оптимизация: Выполняются команды по исправлению предупреждений базы данных (добавление индексов и столбцов) и настройка окна технического обслуживания.

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

  • Брандмауэр: Настроены правила для открытия портов 80, 443 и 22.

  • Конфигурация Nginx: Используются строгие заголовки безопасности (HSTS, X-Frame-Options, X-Content-Type-Options).

  • Ограничения доступа: Настроены правила для защиты системных папок Nextcloud (config, data, lib и др.) от прямого доступа.

Базы данных

В качестве системы управления базами данных используется PostgreSQL 16 (Alpine).

Параметр Значение
Имя БД nextcloud
Пользователь nextcloud
Хранилище Том Docker db_data
Особенности Выделено 256MB shared memory для стабильной работы.

Контейнеры Docker и их запуск

Приложение работает в составе нескольких контейнеров:

  • app-server (Nextcloud FPM):

  • Образ: nextcloud:fpm

  • Тома: /var/www/html (данные приложения), /opt/nextcloud/php.ini (настройки PHP).

  • Переменные окружения: Настройки подключения к БД, Redis и параметры домена.

  • db (PostgreSQL):

  • Образ: postgres:16-alpine

  • Тома: db_data.

  • redis:

  • Образ: redis:alpine

  • Назначение: Кэширование и блокировки.

  • onlyoffice-document-server (OnlyOffice):

  • Образ: onlyoffice/documentserver:latest

  • Тома: document_data, document_log.

  • nginx-certbot:

  • Образ: jonasal/nginx-certbot:latest

  • Порты: 80:80, 443:443

  • Назначение: Проксирование трафика и управление SSL.

Кастомные скрипты и дополнительные настройки

Для автоматизации настройки используется установочный скрипт /opt/nextcloud/set_configuration.sh.

Назначение скрипта:

  • Автоматическая установка Nextcloud с параметрами базы данных.

  • Интеграция OnlyOffice (настройка DocumentServerUrl, StorageUrl и проверка целостности приложения).

  • Настройка кэширования в оперативной памяти для ускорения работы интерфейса.

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

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

cd /opt/nextcloud && docker compose pull && docker compose up -d
question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×