Установка и настройка Nextcloud

Полный гайд по установке Nextcloud на Ubuntu с Docker: от структуры папок до настройки прав доступа для пользователя.

В этой статье подробно описывается процесс установки и настройки Nextcloud на Ubuntu с использованием Docker. Мы разберем создание структуры папок, настройку базы данных MariaDB, Redis, запуск самого Nextcloud, а также настройку прав доступа для пользователя nileverus.

Шаг 1: Подготовка структуры папок

				
					mkdir -p /mnt/hdd/docker/nextcloud
cd /mnt/hdd/docker/nextcloud
				
			

Структура папок должна соответствовать тем, что указаны в docker-compose.yml.

Шаг 2: Создание docker-compose.yml

				
					services:
  db:
    image: mariadb:10.11
    container_name: nextcloud-db
    restart: unless-stopped
    command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
    environment:
      MYSQL_ROOT_PASSWORD: root123
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
      MYSQL_PASSWORD: nextcloud123
    volumes:
      - ./db:/var/lib/mysql
    networks:
      - nextcloud-network
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      timeout: 20s
      retries: 10
  redis:
    image: redis:alpine
    container_name: nextcloud-redis
    restart: unless-stopped
    networks:
      - nextcloud-network
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      timeout: 20s
      retries: 10
  nextcloud:
    image: nextcloud:stable
    container_name: nextcloud
    restart: unless-stopped
    ports:
      - "8080:80"
    depends_on:
      db:
        condition: service_healthy
      redis:
        condition: service_healthy
    environment:
      MYSQL_HOST: db
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
      MYSQL_PASSWORD: nextcloud123
      REDIS_HOST: redis
      REDIS_PORT: 6379
      NEXTCLOUD_ADMIN_USER: admin
      NEXTCLOUD_ADMIN_PASSWORD: admin123
      NEXTCLOUD_TRUSTED_DOMAINS: "localhost ваш-ip-или-домен"
      PHP_MEMORY_LIMIT: 512M
      PHP_UPLOAD_LIMIT: 10G
      PHP_POST_MAX_SIZE: 10G
    volumes:
      - ./html:/var/www/html
      - ./data:/var/www/html/data
      - ./config:/var/www/html/config
      - ./apps:/var/www/html/custom_apps
      - /mnt/hdd/media:/mnt/hdd/media
    networks:
      - nextcloud-network
networks:
  nextcloud-network:
    driver: bridge
				
			

Шаг 3: Запуск Nextcloud

				
					cd /mnt/hdd/docker/nextcloud
docker compose up -d
				
			

После запуска откройте http://ваш-ip:8080 для доступа к Nextcloud.

Шаг 4: Настройка доменов

				
					sudo nano /mnt/hdd/docker/nextcloud/config/config.php
				
			

Найдите строку 'trusted_domains' и добавьте ваш IP-адрес:

				
					'trusted_domains' =>
  array (
    0 => 'localhost',
    1 => 'ваш-ip-адрес',
  ),
				
			

Шаг 5: Настройка прав доступа

				
					sudo usermod -aG www-data nileverus
				
			

После добавления в группу необходимо выйти из SSH/WinSCP и зайти заново.

				
					sudo setfacl -R -m u:nileverus:rwx /mnt/hdd/docker/nextcloud/data
sudo setfacl -R -d -m u:nileverus:rwx /mnt/hdd/docker/nextcloud/data
sudo find /mnt/hdd/docker/nextcloud/data -type d -exec setfacl -m u:nileverus:rwx,d:u:nileverus:rwx {} \;
sudo find /mnt/hdd/docker/nextcloud/data -type f -exec setfacl -m u:nileverus:rw {} \;
				
			

Шаг 6: Перезапуск сервисов

				
					cd /mnt/hdd/docker/nextcloud
docker compose restart