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
If I want to host my services to the internet, I need to open a port in my firewall nah? is that not a bit risky than only allow access from the address of the data center to use this open port?
You do not strictly need to open a port -- tunnelling through another server could be a solution, but let's park this for a moment.
What you are describing as "open a port in my firewall" is actually many smaller parts, some key ones that may be relevant are:
All three things (amongst others that's not immediately relevant here) must be properly setup for any network request to happen. What do I mean by that? I can have a port not drop traffic (i.e.: firewall down). When someone from outside of my network trying to access the port, they'd get to my router, but nothing happens because there's no where for the packet to go. I can have my firewall down, and port forwarding enabled, but the web server isn't running. When someone from outside of my network trying to access the port, they'd get to my router, get forwarded to my computer, but because the web server isn't running, nothing happens. Someone from outside of my network can only gain access to my service (and only that service) only when all three are setup and working together.
"But what about the hackers?"
Yes, the untrusted networks, such as the internet, could be a bad place with people with bad intentions. There are many different things they could do to make things undesirable; let's explore some of them together.
Say we want to run an instance of Lemmy using a new experimental server software (i.e.: not the official Lemmy server). Now, unfortunately, some racist people decided to come and make racist posts on our instance. A tunnel / proxy doesn't solve this. Instead, we have to ban their accounts. It may not seem much, and it was completely innocuous to our system, but we've just dealt with our first attack.
One of those racist person happens to be the "scary hacker" type, so they came back and try to brute force our admin account's password to unban themselves. This is not too bad, but we need to address this somehow. A tunnel / proxy doesn't solve this; but something like Fail2Ban might be able to look at the login failures and put a temporary IP ban on the attacker.
They're back! And this time, they decide to repeatedly hammer the search function, thereby taking all the resources from our database, so our instance cannot serve other users. A tunnel / proxy doesn't solve this; but some rate limiting configurations in the server application might help.
They're not happy about getting rate limited there. So this time, they decided to continuously post garbage to our instance, not even normal requests, just connect to our web server, and spam AAAAAAAAAAAAAA..... non stop, at such a quick pace that it fully saturates our network connection, and we cannot do anything else on the network. A tunnel / proxy doesn't solve this; we'd need to block them from the firewall. This is not entirely true; blocking them at the firewall doesn't solve the problem, because the traffic still goes from the ISP to the firewall, which will still be saturated before the firewall could drop the traffic, but to use as an example it narrates a potential problem well enough.
They're angry now, and they pay a few bucks to botnets to have many many many thousands of infected computers to spam AAAAAAAAA... non stop at our service. Again, a tunnel / proxy doesn't solve this; we'd need to have something smarter than just our firewall and individually ban the IP addresses. This is where we'd need the professionals with typically commercial offerings.
It could escalade the other direction. Instead of attacking with aim to take the service down, they could do other damaging things. Say they found a problem with our server software. Instead of giving the
/post/<postid>
a numeric id, they can do something fancy like/post/1 AND 1 ==1; UPDATE users SET banned = FALSE WHERE username = 'racist-user'
and unban themselves. A tunnel / proxy doesn't solve this; but a Web Application Firewall (WAF) might.Now it escalades more. Through a complex chain of intentionally malformed image uploaded to the instance, the image resizer attempting to resize the image, which gets tripped over by the malicious image, which causes a remote code execution, which they use to create a remote access trojan (RAT) shell so they can connect to our server and run commands. This is usually the "big bad" that most people are scared of... someone from outside of their network having access to their system and thus gains the ability to extract their documents or encrypt their photos etc. A tunnel / proxy doesn't solve this; but a WAF or an anti-virus on the server itself might.
Through these albeit simplified but lengthy exploration, we see that none of these would actually be addressed by a tunnel / proxy. There are other possible attacks, and they'd require other solutions.
So, goes back to what I was saying earlier... it is important to know why you're trying to do something. Blindly prescribing tunnel / proxy doesn't actually solve the problem.