Vill du vara del av diskussionerna i forumet, ställa frågor eller hjälpa andra? Registrera dig här!

Reverse proxy för Nextcloud och Bitwarden?

Trädvy Permalänk
Medlem
Registrerad
Dec 2011

Reverse proxy för Nextcloud och Bitwarden?

Hej! Kör för närvarande en Bitwarden selfhost på en av mina vm:s i proxmox men hade också tänkt fixa en med nextcloud på. Problemet är att de två bråkar om port 80 och 443 vilket verkar vara vad man måste ha (?) om man ska använda Let's Encrypt. Jag har fått för mig att en reverse proxy borde vara den enklaste lösningen men då jag är novis vad gäller det här vet jag inte riktigt hur jag ska installera och om jag borde använda exempelvis apache, nginx eller något annat alternativ? All hjälp uppskattas!

"Past, present, and future are as one to me"
3700X//1080TI//32GB-3600mHz-CL16
GS65//8750H//1060
Envy13//8250U//ManjaroKDE
Poweredge R620

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Mar 2005

Kolla in HA-proxy, lätt att sätta upp och gör vad det ska.
För det du ska göra så funkar även Apache och Nginx utan problem så välj det du känner dig mest bekväm med.
Hur tänker du dela på trafiken i proxyn?
example.com/bitwarden och example.com/nextclod?
bitwarden.example.com och nextcloud.example.com?

Trädvy Permalänk
Medlem
Registrerad
Dec 2011
Skrivet av Xcorp:

Kolla in HA-proxy, lätt att sätta upp och gör vad det ska.
För det du ska göra så funkar även Apache och Nginx utan problem så välj det du känner dig mest bekväm med.
Hur tänker du dela på trafiken i proxyn?
example.com/bitwarden och example.com/nextclod?
bitwarden.example.com och nextcloud.example.com?

Ska kika på det, tack! Hade tänkt lägga upp det som i sista alternativet, har redan dns som jag tänkte använda.

"Past, present, and future are as one to me"
3700X//1080TI//32GB-3600mHz-CL16
GS65//8750H//1060
Envy13//8250U//ManjaroKDE
Poweredge R620

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Jan 2006

Hejsan,

Jag kör nginx som reverse proxy med SSL-terminering. Nu sköter den sig själv och uppdaterar sina certificat snällt.

/etc/nginx/sites-enabled/hassio.mydomain.se

