Aus Raspberry Pi Geek 02/2022

OCIS mit DynDNS auf einem Raspberry Pi einrichten (Seite 3)

Der Aufruf sudo noip2 startet den Client. Damit er auch nach einem Reboot automatisch startet, tragen Sie via crontab -e einen Cronjob ein und fügen ihm die Zeile @reboot cd /home/pi/noip && sudo noip2 hinzu.

Listing 4

No-IP-Client installieren

$ sudo apt install build-essential
$ wget http://www.noip.com/client/linux/noip-duc-linux.tar.gz
$ tar xf noip-duc-linux.tar.gz
$ mv noip-2.1.9-1 noip && cd noip
$ sudo make install

Router vorbereiten

Damit Clients von außen auf die Owncloud-Instanz zugreifen können, gilt es, die Konfiguration des heimischen Routers noch etwas anzupassen. Das betrifft in erster Linie NAT (Network Address Translation), das im internen Netz private IP-Adressen, etwa 192.168.0.123, beim Zugriff aufs Internet mit der öffentlichen IP-Adresse maskiert. In die andere Richtung funktioniert das jedoch nur bei bestehender Verbindung, der Owncloud-RasPi ließe sich also nicht erreichen. Die Lösung heißt Port Forwarding: Pakete, die am Router auf bestimmten TCP/IP-Ports ankommen, leitet dieser an den Raspberry Pi weiter – ein Prinzip, das jeder Router beherrscht.

In den grafischen Oberflächen der Router finden sich die Einstellungen für das Port Forwarding je nach Hersteller an ganz unterschiedlicher Stelle. AVM beispielsweise versteckt die Option bei seinen Fritzboxen im Menüpunkt Gerät für Freigaben hinzufügen. Damit sich für den RasPi überhaupt eine Weiterleitung einrichten lässt, muss die Fritzbox ihn im lokalen Netz erkennen. In der Liste der Geräte taucht er dann auf, gegebenenfalls jedoch nur mit seiner IP- oder MAC-Adresse. Im Menü Anwendungen wählen Sie Andere Anwendung, als Protokoll TCP und als Port 80. Dasselbe wiederholen Sie für TCP/443. Je nach Hersteller und Modell müssen Sie diese Ports auch noch in einer separaten Maske formal freigeben. Eine Fritzbox schaltet die Ports jedoch automatisch für eingehenden Netzwerkverkehr frei, sobald Weiterleitungen dafür existieren.

Viele WLAN-Router lassen sich schnell und unkompliziert mit der freien Firmware OpenWRT [5] betreiben, die mit der Weboberfläche LuCI kommt. OpenWRT steht den Firmwares der kommerziellen Hersteller in nur wenig nach, bringt aber zusätzlich ein komplettes Linux mit. Sie finden das Port Forwarding in OpenWRT unter Network | Firewall, wo Sie im Menü Port Forwards neue Forwarding-Regeln anlegen. Sei weisen dem Gerät einen Namen zu, ordnen ihm Protokoll, Zone und IP-Adresse des Raspberry Pi zu, geben den internen und externen Port an und klicken abschließend auf Save & Apply.

Deployment vorbereiten

Jetzt geht es an Owncloud OCIS selbst. Der OCIS-Dienst Traefik kümmert sich dabei um die SSL-Zertifikate für OCIS. Die Entwickler stellen eine Vorlage für Docker-compose bereit, die das Deployment erheblich erleichtert. Um sie zu nutzen, installieren Sie zunächst Git, das Werkzeug zur Versionskontrolle (Listing 5, erste Zeile). Danach laden Sie die Quellen für OCIS herunter (Zeile 2). Anschließend finden Sie in einem Unterverzeichnis (Zeile 3) die benötigte Vorlage docker-compose.yml für Docker-compose. Ein Blick in die Datei (Zeile 4 ff.) lohnt sich: Darin finden Sie beispielsweise den Verweis auf das Daten-Volume ocis-data, das Sie eingangs angelegt haben.

Listing 5

Deployment vorbereiten

