If you’re worried about handing your data to third-party apps, or you’re not sure what servers your data is being sent to, self-hosting is an excellent way to make sure your data is safe and doesn’t leave your own custom servers. There are several apps and services that you can self-host, that, too, without complex setups. You can use a NAS or a similar device to run an Immich server, or run a Docker container to self-host Jellyfin. The possibilities are endless. However, self-hosting is a deep rabbit hole that, once you enter, is difficult to escape. Owing to this, you may want to self-host a ton of apps and services on your own machine.
While that’s certainly a fantastic idea, it may not be wise to have all your self-hosted services on a single machine. You may not face any major issues at first, but you may start encountering performance bottlenecks or thermal throttling issues in the long run, accompanied by several other problems. If you’re a self-hosting enthusiast and all your services are on the same machine, here are a few factors to rethink the decision.

Related
How I save nearly $100 every month by self-hosting these services
You can save a lot of money by switching from these services to self-hosted solutions.
5
Improved performance
Fewer bottlenecks
Running all or multiple self-hosted services on a single machine can lead to all of them competing for finite resources like CPU, RAM, and network bandwidth. A media server like Plex, while transcoding 4K video, can require much more resources compared to lighter services like an ad blocker. By distributing services across multiple machines, you can dedicate appropriate hardware to each service’s needs.
For example, Immich’s AI-based facial recognition system requires a machine with a powerful CPU and GPU. So, allocating a machine with those specs for this purpose makes sense. Don’t club it with another task that also requires raw performance, since that could lead to both services not getting adequate resources.
4
Enhanced security
Doesn’t compromise all services in case of an attack
Source: Unsplash
The whole point of self-hosting is to ensure the utmost security and privacy. But by hosting multiple services on one machine, you may be sacrificing this very advantage. If a vulnerability in one service is exploited, an attacker could potentially gain access to the entire machine — compromising all services and data hosted there.
Distributing services across multiple machines would significantly lower this risk. Even if one machine is compromised, the other one remains intact. You would only have to focus on recovering the information from one machine.
3
Better fault tolerance
Keeps some services online during a crash
The biggest issue with hosting multiple services on one machine is that a single point of failure can lead to catastrophic damage. Whether it’s a hardware or software failure, you’re going to lose all your services and data in case something goes wrong. If you use your self-hosted services to perform critical functions, you’re risking your work massively since something like a power outage can also result in complete suspension of services.
For instance, let’s say you’re running a VPN service along with Immich and Joplin to store photos and take notes, respectively. Let’s also assume you need all of these services for your work. Now, if all of them are hosted on the same machine, any issue with the hardware would mean you lose access to the VPN, all your photos, and notes. But, if your VPN was hosted on a different machine, you would only have lost access to that, but continued to enjoy the other services.
2
Easier maintenance
Simpler updates
When self-hosting multiple apps and services, it’s equally important to keep all of them up to date. A lot of self-hosted services, like Immich, are still in beta stages and hence, receive updates regularly. Now, updating one service can lead to the others on the same machine being temporarily unavailable, since some updates require reboots.
You’re only increasing the downtime of independent services that could be running absolutely fine, but have been paused due to some maintenance requirements. So, having at least two machines in situations makes a lot of sense.
1
Room for experimentation
Easier to test new services
Self-hosting often involves experimenting with new services, configurations, or software stacks to enhance your setup. Now, these are experiments for a reason, since they’re unstable by nature. If an unstable build causes issues, the whole machine may get affected, which means some services may end up getting suspended.
If you clearly demarcate two machines wherein one will have all the services that are stable and need to be used every day, while the other one can be used for testing and experimenting with new services, you can play around with different apps and possibilities as much as you want to.
Two is better than one
Owing to all these factors, it’s best to maintain multiple machines to host your services on different servers. It’s going to reduce a lot of your headaches in the long run, since you can experiment with new services without worrying about breaking existing ones. Moreover, if there’s one service you use regularly and absolutely cannot afford to lose, I would recommend dedicating a separate machine to that and using a different one for all other applications. For instance, I’ve done that with Immich, since my photos are invaluable to me.

Related
I self-host Bitwarden and here’s why you may wish to do the same
Bitwarden is a must-have tool in your security arsenal, and here’s why you should self-host it at home.