nextcloud-install/README.md

9.4 KiB
Raw Blame History

Nextcloud — скрипты развёртывания

Способ Каталог Статус
Docker docker/ Основной, отлажен и используется
Нативная native/ Экспериментальная, не отлаживалась

📖 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/*.

Установка

cd nextcloud_install/docker
chmod +x *.sh
./install.sh your.domain

HTTPS (после установки):

cp /path/to/fullchain.pem certs/
cp /path/to/privkey.pem   certs/
./enable-docker-ssl.sh your.domain
# https://your.domain:8443

Переустановка:

./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:

./restore-config.sh --force

Ручные команды docker compose

Скрипты сами подключают SSL-overlay, если есть файл .ssl-enabled.
При ручном запуске обязательно работайте из docker/:

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истрация пользователей

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 (для администратора)

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
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.


Документация