Noob question: How much RAM does my VPS need if...
I plan to have the following services running concurrently on it:
A VPN (OpenVPN or Wireguard)
A very lightweight personal website
A Nextcloud instance (25GB storage max)
A Vaultwarden instance
An Invidious instance
A Matrix server
A Lemmy instance
I'm unsure if these would be private or public instances. But I'd be curious to hear any thoughts on how much more space I'd need for public instances too, if you'd have a sense of that.
I currently have a VPS with 2GB RAM + 50GB storage. Would that be enough? Thanks in advance!
Does your hosting provider support scaling that up?
This is all relatively lightweight stuff and I would guess that it could run all at the same time with the exception of matrix which is somewhat heavy.
I would also advise you to not run all of that on the same machine especially if you run some more critical stuff like nextcloud and especially vaultwarden on there. You want that to work and you want that to run reliably and safely.
You don't really want a bug in the lemmy instance to take down your private cloud or worse someone gaining access to your vaultwarden databse.
Containerizing generally a very good idea. MIt provides security benefits in certain cases, keeps stuff organized and can prevent an application taking down other services. So yes. Definitely go for it. So I don't have super in depth knowledge about docker. Idk if and how you can allocate and provision resources to specific containers. If for example your lemmy is just overloaded and by usage or just a bug it could issues with your other services even when running in a container.
I personally use Linux Containers (LXD/LXC) for pretty much everything. I can use them pretty much exactly like a VM even though they are just containers using the host resources but I can provision them properly. You can SSH into them just like into a normal Linux machine.
Speaking of linux containers there is something that you should check regardless of what container solution you want to use. With cheap VPS it is very common that you actually don't pay for a real VM but what you have is actually a LXC (Linux Container). This is usually fine but it can cause issues when you try to run containers like docker or other LXC inside of it. It doesn't have to but it definitely can. So you might wanna check that first. Also take in mind that you are limited to whatever Kernel the host is running.
Another issue that I encountered when working with docker on a rented vps is that my provider didn't offer an external firewall so I just had to use ufw on the machine itself. not a big deal in general but my docker network was not affected by my firewall rules out of the box. i don't remember exactly what was going on but I messed around with it and could solve that. Just something to look out for.
You could also check out Conduit, it's still in beta but very lightweight.
Conduit is a lightweight open-source server implementation of the Matrix Specification with a focus on easy setup and low system requirements. That means you can make your own Conduit setup in just a few minutes.
So true, every few months I get the urge to ditch Synapse, but then I think about how much of a hassle it would be to migrate and happily pay a few bucks more for the extra RAM on the VPS. Don't be me, use Dendrite right from the start.
It's always hard to evaluate that before, but why don't you try setting all up and If it's not enough RAM, just upgrade when needed? As @poVoq already said, Matrix might eat some of your 2g ram, everything else will probably not need so much.
I've been trying to, but I only get so far as the VPN. The moment I try setting up any other service, I consistently get a 502 bad gateway error on Nginx. I'm honestly at my wit's end. I've nuked the server and will try again with a clean slate and hope for the best..
2gb will be probably insufficient, mainly because of Matrix Synapse. If you avoid joining any large communities it might work, but if you are not doing that you might as well use a XMPP server which is better anyways.
A small Lemmy instance will take around 500-1000mb RAM so that will likely work but use a significant portion of your RAM.
I have almost everything you listed running except An Invidious instance and your personal website ofc
VPN Server: Practically nothing
Nextcloud instance: 731 Mib
Vaultwarden: 100 Mib
Matrix home server & Database: 1.5 Gib
Including bridges(Telegram, Whatsapp, Signal) and Element web 1.91 Gib
Lemmy Instance: 200 Mib
Regarding storage: Matrix, Lemmy and Mastodon are gonna eat a lot of storage over time because they have to store media like pictures and videos. If you want i can look how much storage they use in total.
If you want to host a matrix server with a low amount of RAM, you could consider using dendrite. It's not complete yet, and not bug-free, but it's a lot less heavy compared to synapse.
Hetzner Cloud is cheap and EU based. They block smtp for new accounts, but you can turn off the smtp firewall after a month once you pay your first invoice. Otherwise, use a mail service like Sendgrid.
Oracle Cloud Free Tier offers a lot for free, you need to add a credit card, but they have 2 x86 instances with 1GB RAM, and and up to 4 ARM instances with 24 GB cumulated RAM
https://www.oracle.com/cloud/free/
The heaviest things will probably be the postgres database(s) needed for nextcloud, vaultwarden, and lemmy. (not sure if invidious or matrix use dbs). I would say 500-1000MiB per DB, so probably around 4GiB to be safe.
Can't you have multiple services using the same database? My understanding is that they would each do different tables and if you give each a different database user that's not only good practice but also helps prevent them from stomping on eachother
You could, but it probably wouldn't help much. The overhead for each additional Postgres server is minimal, the RAM usage comes from each database. It doesn't really matter if those are on the same postgres instance or on separate ones, in my experience.