• This forum has a zero tolerance policy regarding spam. If you register here to publish advertising, your user account will be deleted without further questions.

Website (z.B. NextCloud) neben Nginx Proxy Manager auf bare metal laufen lassen

muuminpapa

New Member
Hallo,

jetzt habe ich mich schon seit einigen Jahren mit der (privaten) Serveradministation sowohl - früher - in der "klassischen" Variante mit nginx/apache beschäftigt als auch einige Erfahrungen mit Docker sammeln können, was ich grundsätzlich - z.B. aus Sicherheitsgesichtspunkten für eine WordPress-Instanz - auch für eine super Technologie halte.

Nun überlege ich mir, da sich mein NextCloud-Server etwas "langweilt" auch meinen kleinen Blog auf diesen Server umziehen und ggf. auch mein Wiki dort abzulegen, habe aber Probleme, mir die gemeinsame Konfiguration einer grundsätzlich "herkömmlichen" NextCloud-Instanz (nach der coolen Anleitung von C. Rieger - kennt ihr doch bestimmt auch....!) mit dem Nginx Proxy Manager (npm) zu überlegen.

Ich hätte schon die Möglichkeit, dies über verschiedene Domains, bzw. auch Subdomains zu lösen, also quasi Abfragen auf Port 80 je nach Domain um-/weiterzuleiten. ABER: eigentlich würde ich ja auch sehr gerne die komfortable Let'sEncyrpt (R.I.P. Peter Eckersley ..... :( )-Zertifikat-Administrationsfunktion von npm nutzen.

Kann/Sollte ich dies über die sockets lösen oder sollte ich der NextCloud-Nginx-Konfiguration einfach einen anderen ungenutzten Port zuweisen und diese so dann die Anfrage beantworten lassen? Dann würde für mich doch aber für HTTPS der Port 443 wegfallen, oder?

Versteht jemand, was ich meine? Können gerne hier im Laufe des Threads in den Austausch treten.
 
Anleitung von C. Rieger - kennt ihr doch bestimmt auch....!
Ne.

Versteht jemand, was ich meine? Können gerne hier im Laufe des Threads in den Austausch treten.
Nicht so ganz, aber ich versuchs mal.

a) Stell deinen "herkömmliche" Nextcloud installation (Schätze Nginx + PHP) auf einen anderen port und binde an 127.0.0.1, dann via npm an diesen Port durchschleifen.

oder

b) die ganze "herkömmlich" nextcloud spezifische Nginx config in den "advanced -> custom nginx conf" tab der domain in npm kopieren, damit entfällt ein doppelter webserver.
 
MOD EDIT: Video (ein zweites Mal) entfernt
Let's go.
Danke schön, das Video habe ich auch bereits im Rahmen meiner Recherche gefunden und angeschaut. Aber ich möchte die NextCloud ja eben nicht als Docker-Container betreiben. Daher hilft mir das nicht viel, oder verpasse ich dort etwas?
 
Last edited by a moderator:
Wieso würdest Du das nicht wollen? Ist doch, wie beschrieben (er erwähnt sogar in seinem Video was weggelassen werden kann, wenn man NPM schon laufen hat) supereasy aufgesetzt und läuft dann parallel zur sonstigen Docker Installation.

Wenn NC direkt auf der Kiste aufgesetzt wird, kannst Du es nicht in sein privates Docker Netzwerk verbannen und nur den HTTPS Port durchleiten.

TIP (falls nicht eh so umgesetzt, hab nicht nachgesehen): Datenbankserver unbedingt auf eine Version pinnen, nicht ":latest" verwenden, sonst gibts Probleme, denn NC kann da hakelig sein und auch mal nicht mehr funktionieren, wenn man die DB "einfach so" hochzieht.
 
Wieso würdest Du das nicht wollen? Ist doch, wie beschrieben (er erwähnt sogar in seinem Video was weggelassen werden kann, wenn man NPM schon laufen hat) supereasy aufgesetzt und läuft dann parallel zur sonstigen Docker Installation.
Habe ich denn einen Vorteil, wenn ich NC dockerisiert laufen lasse? Finde die Anwendung "direkt" auf dem Server schon recht schick und war bisher auch sehr damit zufrieden - wenn sich irgendwann (mit älteren Kindern) ggf auch mehr Last einstellt, dann finde ich die gleichzeitig vorhandene Redis-Lösung (siehe wieder Carstens Anleitung (bzw. meine erste Installation damals habe ich direkt bei Ihm bestellt/von ihm einrichten lassen - damals hatte ich mir das noch nicht selbst zugetraut.... aber ich bin auch "gewachsen"... ;) )

Wenn NC direkt auf der Kiste aufgesetzt wird, kannst Du es nicht in sein privates Docker Netzwerk verbannen und nur den HTTPS Port durchleiten.
Das ist ja (glaube ich, wenn ich Dich richtig verstehe) genau das, was ich umsetzen möchte.


IDEE bzw. ANFORDERUNG[/FONT] ┌───────────────┐ nextcloud.example.com[/FONT] Anfrage 1 →→→→→→→→→→→ │ Mein-Server │ beantwortet Mein-Server "direkt" (d.h. nginx nextcloud.example.com └───────────────┘ auf Debian/Ubunt/etc) IP 1.2.3.4 ABER: mehrere Domains z.B. - example.com - anotherexample.com UND: mehrere Subdomains ┌───────────────┐ XY.example.com ╔═══════╗ Anfrage →→→→→→→→→→→ │ Mein-Server │ übergibt Mein-Server →→→→ ║ NPM ║ [/FONT] "alles andere" └───────────────┘ ╚═══════╝ XY.example.com IP 1.2.3.4 [FONT=courier new]
( Sorry, hatte es eigentlich "schöner" gemacht, aber hier nicht die Möglichkeit über so viele horizontale Zeichen monospaced code einzugeben )

