Files
crm.clientright.ru/crm_extensions/docs/NEXTCLOUD_SSL_SETUP.md

179 lines
8.1 KiB
Markdown
Raw Normal View History

# Настройка SSL для Nextcloud
**Дата:** 21 октября 2025
**Домен:** office.clientright.ru
**Порт HTTPS:** 8443 (нестандартный, т.к. 443 занят основным CRM)
## Что было сделано
### 1. Обновлён nginx конфигурация
- **Файл:** `/etc/nginx/fastpanel2-sites/office/office.clientright.ru.ssl.conf`
- **Изменения:**
- Изменён порт проксирования с `32770` на `8082` (новый контейнер `nextcloud-fresh`)
- Добавлены заголовки `X-Forwarded-Host` и `X-Forwarded-Port` для правильной работы HTTPS прокси
- Включён `proxy_buffering off` для лучшей производительности
### 2. Настроен config.php Nextcloud
**Файл в контейнере:** `/var/www/html/config/config.php`
**Добавлены параметры:**
```php
// HTTPS конфигурация
'overwrite.cli.url' => 'https://office.clientright.ru:8443',
'overwritehost' => 'office.clientright.ru:8443',
'overwriteprotocol' => 'https',
// Доверенные прокси
'trusted_proxies' => array(
0 => '127.0.0.1',
1 => '147.45.146.17',
),
'forwarded_for_headers' => array(
0 => 'X-Forwarded-For',
),
// Локальное кэширование (без Redis, т.к. контейнеры в разных сетях)
// Для подключения Redis нужно объединить контейнеры в одну Docker сеть
// Дополнительные настройки
'default_phone_region' => 'RU',
'maintenance_window_start' => 3,
// Доверенные домены
'trusted_domains' => array(
0 => 'localhost',
1 => 'office.clientright.ru',
2 => 'office.clientright.ru:8443',
3 => 'office.klientprav.tech',
4 => 'office.klientprav.tech:8443',
),
```
### 3. Настроен Redis для ускорения работы
**Проблема:** Контейнеры `nextcloud-fresh` и `nextcloud-redis` изначально находились в разных Docker сетях.
**Решение:** Подключили Redis к той же сети и настроили кэширование:
```bash
# Подключение Redis к сети Nextcloud
docker network connect root_nextcloud-network nextcloud-redis
# Настройка кэширования
docker exec -u www-data nextcloud-fresh php occ config:system:set memcache.distributed --value="\\OC\\Memcache\\Redis"
docker exec -u www-data nextcloud-fresh php occ config:system:set memcache.locking --value="\\OC\\Memcache\\Redis"
docker exec -u www-data nextcloud-fresh php occ config:system:set redis host --value="nextcloud-redis"
docker exec -u www-data nextcloud-fresh php occ config:system:set redis port --value=6379 --type=integer
# Перезапуск Nextcloud
docker restart nextcloud-fresh
```
**Результат:**
- ✅ Redis 7.4.6 работает корректно
- ✅ 7 активных подключений
- ✅ Используется для распределенного кеша и блокировок файлов
- ✅ APCu используется для локального кеша
- 🔥 Значительное ускорение работы Nextcloud
### 4. Выполнены команды оптимизации
```bash
# Добавлены отсутствующие индексы для производительности
docker exec -u www-data nextcloud-fresh php occ db:add-missing-indices
# Выполнена миграция mimetype и другие исправления
docker exec -u www-data nextcloud-fresh php occ maintenance:repair --include-expensive
```
### 5. Перезапущены службы
```bash
# Перезагрузка nginx
nginx -t
systemctl reload nginx
# Перезапуск Nextcloud
docker restart nextcloud-fresh
```
## Текущее состояние
**HTTPS работает корректно** на `https://office.clientright.ru:8443`
**SSL сертификат:** Let's Encrypt (действителен до 30 декабря 2025)
**Nextcloud понимает**, что работает через HTTPS прокси
**Redis настроен** для кэширования и блокировок файлов (версия 7.4.6)
**APCu настроен** для локального кэширования
**Индексы БД добавлены** для производительности
**HSTS включён** (max-age=63072000)
**Secure cookies** установлены
**Collabora Online** работает корректно
## Исправление "Socket proxy error"
**Проблема:** После настройки HTTPS возникала ошибка "Socket proxy error: Timed out opening local socket: 99"
**Причина:** Встроенный CODE Server (richdocumentscode) не мог открыть локальный сокет на порту 9983
**Решение 1:** Переключились на внешний Collabora Online на порту 9980
**Решение 2:** Настроили правильные URL для внутреннего и внешнего подключения:
```bash
# Внутренний URL для подключения Nextcloud → Collabora (через Docker сеть)
docker exec -u www-data nextcloud-fresh php occ config:app:set richdocuments wopi_url --value="http://collabora-fresh:9980"
# Публичный URL для подключения Браузер → Collabora (через nginx)
docker exec -u www-data nextcloud-fresh php occ config:app:delete richdocuments public_wopi_url
docker exec -u www-data nextcloud-fresh php occ config:app:set richdocuments public_wopi_url --value="https://office.clientright.ru:8443"
# Отключение проверки сертификата для внутреннего подключения
docker exec -u www-data nextcloud-fresh php occ config:app:set richdocuments disable_certificate_verification --value="yes"
# Перезапуск Nextcloud
docker restart nextcloud-fresh
```
**Результат:**
- ✅ Collabora Online Development Edition 25.04.5.3 обнаружен
- ✅ Поддержка: doc, docx, odt, xls, xlsx, ppt, pptx и др.
- ✅ Редактирование документов работает
## Оставшиеся предупреждения
⚠️ **Высокопроизводительный сервер для Nextcloud Talk** - требуется настройка отдельно, если планируется использовать видеозвонки с более чем 2-3 участниками
⚠️ **Настройка почтового сервера** - можно настроить в админке Nextcloud для отправки уведомлений
⚠️ **Версия MariaDB 12.0.2** - рекомендуется 10.6-11.4, но текущая версия работает стабильно
## Доступ к Nextcloud
- **HTTP:** http://office.clientright.ru → автоматический редирект на HTTPS
- **HTTPS:** https://office.clientright.ru:8443 ✅
- **Альтернативный домен:** office.klientprav.tech:8443
## Docker контейнеры
```bash
docker ps | grep nextcloud
# nextcloud-fresh - основной контейнер Nextcloud на порту 8082
# nextcloud-db-fresh - MariaDB база данных
# nextcloud-redis - Redis для кэширования
```
## Примечание о порте 443
Стандартный HTTPS порт 443 занят основным CRM сайтом (`crm.clientright.ru`).
Если в будущем понадобится перенести Nextcloud на порт 443, нужно будет настроить виртуальные хосты nginx для разделения трафика по `server_name`.
## Резервная копия
Исходные файлы сохранены:
- `/tmp/nextcloud_config_fixed.php` - новый config.php
- `/etc/nginx/fastpanel2-sites/office.clientright.ru.ssl.conf.backup` - старый nginx конфиг