Uživatelské nástroje

Nástroje pro tento web


homerouteriv

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revizePředchozí verze
Následující verze
Předchozí verze
homerouteriv [2024/09/24 21:05] – [Wireguard] djbuldoghomerouteriv [2025/08/28 10:09] (aktuální) – upraveno mimo DokuWiki 127.0.0.1
Řádek 10: Řádek 10:
     * web server, tvheadend ... mam uz na PI     * web server, tvheadend ... mam uz na PI
     * možná by se hodil tcpdump, iftop, aircrack     * možná by se hodil tcpdump, iftop, aircrack
-  * [[#https_proxy|HTTPS proxy]] na moje web servery s automatickou obnovou certifikátu přes let's encrypt pro veřejnou IP adresu dostupnou přes [[#wireguard|Wireguard]]+  * [[#https_proxy|HTTPS proxy]] na moje web servery s automatickou obnovou certifikátu přes [[#acme|let's encrypt]] pro veřejnou IP adresu dostupnou přes [[#wireguard|Wireguard]]
  
 ===== Základ ===== ===== Základ =====
Řádek 112: Řádek 112:
   * musel jsem vytvořit vlastní firewall zónu. Když jsem použil WAN tak to nějak zahazovalo odesílané pakety a nenastal vůbec handshake   * musel jsem vytvořit vlastní firewall zónu. Když jsem použil WAN tak to nějak zahazovalo odesílané pakety a nenastal vůbec handshake
   * pro aplikaci změn konfigurace lze použít ''/etc/init.d/network restart''   * pro aplikaci změn konfigurace lze použít ''/etc/init.d/network restart''
-  * logy lze zobrazit přes ''logread'' 
   * v konfiguraci wireguard lze zapnout debug   * v konfiguraci wireguard lze zapnout debug
   * povolil jsem routování přes ''route_allowed_ips'', ale ve firewall zóně jsem to nepovolil pro LAN   * povolil jsem routování přes ''route_allowed_ips'', ale ve firewall zóně jsem to nepovolil pro LAN
Řádek 134: Řádek 133:
 </code> </code>
  
-===== HTTPS proxy =====+===== ACME =====
  
-FIXME - vyzkoušet+  * pro testování je vhodně použít staging 
 +  * používám ověření webroot s cestou /www/acme 
 +  * konfiguroval jsem přes uci
  
-  * nastavit fw 80/443 z pipi na gw wireguard +<code> 
-    * to uz je vlastne nastaveno tim, ze jsem prehodil ip :) +config cert 'wiki' 
-  * spustit ngix reverzni proxy na rpi a rpi4 z domen *.bari2.eu +        option use_staging '0' 
-    * wiki, min, reality na pi +        option keylength '2048' 
-    * doma, z2m, data(nextcloud) na pi4 +        option update_nginx '0' 
-    * forwardovat acme location slozku na lokalni storage +        option update_haproxy '0' 
-    * obsluhovat https certifikaty +        option enabled '1' 
-    * default location +        list domains 'wiki.bari2.eu' 
-      * pristup z non LAN IP bude bila stranka (ochrana) +        option update_uhttpd '0' 
-      * pristup z LAN IP bude bude admin luci rozhrani +        option validation_method 'webroot' 
-        * pro ip lze pouzit map, ale neumi CIDR. Pak je tam nejaky geo... +        option webroot '/www/acme' 
-        * iface neumi, ale lze pouzit server IP a dat listen jen na tu IP.. to je asi nej+</code>
  
-  * jak zajistit default location +  * vypnul jsem notifikaci nginx při změně cert..  
-    * a) uhttpd spustim jen nad 10.10.11.1 a ngix pobezi nad wg0 IP +    * měl jsem problém přpřechodu ze stagingkdy po zpracování prvního certifikátu poslal notifikaci a nginx už nenastartovalprotože acme na začátku přesunul všechny nastavené staging certifikáty a nginx to už nenašel 
-      * nevyhoda je, ze zmnou IP prijdu o pristup do admin prostredi.. ale mam jeste ssh :) +    později lze klidně zapnout
-      * vyhoda je jednoduchost :) +
-    * b) firewall pravidlo, co pristup na 80/443 z wg0 posle na ngix port 8080,8081 +
-      * tohle pravidlo muze byt vlastne uz na pipi +
-      * kdybych presel z pipi na verejnou iptak bych pravidlo musel dostat do gw +
-    * c) nginx bude rozhodovat posilat na utthpd bezici na jinem portu +
-      * nevyhoda jeze pro pristup na web admin musim zadavat port +
-  libi se mi reseni b) :D+
  
