nextcloud-install/Recommendation.md

824 lines
32 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Рекомендации по настройке Nextcloud
Практическое руководство для развёртываний из этого репозитория (`docker/` и `native/`):
важные настройки, расширение хранилища, HTTPS и работа со **своим SSL-сертификатом**.
---
## Содержание
1. [Первые шаги после установки](#1-первые-шаги-после-установки)
2. [Важные настройки администратора](#2-важные-настройки-администратора)
3. [Расширение хранилища](#3-расширение-хранилища)
4. [Производительность](#4-производительность)
5. [Безопасность](#5-безопасность)
6. [Email и уведомления](#6-email-и-уведомления)
7. [Полезные приложения](#7-полезные-приложения)
8. [Мониторинг и обслуживание](#8-мониторинг-и-обслуживание)
9. [Резервное копирование](#9-резервное-копирование)
10. [HTTPS и свой SSL-сертификат](#10-https-docker--напрямую-на-портах-8080--8443)
11. [Переустановка (Docker)](#11-переустановка-docker)
12. [Самoregистрация пользователей](#12-самoregистрация-пользователей)
13. [Native (экспериментально)](#13-native-экспериментально)
14. [Collabora и Talk](#14-collabora-и-talk)
---
## 1. Первые шаги после установки
### Проверка статуса
**Docker:**
```bash
cd nextcloud_install/docker
./status.sh
docker compose exec -u www-data app php occ status
```
**Ручной `docker compose`:** работайте из каталога `docker/` или задайте `COMPOSE_FILE`.
Если включён HTTPS (есть файл `.ssl-enabled`), нужны оба compose-файла:
```bash
cd nextcloud_install/docker
export COMPOSE_FILE="$(pwd)/docker-compose.yml:$(pwd)/docker-compose.ssl.yml"
docker compose exec -u www-data app php occ status
```
Без этого — ошибка `no configuration file provided: not found`.
Скрипты (`install.sh`, `start.sh`, …) подставляют `COMPOSE_FILE` автоматически.
**Native:**
```bash
cd nextcloud_install/native
./status.sh
sudo -u www-data php /var/www/nextcloud/occ status
```
### Что должно быть «зелёным» в админке
Откройте **Настройки → Администрирование → Обзор** и убедитесь:
| Проверка | Ожидание |
|----------|----------|
| Фоновые задачи | **Cron** (настроено скриптами установки) |
| HTTPS | Включён для production |
| Redis | Подключён |
| Версия PHP | Поддерживаемая (см. [system requirements](https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html)) |
| Заголовки безопасности | Без критичных предупреждений |
### Доверенные домены
В `.env` (Docker) или `native/.env` — значение с пробелами **в двойных кавычках**:
```env
NEXTCLOUD_TRUSTED_DOMAINS="localhost 127.0.0.1 cloud.example.com"
```
Через CLI:
```bash
occ config:system:set trusted_domains 0 --value="localhost"
occ config:system:set trusted_domains 1 --value="127.0.0.1"
occ config:system:set trusted_domains 2 --value="cloud.example.com"
```
---
## 2. Важные настройки администратора
### Разделы админ-панели
| Раздел | Назначение |
|--------|------------|
| **Обзор** | Диагностика, предупреждения |
| **Безопасность и параметры входа** | 2FA, политика паролей, bruteforce |
| **Общие** | URL сервера, язык, лимиты |
| **Хранилище** | Квоты пользователей и групп |
| **Основные параметры сервера** | Email, логирование |
| **Приложения** | Установка расширений |
### Часто используемые команды `occ`
```bash
# Список пользователей
occ user:list
# Создать пользователя
occ user:add bob --password-from-env
# (предварительно: export OC_PASS='...')
# Квота 50 GB
occ user:setting bob files quota 50GB
# Без лимита
occ user:setting bob files quota none
# Просмотр системных настроек
occ config:list system
# Проверка обновлений
occ update:check
occ upgrade
```
**Docker:** `docker compose exec -u www-data app php occ …`
**Native:** `sudo -u www-data php /var/www/nextcloud/occ …`
---
## 3. Расширение хранилища
### Уровень 1: Квота пользователя (не физический диск)
Ограничивает пользователя в Nextcloud, **не добавляет место на диске**.
```bash
occ user:setting alice files quota 50GB
```
Или: **Настройки → Пользователи → квота**.
---
### Уровень 2: Расширение диска / тома (основной способ)
Nextcloud использует каталог `data/` для файлов. Если на диске больше места — Nextcloud его увидит автоматически.
#### Docker (`nextcloud_install/docker`)
Данные по умолчанию в Docker volume **`nextcloud_app_data`**.
**Посмотреть расположение:**
```bash
docker volume inspect nextcloud_app_data
df -h $(docker volume inspect nextcloud_app_data -f '{{.Mountpoint}}')
```
**Варианты:**
| Способ | Когда |
|--------|-------|
| Увеличить диск VPS/VM | Облако |
| Расширить LVM/partition | `lvextend` + `resize2fs` |
| Bind mount на большой раздел | Нужен явный путь на хосте |
**Перенос data на отдельный диск (bind mount):**
1. `./backup.sh`
2. `./stop.sh`
3. Скопировать данные:
```bash
sudo mkdir -p /mnt/bigdisk/nextcloud-data
sudo rsync -aH \
$(docker volume inspect nextcloud_app_data -f '{{.Mountpoint}}')/ \
/mnt/bigdisk/nextcloud-data/
```
4. В `.env` задайте путь:
```env
NEXTCLOUD_DATADIR=/mnt/bigdisk/nextcloud-data
```
5. `./start.sh`
> После bind mount файлы пользователей лежат на хосте в каталоге из `NEXTCLOUD_DATADIR`.
#### Перенос data ещё раз или очистка и запуск в новом месте (Docker)
Файлы пользователей — это каталог на хосте из **`NEXTCLOUD_DATADIR`** (сейчас по умолчанию `/mnt/hgfs/nextcloud_data`).
Пользователи, shares и метаданные — в **MariaDB**. Код Nextcloud — в volume **`nextcloud_app_data`**.
---
**Сценарий A — перенести файлы в другое место (всё сохранить)**
```bash
cd nextcloud_install/docker
# 1. Бэкап (рекомендуется)
./backup.sh
# 2. Остановить стек
./stop.sh
# 3. Скопировать data из старого пути в новый
OLD=/mnt/hgfs/nextcloud_data # текущий NEXTCLOUD_DATADIR
NEW=/mnt/bigdisk/nextcloud_data # новый путь
sudo mkdir -p "$NEW"
sudo rsync -aH "$OLD/" "$NEW/"
sudo chown -R 33:33 "$NEW"
# 4. Обновить .env
# NEXTCLOUD_DATADIR=/mnt/bigdisk/nextcloud_data
# 5. Запустить
./start.sh
# 6. Пересканировать файлы
docker compose exec -u www-data app php occ files:scan --all
```
Старый каталог `$OLD` можно удалить **после проверки**, что Nextcloud открывается и файлы на месте.
---
**Сценарий B — очистить файлы и указать новое пустое место (пользователи в Nextcloud остаются)**
Подходит, если нужен «пустой диск» для файлов, но логины/настройки сохранить.
```bash
cd nextcloud_install/docker
./stop.sh
# Новый пустой каталог
NEW=/mnt/newdisk/nextcloud_data
sudo rm -rf "$NEW"/* "$NEW"/.[!.]* 2>/dev/null || true
sudo mkdir -p "$NEW"
sudo chown -R 33:33 "$NEW"
# .env → NEXTCLOUD_DATADIR=/mnt/newdisk/nextcloud_data
./start.sh
docker compose exec -u www-data app php occ maintenance:mode --on
docker compose exec -u www-data app php occ files:scan --all
docker compose exec -u www-data app php occ maintenance:repair
docker compose exec -u www-data app php occ maintenance:mode --off
```
В веб-интерфейсе старые файлы могут ещё отображаться как «отсутствующие» — это записи в БД.
Чтобы убрать их полностью, удалите файлы через UI или очистите БД (сценарий C).
---
**Сценарий C — полный сброс (чистый Nextcloud с нуля)**
Удаляются контейнеры, Docker volumes (БД, код Nextcloud) и создаётся новая установка.
Подробные шаги — в разделе **[11. Переустановка (Docker)](#11-переустановка-docker)**.
---
**Шпаргалка: что где лежит** — см. [§11. Переустановка (Docker)](#11-переустановка-docker).
---
```bash
df -h /var/www/nextcloud/data
du -sh /var/www/nextcloud/data
```
**Перенос на другой диск:**
```bash
sudo ./backup.sh
sudo systemctl stop apache2
sudo mkdir -p /mnt/bigdisk/nextcloud-data
sudo rsync -aH /var/www/nextcloud/data/ /mnt/bigdisk/nextcloud-data/
# Вариант A: symlink
sudo mv /var/www/nextcloud/data /var/www/nextcloud/data.old
sudo ln -s /mnt/bigdisk/nextcloud-data /var/www/nextcloud/data
# Вариант B: правка config.php (предпочтительнее)
# 'datadirectory' => '/mnt/bigdisk/nextcloud-data',
sudo chown -R www-data:www-data /mnt/bigdisk/nextcloud-data
sudo systemctl start apache2
```
В `config/config.php`:
```php
'datadirectory' => '/mnt/bigdisk/nextcloud-data',
```
---
### Уровень 3: Внешнее хранилище
**Приложения → External storage support**
| Тип | Применение |
|-----|------------|
| **Local** | Доп. папка на сервере (`/mnt/archive`) |
| **S3 / MinIO** | Объектное хранилище |
| **SFTP / SMB** | Сетевые шары |
| **Primary storage (S3)** | Все файлы сразу в S3 (сложная настройка) |
Для архива и редко используемых файлов — external storage.
Для основного объёма — расширение `data/` или S3 primary storage.
**S3 primary storage** (только на новой установке или после полной миграции):
```php
'objectstore' => [
'class' => '\\OC\\Files\\ObjectStore\\S3',
'arguments' => [
'bucket' => 'nextcloud',
'key' => 'ACCESS_KEY',
'secret' => 'SECRET_KEY',
'hostname' => 's3.example.com',
'port' => 443,
'use_ssl' => true,
'region' => 'us-east-1',
],
],
```
---
### Схема выбора
```
Нужно больше места?
│
├─ Ограничить пользователя → occ user:setting … quota
│
├─ Закончился диск сервера → расширить раздел / volume
│
├─ Есть второй диск → bind mount / datadirectory
│
└─ Облако / S3 → External storage или S3 primary
```
---
## 4. Производительность
### Уже настроено скриптами установки
- **Redis** — распределённый кэш и блокировки
- **Cron** — фоновые задачи каждые 5 минут
- **PHP** — лимиты в `.env` (`PHP_MEMORY_LIMIT`, `PHP_UPLOAD_LIMIT`)
### Дополнительный тюнинг
```bash
occ config:system:set memcache.local --value="\OC\Memcache\APCu"
occ config:system:set memcache.distributed --value="\OC\Memcache\Redis"
occ config:system:set memcache.locking --value="\OC\Memcache\Redis"
```
| Параметр | Рекомендация |
|----------|--------------|
| `PHP_MEMORY_LIMIT` | 512M–1024M |
| `PHP_UPLOAD_LIMIT` | По max. размеру файлов (напр. 10G) |
| Preview Generator | App для предгенерации миниатюр |
| `occ files:scan` | После переноса data |
**Preview Generator:**
```bash
occ app:install previewgenerator
occ config:app:set previewgenerator squareSizes --value="256 512"
occ config:system:set enable_previews --value=true --type=boolean
```
---
## 5. Безопасность
### Минимум для production
- [ ] HTTPS (см. [раздел 10](#10-https-и-свой-ssl-сертификат))
- [ ] Сильные пароли (в `.env` генерируются автоматически)
- [ ] Двухфакторная аутентификация (2FA)
- [ ] Регулярные обновления (`occ upgrade`)
- [ ] Бэкапы (скрипты `backup.sh`)
### Режим обслуживания
```bash
occ maintenance:mode --on # перед обновлением / восстановлением
occ maintenance:mode --off
```
### Server-side encryption
Шифрование на стороне сервера **необратимо без ключей восстановления**.
Включайте только если понимаете процедуру recovery key.
### Bruteforce
Nextcloud блокирует IP при переборе паролей. Логи:
```bash
occ security:bruteforce:attempts 203.0.113.10
```
Дополнительно можно поставить **fail2ban** на Apache/Nginx.
---
## 6. Email и уведомления
**Настройки → Основные → Сервер исходящей почты**
Или в `config/config.php`:
```php
'mail_smtpmode' => 'smtp',
'mail_smtphost' => 'smtp.example.com',
'mail_smtpport' => 587,
'mail_smtpsecure' => 'tls',
'mail_smtpauth' => 1,
'mail_smtpname' => 'nextcloud@example.com',
'mail_smtppassword' => 'secret',
'mail_from_address' => 'nextcloud',
'mail_domain' => 'example.com',
```
Проверка:
```bash
occ mail:test --account admin
```
---
## 7. Полезные приложения
```bash
occ app:list
occ app:install groupfolders
occ app:install previewgenerator
```
| Приложение | Назначение |
|------------|------------|
| **Group folders** | Общие папки для команд |
| **External storage** | S3, SMB, SFTP |
| **Preview generator** | Быстрые превью |
| **Quota warning** | Уведомления о заполнении |
| **Calendar / Contacts** | CalDAV / CardDAV |
| **Office** | Collabora / ONLYOFFICE |
---
## 8. Мониторинг и обслуживание
```bash
# Место на диске
df -h
# Docker: размер data
du -sh $(docker volume inspect nextcloud_app_data -f '{{.Mountpoint}}')
# Native
du -sh /var/www/nextcloud/data
# Пересканировать файлы (после переноса)
occ files:scan --all
# Статус
occ status
```
В админке: **Настройки → Системная информация**.
---
## 9. Резервное копирование
### Что обязательно бэкапить
| Компонент | Содержимое |
|-----------|------------|
| **База данных** | Пользователи, метаданные, shares |
| **`NEXTCLOUD_DATADIR`** | Файлы пользователей |
| **`NEXTCLOUD_CONFIG_DIR`** | config.php и фрагменты настроек |
| **`NEXTCLOUD_APPDATA`** | App Store, превью, аватары |
| **`NEXTCLOUD_CUSTOM_APPS`** | Приложения из магазина |
### Скрипты этого репозитория
```bash
# Docker
cd nextcloud_install/docker && ./backup.sh
# Native
cd nextcloud_install/native && sudo ./backup.sh
```
Архивы сохраняются в **`NEXTCLOUD_BACKUP_DIR`** (по умолчанию `/var/nextcloud/backups/`).
**Копируйте их на внешнее хранилище.**
### Восстановление
```bash
./restore.sh backups/nextcloud_*_YYYY-MM-DD_*.tar.gz
```
### Рекомендуемая периодичность
| Тип | Частота |
|-----|---------|
| Полный бэкап | Ежедневно |
| Проверка restore | Раз в квартал на тестовой машине |
| Offsite-копия | Сразу после бэкапа (rsync, S3, Borg и т.д.) |
---
## 10. HTTPS (Docker — напрямую на портах 8080 / 8443)
Reverse proxy **не используется**. Nextcloud доступен напрямую:
| Порт | Протокол | Назначение |
|------|----------|------------|
| **8080** | HTTP | `NEXTCLOUD_PORT` в `.env` |
| **8443** | HTTPS | `NEXTCLOUD_HTTPS_PORT`, сертификат внутри Docker |
### Включить HTTPS в Docker
```bash
cd nextcloud_install/docker
cp /path/to/fullchain.pem certs/
cp /path/to/privkey.pem certs/
./enable-docker-ssl.sh your.domain
```
Скрипт монтирует `certs/` в контейнер и настраивает Apache + mod_ssl.
Отключить: `./disable-docker-ssl.sh`
### Native (без Docker)
> См. [§13 Native (экспериментально)](#13-native-экспериментально) — вариант не отлаживался в этом репозитории.
SSL настраивается в Apache на хосте — см. [example_ubuntu](https://docs.nextcloud.com/server/latest/admin_manual/installation/example_ubuntu.html).
---
## 11. Переустановка (Docker)
Каталог **`nextcloud_install`** — только скрипты развёртывания.
Все данные Nextcloud лежат **вне** него, пути задаются в `.env` (при `./install.sh` скрипт спросит их интерактивно).
### Что где хранится
| Переменная в `.env` | Содержимое | По умолчанию |
|---------------------|------------|--------------|
| `NEXTCLOUD_CONFIG_DIR` | config.php, настройки | `/var/nextcloud/config` |
| `NEXTCLOUD_DATADIR` | Файлы пользователей | `/mnt/hgfs/nextcloud_data` |
| `NEXTCLOUD_APPDATA` | App Store, превью, аватары | `/var/nextcloud/appdata` |
| `NEXTCLOUD_CUSTOM_APPS` | Приложения из магазина | `/var/nextcloud/custom_apps` |
| `NEXTCLOUD_BACKUP_DIR` | Архивы `./backup.sh` | `/var/nextcloud/backups` |
| `NEXTCLOUD_INSTANCEID` | ID экземпляра (для mount appdata_*) | генерируется в `.env` |
В контейнере:
| Путь в контейнере | Источник |
|-------------------|----------|
| `/var/www/html/config` | `NEXTCLOUD_CONFIG_DIR` |
| `/var/www/html/data` | `NEXTCLOUD_DATADIR` |
| `/var/www/html/data/appdata_<ID>` | `NEXTCLOUD_APPDATA` |
| `/var/www/html/custom_apps` | `NEXTCLOUD_CUSTOM_APPS` |
Docker volumes (удаляются при `--purge`): **`nextcloud_db_data`** (MariaDB), **`nextcloud_app_data`** (код Nextcloud), **`nextcloud_redis_data`**.
### Важно перед установкой
**Запускайте скрипты БЕЗ `sudo`:** `./install.sh`, `./start.sh`, `./stop.sh`.
Скрипт сам запросит `sudo` только для создания каталогов в `/var/nextcloud/` и т.п.
```bash
cd nextcloud_install/docker
./install.sh cloud.example.com # не sudo ./install.sh
```
### Вариант A — полная переустановка (с нуля)
Удаляются контейнеры, БД, код Nextcloud в volume. Пользователи и настройки **не сохраняются**.
```bash
cd nextcloud_install/docker
./backup.sh # по желанию
./stop.sh
./uninstall.sh --purge # ответ: yes
# Очистить данные на хосте (если нужен чистый старт)
sudo rm -rf /var/nextcloud/appdata/* /var/nextcloud/custom_apps/*
# sudo rm -rf /mnt/hgfs/nextcloud_data/* # только если файлы пользователей не нужны
rm -f .env
./setup-env.sh cloud.example.com
./install.sh cloud.example.com # спросит пути; Enter = значения по умолчанию
./enable-docker-ssl.sh cloud.example.com
```
После `./setup-env.sh` запишите пароль admin из вывода (он же в `.env` → `NEXTCLOUD_ADMIN_PASSWORD`).
### Вариант B — переустановка с сохранением файлов пользователей
БД и config сбрасываются, но каталог **`NEXTCLOUD_DATADIR`** не трогаем:
```bash
cd nextcloud_install/docker
./backup.sh
./stop.sh
./uninstall.sh --purge
rm -f .env
./setup-env.sh cloud.example.com
./install.sh cloud.example.com
# NEXTCLOUD_DATADIR оставить тот же путь, что был раньше
./enable-docker-ssl.sh cloud.example.com
docker compose exec -u www-data app php occ files:scan --all
```
### Вариант C — только пересоздать config
Если config повреждён, нет прав, или в браузере «нужен CAN_INSTALL»:
```bash
cd nextcloud_install/docker
# Полный сброс config + переустановка через occ (рекомендуется)
./restore-config.sh --force
# Или сброс + веб-мастер в браузере (создаёт CAN_INSTALL)
./restore-config.sh --web
```
`--force` — очистит `NEXTCLOUD_CONFIG_DIR`, восстановит шаблоны, выставит права **www-data** и запустит `occ maintenance:install`.
`--web` — то же, но вместо occ создаёт файл `CAN_INSTALL` для установки через браузер.
Без флагов — только дополняет недостающие файлы и чинит права:
```bash
./restore-config.sh
```
### Что делает `./uninstall.sh --purge`
`--purge` удаляет Docker volumes с БД и кодом Nextcloud. Чтобы следующая установка не падала в ошибку
«нужен `CAN_INSTALL`», скрипт также делает backup старого `config.php` и удаляет активный `config.php`.
Остальные файлы и каталоги на хосте остаются.
| Удаляется | Не удаляется |
|-----------|--------------|
| Контейнеры Docker | `NEXTCLOUD_CONFIG_DIR` (кроме активного `config.php`) |
| Volume `nextcloud_db_data` | `NEXTCLOUD_DATADIR` |
| Volume `nextcloud_app_data` | `NEXTCLOUD_APPDATA` |
| Volume `nextcloud_redis_data` | `NEXTCLOUD_CUSTOM_APPS` |
| Файл `.env` (только если удалите вручную) | `NEXTCLOUD_BACKUP_DIR` |
### Важно после переустановки
1. **Доверенные домены** в `.env` — в кавычках:
```env
NEXTCLOUD_TRUSTED_DOMAINS="localhost 127.0.0.1 cloud.example.com"
```
2. **HTTPS:** `./enable-docker-ssl.sh your.domain` (порт 8443).
3. **register-ui / admin-ui:** обновите `NEXTCLOUD_URL` в их `.env`.
4. **App Store:** appdata должен быть на локальном диске, не на hgfs (`NEXTCLOUD_APPDATA`).
### Типичные проблемы
| Симптом | Решение |
|---------|---------|
| `Permission denied` при записи config | `./restore-config.sh --force` |
| Нет `config.php` | `./restore-config.sh --force` |
| «Нужен CAN_INSTALL» в браузере | `./restore-config.sh --force` или `./restore-config.sh --web` |
| Нет прав на config | `./restore-config.sh --force` (sudo для chown www-data) |
| `Failed opening required .../lib/versioncheck.php` | Запустите `./start.sh`: скрипт пересоздаст битый `nextcloud_app_data` |
| «Центр приложений» не открывается | Проверьте права на `NEXTCLOUD_APPDATA`, каталог не на hgfs |
| Trusted domains не работают | Проверьте кавычки в `.env` вокруг `NEXTCLOUD_TRUSTED_DOMAINS` |
---
## 12. Самoregистрация пользователей
Страница **`register-ui/`** — пользователи создают аккаунт сами:
```bash
cd nextcloud_install/register-ui
chmod +x start.sh
./start.sh
```
Откройте **http://ваш-сервер:3001**
Настройка в `register-ui/.env`:
| Переменная | Описание |
|------------|----------|
| `NEXTCLOUD_URL` | `https://host:8443` или `http://host:8080` |
| `REGISTRATION_ADMIN_USER` | admin (создаёт пользователей через API) |
| `REGISTRATION_ADMIN_PASSWORD` | пароль admin |
| `DEFAULT_QUOTA` | квота новых пользователей (`5GB`, `none`) |
| `REGISTRATION_ENABLED` | `true` / `false` |
| `ALLOWED_EMAIL_DOMAINS` | опционально: `company.com` |
Админ-панель для управления всеми пользователями: **`admin-ui/`** (порт 3000).
---
## 13. Native (экспериментально)
Каталог **`native/`** — установка Nextcloud напрямую в ОС (Apache + MariaDB + PHP + Redis на Ubuntu/Debian).
> **В этом репозитории native-вариант не отлаживался.**
> Скрипты могут работать, но не проходили полный цикл тестирования, переустановки и интеграции с Collabora/Talk/register-ui.
> Для production используйте **`docker/`**.
### Что есть
| Скрипт | Назначение |
|--------|------------|
| `native/install.sh` | Установка пакетов, БД, Nextcloud |
| `native/setup-env.sh` | Генерация `.env` |
| `native/backup.sh` / `restore.sh` | Бэкапы |
| `native/uninstall.sh` | Удаление |
| `native/templates/` | Apache vhost/subdir, PHP, cron |
### Ожидаемые отличия от Docker
| Аспект | Docker | Native |
|--------|--------|--------|
| Запуск | `./install.sh` без sudo | `sudo ./install.sh` |
| HTTPS | `./enable-docker-ssl.sh` (:8443) | Apache + certbot/Let's Encrypt на хосте |
| Данные | Пути в `docker/.env` | `NEXTCLOUD_INSTALL_DIR` (по умолчанию `/var/www/nextcloud`) |
| БД / Redis | Контейнеры | Системные сервисы |
| occ | `docker compose exec -u www-data app php occ …` | `sudo -u www-data php /var/www/nextcloud/occ …` |
### Если всё же используете native
1. Прочитайте `native/.env.example` и задайте `NEXTCLOUD_DOMAIN`, `APACHE_MODE` (`vhost` / `subdir`).
2. SSL — по [официальной инструкции Ubuntu](https://docs.nextcloud.com/server/latest/admin_manual/installation/example_ubuntu.html).
3. После установки проверьте cron, Redis, trusted domains — как в §1.
4. `register-ui` / `admin-ui` — укажите `NEXTCLOUD_URL` на ваш Apache URL.
При проблемах рекомендуется перейти на **`docker/`** — там описаны типичные ошибки и recovery-скрипты (§11).
---
## 14. Collabora и Talk
Эти компоненты **не входят** в базовую установку и настраиваются отдельно.
### Collabora (Nextcloud Office)
Приложения: `richdocuments` + `richdocumentscode` (Built-in CODE server).
После установки проверьте WOPI URL — он должен совпадать с тем, как пользователи заходят в Nextcloud:
```bash
cd nextcloud_install/docker
docker compose exec -u www-data app php occ config:app:get richdocuments wopi_url
```
Пример для HTTPS на :8443:
```bash
docker compose exec -u www-data app php occ config:app:set richdocuments wopi_url \
--value="https://cloud.example.com:8443/custom_apps/richdocumentscode/proxy.php?req="
docker compose exec -u www-data app php occ richdocuments:activate-config
```
**appdata** (`NEXTCLOUD_APPDATA`) должен быть на локальном диске, не на hgfs/NFS — иначе App Store и Collabora могут падать.
### Talk — High Performance Backend (HPB)
Сообщение «Еще не настроен сервер высокой нагрузки для talk» — это предупреждение, не ошибка.
Talk работает и без HPB, но для групповых звонков (4+ участников) нужен отдельный сервис:
- образ `ghcr.io/nextcloud-releases/aio-talk:latest`
- поддомен signaling (например `signal.example.com`) с WebSocket
- порты `3478/tcp+udp` (TURN) снаружи
Настройка в **Настройки → Администрирование → Talk** или через `occ config:app:set spreed …`.
Для HPB нужен **один стабильный canonical URL** Nextcloud (`overwrite.cli.url`), даже если обычный веб-доступ идёт по IP или другому имени.
### Circles / «Личная информация»
Ошибка `FederatedUser is not complete` на странице профиля обычно лечится корректным `overwrite.cli.url`:
```bash
docker compose exec -u www-data app php occ config:system:set overwrite.cli.url \
--value="https://cloud.example.com:8443"
docker compose exec -u www-data app php occ maintenance:repair
```
---
## Связанные файлы репозитория
| Файл / каталог | Назначение |
|----------------|------------|
| [README.md](README.md) | Установка Docker / Native, структура `docker/` |
| `lib/common.sh` | Общая логика compose, config, прав |
| `docker/.env` | Порт, домены, пути хранения, пароли |
| `docker/config.defaults/` | Шаблоны фрагментов config |
| `docker/docker-compose.yml` | MariaDB + Redis + app + cron |
| `docker/docker-compose.ssl.yml` | Overlay HTTPS (:8443) |
| `native/.env` | Путь установки, домен Apache (**не отлажено**) |
| `docker/backup.sh` / `native/backup.sh` | Резервные копии |
| `docker/restore-config.sh` | Восстановление config после сбоя |
| `docker/uninstall.sh --purge` | Удаление стека (см. §11) |
| `register-ui/` | Самoregистрация пользователей |
| `admin-ui/` | Управление пользователями (admin) |
| `docker/enable-docker-ssl.sh` | HTTPS на порту 8443 |
---
## Полезные ссылки
- [Администрирование Nextcloud](https://docs.nextcloud.com/server/latest/admin_manual/)
- [System requirements](https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html)
- [External storage](https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/external_storage_configuration_gui.html)