What would tools/services would you recommend for hosting without self hosting?
Hello.
I've been trying to get familiar with self hosting. The only roadblock I have is I'm unable to do so because I am a university student living in student accommodation where it is against WiFi policy to host anything. And currently I don't even have my raspberry pi with me. My laptop is relatively low specced, so I can't exactly do VMs, but I want to learn more about hosting stuff and the services I can host. I recently signed up for a free managed Nextcloud instance because I wanted to see what it's like and whether I'd be interested in hosting my own.
I know VPS-es are an option but they can get pretty costly, especially for a student like me. Do you have any recommendations, including any cheapz reliable VPS-es for a UK student to dip his toes into self-hosting? Thank you.
P.S I know this isn't exactly self-hosting as I'm technically reliant on third party hardware but it's the only option in my situation.
It's easy to overlook with the omnipresent internet, but self-hosting doesn't require internet. You could host for your fellow students on the local network. If that's also against the Wifi rules you can either ignore that stupid rule or set up your own god damn wifi with hostapd on your machine and let students connect directly to it. It's probably best to use a machine dedicated to the task for security reasons as you wouldn't want curious students to accidentally erase your homework. I wouldn't use containers or VMs for any of this, I'd just use bare metal like in the good ol' days. You could also, without having to worry, give people shell accounts because it's a closed network. The options are endless without all the worries of hosting on the internet.
Start by learning docker, you don't have to selfhost anything yet, just learn to run a container, specially to run automated stuff. Then learn to build the images and run docker compose.
Also you could start checking any form or infrastructure as code. I usually hear about ansible and nixos.
This helps having a way to redeploy your services in any hardware easily.
DevOps guy here mostly working at scale in AWS. Learning docker should be priority 1 alongside learning Linux basics. Ansible should be second IF the plan is launching docker containers on a VM as opposed to a server less option (example: AWS Fargate)
To be clear; DevOps isn't a role, it's a methodology.
As for docker; Learn Linux fundamentals first. Docker is just automation, and it's worthless if you don't understand what you're automating. Same goes for Ansible.
IaC is great, but there are too many people who don't know what the hell their underlying infrastructure does, how different parts talk to reach other, or how to properly manage it, and trying to build a TON of it, hoping that'll make up for it.
Bare metal (or a test VM treated as if it were bare metal) first. All other things later.
If you have a credit card and can pass their validation, Oracle offers a shockingly good set of free cloud options.
4 core, 24gb ram ARM instance, two potato epyc instances, 200gb of disk space and 10tb of transfer and various other little bits and pieces for the grand total of $0.
Some people have had their accounts closed for "no reason", but I'm closing in on 2 years of free shit with no problems, so ymmv.
(I strongly suspect no reason has a reason and a huge number of these people were running VPNs, so I'd wager they either did something stupid/illegal, or someone they gave access to did something stupid/illegal.)
They couldn't even successfully delete my account or stop billing me after they couldn't fix the simplest problem because they could never associate my support ID with my tenant account. I had to put a block on my credit card at the advice of a oracle support rep to stop getting charged.
Utter dogshit, but I don't know what I expected, doing any sort of business with Larry Ellison.
Not sure if the UK is similar to where I lived, but they were the worst “cloud” provider I’ve ever used. Want to shut down the instance you had to recreate it with a different OS? Good luck getting it back online as they are out of capacity. Also, if you accidentally deleted one of the default network components it was impossible to recreate it without incurring a cost kind of going against anything you learned about cloud computing and “infrastructure as code”. It was a glorified GUI.
Edit: I’m just glad my current employer does not use anything oracle as their support is also famously bad.
Mine's running just fine (along with about a dozen other things) on the A1/ARM instance you can get for free.
I wouldn't say performance is stunningly good - the Ampere cores aren't especially fast single threaded, and postgres is.... well, it's not the most threaded thing ever under really low loads - but it does what it's supposed to.
I think it's cool you're trying to find ways to get into this. If the goal is to learn, why not deploy the services on your laptop? They won't be available when the computer is off of course, but you would still get the full experience. Even a low-spec laptop will be better than a cheap VPS.
The worst laptop you can find could probably be better than even a reasonably specced VPS. Low end VPS are dire, and you can get some pretty decent laptops for almost nothing. If it’s pre 8th Gen. Intel they’re basically worthless on the used market. But they’ll still easily get the job done.
Gitlab is a bloated mess. I don't know anything about forgejo, but I'm hearing a lot of good things.
At any rate, you don't need either of them. Learning how to host a raw git repo is extremely beneficial, even if you want to move to Github/Gitlab/Forgejo/etc later.
I completely forgot about the Linux Upskill Challenge! I should have mentioned I've been running Linux as my desktop operating system for almost 3 years, and I've been tinkering with it quite a lot throughout so I'm quite familiar and very comfortable with the command line. I shoukd go through the Linux upskill challenge so I can fill in any knowledge gaps though. Thanks for reminding me!
I have two labs; one on-prem (lol my home office) and one in AWS. Depending on what you're doing and how "shiny" you want it to be, you can go pretty far in AWS for less than $50/mo (and a little less far for $20). And that comes with the added benefit of haing AWS skills for your resume.
For hosting on AWS, chose services that run well on nano/micro instances. For everything else, run it from home (network policies notwithstanding, see 3 paragraphs down).
Also AWS, if you're setting up a VPC with proper private/public subnetting (and you really should), don't use their NAT gateway. It's WAY too expensive. I set up a NAT gateway on a T3.nano and it costs me $3.74/mo (theirs would have been like $35/mo, which would have blown half my AWS budget on just that). I don't remember if I used this specific article as a guideline, but he did exactly what I did (specifically the iptables config), so I'm confident in pointing you to him.
As for on-prem; look into Beelink's offerings. I just got two of their miniPCs ( specifically these ) for $150 total (on sale) and will be moving some of my heavier stuff (matrix, fediverse) from AWS to these. You don't need these specific ones, check their store, it has a section for models on sale, find something you like and get it cheep.
Now, I know you can't host anything on their network that would touch the Internet, but something like these would be great for self-hosting Plex/Jellyfin, or other services that are technically only local, but also still technically on the network (hell, you don't even need their network; buy a second-hand Netgear router and make your own private network). Those mini-PCs would also be great for learning linux, since you said you can't really run VMs. if you want to learn about general self-hosting (web services like Apache/nginx, get a little PHP or Python site going, etc) you can do that totally locally on your private network, and it'll be the same experience as doing it in the cloud (except no one but you can see it, but hey, everyone needs a "dev" environment; Cloud can be "production" if you want an audience).
You can buy a super cheap cloud VM and use a (self hosted) VPN so it can access your own PC and a reverse proxy to forward all incoming requests to your own PC behind your school’s network.
It’s arguable whether this would violate their policy, since you are technically hosting something, but not accessible on the internet from their IP. So if you wanna be safe, don’t do this, otherwise, that could help you get started.