Nextcloud telepítése
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ételtdocker-compose up
hívásokkor még véletlenül se frissüljön automatikusan az image, mint ahogy alatest
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
éslocation = /.well-known/caldav
bejegyzések teszik lehetővé, hogycarddav
éscaldav
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;
ésproxy_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;
ésproxy_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',