# Установка NextCloud на VPS под управлением Ubuntu при помощи Docker Compose
NextCloud — набор клиент-серверных программ, позволяющих организовать файловое хранилище как на хостинге, так и на VPS. В этой инструкции мы расскажем, как установить NextCloud на VPS под управлением Ubuntu.
Для начала работы нам понадобится предварительно настроенный сервер под управлением Ubuntu с предустановленным Docker и Docker-Compose.
# Установка NextCloud
Одно из преимуществ использования Docker-Compose — это возможность указать в одном конфигурационном файле все необходимые образы для установки и затем одной командой установить полноценную сборку.
Перед началом работы с конфигурационнным файлом создадим внутреннюю сеть, в которую будут включены все необходимые контейнеры, обеспечивающие работу NextCloud:
docker network create nextcloud_network
Эта команда создаст сеть nextcloud_network, в которой впоследствии будут размещаться контейнеры с образами.
Перейдём непосредственно к созданию конфигурационного файла и работе с образами.
Для работы NextCloud нам понадобится сам образ NextCloud, веб-сервер и система управления базами данных. В качестве веб-сервера будем использовать Nginx, а для работы с базами данных установим MariaDB.
Для начала работы создадим отдельную папку для Next Cloud и перейдём в неё:
mkdir nextcloud
cd nextcloud
Здесь создадим файл docker-compose.yml:
vim docker-compose.yml
В открывшемся пустом текстовом файле создадим первый блок для определния веб-сервера, который будем использовать в качестве прокси:
version: '3'
services:
proxy:
image: jwilder/nginx-proxy:alpine
labels:
- "com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy=true"
container_name: nextcloud-proxy
networks:
- nextcloud_network
ports:
- 80:80
- 443:443
volumes:
- ./proxy/conf.d:/etc/nginx/conf.d:rw
- ./proxy/vhost.d:/etc/nginx/vhost.d:rw
- ./proxy/html:/usr/share/nginx/html:rw
- ./proxy/certs:/etc/nginx/certs:ro
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/tmp/docker.sock:ro
restart: unless-stopped
Здесь мы определили версию compose-файла и указали конкретный образ Nginx, который будем использовать в качестве прокси-сервера.
Далее переходим к базам данных. В этом же файле добавляем следующий блок:
db:
image: mariadb
container_name: nextcloud-mariadb
networks:
- nextcloud_network
volumes:
- db:/var/lib/mysql
- /etc/localtime:/etc/localtime:ro
environment:
- MYSQL_ROOT_PASSWORD=secret
- MYSQL_PASSWORD=mysql
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
restart: unless-stopped
Это блок, в котором мы определили образ MariaDB и указали пароль для root-пользователя, новую базу данных для работы NextCloud, нового пользователя для неё и его пароль.
Далее указываем непосредственно образ NextCloud:
app:
image: nextcloud:latest
container_name: nextcloud-app
networks:
- nextcloud_network
depends_on:
- proxy
- db
volumes:
- nextcloud:/var/www/html
- ./app/config:/var/www/html/config
- ./app/custom_apps:/var/www/html/custom_apps
- ./app/data:/var/www/html/data
- ./app/themes:/var/www/html/themes
- /etc/localtime:/etc/localtime:ro
environment:
- VIRTUAL_HOST=nextcloud.YOUR-DOMAIN
restart: unless-stopped
В строке VIRTUAL_HOST нужно указать адрес домена, на котором будем запускать NextCloud. Последнее, что нужно добавить в compose-файл, — это описание сети и томов:
volumes:
nextcloud:
db:
networks:
nextcloud_network:
Теперь можно сохранять файл и запускать сборку:
sudo docker-compose up -d
Если не было ошибок при создании compose-файла, образ должен успешно собраться и стартовать. Проверить его работу можно следующей командой:
sudo docker ps -a
#Output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c332505a3cde nextcloud:latest "/entrypoint.sh apac…" 2 hours ago Up 2 hours 80/tcp nextcloud-app
76ba29e7ba70 jwilder/nginx-proxy:alpine "/app/docker-entrypo…" 2 hours ago Up 2 hours 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp nextcloud-proxy
3c75fae62a68 mariadb "docker-entrypoint.s…" 2 hours ago Up 2 hours 3306/tcp nextcloud-mariadb
После того как наша сборка будет установлена и запущена, можно начинать работу с NextCloud. Для этого в браузере зайдите по адресу, указанному в строке VIRTUAL_HOST из блока с описанием NextCloud.
Вы должны увидеть стартовую страницу приложения.
Готово — мы установили NextCloud на VPS под управлением Ubuntu.