From e08c3c03edc060feea7ad78451ffc65c01f950b7 Mon Sep 17 00:00:00 2001 From: chris Date: Thu, 11 Nov 2021 15:36:11 +0100 Subject: [PATCH] Use domain name for nextcloud and use postgres as database backend. --- nextcloud/docker-compose.yaml | 27 +++++++++++++++++++------ nextcloud/nextcloud.conf | 2 +- nextcloud/readme.md | 38 +++++++++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+), 7 deletions(-) create mode 100644 nextcloud/readme.md diff --git a/nextcloud/docker-compose.yaml b/nextcloud/docker-compose.yaml index ec951ae..dd465b0 100644 --- a/nextcloud/docker-compose.yaml +++ b/nextcloud/docker-compose.yaml @@ -26,10 +26,10 @@ services: networks: - internal environment: - - MYSQL_DATABASE:nextcloud - - MYSQL_USER:nextcloud - - MYSQL_PASSWORD:jX9hKI2POvt1VrjVbBs4 - - MYSQL_HOST:mysql8 + - POSTGRES_DB:nextcloud + - POSTGRES_USER:nextcloud + - POSTGRES_PASSWORD:jX9hKI2POvt1VrjVbBs4 + - POSTGRES_HOST:pgsql14 - REDIS_HOST:redis - REDIS_HOST_PASSWORD:${REDIS_PW} - NEXTCLOUD_ADMIN_USER:${NEXTCLOUD_ADMIN_USER} @@ -47,8 +47,23 @@ services: labels: - "traefik.enable=true" - "traefik.http.routers.nextcloud.entrypoints=web" - - "traefik.http.routers.nextcloud.rule=Host(`nextcloud.lan`)" - - "traefik.http.services.nextcloud.loadbalancer.server.port=80" + - "traefik.http.routers.nextcloud.rule=Host(`cs-nextcloud.ddnss.de`)" + - "traefik.http.routers.nextcloud.middlewares=nextcloud" + - "traefik.http.middlewares.nextcloud.redirectscheme.scheme=https" + - "traefik.http.routers.nextcloud-secure.entrypoints=websecure" + - "traefik.http.routers.nextcloud-secure.rule=Host(`cs-nextcloud.ddnss.de`)" + - "traefik.http.routers.nextcloud-secure.service=nextcloud-secure" + - "traefik.http.routers.nextcloud-secure.tls=true" + - "traefik.http.routers.nextcloud-secure.tls.certresolver=myresolver" + - "traefik.http.routers.nextcloud-secure.tls.domains[0].main=cs-nextcloud.ddnss.de" + - "traefik.http.services.nextcloud-secure.loadbalancer.server.port=80" + - "traefik.http.routers.nextcloud-secure.middlewares=nextcloud-secure,nextcloud-redirect" + - "traefik.http.middlewares.nextcloud-secure.headers.stsSeconds=15552000" + - "traefik.http.middlewares.nextcloud-secure.headers.stsPreload=true" + - "traefik.http.middlewares.nextcloud-redirect.redirectregex.permanent=true" + - "traefik.http.middlewares.nextcloud-redirect.redirectregex.regex=^https://(.*)/.well-known/(card|cal)dav" + - "traefik.http.middlewares.nextcloud-redirect.redirectregex.replacement=https://$${1}/remote.php/dav/" + depends_on: - nextcloud networks: diff --git a/nextcloud/nextcloud.conf b/nextcloud/nextcloud.conf index d34155f..edb644a 100644 --- a/nextcloud/nextcloud.conf +++ b/nextcloud/nextcloud.conf @@ -5,7 +5,7 @@ upstream php-handler { server { listen 80; listen [::]:80; - server_name nextcloud.lan cs-nextcloud.ddnss.de; + server_name cs-nextcloud.ddnss.de; # set max upload size and increase upload timeout: diff --git a/nextcloud/readme.md b/nextcloud/readme.md new file mode 100644 index 0000000..cc245ca --- /dev/null +++ b/nextcloud/readme.md @@ -0,0 +1,38 @@ +# Nextcloud + +## Installation + +Installation of nextcloud is easy. Just pull the image and navigate with the browser to the new instance. +Enter database connection and create a user. + +### Enable caching + +Options must be entered to nextcloud's configuration file. + +- Local cache APCu: `'memcache.local' => '\OC\Memcahe\APCu',` +- Distributed cache Redis: `'memcache.distributed' => '\OC\Memcache\Redis',` +- File locking Redis: `'memcache.locking' => '\OC\Memcache\Redis',` +- Configuration for Redis: +```` + 'redis' => array ( + 'host' => 'redis', + 'port' => 6379, + ), +```` + +## Migration to new instance + +Create a new installation of nextcloud. Afterwards drop the database and create it from scratch. +Dump in the data and copy user data to new instance. + +## Updating nextcloud + +Just update the image version in the compose file and do a ``docker compose pull`` + +## Database migration + +Convert the database from mysql to pgsql: + +```` +docker exec -it -u www-data NEXTCLOUD_CONTAINER_NAME php occ db:convert-type --all-apps --password "YOUR_PASSWORD" pgsql DB_USER DB_HOST DB_NAME +```` \ No newline at end of file