$ sudo apt install git
$ git clone https://github.com/owncloud/ocis.git
$ cd deployments/examples/ocis_traefik/
$ less docker-compose.yml
---
version: "3.7"
services:
  traefik:
    image: traefik:v2.5
    networks:
      ocis-net:
        aliases:
          - ${OCIS_DOMAIN:-ocis.owncloud.test}
    command:
      - "--log.level=${TRAEFIK_LOG_LEVEL:-ERROR}"
      # letsencrypt configuration
      - "--certificatesResolvers.http.acme.email=${TRAEFIK_ACME_MAIL:[email protected]}"
      - "--certificatesResolvers.http.acme.storage=/certs/acme.json"
      - "--certificatesResolvers.http.acme.httpChallenge.entryPoint=http"
      # enable dashboard
      - "--api.dashboard=true"
      # define entrypoints
      - "--entryPoints.http.address=:80"
      - "--entryPoints.http.http.redirections.entryPoint.to=https"
      - "--entryPoints.http.http.redirections.entryPoint.scheme=https"
      - "--entryPoints.https.address=:443"
      # docker provider (get configuration from container labels)
      - "--providers.docker.endpoint=unix:///var/run/docker.sock"
      - "--providers.docker.exposedByDefault=false"
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
      - "certs:/certs"
    labels:
      - "traefik.enable=${TRAEFIK_DASHBOARD:-false}"
      - "traefik.http.middlewares.traefik-auth.basicauth.users=${TRAEFIK_BASIC_AUTH_USERS:-admin:$apr1$4vqie50r$YQAmQdtmz5n9rEALhxJ4l.}" # defaults to admin:admin
      - "traefik.http.routers.traefik.entrypoints=https"
      - "traefik.http.routers.traefik.rule=Host(`${TRAEFIK_DOMAIN:-traefik.owncloud.test}`)"
      - "traefik.http.routers.traefik.middlewares=traefik-auth"
      - "traefik.http.routers.traefik.tls.certresolver=http"
      - "traefik.http.routers.traefik.service=api@internal"
    logging:
      driver: "local"
    restart: always
  ocis:
    image: owncloud/ocis:${OCIS_DOCKER_TAG:-latest}
    networks:
      ocis-net:
    entrypoint:
      - /bin/sh
      - /entrypoint-override.sh
    environment:
      OCIS_URL: https://${OCIS_DOMAIN:-ocis.owncloud.test}
      OCIS_LOG_LEVEL: ${OCIS_LOG_LEVEL:-error} # make oCIS less verbose
      PROXY_OIDC_INSECURE: "${INSECURE:-false}" # needed if Traefik is using self generated certificates
      PROXY_TLS: "false" # do not use SSL between Traefik and oCIS
      # change default secrets
      IDP_LDAP_BIND_PASSWORD: ${IDP_LDAP_BIND_PASSWORD:-idp}
      STORAGE_LDAP_BIND_PASSWORD: ${STORAGE_LDAP_BIND_PASSWORD:-reva}
      OCIS_JWT_SECRET: ${OCIS_JWT_SECRET:-Pive-Fumkiu4}
      STORAGE_TRANSFER_SECRET: ${STORAGE_TRANSFER_SECRET:-replace-me-with-a-transfer-secret}
      OCIS_MACHINE_AUTH_API_KEY: ${OCIS_MACHINE_AUTH_API_KEY:-change-me-please}
    volumes:
      - ./config/ocis/entrypoint-override.sh:/entrypoint-override.sh
      - ocis-data:/var/lib/ocis
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.ocis.entrypoints=https"
      - "traefik.http.routers.ocis.rule=Host(`${OCIS_DOMAIN:-ocis.owncloud.test}`)"
      - "traefik.http.routers.ocis.tls.certresolver=http"
      - "traefik.http.routers.ocis.service=ocis"
      - "traefik.http.services.ocis.loadbalancer.server.port=9200"
    logging:
      driver: "local"
    restart: always
volumes:
  certs:
  ocis-data:
networks:
  ocis-net:

Vor dem Aufruf müssen Sie allerdings noch die ebenfalls in diesem Verzeichnis enthaltene Datei .env (Listing 6) mit einem Editor bearbeiten. An ihrem oberen Ende finden Sie die Zeile INSECURE=true. Machen Sie hier aus true ein false. Die Einstellungen, die mit TRAEFIK_ beginnen, überspringen Sie für dieses Beispiel. Als OCIS_DOMAIN setzen Sie den DynDNS-Namen, im Beispiel also ocis-at-home.ddns.net.

