Nextcloud даёт вам синхронизацию файлов, календари, контакты и редактирование документов на сервере, который вы контролируете, вместо передачи ваших файлов крупному облачному провайдеру. Вот как запустить его на VPS с помощью Docker Compose.
Перед началом
- Для комфортного старта подойдёт VPS с 2 vCPU и 4 ГБ ОЗУ. Главное ограничение — хранилище, поэтому выберите размер диска под ваши файлы.
- Домен, указывающий на сервер, как описано в нашем руководстве по DNS.
- Установленный Docker, см. установка Docker на Ubuntu.
1. Файл Compose
mkdir -p ~/nextcloud && cd ~/nextcloud
cat > compose.yaml <<'EOF'
services:
db:
image: mariadb:11
restart: unless-stopped
command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
environment:
MYSQL_ROOT_PASSWORD: change-me-root
MYSQL_PASSWORD: change-me-db
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
volumes:
- db:/var/lib/mysql
redis:
image: redis:7-alpine
restart: unless-stopped
app:
image: nextcloud:stable
restart: unless-stopped
depends_on: [db, redis]
ports:
- "127.0.0.1:8080:80"
environment:
MYSQL_HOST: db
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD: change-me-db
REDIS_HOST: redis
volumes:
- nc:/var/www/html
volumes:
db:
nc:
EOF
docker compose up -d
Смените все три пароля перед запуском. Используйте длинные случайные строки.
2. Поставьте HTTPS перед сервисом
Добавьте серверный блок Nginx, проксирующий на 127.0.0.1:8080, затем запустите Certbot, как в нашем руководстве по Nginx. Блоку прокси нужны эти строки, чтобы Nextcloud видел правильный протокол и работали большие загрузки:
client_max_body_size 2G;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
}
3. Завершите настройку
Откройте ваш домен и создайте учётную запись администратора. Затем добавьте ваш домен в список доверенных и задайте параметры прокси:
docker compose exec -u www-data app php occ config:system:set trusted_domains 1 --value=cloud.example.com
docker compose exec -u www-data app php occ config:system:set overwriteprotocol --value=https
4. Поддерживайте его в порядке
- Обновления:
docker compose pull && docker compose up -d, по одной основной версии за раз. - Фоновые задачи: переключитесь на Cron в настройках администратора и добавьте запись cron на хосте, запускающую
cron.phpкаждые пять минут. - Резервные копии: сохраняйте оба тома и дамп базы данных. См. как сделать резервную копию VPS.
- Двухфакторный вход: включите приложение TOTP для каждой учётной записи.