Nextcloud-AIO mit Docker und HTTPS LAN-only

madmax2010 schrieb:
dig @192.168.178.1 -t txt _acme-challenge.lablabla.xyz
@192.168.178.1 -> schau auf der frizbox nach, ob sie den txt eintrag sieht
Ich habe eben für deinen Post einen Alert bekommen. Hmm, woran das wohl gelegen hat? 😂
Sonst habe ich nichts sinnvolles hier beizutragen aber ich wünsche dem Threadersteller viel Erfolg bei seinem Projekt 👍
 
  • Gefällt mir
Reaktionen: >|Sh4d0w|<
Ich schreibe hier einfach mal meine Configs rein für Nextcloud-Docker, wie ich es nutze. Vielleicht hilft es ja^^:

compose.yml
Code:
---
services:
  nextcloud:
    image: lscr.io/linuxserver/nextcloud:latest
    container_name: nextcloud
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Berlin
    volumes:
      - ./config:/config
      - ./data:/data
    ports:
      - <Eigene IP>:443:443
    restart: unless-stopped
    depends_on:
      - db
      - appapi-harp
      - collabora
  db:
    image: postgres:18
    restart: unless-stopped
    # set shared memory limit when using docker compose
    shm_size: 512mb
    environment:
      POSTGRES_PASSWORD: <PW1>
      POSTGRES_USER: nextcloud
      POSTGRES_DB: nextcloud
      PGDATA: /var/lib/postgresql/18/docker
      TZ: Europe/Berlin
      PGTZ: Europe/Berlin
    volumes:
      - ./db:/var/lib/postgresql
  appapi-harp:
    environment:
      - HP_SHARED_KEY=<PW2>
      - NC_INSTANCE_URL=https://cloud.example.de
      - HP_TRUSTED_PROXY_IPS=<IP ProxyServer ODER IP-Netz/Netz>
      - HP_EXAPPS_ADDRESS=<Eigene IP>:8780
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./certs:/certs
    container_name: appapi-harp
    hostname: appapi-harp
    restart: unless-stopped
    network_mode: host
    image: ghcr.io/nextcloud/nextcloud-appapi-harp:release
    depends_on:
      - db
  collabora:
    image: collabora/code:latest
    container_name: collabora
    ports:
      - '<Eigene IP>:9980:9980'
    environment:
      - extra_params=--o:ssl.enable=false --o:ssl.termination=true --o:net.proto=IPv4
      - domain=office.example.de
      - username=<username>
      - password=<PW3>
    restart: unless-stopped
    depends_on:
      - db
      - appapi-harp
Alles zwischen < und > mit eigenen Werten ersetzen. Ich nutze auch Collabora Office, dafür braucht man eine zweite Domäne (ich habe einfach "cloud.example.de" und "office.example.de" benutzt; natürlich ebenfalls entsprechend anpassen).

Optional:
Für PUID und PGID kann man auch eigene sog. Service-Nutzer generieren. Habe ich gemacht mit:

  • groupadd -r docker_nx
    Systemgruppe "docker_nx" erstellen.
  • useradd -r -s /bin/false -M -d /dev/null -g docker_nx docker_nx
    User "docker_nx" erstellen; Systemnutzer (d.h. UID unter 1000, wird idR. nicht bei Anmeldedialogen gezeigt), kein Homeverzeichnis erstellen, Homeverzeichnis ist /dev/null, keine Shell (/bin/false).
  • usermod -L docker_nx
    Benutzer zusätzlich "locken" (sperren).
Jetzt kann man sich mit id docker_nx die uid und die gid anzeigen lassen; diese Werte kann man für PUID und PGID verwenden.

---

Bezüglich App-API HARP muss ich gestehen, ich weiß nicht mehr ob da noch mehr nötig war. Ich glaube nicht, ich konnte das mit meinem ReverseProxy erschlagen.

---

Für den Zugriff übers Internet nutze ich Caddy als ReverseProxy, der auf einer anderen Kiste läuft. Das Ding holt sich standardmäßig Lets Encrypt-Zertifikate, ohne dass man was dafür tun muss.

Meine /etc/caddy/Caddyfile sieht so aus:
Code:
cloud.example.de {
        redir /.well-known/carddav  /remote.php/dav 301
        redir /.well-known/caldav   /remote.php/dav 301
        redir /.well-known/webfinger /index.php/.well-known/webfinger 301
        redir /.well-known/nodeinfo  /index.php/.well-known/nodeinfo 301
        header {
                Strict-Transport-Security "max-age=15552000;"
        }
        reverse_proxy /exapps/* <IP von Nextcloud>:8780
        reverse_proxy https://<IP von Nextcloud>:443 {
                transport http {
                        tls
                        tls_insecure_skip_verify
                }
        }
}

office.example.de {
        @denied {
                path /browser/dist/admin/admin.html
        }
        respond @denied 403
        reverse_proxy <IP von Nextcloud>:9980
}
NACHDEM man mit der Installation von Nextcloud durch ist (sprich: "cloud.example.de" aufrufen und den Installationsschritten folgen), muss man noch den sog. HA-API konfigurieren, wähernd man mit Admin-Rechten auf der Nextcloud-Seite ist:
hapi.png

EDIT:
https://decatec.de/home-server/nextcloud-mit-externen-apps-erweitern-appapi-mit-harp/
Auf der Seite wird gezeigt wie man HA-API auf andere Weise installiert (für uns eher irrelevant), allerdings wird auch mit Screenshots gezeigt, wie man die Bereitschaft testet.

Wie wichtig die HA-API ist? Momentan kann man die, glaube ich, zur Not auch einfach vollständig ignorieren, allerdings planen die Nextcloud-Macher wohl mittel- und langfristig, dass HA-API mal zur Pflicht wird, weil künftig AddOns und Apps von Nextcloud die Schnittstelle nutzen sollen... Wollt ich der Vollständigkeit halber erwähnt haben^^.

---

Office ist leicht zu konfigurieren: "Verwenden Sie Ihren eigenen Server" auswählen und die URL "https://office.example.de" eingeben. Kann sein, dass man vorher die entsprechende App in der Nextcloud-Weboberfläche installieren muss (das weiß ich nicht mehr).

Tipp: Man kann seine Nextcloud-Instanz über https://scan.nextcloud.com kostenlos scannen lassen um zu testen, wie gut die eigene Nextcloud-Instanz abgesichert ist.

EDIT:
TLDR; man kann da (leider) einiges an Zeit investieren. Ich hab mir die Config so aus verschiedensten Suchergebnissen zusammengesucht und teilweise (HA-API) auch ChatGPT befragt. Ich bin sehr froh dass ich die Config mittlerweile so fertig habe - die funktioniert bei mir einwandfrei und läuft so bei mir seit gut drei Monaten mittlerweile. Aller Aufwand zum Trotz ist es halt schon nice, u.a. ein eigenes, selbstgehostetes Office-Paket im Browser zu haben^^.

Updates sind da, einmal eingerichtet, schnell abgefrühstückt mit zwei Befehlen:
docker compose pull
docker compose up -d

Wie man meinem Beitrag aber möglicherweise anmerkt: Ich fühle mich in der Kommandozeile wohl und habe kein Problem, z.B. auch mal ein docker compose down -t 30 auszuführen und dann mittels tar-Befehl einfach das komplette Verzeichnis wegzusichern. Ich brauche keine Nextcloud-AIO, das Ding war bei meinen Versuchen leider immer etwas instabil...
 
Zuletzt bearbeitet:
Zurück
Oben