# Nextcloud — скрипты развёртывания | Способ | Каталог | Статус | |--------|---------|--------| | **Docker** | [`docker/`](docker/) | Основной, отлажен и используется | | **Нативная** | [`native/`](native/) | Экспериментальная, **не отлаживалась** | 📖 **[Recommendation.md](Recommendation.md)** — настройки, хранилище, HTTPS, приложения, переустановка. --- ## Структура репозитория ``` nextcloud_install/ ├── README.md ├── Recommendation.md ├── lib/ │ └── 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 в контейнере) │ ├── disable-docker-ssl.sh │ ├── add-user.sh # Создание пользователя через occ │ ├── 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) ├── admin-ui/ # Управление пользователями (:3000) └── native/ # Установка в ОС (LAMP) — см. ниже ``` **Важно:** каталог `nextcloud_install` содержит только скрипты и шаблоны. Все данные Nextcloud (config, файлы, appdata) лежат **вне** репозитория — пути задаются в `docker/.env`. --- ## 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` | | **8443** | HTTPS | `./enable-docker-ssl.sh` + cert в `docker/certs/` | 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/*`. ### Установка ```bash cd nextcloud_install/docker chmod +x *.sh ./install.sh your.domain ``` HTTPS (после установки): ```bash cp /path/to/fullchain.pem certs/ cp /path/to/privkey.pem certs/ ./enable-docker-ssl.sh your.domain # https://your.domain:8443 ``` Переустановка: ```bash ./uninstall.sh --purge # yes rm -f .env ./setup-env.sh your.domain ./install.sh your.domain ./enable-docker-ssl.sh your.domain ``` Если видите ошибку про `CAN_INSTALL` или права на config: ```bash ./restore-config.sh --force ``` ### Ручные команды `docker compose` Скрипты сами подключают SSL-overlay, если есть файл `.ssl-enabled`. При ручном запуске **обязательно** работайте из `docker/`: ```bash cd nextcloud_install/docker 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истрация пользователей ```bash cd nextcloud_install/register-ui chmod +x start.sh ./start.sh ``` Откройте **http://ваш-сервер:3001** — пользователи создают аккаунт сами. В `register-ui/.env`: | Переменная | Пример | |---|---| | `NEXTCLOUD_URL` | `https://host:8443` | | `REGISTRATION_ADMIN_USER` | `admin` | | `REGISTRATION_ADMIN_PASSWORD` | из `docker/.env` | | `DEFAULT_QUOTA` | `5GB` | Отключить регистрацию: `REGISTRATION_ENABLED=false` --- ## Admin UI (для администратора) ```bash cd nextcloud_install/admin-ui ./start.sh ``` **http://127.0.0.1:3000** — квоты, группы, удаление пользователей. CLI: `docker/add-user.sh` --- ## 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 cd nextcloud_install/native 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/)