Что такое Nextcloud
Nextcloud — популярная open-source платформа для создания собственного облачного хранилища и совместной работы.
Она позволяет хранить файлы, документы, фотографии, синхронизировать их между устройствами, а также использовать встроенные сервисы:
- календарь и задачи;
- видеоконференции (Nextcloud Talk);
- офисные документы (Nextcloud Office / Collabora);
- систему заметок и совместного редактирования.
Nextcloud часто называют самостоятельной альтернативой Google Workspace и Microsoft 365, которую можно полностью контролировать и размещать на своём сервере без зависимости от внешних облаков.
Что такое Nextcloud AIO
Nextcloud AIO (All-in-One) — официальная сборка Nextcloud, созданная разработчиками проекта для максимального упрощения установки и обновления.
В отличие от классической установки, где приходится вручную настраивать Apache/Nginx, PHP, Redis, MariaDB и Cron, AIO использует Docker и включает всё необходимое в контейнерах:
- Nextcloud (веб-интерфейс);
- PostgreSQL (база данных);
- Redis (кеширование);
- Collabora Online (редактирование документов);
- OnlyOffice (опционально);
- Backup-контейнер (автоматическое резервное копирование).
Главное преимущество AIO — автоматическое обновление всех компонентов и возможность развернуть рабочее облако всего за несколько минут.
Сборка идеально подходит для домашних серверов, LXC-контейнеров в Proxmox или VPS, где важны простота и стабильность.
Когда стоит использовать Nextcloud AIO?
Если вы хотите быстро развернуть Nextcloud с минимальными усилиями и без необходимости настройки отдельных компонентов.
Требования к установке
Перед началом убедитесь, что у вас установлены:
- Docker и Docker Compose (версии 2.0+);
- сервер с не менее чем 2 ГБ ОЗУ;
- доменное имя и доступ по HTTPS (желательно через Traefik, Caddy или Nginx Proxy Manager).
Docker Compose для Nextcloud AIO
Ниже приведён минимальный пример docker-compose.yml для запуска Nextcloud AIO с обратным прокси Traefik, как показано в ролике в начале статьи:
1services:2 nextcloud-aio-mastercontainer:3 image: nextcloud/all-in-one:latest4 init: true5 restart: always6 container_name: nextcloud-aio-mastercontainer # This line is not allowed to be changed as otherwise AIO will not work correctly7 volumes:8 - nextcloud_aio_mastercontainer:/mnt/docker-aio-config # This line is not allowed to be changed as otherwise the built-in backup solution will not work9 - /var/run/docker.sock:/var/run/docker.sock:ro # May be changed on macOS, Windows or docker rootless. See the applicable documentation. If adjusting, don't forget to also set 'WATCHTOWER_DOCKER_SOCKET_PATH'!10 #network_mode: bridge # add to the same network as docker run would do11 ports:12 #- 80:80 # Can be removed when running behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else). See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md13 - 8087:808014 #- 8443:8443 # Can be removed when running behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else). See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md15 environment: # Is needed when using any of the options below16 AIO_DISABLE_BACKUP_SECTION: false # Setting this to true allows to hide the backup section in the AIO interface. See https://github.com/nextcloud/all-in-one#how-to-disable-the-backup-section17 APACHE_PORT: 11000 # Is needed when running behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else). See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md18 APACHE_IP_BINDING: 0.0.0.0 # Should be set when running behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else) that is running on the same host. See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md19 BORG_RETENTION_POLICY: --keep-within=7d --keep-weekly=4 --keep-monthly=6 # Allows to adjust borgs retention policy. See https://github.com/nextcloud/all-in-one#how-to-adjust-borgs-retention-policy20 # COLLABORA_SECCOMP_DISABLED: false # Setting this to true allows to disable Collabora's Seccomp feature. See https://github.com/nextcloud/all-in-one#how-to-disable-collaboras-seccomp-feature21 NEXTCLOUD_DATADIR: /media/nextcloud # Allows to set the host directory for Nextcloud's datadir. ⚠️⚠️⚠️ Warning: do not set or adjust this value after the initial Nextcloud installation is done! See https://github.com/nextcloud/all-in-one#how-to-change-the-default-location-of-nextclouds-datadir22 NEXTCLOUD_MOUNT: /media # Allows the Nextcloud container to access the chosen directory on the host. See https://github.com/nextcloud/all-in-one#how-to-allow-the-nextcloud-container-to-access-directories-on-the-host23 # NEXTCLOUD_UPLOAD_LIMIT: 10G # Can be adjusted if you need more. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-upload-limit-for-nextcloud24 # NEXTCLOUD_MAX_TIME: 3600 # Can be adjusted if you need more. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-max-execution-time-for-nextcloud25 # NEXTCLOUD_MEMORY_LIMIT: 512M # Can be adjusted if you need more. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-php-memory-limit-for-nextcloud26 # NEXTCLOUD_TRUSTED_CACERTS_DIR: /path/to/my/cacerts # CA certificates in this directory will be trusted by the OS of the nexcloud container (Useful e.g. for LDAPS) See See https://github.com/nextcloud/all-in-one#how-to-trust-user-defined-certification-authorities-ca27 # NEXTCLOUD_STARTUP_APPS: deck twofactor_totp tasks calendar contacts notes # Allows to modify the Nextcloud apps that are installed on starting AIO the first time. See https://github.com/nextcloud/all-in-one#how-to-change-the-nextcloud-apps-that-are-installed-on-the-first-startup28 NEXTCLOUD_ADDITIONAL_APKS: imagemagick # This allows to add additional packages to the Nextcloud container permanently. Default is imagemagick but can be overwritten by modifying this value. See https://github.com/nextcloud/all-in-one#how-to-add-os-packages-permanently-to-the-nextcloud-container29 NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS: imagick # This allows to add additional php extensions to the Nextcloud container permanently. Default is imagick but can be overwritten by modifying this value. See https://github.com/nextcloud/all-in-one#how-to-add-php-extensions-permanently-to-the-nextcloud-container30 # NEXTCLOUD_ENABLE_DRI_DEVICE: true # This allows to enable the /dev/dri device in the Nextcloud container. ⚠️⚠️⚠️ Warning: this only works if the '/dev/dri' device is present on the host! If it should not exist on your host, don't set this to true as otherwise the Nextcloud container will fail to start! See https://github.com/nextcloud/all-in-one#how-to-enable-hardware-transcoding-for-nextcloud31 # NEXTCLOUD_KEEP_DISABLED_APPS: false # Setting this to true will keep Nextcloud apps that are disabled in the AIO interface and not uninstall them if they should be installed. See https://github.com/nextcloud/all-in-one#how-to-keep-disabled-apps32 # TALK_PORT: 3478 # This allows to adjust the port that the talk container is using. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-talk-port33 # WATCHTOWER_DOCKER_SOCKET_PATH: /var/run/docker.sock # Needs to be specified if the docker socket on the host is not located in the default '/var/run/docker.sock'. Otherwise mastercontainer updates will fail. For macos it needs to be '/var/run/docker.sock'34 # security_opt: ["label:disable"] # Is needed when using SELinux35 networks:36 - nextcloud37 # # Optional: Caddy reverse proxy. See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md38 # # You can find further examples here: https://github.com/nextcloud/all-in-one/discussions/58839 # caddy:40 # image: caddy:alpine41 # restart: always42 # container_name: caddy43 # volumes:44 # - ./Caddyfile:/etc/caddy/Caddyfile45 # - ./certs:/certs46 # - ./config:/config47 # - ./data:/data48 # - ./sites:/srv49 # network_mode: "host"50
51 go-vod:52 image: radialapps/go-vod53 restart: always54 depends_on:55 - nextcloud-aio-mastercontainer56 environment:57 - NEXTCLOUD_HOST=https://next.domain.ru58 - NVIDIA_VISIBLE_DEVICES=all59 volumes:60 - /media/nextcloud:/mnt/ncdata:ro61 runtime: nvidia62 networks:63 - nextcloud64
65volumes: # If you want to store the data on a different drive, see https://github.com/nextcloud/all-in-one#how-to-store-the-filesinstallation-on-a-separate-drive66 nextcloud_aio_mastercontainer:67 name: nextcloud_aio_mastercontainer # This line is not allowed to be changed as otherwise the built-in backup solution will not work68
69networks:70 nextcloud:71 name: nextcloud72 external: trueПример динамической конфигурации для обратного прокси Traefik
1http:2 routers:3 nextcloud:4 entrypoints:5 - "https"6 rule: "Host(`subdomain.domain.ru`)"7 middlewares:8 - https-redirect9 - nextcloud-secure-headers10 tls:11 domains:12 - main: "subdomain.domain.ru"13 service: nextcloud14 services:15 nextcloud:16 loadBalancer:17 servers:18 - url: "http://your_vm_ip:11000"19 passHostHeader: true20 middlewares:21 crowdsec-bouncer: #if you use crowdsec22 forwardauth:23 address: http://bouncer-traefik:8080/api/v1/forwardAuth24 trustForwardHeader: true25 # https://github.com/goauthentik/authentik/issues/236626 middlewares-authentik: # if you use authentik27 forwardAuth:28 address: "http://authentik_server:9000/outpost.goauthentik.io/auth/traefik"29 trustForwardHeader: true30 authResponseHeaders:31 - X-authentik-username32 - X-authentik-groups33 - X-authentik-email34 - X-authentik-name35 - X-authentik-uid36 - X-authentik-jwt37 - X-authentik-meta-jwks38 - X-authentik-meta-outpost39 - X-authentik-meta-provider40 - X-authentik-meta-app41 - X-authentik-meta-version42
43 nextcloud-secure-headers:44 headers:45 hostsProxyHeaders:46 - "X-Forwarded-Host"47 referrerPolicy: "same-origin"48 customResponseHeaders:49 X-Robots-Tag: "noindex, nofollow" #changed from default "none" parameter50
51 https-redirect:52 redirectScheme:53 scheme: https54 permanent: true55
56 nextcloud-chain:57 chain:58 middlewares:59 # - ... (e.g. rate limiting middleware)60 - https-redirect61 - nextcloud-secure-headersОсновные моменты моего файла
1️⃣ Nextcloud AIO
Контейнер: nextcloud-aio-mastercontainer
container_name и volumes с именем nextcloud_aio_mastercontainer менять нельзя — это правило для работы встроенного бэкапа.
Порты:
8087:8080 — значит веб-интерфейс будет доступен на http://host:8087.
Остальные порты закомментированы, что нормально при использовании обратного прокси.
Переменные окружения:
NEXTCLOUD_DATADIR: /media/nextcloud и NEXTCLOUD_MOUNT: /media — правильно, чтобы Nextcloud и go-vod видели один и тот же каталог.
APACHE_PORT и APACHE_IP_BINDING настроены для обратного прокси.
NEXTCLOUD_ADDITIONAL_APKS и NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS — добавили imagemagick и imagick, что будет полезно для обработки изображений.
2️⃣ go-vod
Зависит от Nextcloud AIO (depends_on).
Используется NVIDIA GPU (runtime: nvidia и NVIDIA_VISIBLE_DEVICES=all).
volumes: /media/nextcloud:/mnt/ncdata:ro — только для чтения, чтобы Go-VOD мог обрабатывать файлы Nextcloud без риска изменения.
Переменная NEXTCLOUD_HOST=https://next.domain.ru — должна указывать на ваш реальный домен Nextcloud.
3️⃣ Сеть
Оба контейнера подключены к внешней сети nextcloud, что позволяет им общаться друг к другу по имени контейнера.
4️⃣ Volumes
nextcloud_aio_mastercontainer — важен для встроенного бэкапа.
Остальные данные Nextcloud находятся в NEXTCLOUD_DATADIR.
Рекомендации / Проверки
GPU для go-vod:
Убедитесь, что драйвер NVIDIA и nvidia-container-toolkit установлены на хосте.
Проверить, что контейнер видит GPU.
Права на каталог Nextcloud:
/media/nextcloud должен быть доступен как для AIO, так и для go-vod.
Для go-vod стоит
Обратный прокси:
Порты 80/443 закомментированы, значит, нужно настроить внешний обратный прокси Nginx/Caddy/Traefik.
APACHE_PORT = 11000, убедитесь, что ваш прокси использует этот порт для проксирования.
Бэкап:
Не трогайте volume nextcloud_aio_mastercontainer.
Можно проверять резервные копии через AIO интерфейс.
Запуск и настройка Nextcloud AIO
-
Сохраните файл как
docker-compose.yml. -
Запустите команду:
1docker compose up -d- Перейдите в браузере по адресу:
1http://<IP_сервера>:8080- Следуйте мастеру установки:
-
Укажите домен (например, cloud.prohomelab.com),
-
Настройте HTTPS (через встроенный Let’s Encrypt или прокси),
-
Дождитесь автоматического развёртывания всех контейнеров.
Заключение
Nextcloud AIO — идеальный вариант для тех, кто хочет запустить мощное облако «в один клик». Он сочетает удобство Docker, автоматические обновления и надёжность официальной поддержки команды Nextcloud. Такой подход отлично подойдёт для домашнего сервера, LXC-контейнера в Proxmox или VPS, где важны простота, безопасность и автономность.
Some information may be outdated