Nextcloud im Container – Flexible Installation mit Docker

Nextcloud ist ein sehr populärer freier, selbst-hostbarer Cloudservice, für das Speichern von Daten (z. B. Dateien, Kalender, Kontakte etc.) auf einem Server.
Der Server benötigt dafür den Dienst keine großen Ressourcen und kann deshalb ein kleiner Einplatinenrechner, wie der Raspberry Pi, sein. Die Installation von Nextcloud mit Hilfe von Docker Images ist relativ einfach umzusetzen, was die Einsatzmöglichkeiten und die Flexibilität noch erhöhen.

In diesem Beitrag wird Nextcloud und die notwendigen Tools ausschließlich mit Docker Containern installiert und konfiguriert.

Als Hardware für die eigene Nextcloud kann z.B. verwendet werden:

  • Raspberry Pi
  • openmediavault
  • Synology Disk Station
  • QNAP
  • jeder andere Rechner, auf dem Docker lauffähig ist

Normale Nextcloud-Installation

Die Nextcloud lässt sich ganz normal auf einem kleinen Server, wie dem Raspberry Pi installieren.

Schritt-für-Schritt zur eigenen Nextcloud

Nextcloud mit Ansible installieren und konfigurieren

Nextcloud auf einer Synology Disk Station

Nextcloud lässt sich auch mit einem Mischmasch aus Docker Container und Synology Diensten installieren.

Nextcloud auf einem Synology NAS installieren

Die bessere Option ist jedoch die Installation ausschließlich mit Docker Container durchzuführen.

Nextcloud mit Docker Container installieren

Diese Option ist eine sehr flexible Möglichkeit der Nextcloud-Installation. Mit Hilfe von Docker Containern lässt sich der Service fast überall installieren. Zudem ist der gesamte Updateprozess einfacher, einfach neues Image einspielen und fertig. Das Gefrickel und Fehlersuche, die manchmal bei einem Update notwendig ist, entfällt.

openmediavault mit Docker und Portainer

Docker Installation auf einem Raspberry Pi

Gitea Installation via Docker auf einer Synology Disk Station


Gib mir gerne einen Kaffee ☕ aus!

Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕ ausgeben.

PayPal Logo


liberapay.com/strobelstefan.org


Kaffee via Bitcoin

bc1qfuz93hw2fhdvfuxf6mlxlk8zdadvnktppkzqzj


Docker Dateien

Die notwendigen Dateien sind nachfolgend aufgeführt. Eine Beschreibung zur Verwendung ist in diesem Beitrag zu finden
Gitea Installation via Docker auf einer Synology Disk Station

Die Ordner werden auf dem Host-System benötigt und sind in der nextcloud.env referenziert:

# Hauptordner erstellen
sudo mkdir /volume1/docker/nextcloud/

cd /volume1/docker/nextcloud/

# Ordner erstellen
sudo mkdir NEXTCLOUD_DIRECTORY_HTML
sudo mkdir NEXTCLOUD_DIRECTORY_CONFIG
sudo mkdir NEXTCLOUD_DIRECTORY_THEMES
sudo mkdir NEXTCLOUD_DIRECTORY_SKELETON
sudo mkdir REDIS_CACHE
sudo mkdir secrets

# oder alle Ordner mit einem Befehl erstellen
sudo mkdir /volume1/docker/nextcloud/{NEXTCLOUD_DIRECTORY_HTML,NEXTCLOUD_DIRECTORY_CONFIG,NEXTCLOUD_DIRECTORY_THEMES,NEXTCLOUD_DIRECTORY_SKELETON,REDIS_CACHE,secrets}

docker-nextcloud-postgres-secret.yml

version: '3.8'

services:
  db:
    image: postgres
    container_name: ${CONTAINER_NAME_POSTGRES}
    restart: always
    networks:
      - nextcloud
    volumes:
      - /volume1/docker/ims-nextcloud/NEXTCLOUD_DIRECTORY_DB:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB_FILE=/run/secrets/postgres_db
      - POSTGRES_USER_FILE=/run/secrets/postgres_user
      - POSTGRES_PASSWORD_FILE=/run/secrets/postgres_password
    secrets:
      - postgres_db
      - postgres_password
      - postgres_user

  app:
    image: nextcloud
    container_name: ${CONTAINER_NAME_NEXTCLOUD}
    restart: always
    networks:
      - nextcloud
    ports:
      - ${NEXTCLOUD_PORT}:80
    volumes:
      - ${NEXTCLOUD_DIRECTORY_HTML}:/var/www/html
      - ${NEXTCLOUD_DIRECTORY_CONFIG}:/var/www/html/config
      - ${NEXTCLOUD_DIRECTORY_THEMES}:/var/www/html/themes/
      #- ${NEXTCLOUD_DIRECTORY_SKELETON}:/var/www/html/data/skeleton
    environment:
      - POSTGRES_HOST=db
      - POSTGRES_DB_FILE=/run/secrets/postgres_db
      - POSTGRES_USER_FILE=/run/secrets/postgres_user
      - POSTGRES_PASSWORD_FILE=/run/secrets/postgres_password
      - NEXTCLOUD_ADMIN_PASSWORD_FILE=/run/secrets/nextcloud_admin_password
      - NEXTCLOUD_ADMIN_USER_FILE=/run/secrets/nextcloud_admin_user
      - NEXTCLOUD_TRUSTED_DOMAINS=${NEXTCLOUD_TRUSTED_DOMAINS}
      - REDIS_HOST=${CONTAINER_NAME_REDIS}
      - REDIS_HOST_PORT=${REDIS_PORT}
      - REDIS_HOST_PASSWORD=${REDIS_PASSWORD}
      - PHP_MEMORY_LIMIT=${PHP_MEMORY_LIMIT}
      - PHP_UPLOAD_LIMIT=${PHP_UPLOAD_LIMIT}
      - MTP_HOST=${MTP_HOST} # The hostname of the SMTP server.
      - SMTP_SECURE=${SMTP_SECURE} # Set to ssl to use SSL, or tls to use STARTTLS.
      - SMTP_PORT=${SMTP_PORT} # Optional port for the SMTP connection. Use 587 for an alternative port for STARTTLS.
      - SMTP_AUTHTYPE=${SMTP_AUTHTYPE} # The method used for authentication. Use PLAIN if no authentication is required.
      - SMTP_NAME_FILE=/run/secrets/nextcloud_smtp_name # The username for the authentication.
      - SMTP_PASSWORD_FILE=/run/secrets/nextcloud_smtp_password # The password for the authentication.
      - MAIL_FROM_ADDRESS=${MAIL_FROM_ADDRESS} # Use this address for the 'from' field in the emails sent by Nextcloud.
      - MAIL_DOMAIN=${MAIL_DOMAIN} # Set a different domain for the emails than the domain where Nextcloud is installed.
    depends_on:
      - db
      - cache
    secrets:
      - postgres_db
      - postgres_password
      - postgres_user
      - nextcloud_admin_password
      - nextcloud_admin_user
      - nextcloud_smtp_name
      - nextcloud_smtp_password

  cache:
    image: redis
    container_name: ${CONTAINER_NAME_REDIS}
    restart: always
    networks:
      - nextcloud
    #ports:
    #  - ${REDIS_PORT}:6379
    command: redis-server --save 20 1 --loglevel warning --requirepass ${REDIS_PASSWORD}
    volumes: 
      - ${REDIS_CACHE}:/data

  adminer:
    image: adminer
    container_name: ${CONTAINER_NAME_ADMINER}
    restart: always
    networks:
      - nextcloud
    ports:
      - ${ADMINER_PORT}:8080

