0

Nextcloud: запуск в Docker Compose с SSL от Let’s Encrypt

09.02.2021

Содержание

  • Установка Docker и Docker Compose
  • Запуск Nexcloud
    • nginx-proxy
    • Let’s Encrypt Docker
    • MariaDB в Docker
    • Nextcloud
  • Настройка Nextcloud
  • Tags и полный docker-compose файл
  • systemd

Для запуска создадим Docker Compose стек, в котором будут:

  • NGINX: проксирующий веб-сервер
  • Lets Encrypt: клиент для генерации и обновления SSL-сертификатов
  • MariaDB: сервер баз данных для хранения настроек Nextcloud
  • Nextcloud: контейнер с PHP-FPM и исходным кодом Nextcloud

Документация

Для SSL используем клиент Lets Encrypt из docker-образа docker-letsencrypt-nginx-proxy-companion.

Установка Docker и Docker Compose

Создаём каталог для файла Compose:

~# mkdir /opt/nextcloud
~# cd /opt/nextcloud/

Приступаем к созданию стека.

Запуск Nexcloud

nginx-proxy

Создаём каталоги для файлов NGINX и Lets Encrypt:

# mkdir -p /data/nextcloud/nginx/{certs,vhost.d,html}

Создаём файл /opt/nextcloud/nextcloud-compose.yml:

version: '3'

services:

  nginx-proxy:
    image: jwilder/nginx-proxy:latest
    labels:
      - "com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy=true"
    container_name: nextcloud-proxy
    networks:
      - nextcloud_network
    ports:
      - 80:80
      - 443:443
    volumes:
      - /data/nextcloud/nginx/vhost.d:/etc/nginx/vhost.d:rw
      - /data/nextcloud/nginx/html:/usr/share/nginx/html:rw
      - /data/nextcloud/nginx/certs:/etc/nginx/certs:ro
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/tmp/docker.sock:ro
    restart: unless-stopped

  letsencrypt:
    image: jrcs/letsencrypt-nginx-proxy-companion:v1.12
    container_name: nextcloud-letsencrypt
    depends_on:
      - nginx-proxy
    networks:
      - nextcloud_network
    volumes:
      - /data/nextcloud/nginx/vhost.d:/etc/nginx/vhost.d:rw
      - /data/nextcloud/nginx/html:/usr/share/nginx/html:rw
      - /data/nextcloud/nginx/certs:/etc/nginx/certs:rw
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
    restart: unless-stopped

  mysql:
    image: mariadb:latest
    container_name: nextcloud-mysql
    networks:
      - nextcloud_network
    volumes:
      - /data/nextcloud/mysql:/var/lib/mysql
      - /etc/localtime:/etc/localtime:ro
    environment:
      - MYSQL_ROOT_PASSWORD=mysql-root-p@ssw0rd
      - MYSQL_PASSWORD=nextcloud-p@ssw0rd
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
    restart: unless-stopped

  nextcloud-app:
    image: nextcloud:20.0.7-apache
    container_name: nextcloud-app
    networks:
      - nextcloud_network
    depends_on:
      - letsencrypt
      - nginx-proxy
      - mysql
    volumes:
      - /data/nextcloud/app/html:/var/www/html
      - /data/nextcloud/app/config:/var/www/html/config
      - /data/nextcloud/app/custom_apps:/var/www/html/custom_apps
      - /data/nextcloud/app/data:/var/www/html/data
      - /data/nextcloud/app/themes:/var/www/html/themes
      - /etc/localtime:/etc/localtime:ro
    environment:
      - VIRTUAL_HOST=cloud.example.org
      - LETSENCRYPT_HOST=cloud.example.org
      - LETSENCRYPT_EMAIL=root@example.org
    restart: unless-stopped

networks:
  nextcloud_network:

Let’s Encrypt сгенерировал сертификат — проверяем:

MariaDB в Docker

Что бы хранить данные постоянно — создаём каталог:

# mkdir /data/nextcloud/mysql

Проверяем данные на диске:

# ll /data/nextcloud/mysql/

Nextcloud

Создаём каталоги:

# mkdir -p /data/nextcloud/app/{config,custom_apps,data,themes,html}

