Перейти к основному содержимому

ALIMUSAEV — IT и 1С

C:\> type \instructions\linux\razvernut-nextcloud-cherez-docker.md

Развернуть Nextcloud через docker

НАЗНАЧЕНИЕ

Нужно развернуть сервер Nextcloud через docker на Debian и его производных.

ПРИМЕНЕНИЕ

Для организации облачного хранилища данных через Nextcloud. А также для оптимизации производительности.

УСЛОВИЕ

  • Debian-based дистрибутивы Linux в качестве хоста (можно и другие);

  • Доступность порта 8080 (или другого, если планируется сменить порт).

ШАГИ

  1. Провести первичные действия (за «#» будет комментарий к каждому действию):
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 и открываем
  1. Составить конфигурацию в 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:

После сохранить и выйти;

  1. Найти 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
  1. Отредактировать конфиг, добавив следующие параметры в самом начале вместо «‘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,
],

Сохранить и выйти;

  1. Запустить docker:
docker compose up -d
docker exec -u www-data nextcloud php occ status #проверяем статус подключения

Для выключения docker, если нужно править конфиги, ввести следующее:

docker compose down
  1. Для доступа из локальной сети или через 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-адрес написать другой
  1. Провести оптимизацию базы данных:
docker exec -u www-data nextcloud php occ db:add-missing-indices
docker exec -u www-data nextcloud php occ db:convert-filecache-bigint
  1. Открыть в веб-конфигураторе через http://192.168.1.2:8080 (ip-адрес и порт могут быть другими).

РЕЗУЛЬТАТ

Nextcloud через docker должен подняться без проблем по протоколу http. Остальное — дело дополнительных настроек, не входящие в рамки этой инструкции.

ТИПОВЫЕ ОШИБКИ

❌ Проблема: не установился docker, выдалась ошибка.

✅ Решение: проверить конфиг docker-compose.yml на наличие опечаток.


❌ Проблема: не дает отредактировать файл docker-compose.yml или запустить docker.

✅ Решение: нет прав — либо выполнять через sudo, либо от root.


❌ Проблема: не заходит на веб-конфигуратор — ничего не грузится.

✅ Решение: проверить состояние docker и его конфигурацию — возможно, что порт не тот или достаточно перезапустить контейнер.