-  * udalal jsem: +  * logy lze číst ''logrotate''užitečné při ladění 
-    * rozjel jsem acme a ngix fw pro min, reality, wiky a default + 
-    * chyby acme / ngins jsou v logrotate.. hodne uzitecne +===== HTTPS proxy =====
-    * default server jde do /www/acme .. kde je index.htmlprazdny +
-    * tri domeny jdou na pi, je tam redirect na https a je tam platny cert z acme +
-    * vsehcny tri maji acme location.. aby fungovala verifikace +
-    * vypnul jsem notifikaci nginx pri zmene cert.. protoze jsem mel velky problem pri prechodu ze staging.. je mozne zapnout pozdeji.. ale nesmim mit nic staging :D on to totiz presune a restart nginx pak nenajde cert a nenabehne :D +
-    * mam port forwarding na obejidit nginx.. ale jsou disablovana +
-    * nginx jsem konfiguroval pres conf.. vypnul jsem podporu uci.. neslo  +
-  * TODO +
-    * kdyz si udelam vlastni domenu.. neco jako domov.bari2.eu.. tak to muzu pres proxy a certifikat posilat na 8123 ..  +
-      * nebo muzu nechat aj ten port.. ale klicove je, at to ma platny cert :D +
-    * cfg se dost opakuje.. slo by asi pres includy? nebo nejake shared sekce +
-    * chybi mi domeny lktb, teplo, tv...  +
-    * je na zvazeni, zda potrebuji ssl u min, reality.. doma... mozna by stacilo to jen z venku :) obdobne HA.. mohl by byt bez z domaci site..  +
-    * kdybych mel hvezdickovy certifikat, tak muzu mit jen jeden config pro nekolik domen +
-    * hvezdicckovy se musi overtovat pres dns chanalange.. ale wedos api a skript pro acme by to meli dat+
  
 <code> <code>
 opkg install nginx-ssl luci-app-acme acme-dnsapi opkg install nginx-ssl luci-app-acme acme-dnsapi
 </code> </code>
 +
 +  * vypnout konfiguraci přes luca, protože nemá takové možnosti
  
 <code> <code>