Bei IDP_LDAP_BIND_PASSWORD, STORAGE_LDAP_BIND_PASSWORD, OCIS_JWT_SECRET sowie STORAGE_TRANSFER_SECRET setzen Sie ein von Ihnen gewähltes, sicheres Passwort ein, sonst nutzt OCIS seine Standardwerte. Befehle wie pwgen oder openssl rand -base64 32 auf der Kommandozeile generieren gute Vorschläge für sichere Passwörter. Mit dem Abspeichern der Datei schließen Sie das Bearbeiten ab.

Listing 6

OCIS-Umgebungsvariablen für Docker

# If you're on a internet facing server please comment out following line.
# It skips certificate validation for various parts of oCIS and is needed if you use self signed certificates.
INSECURE=true
### Traefik settings ###
# Serve Treafik dashboard. Defaults to "false".
TRAEFIK_DASHBOARD=
# Domain of Traefik, where you can find the dashboard. Defaults to "traefik.owncloud.test"
TRAEFIK_DOMAIN=
# Basic authentication for the dashboard. Defaults to user "admin" and password "admin"
TRAEFIK_BASIC_AUTH_USERS=
# Email address for obtaining LetsEncrypt certificates, needs only be changed if this is a public facing server
TRAEFIK_ACME_MAIL=
### oCIS settings ###
# oCIS version. Defaults to "latest"
OCIS_DOCKER_TAG=
# Domain of oCIS, where you can find the frontend. Defaults to "ocis.owncloud.test"
OCIS_DOMAIN=
# IDP LDAP bind password. Must be changed in order to have a secure oCIS. Defaults to "idp".
IDP_LDAP_BIND_PASSWORD=
# Storage LDAP bind password. Must be changed in order to have a secure oCIS. Defaults to "reva".
STORAGE_LDAP_BIND_PASSWORD=
# JWT secret which is used for the storage provider. Must be changed in order to have a secure oCIS. Defaults to "Pive-Fumkiu4"
OCIS_JWT_SECRET=
# JWT secret which is used for uploads to create transfer tokens. Must be changed in order to have a secure oCIS. Defaults to "replace-me-with-a-transfer-secret"
STORAGE_TRANSFER_SECRET=
# Machine auth api key secret. Must be changed in order to have a secure oCIS. Defaults to "change-me-please"
OCIS_MACHINE_AUTH_API_KEY=
# If you want to use debugging and tracing with this stack,
# you need uncomment following line. Please see documentation at
# https://owncloud.dev/ocis/deployment/monitoring-tracing/
#COMPOSE_FILE=docker-compose.yml:monitoring_tracing/docker-compose-additions.yml

OCIS ausrollen

Dann folgt der große Moment: Immer noch in demselben Ordner erweckt docker-compose up -d den Container zum Leben. Traefik kümmert sich automatisch um das Zertifikat von Let’s Encrypt, OCIS startet ebenfalls automatisch. Auf Port 443 Ihres DynDNS-Hosts sollten Sie nun Ihre OCIS-Instanz erreichen.

Die Owncloud-Dokumentation [6] enthält die Details zu den OCIS-Standardnutzern, deren Login-Daten Sie nach dem Start verwenden. Ändern Sie unbedingt unmittelbar nach dem ersten Login alle Standardpasswörter, andernfalls gerät Ihr OCIS zum Scheunentor für Angreifer. Danach steht der Nutzung von OCIS auch über dessen Apps nichts mehr im Wege (Abbildung 3).

Abbildung 3: Mit vergleichsweise wenig Aufwand gestalten Sie eine per SSL geschützte OCIS-Umgebung, die Docker-compose automatisch hochzieht.

Abbildung 3: Mit vergleichsweise wenig Aufwand gestalten Sie eine per SSL geschützte OCIS-Umgebung, die Docker-compose automatisch hochzieht.

Wollen Sie OCIS nach einem Reboot des Raspberry Pi erneut starten, genügt es, wieder in das per Git ausgecheckte Verzeichnis ocis/deployments/examples/ocis_traefik zu wechseln. Der Befehl docker-compose start -d startet OCIS dann auf Basis des bereits bestehenden Containers, bei Bedarf auch per Cron oder automatisch als Systemd-Unit.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 7 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben