OffshoreVps
Инструкции10 окт. 20269 мин чтенияАвтор: команда OffshoreVps

Nextcloud на собственном VPS с Docker Compose

Запустите собственное частное облако для файлов, календарей и контактов: файл Compose, обратный прокси HTTPS, доверенные домены, задания cron и резервные копии.

Nextcloud даёт вам синхронизацию файлов, календари, контакты и редактирование документов на сервере, который вы контролируете, вместо передачи ваших файлов крупному облачному провайдеру. Вот как запустить его на VPS с помощью Docker Compose.

Окно терминала на VPS с командами для размещения Nextcloud на собственном сервере, начиная с «mkdir -p ~/nextcloud && cd ~/nextcloud»
Примерно такие команды вы будете выполнять на своём сервере в этом руководстве.

Перед началом

  • Для комфортного старта подойдёт 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

Смените все три пароля перед запуском. Используйте длинные случайные строки.

Шаги этого руководства по порядку: 1. Перед началом; 2. 1. Файл Compose; 3. 2. Поставьте HTTPS впереди; 4. 3. Завершите настройку; 5. 4. Поддерживайте в порядке
Шаги этого руководства по порядку.

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 для каждой учётной записи.