| admin-ui | ||
| docker | ||
| lib | ||
| native | ||
| register-ui | ||
| check-sudo.sh | ||
| README.md | ||
| Recommendation.md | ||
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.
Документация
- Recommendation.md — практические рекомендации
- Nextcloud Admin Manual