Nextcloud z SSL na Dockerze

Nextcloud jest darmową aplikacją pozwalającą na stworzenie prywatnej „chmury” na dane, którą można zainstalować na własnym serwerze. Poniższy opis zakłada uruchomienie Nextcloud w 3 kontenerach – kontener dla Nextcloud, kontener dla bazy danych oraz kontener na proxy obsługujące SSL.

W jaki sposób uruchomić Nextcloud na Dockerze?

Poniżej zamieszczam plik docker-compose.yml który należy uzupełnić o własną konfigurację zmiennych.

version: '3' 

services:

  proxy:
    image: jwilder/nginx-proxy
    container_name: nextcloud-proxy
    hostname: nextcloud-proxy
    networks:
      - nextcloud-network
    ports:
      - "443:443"
    volumes:
      - /volumes/nextcloud-proxy/certs:/etc/nginx/certs
      - /volumes/nextcloud-proxy/conf.d/upload.conf:/etc/nginx/conf.d/upload.conf
      - /var/run/docker.sock:/tmp/docker.sock:ro

  mariadb:
    image: mariadb
    container_name: nextcloud-mariadb
    hostname: nextcloud-mariadb
    networks:
      - nextcloud-network
    volumes:
      - /volumes/nextcloud-mariadb:/var/lib/mysql
      - /etc/localtime:/etc/localtime:ro
    environment:
      - MYSQL_ROOT_PASSWORD=
      - MYSQL_PASSWORD=
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
    restart: unless-stopped
  
  server:
    image: nextcloud:latest
    container_name: nextcloud-server
    hostname: nextcloud-server
    networks:
      - nextcloud-network
    depends_on:
      - mariadb
      - proxy
    volumes:
      - /volumes/nextcloud-server/html:/var/www/html
      - /volumes/nextcloud-server/config:/var/www/html/config
      - /volumes/nextcloud-server/custom_apps:/var/www/html/custom_apps
      - /volumes/nextcloud-server/data:/var/www/html/data
      - /volumes/nextcloud-server/themes:/var/www/html/themes
      - /etc/localtime:/etc/localtime:ro
    environment:
      - VIRTUAL_HOST=
    restart: unless-stopped

networks:
  nextcloud-network:

W powyższym skrypcie należy uzupełnić parametry:

  • MYSQL_ROOT_PASSWORD – hasło użytkownika root bazy MySQL,
  • MYSQL_PASSWORD – hasło użytkownika dla Nextcloud w bazie MySQL,
  • VIRTUAL_HOST – adres pod którym będzie widoczny Nextcloud.

Dodatkowo – należy utworzyć katalogi /volumes/nextcloud-proxy/certs/ oraz /volumes/nextcloud-proxy/conf.d/ w których umieszczamy pliki:

  • /volumes/nextcloud-proxy/certs/domena.pl.crt – certyfikat dla domeny na której będzie działał Nextcloud,
  • /volumes/nextcloud-proxy/certs/domena.pl.key – klucz prywatny do certyfikatu,
  • /volumes/nextcloud-proxy/conf.d/upload.conf – plik tekstowy o treści „client_max_body_size 1g;” – pozwoli na zwiększenie limitu pojedynczego pliku który może zostać wysłany na Nextcloud.

Na koniec, uruchamiamy wszystko poleceniem:

docker-compose up -d

Po odczekaniu aż wszystkie kontenery się uruchomią – możemy przejść do skonfigurowania instalacji Nextcloud i pierwszego logowania.