НАЗНАЧЕНИЕ
Нужно развернуть сервер Nextcloud через docker на Debian и его производных.
ПРИМЕНЕНИЕ
Для организации облачного хранилища данных через Nextcloud. А также для оптимизации производительности.
УСЛОВИЕ
-
Debian-based дистрибутивы Linux в качестве хоста (можно и другие);
-
Доступность порта 8080 (или другого, если планируется сменить порт).
ШАГИ
- Провести первичные действия (за «#» будет комментарий к каждому действию):
sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin nginx #установить docker, связанные с ним утилиты и веб-сервер nginx
sudo usermod -aG docker $USER && newgrp docker #дать самому себе права к docker
mkdir ~/nextcloud && cd ~/nextcloud #создать папку nextcloud и переходим на нее сразу
nano docker-compose.yml #создать конфигурацию docker для Nextcloud и открываем
- Составить конфигурацию в docker-compose.yml:
services:
nextcloud:
image: nextcloud:latest #либо последнюю, либо конкретную версию
container_name: nextcloud #имя контейнера
ports:
- '8080:80' #можем выбрать любой порт вместо 8080
environment:
- MYSQL_HOST=nextcloud_db #название сервера БД
- MYSQL_DATABASE=nextcloud #название самой БД
- MYSQL_USER=nextdbuser #имя пользователя БД
- MYSQL_PASSWORD=nextdbpass #пароль пользователя БД
- NEXTCLOUD_ADMIN_USER=nextwebuser #имя пользователя через веб
- NEXTCLOUD_ADMIN_PASSWORD=nextwebpass #пароль пользователя через веб
- PHP_UPLOAD_LIMIT=10G #объем памяти допустимой загрузки на облако
- PHP_MEMORY_LIMIT=1G #лимит памяти процесса PHP
- REDIS_HOST=redis #добавляем кэширование Redis
volumes:
- nextcloud_data:/var/www/html #каталог хранения данных Nextcloud
- ./nginx-upload.conf:/etc/nginx/conf.d/upload.conf #файл конфигурации nginx
depends_on:
- nextcloud_db
- redis #добавляем
restart: unless-stopped
redis: #добавляем
image: redis:alpine #добавляем
container_name: redis #добавляем
restart: unless-stopped #добавляем
nextcloud_db:
image: mariadb:10.11
container_name: nextcloud_db
environment:
- MYSQL_ROOT_PASSWORD=nextrootpass #пароль root на всякий случай
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextdbuser
- MYSQL_PASSWORD=nextdbpass
volumes:
- nextcloud_db_data:/var/lib/mysql #каталог хранения БД
restart: unless-stopped
volumes:
nextcloud_data:
nextcloud_db_data:
После сохранить и выйти;
- Найти config.php следующей командой:
docker inspect nextcloud | grep -A 2 "nextcloud_data"
Скорее всего, он будет в каталоге «/var/lib/docker/volumes/nextcloud_nextcloud_data/_data/config/config.php».
Открыть редактор:
sudo nano /var/lib/docker/volumes/nextcloud_nextcloud_data/_data/config/config.php
- Отредактировать конфиг, добавив следующие параметры в самом начале вместо «‘memcache.local’ => ‘\OC\Memcache\APCu’,»:
'memcache.local' => '\OC\Memcache\Redis',
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
'host' => 'redis',
'port' => 6379,
],
Сохранить и выйти;
- Запустить docker:
docker compose up -d
docker exec -u www-data nextcloud php occ status #проверяем статус подключения
Для выключения docker, если нужно править конфиги, ввести следующее:
docker compose down
- Для доступа из локальной сети или через VPN-туннель настроить доверенность домена:
sudo docker exec -it nextcloud php occ config:system:set trusted_domains 1 --value="192.168.1.2" #для локалки, ip-адрес прописать того сервера, на котором развернут nextcloud
sudo docker exec -it nextcloud php occ config:system:set trusted_domains 2 --value="10.10.0.2" #для VPN, ip-адрес написать другой
sudo docker exec -it nextcloud php occ config:system:set trusted_domains 3 --value="100.110.120.130" #если по белому ip, ip-адрес написать другой
- Провести оптимизацию базы данных:
docker exec -u www-data nextcloud php occ db:add-missing-indices
docker exec -u www-data nextcloud php occ db:convert-filecache-bigint
- Открыть в веб-конфигураторе через http://192.168.1.2:8080 (ip-адрес и порт могут быть другими).
РЕЗУЛЬТАТ
Nextcloud через docker должен подняться без проблем по протоколу http. Остальное — дело дополнительных настроек, не входящие в рамки этой инструкции.
ТИПОВЫЕ ОШИБКИ
❌ Проблема: не установился docker, выдалась ошибка.
✅ Решение: проверить конфиг docker-compose.yml на наличие опечаток.
❌ Проблема: не дает отредактировать файл docker-compose.yml или запустить docker.
✅ Решение: нет прав — либо выполнять через sudo, либо от root.
❌ Проблема: не заходит на веб-конфигуратор — ничего не грузится.
✅ Решение: проверить состояние docker и его конфигурацию — возможно, что порт не тот или достаточно перезапустить контейнер.



