Onion-Services von nextcloud und forgejo kommen sich in die Quere #52
Labels
No labels
Kind/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: Krautspace/Unkraut#52
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Auf
lagerkraut
gibt es zwei Onion-Dienste:Im Moment kommen sich die beiden in die Quere. Hier muss die Konfiguration angepasst werden. Im Moment funktioniert der Onion-Service für die NextCloud nicht.
Ich habe das jetzt so gelöst, dass der Onion-Service und Webserver über Port 9080 für Forgejo verbunden sind. Wenn also jemand https://git.kraut.space aufruft, wird mittels
Onion-Location
-Header informiert, dass die Seite auf http://kqfdxjpzqt345qplxy6yrgkj4rotfokskmxyqz5a4t4yewg6n62ea2ad.onion:9080/ zu finden ist. Der Tor-Browser springt dann automatisch zu der Adresse.Die Seite http://jd3vodji36spb6ynznjflpalodxnasjwlgebfwei6sgxlp7fbvowakad.onion/ wird nach wie vor über Port 80 abgewickelt und bedurfte keiner Änderungen.
Was kam sich in die quere? Tor oder nginx?
Der Aufruf einer Onion-Domain wird an Tor weitergeleitet. In dem Fall geht http://jd3vodji36spb6ynznjflpalodxnasjwlgebfwei6sgxlp7fbvowakad.onion/ zum lokalen Tor-Daemon auf Port 80. Der nimmt den Request entgegen und ist so eingestellt, dass er den lokal (127.0.0.1 oder ::1) an Port 80 weitergibt. Der Daemon auf Port 80 verwertet nun die Anfrage. Im Falle des Webservers.
Man könnte auch so etwas wie
eotk
oderonionspray
einsetzen. Damit lassen sich die Anfragen geschickter handhaben. Das war mir an der Stelle nur zuviel Einrichtungsaufwand.Verstehe ich das richtig, dass der tor-daemon das Request via
[::1]:80
annginx
schiebt, und der nun im Request keinen passendenHost
-Header für einen seiner vserver sieht, da das einfach im Request fehlt???Die Onion-Services können für unterschiedliche TCP-basierte Dienste verwendet werden und reichen die Daten einfach an den TCP-Port weiter. Das heißt, Tor weiß nichts, vom nginx.
Was ich vermute, dass schon der Tor-Browser bestimmte HTTP-Header strippt und die Anfrage vergleichsweise "clean" durchgereicht wird.
Ok, ich nehme an git auf
:9080
ist ein non-issue?Was meinst du?
Ich meinte dein Ticket-Close-Comment zu der Lösung, dass
git.kraut.space
auf*.onion:9080
läuft.Die Frage ist, ob das eine gültige
super-good-enough
-Lösung ist oder ob das eine unsaubere Notlösung ist, die es zu verbessern gilt.Das ist eine Ich-hatte-keine-bessere-Idee-Lösung, sofern man auf die mitgelieferten Sachen setzt.
HiddenServicePort
auch auf eine Domain zeigen lassen, also(git|cloud).kraut.space
. Dann würde der Abruf gegen die Domain laufen. Hier ist das "Problem", dass wir zu HTTPS umleiten und der Onion-Service nur über HTTP daher kommt.eotk
oderonionspray
verwendet, kann man das besser proxyn und hat allgemein mehr Möglichkeiten. Zum einen ist das aber wieder Software, die neben irgendwelchen Paketmanagern u.ä. läuft. Zum anderen müsste man sich hier auch mehr Gedanken zu HTTPS und Zertifikaten machen. Das heißt, entweder man baut Vertrauen zu den selbst erzeugten Zertifikaten auf oder man nutzt Zertifikate von DigiCert oder HARICA, die dann aber Geld kosten.Wenn du noch eine gute Idee hast, wie man das besser machen könnte, immer her damit. 😉
When in doubt about port usage, use sockets instead?
/etc/nginx/sites-available/forgejo-onion
:forgejo-tor
:tor-%i.service
braucht something somethingAfter=nginx.service
In dem Falle würde ich sagen, dass das nur der
tor@forgejo.service
braucht. Andere Services bauen evtl. nicht aufnginx
auf.Vielen Dank für den Hint. Ich habe das so umgesetzt.