В файле Compose – Переменная VIRTUAL_HOST используется nginx-proxy для выбора направления что и куда проксировать, а LETSENCRYPT_HOST — самим Lets Encrypt контейнером для выбора имени хоста, для которого будет сгенерирован сертификат. См. документацию тут>>>.

Запускаем стек:

# docker-compose -f nextcloud-compose.yml up --force-recreate

Идем в браузер:

Настройка Nextcloud

адрес сервера баз данных указываем в том виде, в котором он указан в Compose-файле, т.е. в данном примере mysql — Docker сам выполнит DNS-resolution по имени контейнера в его IP из сети nextcloud_network:

systemd

Последним шагом — создаём systemd unit-файл для сервиса, как описано в посте Linux: systemd сервис для Docker Compose, назовём его /etc/systemd/system/nextcloud.service:

[Unit]
Description=Nextcloud stack
Requires=docker.service
After=docker.service

[Service]
Restart=always
WorkingDirectory=/opt/nextcloud
ExecStart=/usr/local/bin/docker-compose -f nextcloud-compose.yml up
ExecStop=/usr/local/bin/docker-compose -f nextcloud-compose.yml down                                                                                                                                                                          

[Install]
WantedBy=multi-user.target

Запускаем сервис:

# systemctl start nextcloud
# systemctl status nextcloud
# systemctl enable nextcloud

Свежие комментарии

Подписка

Лучшие статьи

Как обойти блокировку Docker Hub

30.05.2024 Docker добавил Россию в список стран, которым заблокирован доступ к репозиторию Docker Hub. Docker Hub – основной источник образов для контейнеров. При

Рубрики

Популярное

1 docker

Установка Docker, Docker-Compose на Centos Stream.

Удалите старые версии: Старые версии Docker назывались docker или docker-engine. Если они установлены, удалите их вместе с соответствующими зависимостями. Установка с помощью репозитория: Перед первой
2

KUBERNETES

Сегодня мы поговорим о Kubernetes: в частности о теме microk8s vs minikube, kompose и helm. Обзорная экскурсия, так сказать. Написать статью о
3

Zabbix on Docker

Предпологается что у вас уже установлен Docker-Compose. Инструкцию по установке можете почитать тут Разверните zabbix с помощью Docker-compose: Сначала создайте папку, а
Previous Story

Использования команды dig для просмотра параметров DNS (DNS Lookup) в Linux

iptables
Next Story

Первичная настройка IPTables

Latest from Blog

RouterOS/MikroTik на Debian

RouterOS — операционная система, основанная на ядре Linux, предназначенная для маршрутизации, брандмауэра, работы с VPN как сервером и клиентом, а также функционирования в качестве точки беспроводного доступа. Эта система может действовать в роли

How to Install Proxmox Virtual Environment on Debian 11

Introduction Proxmox Virtual Environment is an open-source virtualization management program. It provides a single platform to manage services and functions like KVM Hypervisor, Linux Containers (LXC), storage & networking. In addition, it

Настройка Wireguard VPN на своем сервере

Настройка серверной части После успешного подключения я напишу несколько команд и описание того что они производят для понимания процесса: Обновляем список пакетов в репозиториях apt update Обновим сами пакеты apt upgrade -y

Установка Zabbix 7 c NGINX + PostgreSQL + TimescaleDB на Ubuntu Server или Debian

Сервер Zabbix предполагает достаточную вариативность в выборе СУБД и веб-сервера, поэтому многое тут будет зависеть от персональных предпочтений. Однако расширение TimescaleDB позволяет поддерживать высокий уровень производительности и масштабирования при работе с временными

Настройка простого беспроводного репитера на устройстве MikroTik

При развертывании беспроводных сетей достаточно часто возникают ситуации, когда в некоторых местах квартиры или офиса мощность Wi-Fi сигнала недостаточна для уверенной работы. Конечно, наиболее действенным решением является создание централизованно управляемой сети и
Go toTop

Don't Miss

Как обойти блокировку Docker Hub

30.05.2024 Docker добавил Россию в список стран, которым заблокирован доступ

Jenkins

Cистема с открытым исходным кодом, то есть продукт доступен для