Files
2026-01-11 01:27:28 +03:00

128 lines
11 KiB
Markdown

# 📄 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).