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

Базовое развертывание

Архитектура сборки: Наша конфигурация состоит из трех контейнеров: сам Nextcloud (веб-приложение), база данных PostgreSQL (для высокой производительности) и Redis (для кэширования памяти и блокировки файлов, что критически ускоряет работу интерфейса).

Шаг 1. Подготовка окружения и директорий

Для порядка в системе создадим отдельную директорию под проект, где будут храниться конфигурационные файлы и базы данных:

mkdir -p ~/nextcloud/data
cd ~/nextcloud

Шаг 2. Создание файла конфигурации docker-compose.yml

Создайте файл манифеста:

nano docker-compose.yml

Вставьте в него следующее содержимое (не забудьте поменять пароли POSTGRES_PASSWORD на свои надежные комбинации):

version: '3.8'

services:
  db:
    image: postgres:15-alpine
    container_name: nextcloud-db
    restart: always
    volumes:
      - ./db:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=nextcloud
      - POSTGRES_USER=nextcloud
      - POSTGRES_PASSWORD=your_secure_db_password_here
    networks:
      - nextcloud_net

  redis:
    image: redis:alpine
    container_name: nextcloud-redis
    restart: always
    networks:
      - nextcloud_net

  app:
    image: nextcloud:stable
    container_name: nextcloud-app
    restart: always
    ports:
      - "127.0.0.1:8080:80"
    volumes:
      - ./data:/var/www/html
    environment:
      - POSTGRES_HOST=db
      - POSTGRES_DB=nextcloud
      - POSTGRES_USER=nextcloud
      - POSTGRES_PASSWORD=your_secure_db_password_here
      - REDIS_HOST=redis
    depends_on:
      - db
      - redis
    networks:
      - nextcloud_net

networks:
  nextcloud_net:
    driver: bridge
Важно: Порт приложения привязан к адресу 127.0.0.1:8080. Это значит, что Nextcloud будет доступен только внутри сервера, наружу в интернет он не «торчит». Защищенный доступ к нему мы настроим через Nginx на хосте.

Шаг 3. Запуск контейнеров

Запустите сборку в фоновом режиме (команда скачает образы и поднимет контейнеры):

docker compose up -d

Проверить, что все три контейнера успешно запустились и работают, можно командой:

docker ps

Шаг 4. Настройка Nginx на хосте (Reverse Proxy)

Теперь нужно сказать Nginx, чтобы он перенаправлял входящий трафик с вашего поддомена (например, cloud.homevault.su) на порт контейнера 8080.

1. Создайте новый конфигурационный файл для сайта:

sudo nano /etc/nginx/sites-available/nextcloud

2. Вставьте базовую конфигурацию (пропишите свой домен и пути к SSL-сертификатам):

server {
    listen 80;
    server_name cloud.homevault.su;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name cloud.homevault.su;

    ssl_certificate /etc/letsencrypt/live/homevault.su-0001/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/homevault.su-0001/privkey.pem;

    # Безопасность
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
    client_max_body_size 10G; # Максимальный размер загружаемого файла (измените при необходимости)

    # Обязательные редиректы для корректной работы мобильных клиентов Nextcloud (CalDAV/CardDAV)
    location = /.well-known/carddav { return 301 /remote.php/dav/; }
    location = /.well-known/caldav  { return 301 /remote.php/dav/; }

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded-for;
        proxy_set_header X-Forwarded-Proto https;
        
        # Для работы веб-сокетов
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
    }
}

3. Включите конфигурацию, создав симлинк, проверьте синтаксис Nginx и перезапустите его:

sudo ln -s /etc/nginx/sites-available/nextcloud /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Шаг 5. Первоначальная настройка через веб-интерфейс

1. Перейдите по адресу вашего настроенного домена (например, https://cloud.homevault.su).
2. Система встретит вас окном создания учетной записи администратора. Задайте логин и сложный пароль.
3. Так как параметры базы данных мы уже передали через переменные окружения в Docker, Nextcloud не будет запрашивать их повторно, а сразу завершит установку и откроет чистый дашборд.

Готово! Теперь у вас развернуто персональное производительное облако, защищенное внешним прокси-сервером Nginx. Все файлы физически будут храниться в папке ~/nextcloud/data на хост-системе.