# De TLS-terminatie van Electrum Gate, als los bestand, en dat is de hele truc. # # nginx weigert te starten als een 'listen ... ssl' geen certificaat heeft, en # welk certificaat dat wordt weet alleen de agent. Zolang dit blok in nginx.conf # stond, kwam de server dus niet omhoog voordat er een keuze lag, en daarmee ook # de web-UI niet: precies de pagina waarop die keuze gemaakt wordt. Een gebruiker # zonder Zoraxy, of met twee kandidaten, zag daardoor helemaal niets en had geen # enkele weg vooruit. Zo aangetroffen in 0.0.3. # # Nu staat het blok hier, en het command-blok van docker-compose.yml zet dit # bestand pas in /var/lib/gate/tls/ zodra de agent cert.conf geschreven heeft. # nginx.conf haalt die map op met een jokerteken, en een jokerteken dat niets # matcht is voor nginx geen fout. Geen certificaat betekent dus: geen # stream-blok, geen poort 50022, maar wel een werkende pagina die vertelt wat # eraan mankeert. # # Dit is een template om dezelfde reden als de andere: bij een update ververst # umbrelOS alleen een whitelist, en *.template staat daarin. Let daarom ook hier # op het dollarteken: elke ${...} wordt bij het starten ingevuld, dus geen # nginx-variabelen in dit bestand. Het log_format, dat er niet zonder kan, staat # in stream-log.conf en wordt door het command-blok weggeschreven. stream { # Het log_format en de access_log, geschreven door het command-blok in # docker-compose.yml. include /var/lib/gate/stream-log.conf; server { # 50022 en niet 50002; de reden staat bij de ports-regel in # docker-compose.yml. listen 50022 ssl; # ssl_certificate en ssl_certificate_key, geschreven door de agent op # grond van wat er in de certificaatmappen staat en wat de gebruiker op # het dashboard gekozen heeft. Daarom staat er hier geen domeinnaam meer # in dit bestand. Dat dit bestand bestaat betekent dat cert.conf er is: # het command-blok zet het er pas dan neer. # # nginx wil de VOLLEDIGE keten in ssl_certificate, dus het bestand van # Zoraxy kan er ongewijzigd in. Splitsen in een servercertificaat en een # CA-deel, zoals de oude stunnel-opzet deed, is hier juist fout. include /var/lib/gate/cert.conf; ssl_protocols TLSv1.2 TLSv1.3; # Een Electrum-wallet houdt een langlopende verbinding open die het # grootste deel van de tijd stil is. De standaardwaarde van # proxy_timeout is tien minuten, en die verbreekt zo'n verbinding dus # zonder aanleiding; de wallet merkt dat pas als hij iets wil en meldt # dan dat er geen data is. stunnel hanteerde hier twaalf uur, en dat # verschil is bij de overstap naar nginx over het hoofd gezien. proxy_timeout 12h; proxy_connect_timeout 10s; # Houdt de verbinding naar de backend levend en laat een verbroken # verbinding sneller opvallen dan pas bij het volgende verzoek. proxy_socket_keepalive on; proxy_pass ${APP_ELECTRS_NODE_IP}:${APP_ELECTRS_NODE_PORT}; } }