NPM "übernimmt"
dann aber auch Zertifikatsmanagment (via LE) für ALLE Domains/Subdomains etc


Hieran experimentiere ich gerade auf einem Server im Internet, da ich im Heimnetz über die Schwierigkeiten mit den Zertifikaten gestolpert bin, bzw. nicht über die Domains und Subdomains im Netz (wie wahrscheinlich bei vielen anderen AVM-Kunden auch:) "fritz.box" zufriedenstellend diese Anforderung "simulieren" konnte.

Meine Idee aktuell ist NGINX auf dem Server auch als Reverse Proxy eben diese Weiterleitung durchführen zu lassen... Hier forsche ich aktuell an den "sockets" bzw. Ports und internen Weiterleitungen.

TIP (falls nicht eh so umgesetzt, hab nicht nachgesehen): Datenbankserver unbedingt auf eine Version pinnen, nicht ":latest" verwenden, sonst gibts Probleme, denn NC kann da hakelig sein und auch mal nicht mehr funktionieren, wenn man die DB "einfach so" hochzieht.

Aber vielen Dank für den Tipp mit der DB! Ja, da bin ich in der Tat vor vielen Versionen auch schon einmal in eine kleinere Falle getappt und hatte zunächst einmal einen Schockmoment bevor ich hierüber gestolpert bin. Aber "gottseidank" gibt es ja nicht jeden Tag DB-Updates (auch wenn dies sicherheitsmäßig schon bedenklich sein kann, Software zu lange ungepatched zu lassen..... naja, Licht und Schatten....!)
 
Proxy halt alles ausser NC mit deinem NC nginx an NPM und schleif .well-known/acme-challenge deiner NC domain auch an NPM durch. Dann solltest du es dort verwalten können. Du musst dann halt nur zusehen das du das Zertifikats gedönse DIESER NC DOMAIN auf deinen NC nginx/apache bekommst (symlink / volume mount ect.).
Das sollte es dann theoretisch sein.

Einfacher wäre aber wohl mein erster Lösungsansatz aus meinem vorigen Post und NPM, so wie es auch gedacht ist, an erster stelle zu haben.
 
Last edited:
Habe ich denn einen Vorteil, wenn ich NC dockerisiert laufen lasse?
Naja, mehrere:
  • Die Installation ist einfacher. Wenn Du einmal ein funktionierendes docker-compose File hast, kannst Du die gleiche Installation überall aufziehen und so auch einfach umziehen. Keine tausend manuellen Schritte mehr bis zur fertigen Installation. Nur ein "nextcloud-compose.yml up -d" und fertig.
  • Ein NC Update ist schlicht ein Update des Containers. Das kann ggfalls sogar automatisiert werden (Watchtower, bei DB evtl nicht ratsam).
  • Docker bringt eigenes privates Networking mit. Der Web-NC Container redet mit der DB nur über private IPs, von außen kommt man da nicht hin (da schlicht keine DB Ports zum Host weitergeleitet werden).
  • Das Proxying über NPM oder Traefik ist recht einfach konfiguriert (der NC Container sollte im gleichen Netzwerk wie der Proxy Container sein).
  • Du hast keine doppelte SSL Problematik sondern konfigurierst die DNS Challenge in NPM und verwendest für all Deine Subdomains schlicht ein (einzelnes) LE Wildcard Zertifikat.
 
Naja, mehrere:
  • Die Installation ist einfacher. Wenn Du einmal ein funktionierendes docker-compose File hast, kannst Du die gleiche Installation überall aufziehen und so auch einfach umziehen. Keine tausend manuellen Schritte mehr bis zur fertigen Installation. Nur ein "nextcloud-compose.yml up -d" und fertig.
  • Ein NC Update ist schlicht ein Update des Containers. Das kann ggfalls sogar automatisiert werden (Watchtower, bei DB evtl nicht ratsam).
  • Docker bringt eigenes privates Networking mit. Der Web-NC Container redet mit der DB nur über private IPs, von außen kommt man da nicht hin (da schlicht keine DB Ports zum Host weitergeleitet werden).
  • Das Proxying über NPM oder Traefik ist recht einfach konfiguriert (der NC Container sollte im gleichen Netzwerk wie der Proxy Container sein).
  • Du hast keine doppelte SSL Problematik sondern konfigurierst die DNS Challenge in NPM und verwendest für all Deine Subdomains schlicht ein (einzelnes) LE Wildcard Zertifikat.
Okay, Ihr habt mich !! ;)

Dann werde ich das mal mit Docker planen und umsetzen. Muss dann nur noch über meine Filesystem-Ordnung nachdenken (siehe hierzu ja meinen älteren Thread: Grundsätzliches zu Docker-Containern ).

Vor allem plane ich dann mal meine Backup-Strategie via restic um (v.a. die DB und die Datenordner, mehr muss ich dann ja wohl auch nicht sichern, wenn es ohnehin schnell wieder aus einem Docker-Container hochgezogen werden kann)

Meine eigentliche Planung frisst mir aktuell auch zuviel Zeit für Recherche und zuviel "Hirnschmalz" den ich hierein investieren muss um immer wieder über die (für mich) "perfekte Lösung" (auch wenn das stets "Verhandlungssache" ist, ich weiß....) nach zudenken.

Danke Jungs, ich bin jetzt dann mal auf dem "Docker-Pfad"...!
 
Back
Top