De fleste selvhostede apps lytter på en lokal port som 127.0.0.1:3000 og taler almindelig HTTP. En omvendt proxy står foran på port 80/443, afslutter HTTPS med et rigtigt certifikat og videresender trafik til den lokale port — den giver dig et rent https://app.yourdomain.com og lader dig køre flere apps bag én IP. Her er de to gængse veje.
Forudsætninger
- Et domæne med en A-post, der peger mod din servers IP (vent på DNS-udbredelse).
- Port 80 og 443 åbne — se sådan opsætter du en UFW-firewall.
- Din app kører lokalt, for eksempel på
127.0.0.1:3000.
Mulighed A — Caddy (automatisk HTTPS, én linje)
sudo apt install -y caddy
echo 'app.yourdomain.com { reverse_proxy 127.0.0.1:3000 }' | sudo tee /etc/caddy/Caddyfile
sudo systemctl restart caddy
Det er det hele — Caddy henter et Let's Encrypt-certifikat til domænet og fornyer det automatisk.
Mulighed B — nginx + Certbot
sudo apt install -y nginx certbot python3-certbot-nginx
Opret /etc/nginx/sites-available/app:
server {
listen 80;
server_name app.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:3000;
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;
}
}
Aktivér den og tilføj HTTPS:
sudo ln -s /etc/nginx/sites-available/app /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d app.yourdomain.com
Certbot redigerer konfigurationen til at servere HTTPS og opsætter automatisk fornyelse.
Ærlige advarsler
- DNS og porte er de sædvanlige fejl. A-posten skal pege herhen og være udbredt, og 80/443 være tilgængelige, ellers mislykkes certifikatudstedelsen. Begge værktøjer prøver igen, så snart det er rettet.
- Eksponér kun det, du har til hensigt. Hold appen bundet til
127.0.0.1, så den kun kan nås via proxyen, ikke direkte. - HTTPS kræver et domæne, ikke en nøgen IP — Let's Encrypt udsteder til navne.
Næste skridt
Den omvendte proxy er netop det, der lader én server servere mange ting — se selvhost flere tjenester bag én IP. Kører du appen i en container? Start med sådan installerer du Docker. For at appen selv kan overleve genstarter og nedbrud, se sådan opretter du en systemd-tjeneste.
Kommentarer
Ingen kommentarer endnu. Vær den første.