map $http_upgrade $connection_upgrade { default upgrade; '' close; } server { server_name hassio.mydomain.se; access_log /var/log/nginx/hassio.mydomain.se.access.log; error_log /var/log/nginx/hassio.mydomain.se.error.log error; location /{ proxy_pass http://192.168.30.143:8123; proxy_redirect http:// https://; proxy_set_header Host $http_host; proxy_http_version 1.1; 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; proxy_set_header X-Forwarded-Protocol $scheme; proxy_set_header X-Url-Scheme $scheme; proxy_set_header Connection $connection_upgrade; } location /api/websocket { proxy_pass http://192.168.30.143:8123/api/websocket; proxy_set_header Host $http_host; proxy_http_version 1.1; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; } listen 443 ssl; # managed by Certbot ssl_certificate /etc/letsencrypt/live/hassio.mydomain.se/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/hassio.mydomain.se/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot } server { if ($host = hassio.mydomain.se) { return 301 https://$host$request_uri; } # managed by Certbot server_name hassio.mydomain.se; listen 80; return 404; # managed by Certbot

Alla rader som slutar med "# managed by Certbot" har generats automatiskt av Certbot (Let's encrypt)

Om du bar letar efter nginx och Let's encrypt tror jag du får ihop resten ganska snabbt. Om det behövs kan leta fram någon tutorial som hittade för att få det att lira.

/z

C2D E6300 @ 3.2HGz 1.2V | Thermalright 120 Extr. | Gainward 8800 GT Golden Sample |Samsung 2x500Gb | Corsair VX 550V | Antec P182 [img]http://valid.x86-secret.com/cache/banner/421648.png[/img]

Trädvy Permalänk
Medlem
Plats
Skåne
Registrerad
Feb 2013

Kika här: https://github.com/nextcloud/vm/blob/master/apps/tmbitwarden....

Skapat för Nextcloud VM, men funkar säkert på custom VMs också.

Citera för svar

- Stora Owncloud/Nextcloud-tråden: http://www.sweclockers.com/forum/122-server/1212245-officiell...
- Min blogg: Tech & Me https://www.techandme.se

Trädvy Permalänk
Medlem
Registrerad
Dec 2011
Skrivet av zonar:

Hejsan,

Jag kör nginx som reverse proxy med SSL-terminering. Nu sköter den sig själv och uppdaterar sina certificat snällt.

/etc/nginx/sites-enabled/hassio.mydomain.se

map $http_upgrade $connection_upgrade { default upgrade; '' close; } server { server_name hassio.mydomain.se; access_log /var/log/nginx/hassio.mydomain.se.access.log; error_log /var/log/nginx/hassio.mydomain.se.error.log error; location /{ proxy_pass http://192.168.30.143:8123; proxy_redirect http:// https://; proxy_set_header Host $http_host; proxy_http_version 1.1; 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; proxy_set_header X-Forwarded-Protocol $scheme; proxy_set_header X-Url-Scheme $scheme; proxy_set_header Connection $connection_upgrade; } location /api/websocket { proxy_pass http://192.168.30.143:8123/api/websocket; proxy_set_header Host $http_host; proxy_http_version 1.1; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; } listen 443 ssl; # managed by Certbot ssl_certificate /etc/letsencrypt/live/hassio.mydomain.se/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/hassio.mydomain.se/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot } server { if ($host = hassio.mydomain.se) { return 301 https://$host$request_uri; } # managed by Certbot server_name hassio.mydomain.se; listen 80; return 404; # managed by Certbot

Alla rader som slutar med "# managed by Certbot" har generats automatiskt av Certbot (Let's encrypt)

Om du bar letar efter nginx och Let's encrypt tror jag du får ihop resten ganska snabbt. Om det behövs kan leta fram någon tutorial som hittade för att få det att lira.

/z

Jag hittade en nginx manager med GUI (åh underbart att slippa terminal..) som verkar "fungera". Som det ser ut nu skjuter den över trafiken rätt till min nuvarande bitwarden installation men jag får fortfarande problem som jag tror är relaterade till portarna när jag försöker att köra https på nextcloud. Tror jag får bita i det sura äpplet och göra det utan ett tryggt GUI men har du någon bra tutorial får du gärna länka, tack för hjälpen!

Skrivet av enoch85:

Kika här: https://github.com/nextcloud/vm/blob/master/apps/tmbitwarden....

Skapat för Nextcloud VM, men funkar säkert på custom VMs också.

Är inte riktigt med nu... Har ju redan bitwarden installerat och körandes, enda skillnaden mot min installation är att scriptet du länkade byter portar och att den vad jag kan se körs utan HTTPS? Eller är jag helt ute och cyklar?

"Past, present, and future are as one to me"
3700X//1080TI//32GB-3600mHz-CL16
GS65//8750H//1060
Envy13//8250U//ManjaroKDE
Poweredge R620

Trädvy Permalänk
Medlem
Registrerad
Nov 2015

Jag gjorde nyligen detta med Nginx för min Nextcloud, Onlyoffice och Emby. Är inte nån expert så det kanske går att göra på ett enklare sätt men allt funkar med HTTPS och jag är nöjd. Vet heller inte om det är fullt applicerbart i din situation men det kanske hjälper något. Gjorde följande:

Skapa först en VM i Proxmox som är din reverse-proxy och portforwarda 80 och 443 till den. Min har 1GB Ram, en CPU-kärna och jag kör Ubuntu Server 18.04 på den.

Sen är det bara att ssha till den och installera Nginx:
sudo apt-get install nginx

Starta Nginx:
sudo service nginx start

Sen efter det kan du köra status istället start för att kolla att den faktiskt gick igång. När du ser att Nginx är igång ska du ladda hem Certbot med Nginx-tillägget.

Lägg först till Certbots egna repository:
sudo add-apt-repository ppa:certbot/certbot

Ladda hem Certbot med Nginx-tillägget:
sudo apt install python-certbot-nginx

Nu behöver du konfa Nginx så att den skickar alla requests till rätt ip för rätt subdomän.

Gå till configmappen för Nginxs sidor:
cd /etc/nginx/sites-available

Gör en configfil för varje subdomän du vill skicka vidare med valfri textredigerare, tex nano eller vim:
nano subdomän1.dindomän.se

I varje configfil klistrar du in detta och ändrar domän under server_name och ip under proxy_pass:

server {
listen 80;
listen [::]:80;

server_name subdomän1.dindomän.se;

location / {
proxy_pass http://10.ip.till.din.vm/;
proxy_buffering off;
proxy_set_header X-Real-IP $remote_addr;
}
}

Symlinka configfilerna i sites-available till sites-enabled, först configfil 1 och sen 2:
sudo ln -s /etc/nginx/sites-available/subdomän1.dindomän.se /etc/nginx/sites-enabled/subdomän1.dindomän.se

sudo ln -s /etc/nginx/sites-available/subdomän2.dindomän.se /etc/nginx/sites-enabled/subdomän2.dindomän.se

När du gjort dina två configfiler så ska du starta om Nginx:
sudo service nginx reload

Om det går åt helvete och Nginx inte startar så har du något fel i nån av dina configfiler. Om Nginx däremot startar utan problem så kan du köra vidare med att fixa certifikaten så att du har HTTPS på dina sidor.

Kör certbot:
sudo certbot --nginx

Certbot kommer fråga dig om du accepterar villkor och ber dig även skriva in din mailaddress. Efter det frågar den vilka domäner du vill ha certifikat till, du vill ha till båda så bara att klicka enter. Sen kommer frågan om du vill uppgradera alla HTTP-förfrågningar till HTTPS, och det vill du.

Efter detta borde det stå att du nu har två certifikat. Jag tror det kan bli problem om du tex kör en proxy för subdomänerna med cloudflare, så stäng av det om det inte funkar och kör igen.

Nu borde allt vara klart och du kan testa komma åt sidorna med subdomän1.dindomän.se och subdomän2.dindomän.se.

En annan viktig sak att fixa för just Nextcloud: Nginx kommer sätta en max filstorlek på 100MB och den vill du ändra för att kunna ladda upp större filer.

Öppna nginx.conf
nano /etc/nginx/nginx.conf

I "http"-taggen ska du på en ny rad skriva in
client_max_body_size 5000M;

Detta sätter max till 5000MB, du kan ändra till vilken storlek som helst.

Trädvy Permalänk
Medlem
Plats
twitch.tv/zidichy
Registrerad
Jun 2002

Jag har flera olika tjänster som är konfigurerade för reverse proxy via nginx
Det går utmärkt och köra både bitwarden & nextcloud via port 443,
jag rekommenderar dig dock att använda nginx, apache fungerar också men, nginx ftw 😋

Här har du en fullt fungerande RP till bitwarden.
https://raw.githubusercontent.com/linuxserver/reverse-proxy-c...

Och här har du fullt fungerande RP till nextcloud, subdomain & subdir / subfolder.
https://raw.githubusercontent.com/linuxserver/reverse-proxy-c...

https://raw.githubusercontent.com/linuxserver/reverse-proxy-c...

Du skulle kunna köra antingen Caddy, NPM (nginx proxy manager) eller HAproxy / annan,
men jag föredrar och göra rena konfigs för nginx, bättre sätt och lära sig på också om du frågar mig

Det andra du behöver göra om du nu inte redan gjort det är att skapa CNAME till din domän så, t.ex.
bitwarden.FQDN.TLD
nextcloud..FQDN.TLD

Efter det ska det bara fungera

Guide för att få gratis domän, ssl, cdn, rp, http auth, via windows, med nginx!
Säkrare nginx guide för windows lär du inte hitta på nätet 😋😊

Trädvy Permalänk
Medlem
Plats
Skåne
Registrerad
Feb 2013
Skrivet av firstofmay:

Är inte riktigt med nu... Har ju redan bitwarden installerat och körandes, enda skillnaden mot min installation är att scriptet du länkade byter portar och att den vad jag kan se körs utan HTTPS? Eller är jag helt ute och cyklar?

Nä, det körs med HTTPS via Let's Encrypt, men på andra portar som du kunde se. Så TLS körs på 8443.

Citera för svar

- Stora Owncloud/Nextcloud-tråden: http://www.sweclockers.com/forum/122-server/1212245-officiell...
- Min blogg: Tech & Me https://www.techandme.se

Trädvy Permalänk
Medlem
Registrerad
Dec 2011
Skrivet av wille1101:

Jag gjorde nyligen detta med Nginx för min Nextcloud, Onlyoffice och Emby. Är inte nån expert så det kanske går att göra på ett enklare sätt men allt funkar med HTTPS och jag är nöjd. Vet heller inte om det är fullt applicerbart i din situation men det kanske hjälper något. Gjorde följande:

Skapa först en VM i Proxmox som är din reverse-proxy och portforwarda 80 och 443 till den. Min har 1GB Ram, en CPU-kärna och jag kör Ubuntu Server 18.04 på den.

Sen är det bara att ssha till den och installera Nginx:
sudo apt-get install nginx

Starta Nginx:
sudo service nginx start

Sen efter det kan du köra status istället start för att kolla att den faktiskt gick igång. När du ser att Nginx är igång ska du ladda hem Certbot med Nginx-tillägget.

Lägg först till Certbots egna repository:
sudo add-apt-repository ppa:certbot/certbot

Ladda hem Certbot med Nginx-tillägget:
sudo apt install python-certbot-nginx

Nu behöver du konfa Nginx så att den skickar alla requests till rätt ip för rätt subdomän.

Gå till configmappen för Nginxs sidor:
cd /etc/nginx/sites-available

Gör en configfil för varje subdomän du vill skicka vidare med valfri textredigerare, tex nano eller vim:
nano subdomän1.dindomän.se

I varje configfil klistrar du in detta och ändrar domän under server_name och ip under proxy_pass:

server {
listen 80;
listen [::]:80;

server_name subdomän1.dindomän.se;

location / {
proxy_pass http://10.ip.till.din.vm/;
proxy_buffering off;
proxy_set_header X-Real-IP $remote_addr;
}
}

Symlinka configfilerna i sites-available till sites-enabled, först configfil 1 och sen 2:
sudo ln -s /etc/nginx/sites-available/subdomän1.dindomän.se /etc/nginx/sites-enabled/subdomän1.dindomän.se

sudo ln -s /etc/nginx/sites-available/subdomän2.dindomän.se /etc/nginx/sites-enabled/subdomän2.dindomän.se

När du gjort dina två configfiler så ska du starta om Nginx:
sudo service nginx reload

Om det går åt helvete och Nginx inte startar så har du något fel i nån av dina configfiler. Om Nginx däremot startar utan problem så kan du köra vidare med att fixa certifikaten så att du har HTTPS på dina sidor.

Kör certbot:
sudo certbot --nginx

Certbot kommer fråga dig om du accepterar villkor och ber dig även skriva in din mailaddress. Efter det frågar den vilka domäner du vill ha certifikat till, du vill ha till båda så bara att klicka enter. Sen kommer frågan om du vill uppgradera alla HTTP-förfrågningar till HTTPS, och det vill du.

Efter detta borde det stå att du nu har två certifikat. Jag tror det kan bli problem om du tex kör en proxy för subdomänerna med cloudflare, så stäng av det om det inte funkar och kör igen.

Nu borde allt vara klart och du kan testa komma åt sidorna med subdomän1.dindomän.se och subdomän2.dindomän.se.

En annan viktig sak att fixa för just Nextcloud: Nginx kommer sätta en max filstorlek på 100MB och den vill du ändra för att kunna ladda upp större filer.

Öppna nginx.conf
nano /etc/nginx/nginx.conf

I "http"-taggen ska du på en ny rad skriva in
client_max_body_size 5000M;

Detta sätter max till 5000MB, du kan ändra till vilken storlek som helst.

Skrivet av Zidichy:

Jag har flera olika tjänster som är konfigurerade för reverse proxy via nginx
Det går utmärkt och köra både bitwarden & nextcloud via port 443,
jag rekommenderar dig dock att använda nginx, apache fungerar också men, nginx ftw 😋

Här har du en fullt fungerande RP till bitwarden.
https://raw.githubusercontent.com/linuxserver/reverse-proxy-c...

Och här har du fullt fungerande RP till nextcloud, subdomain & subdir / subfolder.
https://raw.githubusercontent.com/linuxserver/reverse-proxy-c...

https://raw.githubusercontent.com/linuxserver/reverse-proxy-c...

Du skulle kunna köra antingen Caddy, NPM (nginx proxy manager) eller HAproxy / annan,
men jag föredrar och göra rena konfigs för nginx, bättre sätt och lära sig på också om du frågar mig

Det andra du behöver göra om du nu inte redan gjort det är att skapa CNAME till din domän så, t.ex.
bitwarden.FQDN.TLD
nextcloud..FQDN.TLD

Efter det ska det bara fungera

Får tacka så mycket! Ska bara hem från påskledighet så får det bli att pröva i ny VM. Har dessvärre ingen egen domän utan har lirat med diverse gratisdomäner so far men tror också det är något jag borde ändra på.

Skrivet av enoch85:

Nä, det körs med HTTPS via Let's Encrypt, men på andra portar som du kunde se. Så TLS körs på 8443.

Låter ju alldeles lysande, går inte detta att göra med nextcloud också isåfall? Snap varianten (som jag prövat i det här fallet) blir tvärtjurig om man försöker ändra portarna. Det stämmer alltså inte att let's encrypt kräver 80/443 för att ordna certifikat? Är helt säker på att jag läst att så var fallet...

"Past, present, and future are as one to me"
3700X//1080TI//32GB-3600mHz-CL16
GS65//8750H//1060
Envy13//8250U//ManjaroKDE
Poweredge R620

Trädvy Permalänk
Medlem
Plats
twitch.tv/zidichy
Registrerad
Jun 2002
Skrivet av firstofmay:

Får tacka så mycket! Ska bara hem från påskledighet så får det bli att pröva i ny VM. Har dessvärre ingen egen domän utan har lirat med diverse gratisdomäner so far men tror också det är något jag borde ändra på.

Låter ju alldeles lysande, går inte detta att göra med nextcloud också isåfall? Snap varianten (som jag prövat i det här fallet) blir tvärtjurig om man försöker ändra portarna. Det stämmer alltså inte att let's encrypt kräver 80/443 för att ordna certifikat? Är helt säker på att jag läst att så var fallet...

Nps
Jag rekommenderar att köpa domän från antingen egensajt.se eller one.com
Båda två är väldigt bra.

Jo du behöver ha port 80 & 443 öppet i router för att letsencrypt ska kunna generera ett certifikat åt dig.
(HTTP-01 challenge)
Du kan dock använda dig av DNS-01 challenge, och använda api för att generera ett certifikat,
men portarna behöver vara öppna i routern iaf
https://letsencrypt.org/sv/docs/challenge-types/

Guide för att få gratis domän, ssl, cdn, rp, http auth, via windows, med nginx!
Säkrare nginx guide för windows lär du inte hitta på nätet 😋😊

Trädvy Permalänk
Medlem
Plats
Skåne
Registrerad
Feb 2013
Skrivet av firstofmay:

Låter ju alldeles lysande, går inte detta att göra med nextcloud också isåfall? Snap varianten (som jag prövat i det här fallet) blir tvärtjurig om man försöker ändra portarna. Det stämmer alltså inte att let's encrypt kräver 80/443 för att ordna certifikat? Är helt säker på att jag läst att så var fallet...

Scriptet är baserat på Nextcloud VM och det är lite special case, så för att kunna skapa certet så behöver man köra som standalone.

Det är många som byter från Nextcloud snap till Nextcloud VM, och säger att det är som natt och dag. Kanske värt ett försök?

Citera för svar

- Stora Owncloud/Nextcloud-tråden: http://www.sweclockers.com/forum/122-server/1212245-officiell...
- Min blogg: Tech & Me https://www.techandme.se

Trädvy Permalänk
Medlem
Registrerad
Dec 2011
Skrivet av enoch85:

Scriptet är baserat på Nextcloud VM och det är lite special case, så för att kunna skapa certet så behöver man köra som standalone.

Det är många som byter från Nextcloud snap till Nextcloud VM, och säger att det är som natt och dag. Kanske värt ett försök?

Det hade jag gärna gjort om jag inte hade kört Proxmox men det kanske blir någonting för en framtida andra server... Kör snap just nu för att det var väldigt smidigt och för att jag är lat men jag är övertygad om att det hade varit mindre krångel med en vanlig installation. Mitt problem verkar ha löst sig utan att jag behövde kavla upp armarna, ändrade bara till en av mina andra gratisadresser jag har via freeDNS samt gjorde ny VM och nu verkar det fungera som det ska. På sikt ska jag skaffa en egen domän och flytta över allt men i och med att jag spritt ut diverse VM:s lite här och var på alla möjliga subdomäner får det vänta...

Vill tacka alla som skrivit i tråden, har blivit klokare gällande reverse proxies och fått idéer till vad mer jag bör göra med min server!

"Past, present, and future are as one to me"
3700X//1080TI//32GB-3600mHz-CL16
GS65//8750H//1060
Envy13//8250U//ManjaroKDE
Poweredge R620