Установка Nextcloud: Self-Hosted облачное хранилище и совместная работа
Установка Nextcloud с Docker, настройка Apache/Nginx, установка базы данных, SSL-сертификат, синхронизация файлов, магазин приложений и оптимизация производительности.
Содержание
Установка Nextcloud: Self-Hosted облачное хранилище и совместная работа
Nextcloud — это open-source, self-hosted альтернатива облачным хранилищам, таким как Google Drive, Dropbox и OneDrive. Помимо хранения и синхронизации файлов, он предлагает календарь, контакты, видеоконференции, редактирование документов и многое другое. В этом руководстве рассматривается установка Nextcloud с Docker Compose, настройка Nginx reverse proxy и оптимизация производительности.
Что такое Nextcloud?
Nextcloud — платформа для совместной работы, дающая вам полный контроль над данными:
- Хранение файлов: Неограниченное хранилище (ограничено только ёмкостью диска)
- Синхронизация: Клиенты для Windows, macOS, Linux, iOS, Android
- Магазин приложений: 200+ приложений (Nextcloud Talk, Calendar, Contacts, Office)
- Управление пользователями: Интеграция LDAP/AD, управление группами
- Безопасность: Сквозное шифрование, 2FA, журнал аудита
Системные требования
- Ubuntu 22.04 или Debian 12
- Минимум 2 ГБ ОЗУ (рекомендуется 4 ГБ)
- Минимум 20 ГБ диска (дополнительное место для хранения)
- Установлены Docker и Docker Compose
Установка с Docker Compose
Создание структуры каталогов
mkdir -p /opt/nextcloud/{data,db,redis}
cd /opt/nextcloud
Файл docker-compose.yml
version: '3.8'
services:
db:
image: postgres:16-alpine
container_name: nextcloud-db
restart: unless-stopped
environment:
POSTGRES_DB: nextcloud
POSTGRES_USER: nextcloud
POSTGRES_PASSWORD: надёжный-пароль-бд
volumes:
- ./db:/var/lib/postgresql/data
networks:
- nextcloud-net
redis:
image: redis:7-alpine
container_name: nextcloud-redis
restart: unless-stopped
command: redis-server --requirepass пароль-redis
volumes:
- ./redis:/data
networks:
- nextcloud-net
app:
image: nextcloud:28-fpm-alpine
container_name: nextcloud-app
restart: unless-stopped
depends_on:
- db
- redis
environment:
POSTGRES_HOST: db
POSTGRES_DB: nextcloud
POSTGRES_USER: nextcloud
POSTGRES_PASSWORD: надёжный-пароль-бд
NEXTCLOUD_ADMIN_USER: admin
NEXTCLOUD_ADMIN_PASSWORD: пароль-администратора
NEXTCLOUD_TRUSTED_DOMAINS: cloud.example.com
REDIS_HOST: redis
REDIS_HOST_PASSWORD: пароль-redis
PHP_MEMORY_LIMIT: 512M
PHP_UPLOAD_LIMIT: 10G
volumes:
- ./data:/var/www/html
networks:
- nextcloud-net
nginx:
image: nginx:alpine
container_name: nextcloud-nginx
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./data:/var/www/html:ro
- ./nginx.conf:/etc/nginx/nginx.conf:ro
- ./ssl:/etc/ssl/nextcloud:ro
depends_on:
- app
networks:
- nextcloud-net
cron:
image: nextcloud:28-fpm-alpine
container_name: nextcloud-cron
restart: unless-stopped
volumes:
- ./data:/var/www/html
entrypoint: /cron.sh
depends_on:
- db
- redis
networks:
- nextcloud-net
networks:
nextcloud-net:
driver: bridge
SSL-сертификат
# Сертификат Let's Encrypt с Certbot
apt install certbot -y
certbot certonly --standalone -d cloud.example.com
# Копирование сертификатов
mkdir -p /opt/nextcloud/ssl
cp /etc/letsencrypt/live/cloud.example.com/fullchain.pem /opt/nextcloud/ssl/
cp /etc/letsencrypt/live/cloud.example.com/privkey.pem /opt/nextcloud/ssl/
# Автоматическое обновление через cron
echo "0 3 * * * certbot renew --quiet && cp /etc/letsencrypt/live/cloud.example.com/*.pem /opt/nextcloud/ssl/ && docker restart nextcloud-nginx" | crontab -
Запуск Nextcloud
cd /opt/nextcloud
docker compose up -d
# Следить за логами
docker compose logs -f app
# После установки откройте:
# https://cloud.example.com
Команды occ
Управляйте Nextcloud с помощью инструмента командной строки occ:
# Выполнение команды occ
docker exec -u www-data nextcloud-app php occ [команда]
# Проверка статуса системы
docker exec -u www-data nextcloud-app php occ status
# Переключение режима обслуживания
docker exec -u www-data nextcloud-app php occ maintenance:mode --on
docker exec -u www-data nextcloud-app php occ maintenance:mode --off
# Добавление отсутствующих индексов
docker exec -u www-data nextcloud-app php occ db:add-missing-indices
# Сканирование файлов (обнаружение новых файлов)
docker exec -u www-data nextcloud-app php occ files:scan --all
# Очистка кэша
docker exec -u www-data nextcloud-app php occ cache:clear
# Список пользователей
docker exec -u www-data nextcloud-app php occ user:list
Установка приложений
# Список доступных приложений
docker exec -u www-data nextcloud-app php occ app:list
# Установка приложений
docker exec -u www-data nextcloud-app php occ app:install calendar
docker exec -u www-data nextcloud-app php occ app:install contacts
docker exec -u www-data nextcloud-app php occ app:install talk
docker exec -u www-data nextcloud-app php occ app:install onlyoffice
Оптимизация производительности
Кэширование Redis
Redis уже настроен в docker-compose.yml. Добавьте в конфигурацию Nextcloud:
docker exec -u www-data nextcloud-app php occ config:system:set redis host --value="redis"
docker exec -u www-data nextcloud-app php occ config:system:set redis port --value=6379 --type=integer
docker exec -u www-data nextcloud-app php occ config:system:set redis password --value="пароль-redis"
docker exec -u www-data nextcloud-app php occ config:system:set memcache.local --value="\\OC\\Memcache\\APCu"
docker exec -u www-data nextcloud-app php occ config:system:set memcache.distributed --value="\\OC\\Memcache\\Redis"
docker exec -u www-data nextcloud-app php occ config:system:set memcache.locking --value="\\OC\\Memcache\\Redis"
Настройки безопасности
# Добавление доверенного домена
docker exec -u www-data nextcloud-app php occ config:system:set trusted_domains 1 --value="cloud.example.com"
# Защита от брутфорса
docker exec -u www-data nextcloud-app php occ config:system:set auth.bruteforce.protection.enabled --value=true --type=boolean
# Принудительное использование 2FA
docker exec -u www-data nextcloud-app php occ twofactorauth:enforce --on
Рекомендуем использовать SSD-хранилище для Nextcloud на серверах REXE. Производительность NVMe SSD имеет критическое значение при передаче больших файлов.
Связанные статьи
Установка Coolify: Развёртывание приложений с Self-Hosted PaaS
Установка Coolify, интеграция Docker и Git, развёртывание приложений, управление базами данных, SSL-сертификаты, переменные окружения и self-hosted PaaS как альтернатива Heroku/Netlify.
Управление Docker с Portainer: Веб-интерфейс для контейнеров
Установка Portainer CE, управление Docker и Kubernetes, развёртывание стеков, управление томами/сетями, авторизация пользователей, вебхуки и интеграция GitOps.
Установка Uptime Kuma: Self-Hosted мониторинг доступности
Установка Uptime Kuma с Docker, мониторинг HTTP/TCP/DNS/ping, интеграции уведомлений (Telegram, Discord, email), создание страницы статуса и настройка оповещений.