-erver { +vim /etc/config/nginx 
-    listen 443 ssl; +config main global 
-    server_name wiki.example.com;+        option uci_enable 'false' 
 +</code>
  
-    ssl_certificate /etc/acme/wiki.example.com/fullchain.pem; +  * využít luca template jako základní konfigurák
-    ssl_certificate_key /etc/acme/wiki.example.com/privkey.pem;+
  
-    location / { +<code> 
-        proxy_pass https://10.10.10.1; +cp /etc/nginx/uci.conf.template /etc/nginx/nginx.conf 
-        proxy_set_header Host $host; +</code> 
-        proxy_set_header X-Real-IP $remote_addr; + 
-        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; +   * změnil jsem v něm akorát root na /www/acme, ve kterém jsem vytvořil prázdný index.html 
-        proxy_set_header X-Forwarded-Proto $scheme; +   * pro každý web jsem vytvořil následující config v /etc/nginx/conf.d/
-    } +
-}+
  
 <code> <code>
 server { server {
-    listen 443 ssl; 
-    server_name doma.example.com; 
  
-    ssl_certificate /etc/acme/doma.example.com/fullchain.pem+    listen 6666 ssl; 
-    ssl_certificate_key /etc/acme/doma.example.com/privkey.pem;+    server_name wiki.bari2.eu; 
 + 
 +    ssl_certificate /etc/acme/wiki.bari2.eu/wiki.bari2.eu.cer
 +    ssl_certificate_key /etc/acme/wiki.bari2.eu/wiki.bari2.eu.key; 
 + 
 +    include conf.d/location-acme.inc; 
 +    include conf.d/location-pi-fwd.inc; 
 + 
 +
 + 
 +server { 
 + 
 +    listen 7777; 
 +    server_name wiki.bari2.eu; 
 + 
 +    include conf.d/location-acme.inc; 
 +    include conf.d/location-https-fwd.inc;
  
-    location / { 
-        proxy_pass https://10.10.10.2; 
-        proxy_set_header Host $host; 
-        proxy_set_header X-Real-IP $remote_addr; 
-        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
-        proxy_set_header X-Forwarded-Proto $scheme; 
-    } 
 } }
 </code> </code>
  
 +  * location-acme.inc - slouží ke zpřístupněni adresáře, kam acme dává dočasné soubory pro ověření vlastnictví domény. Pro každou doménu mám stejnou složku, protože se to ověřuje vždy sekvenčně a navzájem se neovlivňuje.
 +
 +<code>
 +location /.well-known/acme-challenge/ {
 +        default_type "text/plain";
 +        root /www/acme/;
 +}
 +</code>  
 +
 +  * location-https-fwd.inc - slouží k přesměrování http požadavku na https. Má cenu jen pro domény, kterým spravuji certifikáty.
 +
 +<code>
 +location / {
 +  return 301 https://$host$request_uri;
 +}
 +</code>  
 +
 +  * location-pi-fwd.inc - přesměrování na pi s weby, na https port.
 +
 +<code>
 +location / {
 + proxy_pass https://192.168.0.5;
 + proxy_set_header Host $host;
 + proxy_set_header X-Real-IP $remote_addr;
 + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 + proxy_set_header X-Forwarded-Proto $scheme;
 +}
 +</code>  
 +
 +  * weby, kterým nespravuji certifikát, posílám na pi web server.
 +
 +<code>
 server { server {
-    listen 80+    listen 7777 ssl
-    server_name example.com;+    server_name _;
  
-    # Umístění ACME výzvy do složky webroot +    ssl_certificate conf.d/default.crt; 
-    location /.well-known/acme-challenge/+    ssl_certificate_key conf.d/default.key;
-        root /www/acme # Adresář, kde ACME klient uloží soubory pro ověření +
-    }+
  
-    # Nastavení reverzní proxy na jiný stroj v síti +    # mohl bych sem dat acme include, aby to umelo overit jakoukoliv domenu 
-    location / { +    # je to ale zbytecne, pokud ten ssl pak nepouzivam... tak jsem to zrusil 
-        proxy_pass http://192.168.1.100;  IP adresa strojena který chcete přesměrovat +
-        proxy_set_header Host $host; + 
-        proxy_set_header X-Real-IP $remote_addr+# pokud zadny server name nema exact mach (nebo regular/wildcard) 
-        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for+# vezme prvni unmatched server_name na tom portu 
-        proxy_set_header X-Forwarded-Proto $scheme; +# takze zalezi na poradi .. ten default musi byt prvni 
-    }+hodnota "_" je jen nikdy nematchnuta hodnotaco nejkratsi :) 
 + 
 +server { 
 +    listen 8080
 +    server_name _
 + 
 +    # vse co neznam poslu na pi 
 +    include conf.d/location-pi-http-fwd.inc;
 } }
 </code> </code>
 +
 +  * naslouchám záměrně na jiném portu, protože 80/443 je obsazen OpenWRT webui
 +    * šlo to vyřešit i tak, že bych webui spustil jen nad určitou IP adresou rozhraní, ale tohle je více robustní na změnu IP adresy
 +  * na druhé straně wireguard tunelu se požadavky na 80/443 směřují na nové porty. 
 +    * šlo to vyřešit i tak, že by změnu portu dělal firewall na gw
 +
 +
homerouteriv.1727204741.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki