17
How to selfhost with a VPN (95.181.238.34:40152)
submitted 6 months ago* (last edited 6 months ago) by humanoidchaos@lemmy.cif.su to c/selfhosted@lemmy.world

These are some quick n' dirty instructions so people can get up and running fast.

I wish I had known this was possible sooner.

Instructions:

Check that your VPN supports port forwarding and you have it enabled.

Grab your VPN's internal IP with ip a

Find the interface for your VPN. For me it's called tun0.

Open up /etc/nginx/nginx.conf

You can back it up, or comment everything out, or pick what's necessary. Here's what my file looks like.

	worker_processes  1;
	include modules.d/*.conf;

	events {
		worker_connections  1024;
	}
	http {
		server {
			listen [VPN INTERNAL IP]:[VPN FORWARDED PORT];
			server_name  localhost;
			location / {
				root '[ABSOLUTE PATH TO YOUR WEBSITE ROOT FOLDER]';
				index index.html; # Relative to your website root.
			}
		}
	}

Make sure your permissions are correct. For me, the 'other' group needs read permissions to the root folder, including where it's mounted.

Start nginx with systemctl start nginx

You can visit your website on your host machine in a browser at [VPN INTERNAL IP]:[VPN FORWADED PORT]. For me, using the internal IP is required to view the website on my host machine.

To view the website on other machines, you can use [VPN EXTERNAL IP]:[VPN FORWARDED PORT]. The only thing you need to change is the IP address.

I hope this works for you and you are inspired to selfhost and take back power from those who stole it from us.

you are viewing a single comment's thread
view the rest of the comments
[-] possiblylinux127@lemmy.zip 8 points 6 months ago

You you setup a proper domain and https for your website instead of having a random IP address and port.

Don't visit http pages in 2025. It is a major security risk.

[-] humanoidchaos@lemmy.cif.su 3 points 6 months ago

Thanks.

It's my understanding that https provides encryption for the data sent between you and the server. If you're not sending any sensitive data, then the encryption shouldn't be necessary.

Don't get me wrong, encryption is great even when it isn't necessary. For my demonstration purposes though, I chose not to include it.

I also believe it's possible to set up HTTPS encryption without a domain name, but it might result in that "we can't verify the authenticity of this website" warning in web browsers due to using a self-signed certificate.

[-] stratself@lemdro.id 2 points 6 months ago* (last edited 6 months ago)

Let's Encrypt are rolling out IP-based certs, you may wanna follow its development. I'm not sure if it could be used for your forwarded VPN port, but it'd be nice anyhow

Edit: I believe encryption helps prevent tampering the data between the server and user too. It should prevent for example, someone MITM the connection and injecting malicious content that tells the user to download malware

[-] humanoidchaos@lemmy.cif.su 1 points 6 months ago

Thanks. This is new to me and I'm going to be looking into it.

[-] Laser@feddit.org 0 points 6 months ago* (last edited 6 months ago)

Let's Encrypt are rolling out IP-based certs, you may wanna follow its development. I'm not sure if it could be used for your forwarded VPN port, but it'd be nice anyhow

It shouldn't be because you're not actually the owner of the IP address. If any user could get a cert, they could impersonate any other.

I believe encryption helps prevent tampering the data between the server and user too. It should prevent for example, someone MITM the connection and injecting malicious content that tells the user to download malware

No, encryption only protects the confidentiality of data. You need message authentication codes or authenticated encryption to make sure the message hasn't been ~~transported~~ tampered with. Especially stream ciphers like ChaCha (but also AES in counter mode) are susceptible to malleability attacks, which are super simple yet very dangerous.

Edit: this post is a bit pedantic because any scheme that is relevant for LE certificates covers authenticity protection. But it's not the encryption part of those schemes that is responsible.

[-] frezik@lemmy.blahaj.zone 0 points 6 months ago

Public key crypto, properly implemented, does prevent MITM attacks. TLS does do this, and that's all that matters here

[-] Laser@feddit.org -1 points 6 months ago

Public key crypto, properly implemented, does prevent MITM attacks.

It does, but modern public key crypto doesn't encrypt any client data (RSA key exchange was the only one to my knowledge). It also only verifies the certificates, and the topic was about payload data (i.e. the site you want to view), which asymmetric crypto doesn't deal with for performance reasons.

My post was not about "does TLS prevent undetected data manipulation" (it does), but rather if it's the encryption that is responsible for it (it's not unless you put AES-GCM into that umbrella term).

[-] frezik@lemmy.blahaj.zone 1 points 6 months ago

Client data absolutely is encrypted in TLS. You might be thinking of a few fields sent in the clear, like SNI, but generally, it's all encrypted.

Asymmetric crypto is used to encrypt a symmetric key, which is used for encrypting everything else (for the performance reasons you mentioned). As long as that key was transferred securely and uses a good mode like CBC, an attacker ain't messing with what's in there.

I think you're confusing the limitations of each building block with how they're actually implemented together in TLS. The whole suite together is what matters for this thread.

[-] ComradeMiao@lemmy.world 1 points 6 months ago

It takes two seconds to get https and 10 bucks a year for a domain. Come on

[-] possiblylinux127@lemmy.zip 0 points 6 months ago

That is a pretty bad take as all data is sensitive. Https also provides integrity to prevent man in the middle attacks.

[-] theshatterstone54@feddit.uk 0 points 6 months ago

And that's why even static sites like Hugo blogs or even simple pages like the one OP posted should have HTTPS. Source: Studied Distributed Systems at university.

[-] WhyJiffie@sh.itjust.works 0 points 6 months ago

but it is sensitive data. the webserver can send executable code to the web browser. if it does not that doesn't matter, what matters is that it can be inserted by a middleman. It's not like there's a dedicated person needed to do that, it can just happen automatically.

[-] Typewar@infosec.pub 0 points 6 months ago* (last edited 6 months ago)

Is it not possible to set up https for just an ip address with no domain?

[-] possiblylinux127@lemmy.zip 1 points 6 months ago

Buy a domain

They are pretty cheap especially compared to hardware

[-] EncryptKeeper@lemmy.world 0 points 6 months ago* (last edited 6 months ago)

There’s no security risk viewing this bit of html via http lmao

[-] surewhynotlem@lemmy.world 1 points 6 months ago

I'll bite.

The risk is training people in bad behaviors, and then having those people do stupid things like type in a password.

[-] EncryptKeeper@lemmy.world -1 points 6 months ago

There’s no password entry on this site, and what people do on other websites is not OPs responsibility.

[-] surewhynotlem@lemmy.world -1 points 6 months ago

Oh yes. Pushing personal responsibility to the end user has always been a very effective security strategy.

[-] EncryptKeeper@lemmy.world 0 points 6 months ago* (last edited 6 months ago)

Lmao as the operator of a website your personal responsibility ends with your website. It is not OPs responsibility to protect other websites he does not operate, nor is it to take on the end user’s responsibility, or education. Don’t be silly.

[-] surewhynotlem@lemmy.world 1 points 6 months ago

Of course it does. You're only ever responsible for yourself.

And that mentality does not lead to good things.

[-] EncryptKeeper@lemmy.world -1 points 6 months ago* (last edited 6 months ago)

Of course it does, could you imagine the alternative? Imagine spontaneously taking responsibility for the safety of the entire internet. That would be just nuts.

I can heartily recommend taking responsibility for yourself, and not trying to foist it on others. Especially some dude with a rinky dink little personal blog.

[-] possiblylinux127@lemmy.zip 0 points 6 months ago* (last edited 6 months ago)

How so?

Data send back isn't validated so someone could tamper with the data. A bad actor could add some arbittary Javascript plus ISPs have been caught inserting marketing materials into pages.

From a privacy perspective it is also bad as not only does it include your user agent in plain text it doesn't have any encryption on page contents which allows your ISP to snoop on what you are doing.

All of these reasons are while we moved to https. X.509 certs are free and trivial to setup with Caddy or any other Reverse proxy/web server. If https was crazy had to setup I'd be more understanding but it is very easy to do in 2025.

[-] null_dot@lemmy.dbzer0.com 0 points 6 months ago

Do you really think someone is going to set up a MITM attack for the dozen people who visit this blog?

[-] possiblylinux127@lemmy.zip 2 points 6 months ago

No, but governments and ISPs can and have historically done so for all http traffic.

It doesn't matter the page. They just care about http.

[-] missfrizzle@discuss.tchncs.de 1 points 6 months ago* (last edited 6 months ago)

specifically this is how QUANTUMINSERT worked (from the Snowden leaks.) also China used the same technique, injecting malicious JS through the GFW to get bystanders to DDoS github, in a much more obvious and indiscriminate way.

nobody here is remotely likely to be targeted by NSA, of course, but you can actually do such attacks on a budget if you compromise any router in the chain. combined with a BGP hijack it's not far out of reach for even a ransomware gang to pull something like that these days.

this post was submitted on 01 Sep 2025
17 points (90.5% liked)

Selfhosted

57010 readers
34 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

  1. Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.

  2. No spam posting.

  3. Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.

  4. Don't duplicate the full text of your blog or github here. Just post the link for folks to click.

  5. Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).

  6. No trolling.

  7. No low-effort posts. This is subjective and will largely be determined by the community member reports.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 2 years ago
MODERATORS