Gå til innhold
🎄🎅❄️God Jul og Godt Nyttår fra alle oss i Diskusjon.no ×

Anbefalte innlegg

Gjest Sletttet+98134

https://www.raspberrypi.org/documentation/remote-access/web-server/nginx.md

 

php trenger du ikke om du bare skal bruke den til reverse proxy.

 

om du kjører hass.io så kan du evt legge til ngnix rett i home assistant. Kjører ngnix på en ubuntu-vm selv så kjenner ikke nøyaktig fremgangsmåten, men vet mange gjør det sånn.

 

certbot er også kjekt for å få sertifikater på plass. 

Slik ser min home.domene.no ut:

server {
    listen       443 ssl;
    server_name  home.domene.no;

    location / {
        proxy_pass http://192.168.0.105:8123/;
        proxy_set_header Host $host;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    location /api/websocket {
        proxy_pass http://192.168.0.105:8123/api/websocket;
        proxy_set_header Host $host;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

    }
}

 

Endret av Sletttet+98134
Lenke til kommentar
Videoannonse
Annonse
On 1/7/2020 at 5:25 PM, Fleskefjeset said:

https://www.raspberrypi.org/documentation/remote-access/web-server/nginx.md

 

php trenger du ikke om du bare skal bruke den til reverse proxy.

 

om du kjører hass.io så kan du evt legge til ngnix rett i home assistant. Kjører ngnix på en ubuntu-vm selv så kjenner ikke nøyaktig fremgangsmåten, men vet mange gjør det sånn.

 

certbot er også kjekt for å få sertifikater på plass. 

Slik ser min home.domene.no ut:


server {
    listen       443 ssl;
    server_name  home.domene.no;

    location / {
        proxy_pass http://192.168.0.105:8123/;
        proxy_set_header Host $host;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    location /api/websocket {
        proxy_pass http://192.168.0.105:8123/api/websocket;
        proxy_set_header Host $host;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

    }
}

 

Takk for tilbakemelding. Jeg tenker jeg kanskje i først omgang skal forsøke å sette opp Nginx med en docker på Ubuntu serveren, hvis jeg klarer å få det til.

Ang. sertifikater så jeg jeg forsøkt å finne litt ut av hvordan dette gjøres? Har det noe å si hvor man har domenet registrert? Jeg har mitt hos DomeneShop. Men jeg har lest at hvis man skal bruke Certbot må man sette det opp med en DNS leverandør som støtter Certbot. Jeg må si jeg ikke helt skjønner hva dette betyr i praksis.  

Lenke til kommentar

Certbot som jeg forstår det er bare et løsning for automatisk fornyelse av LEts Encrypt-sertifikater - en praktisk løsning siden sertifikatene til Lets Encrypt vel fortsatt har ganske kort holdbarhet.

Hvor domenet ditt er registrert har ikke noe å si. Har selv brukt Lets Encrypt på tjenester som har kjørt på domener via Domeneshop. For Certbot o.l. løsninger gjøres det vel en DNS-challange i forbindelse med fornyelse.

Men dette er vel en tjeneste bare du skal aksessere. Det er vel ikke noe problem at man får en sikkerhetsadvarsel i nettleseren og legger inn en exception i nettleseren. Gjør du dette kan du godt bare bruke en self-sign-sertifikat (evt. installere sertifikatet på klientene du vanligvis bruker). Da unngår du bryet med fornyelse. Hadde det vært en webserver som skulle være "offentlig åpen for besøkende" hadde dette naturligvis ikke vært en god løsning.

Endret av NULL
  • Liker 1
Lenke til kommentar
1 hour ago, NULL said:

Certbot som jeg forstår det er bare et løsning for automatisk fornyelse av LEts Encrypt-sertifikater - en praktisk løsning siden sertifikatene til Lets Encrypt vel fortsatt har ganske kort holdbarhet.

Hvor domenet ditt er registrert har ikke noe å si. Har selv brukt Lets Encrypt på tjenester som har kjørt på domener via Domeneshop. For Certbot o.l. løsninger gjøres det vel en DNS-challange i forbindelse med fornyelse.

Men dette er vel en tjeneste bare du skal aksessere. Det er vel ikke noe problem at man får en sikkerhetsadvarsel i nettleseren og legger inn en exception i nettleseren. Gjør du dette kan du godt bare bruke en self-sign-sertifikat (evt. installere sertifikatet på klientene du vanligvis bruker). Da unngår du bryet med fornyelse. Hadde det vært en webserver som skulle være "offentlig åpen for besøkende" hadde dette naturligvis ikke vært en god løsning.

Ja foreløbig er det bare jeg som skal bruke de serverne som ligger innenfor nettverket, men jeg vil gjerne gjøre dette for å lære. En ting jeg sliter lit med å forstå oppi dette er hva som er forskjellen på domene leverandøren og DNS leverandøren (er disse ofte den samme?) da det er mye blandede referanser til begge i det jeg leser rundt sertifiserings-prosessen. Leser bl.a. dette på Certbot sine sider:

Quote

DNS credentials are a password or other kind of secret (such as an API key) that your DNS provider lets you use to change the contents of your DNS records. They are usually issued by your domain registrar (or by another DNS provider, if your DNS provider isn’t the same as your registrar). DNS credentials are a sensitive kind of secret because they can be used to take over your site completely. You should never share these credentials publicly or with an unauthorized person. It can be OK to provide a copy of them to Certbot to let it perform DNS validation automatically, since it runs locally on your machine.

Er dette noen jeg kan/må få fra f.eks. Domeneshop?

1 hour ago, process said:

For http challenge holder det med web server, for dns challenge må du ha en dns leverandør som støtter dynamiske oppdateringer - sistnevnte er kun nødvendig dersom du skal ha wildcard sertifikat.

Som sagt vet jeg ikke hvem som er DNS leverandøren, men det er kanskje Domeneshop, som også er domene leverandør? Jeg vil gjerne prøve å få til et Wildcard sertifikat da jeg ønsker å ha flere sub-domener.

Lenke til kommentar
31 minutes ago, norsemanGrey said:

Ja foreløbig er det bare jeg som skal bruke de serverne som ligger innenfor nettverket, men jeg vil gjerne gjøre dette for å lære. En ting jeg sliter lit med å forstå oppi dette er hva som er forskjellen på domene leverandøren og DNS leverandøren (er disse ofte den samme?) da det er mye blandede referanser til begge i det jeg leser rundt sertifiserings-prosessen. Leser bl.a. dette på Certbot sine sider:

Er dette noen jeg kan/må få fra f.eks. Domeneshop?

Som sagt vet jeg ikke hvem som er DNS leverandøren, men det er kanskje Domeneshop, som også er domene leverandør? Jeg vil gjerne prøve å få til et Wildcard sertifikat da jeg ønsker å ha flere sub-domener.

 Stemmer. Domeneshop er i ditt tilfelle registrar og dns leverandør. For å få til dns-01 challenge for wildcard kan du forsøke en modul de vedlikeholder https://github.com/domeneshop/certbot-dns-domeneshop, men det hele er ganske nytt og under utvikling. 

Vil anbefale http challenge I første omgang, det er uproblematisk å få flere sertifikater på denne måten. 

Husk at ip adressen din kan endre seg på hjemmelinje og at du må oppdatere dns. Domeneshop har ingen dynamisk dns støtte, men det ser ut som det går an å snekre sammen noe som går periodisk evt på dhcp events som oppdaterer vha det nye domeneshop APIet. 

 

Edit: autocorrect

 

 

Endret av process
Lenke til kommentar
1 minute ago, process said:

Stemmer. Domeneshop er i ditt tilfelle registrar og dns leverandør. For å få til dns-01 challenge for wildcard kan du forsøke en modul de vedlikeholder https://github.com/domeneshop/certbot-dns-domeneshop, men det hele er ganske nytt og under utvikling. 

Vil anbefale http challenge I første omgang, det er uproblematisk å få flere sertifikater på denne måten. 

Husk at ip adressen din kan endre seg på hjemmelinje og at du må oppdatere dns. Domeneshop har ingen dynamisk dns støtte, men det ser ut som det går an å snekre sammen noe som går periodisk evt på dhcp events som oppdaterer vha det nye domeneshop APIet. 

 

Edit: autocorrect

 

 

 

Lenke til kommentar
Gjest Sletttet+98134
norsemanGrey skrev (11 timer siden):

Takk for tilbakemelding. Jeg tenker jeg kanskje i først omgang skal forsøke å sette opp Nginx med en docker på Ubuntu serveren, hvis jeg klarer å få det til.

Ang. sertifikater så jeg jeg forsøkt å finne litt ut av hvordan dette gjøres? Har det noe å si hvor man har domenet registrert? Jeg har mitt hos DomeneShop. Men jeg har lest at hvis man skal bruke Certbot må man sette det opp med en DNS leverandør som støtter Certbot. Jeg må si jeg ikke helt skjønner hva dette betyr i praksis.  

Certbot fornyer Let's Encrypt-sertifikatet ditt i god tid før det utløper automatisk, så du slipper å tenke på det. Normalt har LE-sertifikater utløp etter kun 90 dager, så det er en stor fordel å få det automatisert. Som du har fått forklart over er det leverandør-uavhengig. Svært trivielt å sette opp, har hatt det kjørende noen år det har aldri feilet heller.

Som nevnt over så er det en teoretisk mulighet for at wan-ipen din endres slik at du må oppdatere i dns-settings hos domeneshop. Min erfaring (med Altibox) er at det sjeldent skjer, så jeg har ikke hatt noe behov for å automatisere dette. I løpet av de fire årene jeg har hatt Altibox har jeg hatt to forskjellige ip-er, og bytte skjedde ifbm. planlagt nedetid en hel natt. Dette er nå over to år siden og jeg har fremdeles samme ip som jeg hadde rett etter vedlikeholdet var ferdig.

Ta også en titt på uptimerobot, den er fin om du vil få mail når noe går ned (eller du bytter ip).

Lenke til kommentar

Når jeg tidligere kjørte med en public webserver hjemme og ikke hadde fast IP, husker jeg at jeg vurderte å prøve å bruke Selenium e-l. for å lage et script som eventuelt oppdaterte automatisk hos Domeneshop.

Både hos Altibox og Telenor har jeg opplevd å ha samme IP over veldig lang tid. Gjerne må det være litt nedetid på aksessen for at ip skulle endre seg.

Lenke til kommentar

Jeg opplever sjelden at IP adressen endrer seg selv, men der er greit å kjenne til at det kan skje og at hjemmetjenester derfor kan bli utilgjengelige.

Selv er jeg nok litt yrkesskadet, samt at jeg er mye på reise, så får litt fnatt når slikt ikke er automatisert. For andre er det akseptabelt ?

Lenke til kommentar

Om man ikke har automatikk for oppdatering, kan det jo være greit å f.eks. kjøre dyndns i tillegg som en nødløsning i tilfelle ip endrer seg. Da kan man også remote finne ut hva ny ip er og endre den hos Domeneshop.

Litt usikker på hvordan ISP-ene gjør det når det gjelder IPv6, og om man der har hatt mulighet for fast IP. Med det sagt, enkelte operatører tilbyr jo fast ip(v4) for en ganske liten ekstrasum.

  • Liker 1
Lenke til kommentar

Takker igjen for my bra input. Jeg fortsetter å lese en del og det kan virke som om dette kan være noe jeg er på utkikk etter for å få til reverce proxy og SSL sertifikater?

https://github.com/linuxserver/docker-letsencrypt

Jeg er fortsatt usikker på hvordan jeg skal gjøre dette i praksis opp mot Domainshop. Alle plasser jeg leser om dette så virker det som om fremgangsmåten er forskjellig og jeg klarer derfor ikke få noe godt tak på hva jeg trenger å gjøre. @process nevner at de har en plugin. Skal denne da settes opp på letsenctypt docker imaget på noen måte?

Lenke til kommentar
norsemanGrey skrev (1 time siden):

Takker igjen for my bra input. Jeg fortsetter å lese en del og det kan virke som om dette kan være noe jeg er på utkikk etter for å få til reverce proxy og SSL sertifikater?

https://github.com/linuxserver/docker-letsencrypt

Jeg er fortsatt usikker på hvordan jeg skal gjøre dette i praksis opp mot Domainshop. Alle plasser jeg leser om dette så virker det som om fremgangsmåten er forskjellig og jeg klarer derfor ikke få noe godt tak på hva jeg trenger å gjøre. @process nevner at de har en plugin. Skal denne da settes opp på letsenctypt docker imaget på noen måte?

Hos Domeneshop må du endre DNS-oppslaget til å peke til din IP-addresse.

asdfasdf.jpg.699158e96db3f6096bd5bf1aeae19ebc.jpg

Så setter du opp Nginx på din lokale server til å fungere som en reverse proxy som beskrevet her tidligere. 

Når det er gjort kan du begynne å tenke på SSL-sertifikat. Da er Letsencrypt en grei vei å gå. 

Lenke til kommentar
19 minutes ago, Håvard said:

Hos Domeneshop må du endre DNS-oppslaget til å peke til din IP-addresse.

asdfasdf.jpg.699158e96db3f6096bd5bf1aeae19ebc.jpg

Så setter du opp Nginx på din lokale server til å fungere som en reverse proxy som beskrevet her tidligere. 

Når det er gjort kan du begynne å tenke på SSL-sertifikat. Da er Letsencrypt en grei vei å gå. 

Ja det gjør den allerede. Jeg har satt opp *.mittdomene.no -> <min externe IP>

Jeg har nå også vært i kontakt med Domeneshop og fått API nøkler for bruk med DNS valideringen. Regner med ma da må bruke Domeneshop sin plugging (sammen med Let's Encrypt / Certbot  ?) https://github.com/domeneshop/certbot-dns-domeneshop. Men hvordan jeg går frem for å gjøre dette har jeg fortsatt ikke oversikt over.2020-01-09_15-14-33.thumb.png.57d7bb002407e8a766146664fc4e9ac0.png

Så du anbefaler å ta hele Nginx prosessen først? E.g. sette oppe en docker med Nginx som reverce proxy, og så sette opp en egen docker med Let's Encrypt / Certbot når dette fungerer?

Lenke til kommentar

Re ipv6: Jeg har tidligere fått dynamisk prefix fra get, men CD/telenor nå har det ikke endret seg på en stund.  Hvis du har PD internt så må du håndtere DNS oppdateringer på hver enkelt vert i motsetning til i router, noe som plutselig gjør at du også må ha nøkler til dns på hver enkelt vert dersom du vil gjøre det dynamisk.  Det kan nå løses med begrenset scope og individuelle nøkler ettersom du uansett har 'tapt' hvis noen har root  verten, men det er noen ting some tvinger en til å tenke annerledes ift dynamisk dns med ipv6.

Re docker, nginx og certbot så må certbot og nginx kjøre i samme container - nginx skal jo ha sertifikatene.   Jeg hadde nok derimot ikke kjørt docker på 80/443, men satt opp nginx/certbot revers proxy på selve ubuntu maskinen som kan være proxy for ulike docker containere og vurdert det som en del av docker host oppsettet.

Hvordan domeneshop plugin fungerer vet jeg ikke ser ut som den kan installeres via pip.  Ville som sagt forsøkt http challenge først (finnes sikkert masse dokumentasjon for nginx/certbot på ubuntu) og så deretter forsøke med dns-01 vha domeneshop sin plugin.

Lenke til kommentar
2 minutes ago, process said:

Re docker, nginx og certbot så må certbot og nginx kjøre i samme container - nginx skal jo ha sertifikatene.   Jeg hadde nok derimot ikke kjørt docker på 80/443, men satt opp nginx/certbot revers proxy på selve ubuntu maskinen som kan være proxy for ulike docker containere og vurdert det som en del av docker host oppsettet.

Sikker at de må kjøre i samme container? Virker mest fornuftig, men kan man ikke dele volum e.l. for å få det til å fungere? Hvorfor ville du ikke hatt nginx/certbot revers proxy i en egen docker. Er ikke dette mest ryddig. Uansett skal det for min del kunne fungere for ting som ikke ligger i docker containere på Ubuntu serveren også. Bl.a. Hass.io som jeg har gående på en RPi. Jeg vil at dette skal fungere for alle web-resurser som ligger innenfor mitt nettverk som skal aksesseres utenfra. Uavhengig av hvilken fysisk maskin det går på. Som jeg har skjønt det er dette mulig og at Nginx kan ligge i "forkant" av alt som ligger på det interne nettverket som man ønsker å mappe mot sub-domener.

Lenke til kommentar

Du kan løse det med et shared volum, men du må finne en måte å laste nginx på nytt igjen når certbot har kjørt en fornyelse, selv ville jeg logisk gruppert dem. Hvorfor ikke?  Videre vurderer jeg  en reversproxy som en del av infrastrukturen til dockermiljøet, det være seg en lastbalanserer eller en nginx instans.  

Det er ikke fasiter her, du vurderer selv hvilken arkitektur som fungerer for deg, men jeg ville altså gjort det på denne måten.  En annen ting er at du må kjøre containeren som root for å kunne binde til 80/443.

Nginx løser dette for ditt nettverk uansett hvordan det kjører forutsatt at docker NATer ut bak en lokal adresse. Dersom du også skal nå andre verter på nettverket vha denne nginx proxyen så eliminerer du også docker som en feilkilde for disse vertene og isolerer feildomener (dersom du kjører det på verten).

Og så en liten disclaimer, jeg benytter containere utstrakt, men ikke via docker og ikke på standalone hosts på denne måten. 

edit: s/feildomenener/feildomener

Endret av process
Lenke til kommentar
Gjest Sletttet+98134

Siden du allerede kjører docker i en separat vm, hvorfor ikke droppe pien og heller kjøre hass.io i en container? Hassio er jo containerbasert. Da slipper du feil på SD-kort som du garantert vil få om du kjører pien på det. Fyrer du opp nginx-pluginen via Hass.io så er det også en egen container. 

Lenke til kommentar

Har fått linuxserver.io til å legge in Domeneshop sin DNS plugin i sin Let's Encrypt nginx container :D Prøver å teste ut nå, men kommer ikke helt i mål. Ser ut til at API nøkkel fungerer, men får feilmelding på DNS challenge. Se log under:

Obtaining a new certificate
Performing the following challenges:
dns-01 challenge for <mitt domene>
dns-01 challenge for <mitt domene>
Unsafe permissions on credentials configuration file: /config/dns-conf/domeneshop.ini
Waiting 60 seconds for DNS changes to propagate
Waiting for verification...
Challenge failed for domain <mitt domene>
Challenge failed for domain <mitt domene>
dns-01 challenge for <mitt domene>
dns-01 challenge for <mitt domene>
Cleaning up challenges
Some challenges have failed.
IMPORTANT NOTES:
 - The following errors were reported by the server:

   Domain: <mitt domene>
   Type:   unauthorized
   Detail: No TXT record found at _acme-challenge.<mitt domene>

   Domain: <mitt domene>
   Type:   unauthorized
   Detail: No TXT record found at _acme-challenge.<mitt domene>

   To fix these errors, please make sure that your domain name was
   entered correctly and the DNS A/AAAA record(s) for that domain
   contain(s) the right IP address.

Lagde docker container med følgende docker-compose fil:

version: '2'
services:
  letsencrypt:
    image: linuxserver/letsencrypt
    container_name: letsencrypt
    cap_add:
      - NET_ADMIN
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Oslo
      - URL=<mitt domene>
      - SUBDOMAINS=wildcard
      - VALIDATION=dns
      - DNSPLUGIN=domeneshop
      - EMAIL=<min email>
      - DHLEVEL=4096
    ports:
      - 443:443
    volumes:
      - /home/<min bruker>/appdata/letsencrypt/config:/config
    restart: unless-stopped

Noen andre som har lyst til å prøve seg? Hadde vært moro å få dette til å fungere!

Endret av norsemanGrey
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...