Természetesen ez az oldal is használ cookie-kat.
Nem tetszik?

Nem, elmegyek
home

T  h  e
D a r k
S i t e

Magánjellegű internetes dokumentációs és publikációs felület és kísérleti weboldal a Morkpy tartalomkezelő rendszer fejlesztési folyamatainak tesztelésére és szemléltetésére

Nextcloud telepítése

dark Dokumentáció 2020-11-25 20:12:00

A Moodle telepítés leírásából kimaradtak a Nextcloud docker image beállításának egyes részletei. Szándékosan, mivel Nextcloud-ot máshol, más okból is használunk, ezért a leírásának külön dokumentumban a helye.


Telepítés

Ugyanúgy docker-compose-t használunk.

docker-compose.yml

version: '2'
services:
  nextcloud:
    image: 'nextcloud:20.0.2'
    network_mode: bridge
    ports:
      - '127.0.0.1:18083:80'
    volumes:
      - ./volumes/nextcloud:/var/www/html
    extra_hosts:
      - 'docker:172.17.42.1'
    environment:
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=password
      - MYSQL_HOST=172.17.42.1
      - NEXTCLOUD_ADMIN_USER=root
      - NEXTCLOUD_ADMIN_PASSWORD=password
      - NEXTCLOUD_TRUSTED_DOMAINS=cloud.domain.hu
      - SMTP_HOST=172.17.42.1
      - SMTP_PORT=25
      - MAIL_FROM_ADDRESS=cloud@domain.hu

Megjegyzések

  • Az image értéknél fontos a pontos verzió megadása, hogy az ismételt docker-compose up hívásokkor még véletlenül se frissüljön automatikusan az image, mint ahogy a latest tag esetén tenné.
  • A network_mode: bridge szükséges, hogy a konténer a megadott ip címen elérje a docker host-on futó adatbázis szervert. Szép, ha a teljes szolgáltatás saját alhálózaton helyezkedik el, saját adatbázis szerverrel, azaz microservices, de futtasson és backup-oljon külön mysql konténert minden projekthez az, akinek ahhoz van kedve.
  • Az extra_hosts alatti elemek hostname / ip cím párok. Az így definiált hostnevek ugyanúgy használhatóak a konténerben, mintha az /etc/hosts fájlban lennének megadva.

Konténer indítása

# indítás
docker-compose up
# vagy
# indítás a háttérben
docker-compose up -d

Nginx vhost - reverse proxy

server {
    listen 80;
    listen 443 ssl;
    server_name cloud.domain.hu;

    ssl_certificate /etc/letsencrypt/live/cloud.domain.hu/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/cloud.domain.hu/privkey.pem;

    if ($scheme = http) {
        return 301 https://$host$request_uri;
    }

    include includes/letsencrypt;

    location = /.well-known/carddav {
        return 301 $scheme://$host:$server_port/remote.php/dav;
    }
    location = /.well-known/caldav {
        return 301 $scheme://$host:$server_port/remote.php/dav;
    }

    location / {
        proxy_pass http://127.0.0.1:18083;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_redirect off;
        proxy_buffering off;
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
    }
}

Megjegyzések

  • A location = /.well-known/carddav és location = /.well-known/caldav bejegyzések teszik lehetővé, hogy carddav és caldav protokollon keresztül elérjük a konténerben futó Nextcloud címtárát és naptárát.
  • A proxy_set_header Upgrade $http_upgrade; és  proxy_set_header Connection "upgrade"; sorok a websocket kapcsolatok működéséhez szükségesek. Lsd: http://nginx.org/en/docs/http/websocket.html .
  • @TODO: Utánanézni, hogy a proxy_redirect off; és proxy_buffering off; miért kellenek.

Konfiguráció: volumes/nextcloud/config/config.php

'trusted_domains' =>
  array (
      0 => 'localhost',
      1 => 'cloud.domain.hu'
  ),
  'overwrite.cli.url' => 'https://cloud.domain.hu',
  'overwriteprotocol' => 'https',