# 📄 OnlyOffice Document Server для Coolify > ⚠️ **ВАЖНО ДЛЯ PRODUCTION (БОЕВОГО РЕЖИМА)** > > Для использования в реальных проектах **настоятельно рекомендуется клонировать (сделать Fork)** этого репозитория в свой личный аккаунт GitHub. > > При настройке проекта в Coolify (Часть 3) указывайте ссылку именно на **ВАШУ копию** репозитория (например, `https://github.com/ВАШ_НИКНЕЙМ/onlyoffice-coolify`). Это гарантирует вам полный контроль над версиями и защитит от неожиданных изменений в оригинальном источнике. --- Этот репозиторий содержит инструменты для быстрой и безопасной настройки сервера и развертывания **OnlyOffice Document Server** (версия без ограничений подключений) под управлением **Coolify**. --- ## ⚡ Часть 1: Подготовка сервера (Подробная инструкция) Скрипт `setup.sh` автоматически настраивает чистый VPS (Ubuntu/Debian) для работы с Coolify. Он устанавливает Docker, настраивает Firewall, создает Swap и генерирует ключи доступа. ### Пошаговый запуск скрипта: 1. **Подключение:** Зайдите на ваш **новый** чистый сервер по SSH под пользователем `root`. 2. **Запуск команды:** Скопируйте и вставьте следующую команду в терминал, затем нажмите Enter: ```bash bash <(curl -sSL https://raw.githubusercontent.com/FluentBusiness/onlyoffice-coolify/refs/heads/master/setup.sh) ``` 3. **Подтверждение:** Скрипт спросит: `Начать настройку? (y/n)`. Введите `y` и нажмите Enter. 4. **Ожидание:** Дождитесь завершения процесса (это займет 1-2 минуты). Скрипт обновит систему и установит нужные компоненты. 5. **Сохранение ключа (КРИТИЧНО):** В конце работы скрипт очистит экран и покажет блок текста под заголовком `PRIVATE KEY`. * Выделите и скопируйте весь ключ (от `-----BEGIN OPENSSH PRIVATE KEY-----` до `-----END OPENSSH PRIVATE KEY-----`). * Сохраните его в надежном месте (например, в блокноте) прямо сейчас. **Это единственный способ доступа к серверу через Coolify!** --- Вот подробное описание работы скрипта `setup.sh`. Этот скрипт представляет собой инструмент автоматизации ("Bootstrap script"), который превращает свежеустановленный Linux-сервер (Ubuntu/Debian) в полностью настроенный хост, готовый к работе с Coolify и OnlyOffice. **Основные функции скрипта:** * **🛡️ Базовая безопасность и Сеть:** * **Обновление системы:** Выполняет полное обновление списка пакетов и установленных программ (`apt-get update && upgrade`), а также удаляет неиспользуемые зависимости. * **Настройка Firewall (UFW):** Сбрасывает настройки фаервола, запрещает все входящие соединения по умолчанию и открывает только необходимые порты: **22** (SSH), **80** (HTTP) и **443** (HTTPS/HTTP3). * **Защита от взлома (Fail2Ban):** Устанавливает и настраивает `fail2ban` для защиты SSH от перебора паролей (бан на 1 час после 3 неудачных попыток). * **🚀 Оптимизация производительности:** * **Swap (Файл подкачки):** Проверяет наличие swap-файла и, если его нет, создает файл размером **4GB**. Это критически важно для OnlyOffice, который требователен к оперативной памяти, и предотвращает падение процессов из-за нехватки RAM (OOM Killer). * **Полезные утилиты:** Устанавливает набор инструментов, необходимых для работы Coolify и администрирования: `curl`, `wget`, `jq`, `git`, `htop`, `putty-tools`. * **🔑 Управление доступом (SSH Hardening):** * **Генерация ключей:** Создает новую, безопасную пару SSH-ключей типа `Ed25519`. * **Конвертация для Windows:** Автоматически создает версию ключа в формате `.ppk` для пользователей PuTTY. * **Усиление SSH:** Отключает вход по паролю (`PasswordAuthentication no`) и разрешает доступ пользователю `root` **только** по SSH-ключам. Это исключает возможность брутфорс-атак на пароль. * **Безопасный вывод:** Скрипт выводит приватный ключ прямо в консоль для копирования пользователем, а затем **удаляет файлы ключей с диска сервера**, чтобы они не могли быть украдены злоумышленниками в случае физического доступа к серверу. * **🐳 Среда исполнения:** * **Docker:** Проверяет наличие Docker и, если он не установлен, автоматически скачивает и устанавливает актуальную версию с официального ресурса (`get.docker.com`). **Результат работы:** После выполнения скрипта вы получаете защищенный сервер с установленным Docker, готовый к подключению в панель Coolify. В терминале отображаются IP-адрес сервера и приватный ключ, который необходимо сохранить для дальнейшего доступа. --- ## 🔗 Часть 2: Подключение к Coolify и Настройка Прокси ### Этап А: Добавление сервера 1. Откройте панель **Coolify**. 2. Перейдите в **Servers** -> **Add Server**. 3. Заполните данные: * **IP Address**: IP вашего сервера. * **User**: `root`. * **Port**: `22`. * **Private Key**: Вставьте ключ, который вы сохранили на предыдущем этапе. 4. Нажмите **Connect**. ### Этап Б: Смена прокси на Caddy (ОБЯЗАТЕЛЬНО) ⚠️ OnlyOffice работает нестабильно через стандартный прокси Traefik (ошибки Mixed Content). Необходимо переключить его на Caddy. 1. В Coolify откройте настройки этого сервера (**Servers** -> ваш сервер). 2. Найдите блок **Proxy**. 3. Нажмите **Stop Proxy** (если он запущен). 4. В выпадающем списке выберите **Caddy**. 5. Нажмите **Start Proxy**. --- ## 📦 Часть 3: Развертывание OnlyOffice ### 1. Создание ресурса 1. Перейдите в ваш проект (**Project** -> Environment). 2. Нажмите **New** -> **Docker Compose**. 3. Выберите источник (например, **GitHub Repository**). 4. **Важно:** Укажите ссылку на **ВАШ (Fork)** репозиторий, чтобы иметь контроль над версией конфигурации. Coolify автоматически подтянет файл `docker-compose.yaml`. ### 2. Настройка переменных окружения (ВАЖНО!) ⚠️ Чтобы OnlyOffice принял ваш секретный ключ, нужно правильно настроить переменные. 1. Перейдите в меню **Environment Variables**. 2. Добавьте переменную: * **Key:** `JWT_SECRET` * **Value:** Придумайте сложный пароль (например, `MySuperSecretKey2024`). 3. **Настройка видимости (Критический шаг):** Раскройте дополнительные настройки переменной и обязательно отметьте галочками оба пункта: * ✅ **Available at Buildtime** * ✅ **Available at Runtime** * *Если в интерфейсе переменная дублируется или есть несколько полей для ввода — убедитесь, что она прописана везде и галочки стоят.* 4. Нажмите **Save**. ### 3. Настройка домена 1. В настройках сервиса (General) в поле **Domains** укажите ваш домен (например, `https://office.example.com`). 2. Убедитесь, что DNS вашего домена направлены на IP сервера. ### 4. Запуск Нажмите **Deploy**. Coolify соберет образ и запустит контейнер. Благодаря настройкам Buildtime/Runtime, ваш ключ `JWT_SECRET` корректно применится, и OnlyOffice не будет генерировать случайный пароль. --- ## ℹ️ Технические детали * **Образ**: `thomisus/onlyoffice-documentserver-unlimited` (без лимита подключений). * **Данные**: Хранятся в папке `./onlyoffice` на сервере. * **Требования**: 4GB RAM (или 2GB + Swap).