Selfhosted
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:
-
Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.
-
No spam posting.
-
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.
-
Don't duplicate the full text of your blog or github here. Just post the link for folks to click.
-
Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).
-
No trolling.
Resources:
- selfh.st Newsletter and index of selfhosted software and apps
- awesome-selfhosted software
- awesome-sysadmin resources
- Self-Hosted Podcast from Jupiter Broadcasting
Any issues on the community? Report it using the report flag.
Questions? DM the mods!
view the rest of the comments
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.
Edit: If you need help setting up https let me know. You will need a domain but they are fairly inexpensive. If it is a matter of technical knowledge let me know as I can help.
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.
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
Thanks. This is new to me and I'm going to be looking into it.
As I use docker for most of my deploys (as you should for websites exposed to the Internet anyway), I can wholeheartedly recommend traefik for this. Basically it has the functionality of nginx, but supports easy Let's Encrypt certificates.
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.
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.
Public key crypto, properly implemented, does prevent MITM attacks. TLS does do this, and that's all that matters here
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).
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.
I never said it isn't, but it's done using symmetric crypto, not public key (asymmetric) crypto.
Not anymore, this was only true for RSA key exchange, which was deprecated in TLS 1.2 ("Clients MUST NOT offer and servers MUST NOT select RSA cipher suites"). All current suites use ephemeral Diffie-Hellman over elliptic curves for key agreement (also called key exchange, but I find the term somewhat misleading).
First, CBC isn't a good mode for multiple reasons, one being performance on the encrypting side, but the other one being the exact reason you're taking about: it is in fact malleable and as such insecure without authentication (though you can use a CMAC, as long as you use a different key). See https://pdf-insecurity.org/encryption/cbc-malleability.html for one example where this exact property is exploited ("Any document format using CBC for encryption is potentially vulnerable to CBC gadgets if a known plaintext is a given, and no integrity protection is applied to the ciphertext.")
As I wrote in my comment, I was a bit pedantic, because what was stated was that encryption protects the authenticity, and I explained that, while TLS protects all aspects of data security, it's encryption doesn't cover the authenticity.
Anyhow, the point is rather moot because I'm pretty sure they won't get a certificate for the IP anyways.
They're 'shortlived' 7 day certs, verified using a HTTP challenge. It doesn't matter who owns the IP, it's just a matter of who holds the IP.
Right, and for the challenge, you need to have access to a privileged port (which usually implies ownership), which you won't get assigned.
Ah right, completely forgot about that (80 for HTTP-01, 443 for TLS-ALPN-01). Is a bummer unfortunately