824 lines
32 KiB
Markdown
824 lines
32 KiB
Markdown
# Рекомендации по настройке 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)
|