Базовое развертывание
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 не будет запрашивать их повторно, а сразу завершит установку и откроет чистый дашборд.
~/nextcloud/data на хост-системе.
Нет комментариев для отображения
Нет комментариев для отображения