volumes:
  db:
  nextcloud:
  cache:
    driver: local

networks:
  nextcloud:
    driver: bridge

secrets:
  nextcloud_admin_password:
    file: ${SECRETS_DIRECTORY}/nextcloud_admin_password.txt # put admin password in this file
  nextcloud_admin_user:
    file: ${SECRETS_DIRECTORY}/nextcloud_admin_user.txt # put admin username in this file
  nextcloud_smtp_name:
    file: ${SECRETS_DIRECTORY}/nextcloud_smtp_name.txt # put SMTP password in this file
  nextcloud_smtp_password:
    file: ${SECRETS_DIRECTORY}/nextcloud_smtp_password.txt # put SMTP password in this file
  nextcloud_redis_password:
    file: ${SECRETS_DIRECTORY}/nextcloud_redis_password.txt # put redis password in this file
  postgres_db:
    file: ${SECRETS_DIRECTORY}/postgres_db.txt # put postgresql db name in this file
  postgres_password:
    file: ${SECRETS_DIRECTORY}/postgres_password.txt # put postgresql password in this file
  postgres_user:
    file: ${SECRETS_DIRECTORY}/postgres_user.txt # put postgresql username in this file

nextcloud.env

CONTAINER_NAME_NEXTCLOUD=nextcloud
CONTAINER_NAME_POSTGRES=nextcloud-db-postgres
CONTAINER_NAME_REDIS=nextcloud-redis
CONTAINER_NAME_ADMINER=nextcloud-adminer
NEXTCLOUD_TRUSTED_DOMAINS=192.168.178.34
NEXTCLOUD_PORT=3004
REDIS_PORT=6379
ADMINER_PORT=8082
NEXTCLOUD_DIRECTORY_HTML=/volume1/docker/nextcloud/NEXTCLOUD_DIRECTORY_HTML
NEXTCLOUD_DIRECTORY_CONFIG=/volume1/docker/nextcloud/NEXTCLOUD_DIRECTORY_CONFIG
NEXTCLOUD_DIRECTORY_THEMES=/volume1/docker/nextcloud/NEXTCLOUD_DIRECTORY_THEMES
NEXTCLOUD_DIRECTORY_SKELETON=/volume1/docker/nextcloud/NEXTCLOUD_DIRECTORY_SKELETON
PHP_MEMORY_LIMIT=1024M
PHP_UPLOAD_LIMIT=512M
MTP_HOST=smtp.office365.com
SMTP_SECURE=tls
SMTP_PORT=587
SMTP_AUTHTYPE=login
MAIL_FROM_ADDRESS=benutzername@mail.onmicrosoft.com
MAIL_DOMAIN=smtp.office365.com
REDIS_CACHE=/volume1/docker/nextcloud/REDIS_CACHE
REDIS_PASSWORD=password12345
SECRETS_DIRECTORY=/volume1/docker/nextcloud/secrets

Gib mir gerne einen Kaffee ☕ aus!

Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕ ausgeben.

PayPal Logo


liberapay.com/strobelstefan.org


Kaffee via Bitcoin

bc1qfuz93hw2fhdvfuxf6mlxlk8zdadvnktppkzqzj



Ab hier gehören die Dateien alle in den Ordner /volume1/docker/nextcloud/secrets.

secrets/nextcloud_admin_password.txt

password

secrets/nextcloud_admin_user.txt

adminnextcloud

secrets/nextcloud_redis_password.txt

password

secrets/nextcloud_smtp_name.txt

benutzername@mail.onmicrosoft.com

secrets/nextcloud_smtp_password.txt

password

secrets/postgres_db.txt

nextcloud

secrets/postgres_password.txt

dbpassword

secrets/postgres_user.txt

nextcloud

Photo by Paul Teysen on Unsplash

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert