обновление документации

This commit is contained in:
Илья Братских 2026-06-24 09:25:56 +03:00 committed by KBAHTNET
parent 45b8317707
commit 12c8e7a106
2 changed files with 246 additions and 41 deletions

169
README.md
View File

@ -1,39 +1,98 @@
# Nextcloud — скрипты развёртывания # Nextcloud — скрипты развёртывания
| Способ | Каталог | Когда выбирать | | Способ | Каталог | Статус |
|--------|---------|----------------| |--------|---------|--------|
| **Docker** | [`docker/`](docker/) | Быстрый старт, изоляция, простые обновления | | **Docker** | [`docker/`](docker/) | Основной, отлажен и используется |
| **Нативная** | [`native/`](native/) | Полная установка в ОС (LAMP) | | **Нативная** | [`native/`](native/) | Экспериментальная, **не отлаживалась** |
📖 **[Recommendation.md](Recommendation.md)** — настройки, хранилище, HTTPS, приложения. 📖 **[Recommendation.md](Recommendation.md)** — настройки, хранилище, HTTPS, приложения, переустановка.
## Структура ---
## Структура репозитория
``` ```
nextcloud_install/ nextcloud_install/
├── README.md ├── README.md
├── Recommendation.md ├── Recommendation.md
├── docker/ # Nextcloud в Docker ├── lib/
│ ├── install.sh │ └── common.sh # Общая логика Docker, config, compose, права
├── docker/ # Nextcloud в Docker (основной способ)
│ ├── install.sh # Установка стека
│ ├── setup-env.sh # Генерация .env с паролями
│ ├── install-docker.sh # Установка Docker Engine (sudo)
│ ├── start.sh / stop.sh / status.sh
│ ├── backup.sh / restore.sh
│ ├── restore-config.sh # Починка / сброс config.php
│ ├── uninstall.sh # Остановка; --purge удаляет volumes
│ ├── enable-docker-ssl.sh # HTTPS :8443 (cert в контейнере) │ ├── enable-docker-ssl.sh # HTTPS :8443 (cert в контейнере)
│ ├── add-user.sh │ ├── disable-docker-ssl.sh
│ ├── docker-compose.yml │ ├── add-user.sh # Создание пользователя через occ
│ └── certs/ # fullchain.pem, privkey.pem │ ├── docker-compose.yml # MariaDB + Redis + app + cron
│ ├── docker-compose.ssl.yml # Overlay HTTPS (подключается автоматически)
│ ├── Dockerfile.ssl # Образ Apache + mod_ssl
│ ├── .env.example # Шаблон переменных (копируется в .env)
│ ├── config.defaults/ # Шаблоны фрагментов config (не runtime-данные)
│ ├── templates/ # Шаблон Apache SSL
│ └── certs/ # fullchain.pem, privkey.pem (не в git)
├── register-ui/ # Самoregистрация пользователей (:3001) ├── register-ui/ # Самoregистрация пользователей (:3001)
├── admin-ui/ # Управление пользователями (:3000) ├── admin-ui/ # Управление пользователями (:3000)
└── native/ # Установка в систему └── native/ # Установка в ОС (LAMP) — см. ниже
``` ```
**Важно:** каталог `nextcloud_install` содержит только скрипты и шаблоны.
Все данные Nextcloud (config, файлы, appdata) лежат **вне** репозитория — пути задаются в `docker/.env`.
--- ---
## Docker — порты ## Docker — подкаталог `docker/`
### Сервисы (docker-compose.yml)
| Сервис | Контейнер | Назначение |
|--------|-----------|------------|
| `db` | `nextcloud-db` | MariaDB |
| `redis` | `nextcloud-redis` | Кэш и блокировки |
| `app` | `nextcloud-app` | Nextcloud (Apache + PHP) |
| `cron` | `nextcloud-cron` | Фоновые задачи |
### Порты
| Порт | Протокол | Назначение | | Порт | Протокол | Назначение |
|------|----------|------------| |------|----------|------------|
| **8080** | HTTP | `NEXTCLOUD_PORT` | | **8080** | HTTP | `NEXTCLOUD_PORT` |
| **8443** | HTTPS | `./enable-docker-ssl.sh` + cert в `docker/certs/` | | **8443** | HTTPS | `./enable-docker-ssl.sh` + cert в `docker/certs/` |
Reverse proxy **не используется** — Nextcloud напрямую. Reverse proxy **не используется** — Nextcloud доступен напрямую на этих портах.
### Хранение данных (в `.env`, вне репозитория)
| Переменная | Назначение | По умолчанию |
|---|---|---|
| `NEXTCLOUD_CONFIG_DIR` | config.php, фрагменты config | `/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` |
Docker volumes (удаляются при `./uninstall.sh --purge`): `nextcloud_db_data`, `nextcloud_app_data`, `nextcloud_redis_data`.
### Скрипты
| Скрипт | Назначение |
|--------|------------|
| `./setup-env.sh [домен]` | Создать `.env` с паролями и trusted domains |
| `./install.sh [домен]` | Полная установка (спросит пути хранения) |
| `./start.sh` / `./stop.sh` / `./status.sh` | Управление стеком |
| `./backup.sh` / `./restore.sh` | Резервное копирование / восстановление |
| `./restore-config.sh` | Починка config; `--force` — сброс и occ install |
| `./uninstall.sh` | Остановка; `--purge` — удаление volumes |
| `./enable-docker-ssl.sh` | HTTPS на :8443 |
| `./disable-docker-ssl.sh` | Вернуть HTTP-only |
| `./add-user.sh` | Создать пользователя через CLI |
Все docker-скрипты запускайте **без `sudo`**. Скрипт сам запросит sudo только для каталогов вроде `/var/nextcloud/*`.
### Установка ### Установка
@ -43,27 +102,23 @@ chmod +x *.sh
./install.sh your.domain ./install.sh your.domain
``` ```
Запускайте **без `sudo`**. Скрипт сам попросит sudo только для создания каталогов вроде `/var/nextcloud/*`. HTTPS (после установки):
Скрипт спросит пути (все **вне** `nextcloud_install`): ```bash
cp /path/to/fullchain.pem certs/
| Переменная | Назначение | По умолчанию | cp /path/to/privkey.pem certs/
|---|---|---| ./enable-docker-ssl.sh your.domain
| `NEXTCLOUD_CONFIG_DIR` | config.php, настройки | `/var/nextcloud/config` | # https://your.domain:8443
| `NEXTCLOUD_DATADIR` | Файлы пользователей | `/mnt/hgfs/nextcloud_data` | ```
| `NEXTCLOUD_APPDATA` | App Store, превью | `/var/nextcloud/appdata` |
| `NEXTCLOUD_CUSTOM_APPS` | Приложения из магазина | `/var/nextcloud/custom_apps` |
| `NEXTCLOUD_BACKUP_DIR` | Бэкапы | `/var/nextcloud/backups` |
`nextcloud_install` — только скрипты, compose, шаблоны (`config.defaults/`).
Переустановка: Переустановка:
```bash ```bash
./uninstall.sh --purge # удалит контейнеры и Docker volumes, backup старого config.php ./uninstall.sh --purge # yes
rm -f .env rm -f .env
./setup-env.sh your.domain ./setup-env.sh your.domain
./install.sh your.domain ./install.sh your.domain
./enable-docker-ssl.sh your.domain
``` ```
Если видите ошибку про `CAN_INSTALL` или права на config: Если видите ошибку про `CAN_INSTALL` или права на config:
@ -72,13 +127,27 @@ rm -f .env
./restore-config.sh --force ./restore-config.sh --force
``` ```
HTTPS: ### Ручные команды `docker compose`
Скрипты сами подключают SSL-overlay, если есть файл `.ssl-enabled`.
При ручном запуске **обязательно** работайте из `docker/`:
```bash ```bash
./enable-docker-ssl.sh your.domain cd nextcloud_install/docker
# https://your.domain:8443 export COMPOSE_FILE="$(pwd)/docker-compose.yml:$(pwd)/docker-compose.ssl.yml" # если SSL включён
docker compose ps
docker compose exec -u www-data app php occ status
``` ```
Без `cd` или `COMPOSE_FILE` появится ошибка: `no configuration file provided: not found`.
### config.defaults/ и certs/
- **`config.defaults/`** — шаблоны фрагментов (`redis.config.php`, `reverse-proxy.config.php` и т.д.). При установке копируются в `NEXTCLOUD_CONFIG_DIR`.
- **`certs/`** — сертификаты для `enable-docker-ssl.sh`. Файлы `*.pem` не попадают в git.
- **`.ssl-enabled`** — маркер включённого HTTPS; скрипты автоматически добавляют `docker-compose.ssl.yml`.
--- ---
## Самoregистрация пользователей ## Самoregистрация пользователей
@ -92,10 +161,13 @@ chmod +x start.sh
Откройте **http://ваш-сервер:3001** — пользователи создают аккаунт сами. Откройте **http://ваш-сервер:3001** — пользователи создают аккаунт сами.
В `register-ui/.env`: В `register-ui/.env`:
- `NEXTCLOUD_URL=https://host:8443`
- `REGISTRATION_ADMIN_USER=admin` | Переменная | Пример |
- `REGISTRATION_ADMIN_PASSWORD=...` (из `docker/.env`) |---|---|
- `DEFAULT_QUOTA=5GB` | `NEXTCLOUD_URL` | `https://host:8443` |
| `REGISTRATION_ADMIN_USER` | `admin` |
| `REGISTRATION_ADMIN_PASSWORD` | из `docker/.env` |
| `DEFAULT_QUOTA` | `5GB` |
Отключить регистрацию: `REGISTRATION_ENABLED=false` Отключить регистрацию: `REGISTRATION_ENABLED=false`
@ -114,15 +186,40 @@ CLI: `docker/add-user.sh`
--- ---
## Native ## Native (LAMP в системе)
> **Статус: не отлаживалось.**
> Скрипты в `native/` написаны как альтернатива Docker (Apache + MariaDB + PHP + Redis на Ubuntu/Debian), но в этом репозитории **не тестировались** на реальном окружении.
> Для production рекомендуется **`docker/`**.
Что есть в `native/`:
| Файл | Назначение |
|------|------------|
| `install.sh` | Установка пакетов, БД, Nextcloud в `/var/www/nextcloud` |
| `setup-env.sh` | Генерация `.env` |
| `start.sh` / `stop.sh` / `status.sh` | Управление сервисами |
| `backup.sh` / `restore.sh` | Бэкапы |
| `uninstall.sh` | Удаление |
| `templates/` | Шаблоны Apache, PHP, cron |
```bash ```bash
cd nextcloud_install/native cd nextcloud_install/native
./install.sh sudo ./install.sh your.domain
``` ```
Ожидаемые отличия от Docker (могут потребовать ручной доработки):
- SSL настраивается в Apache на хосте, не через `enable-docker-ssl.sh`
- Нет встроенного Redis/MariaDB в контейнерах — всё в системе
- Пути хранения другие (`NEXTCLOUD_INSTALL_DIR`, не `NEXTCLOUD_DATADIR`)
- Collabora, Talk HPB, register-ui/admin-ui — настраиваются вручную
Подробнее см. [Recommendation.md § Native](Recommendation.md#13-native-экспериментально).
--- ---
## Документация ## Документация
- [Recommendation.md](Recommendation.md) — практические рекомендации
- [Nextcloud Admin Manual](https://docs.nextcloud.com/server/latest/admin_manual/) - [Nextcloud Admin Manual](https://docs.nextcloud.com/server/latest/admin_manual/)

View File

@ -19,6 +19,8 @@
10. [HTTPS и свой SSL-сертификат](#10-https-docker--напрямую-на-портах-8080--8443) 10. [HTTPS и свой SSL-сертификат](#10-https-docker--напрямую-на-портах-8080--8443)
11. [Переустановка (Docker)](#11-переустановка-docker) 11. [Переустановка (Docker)](#11-переустановка-docker)
12. [Самoregистрация пользователей](#12-самoregистрация-пользователей) 12. [Самoregистрация пользователей](#12-самoregистрация-пользователей)
13. [Native (экспериментально)](#13-native-экспериментально)
14. [Collabora и Talk](#14-collabora-и-talk)
--- ---
@ -33,6 +35,18 @@ cd nextcloud_install/docker
docker compose exec -u www-data app php occ status 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:** **Native:**
```bash ```bash
cd nextcloud_install/native cd nextcloud_install/native
@ -520,6 +534,8 @@ cp /path/to/privkey.pem certs/
### Native (без Docker) ### Native (без Docker)
> См. [§13 Native (экспериментально)](#13-native-экспериментально) — вариант не отлаживался в этом репозитории.
SSL настраивается в Apache на хосте — см. [example_ubuntu](https://docs.nextcloud.com/server/latest/admin_manual/installation/example_ubuntu.html). SSL настраивается в Apache на хосте — см. [example_ubuntu](https://docs.nextcloud.com/server/latest/admin_manual/installation/example_ubuntu.html).
--- ---
@ -691,14 +707,106 @@ chmod +x start.sh
--- ---
## 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 | | [README.md](README.md) | Установка Docker / Native, структура `docker/` |
| `docker/.env` | Порт, домены, PHP-лимиты | | `lib/common.sh` | Общая логика compose, config, прав |
| `native/.env` | Путь установки, домен Apache | | `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/backup.sh` / `native/backup.sh` | Резервные копии |
| `docker/restore-config.sh` | Восстановление config после сбоя | | `docker/restore-config.sh` | Восстановление config после сбоя |
| `docker/uninstall.sh --purge` | Удаление стека (см. §11) | | `docker/uninstall.sh --purge` | Удаление стека (см. §11) |