- Figure out what you want to host.
- Read up on what is required to host that.
- Understand what is required to host that.
- Skip step 3, wing it and search the internet as you go.
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!
Essentially what I did to some degree.
Same here. I remember playing minecraft and wanted to install some mod on my server. There were instructions and I followed them. Problems? Search the web.
I also tried to run TeamSpeak on an RPI at some point, and that was when I learned about ARM.
Thank you for this guide.
You are welcome.
Without knowing what you actually want to do, I'd put Debian on it. Very good, very stable, very widespread OS with plenty of tutorials around for whatever you decide to do with it. Do a minimal installation and 4 GB RAM are plenty to play around with.
I second Debian because of the amount of information out there.
I use debian for my ancient media server. It's great.
Even better when you're already familiar with it. And I'd consider a media server to already be "selfhosting".
Edit: Sorry, thought you were OP.
Yup Debian would also be my way of getting started.
XKCD 2501 applies in this thread.
OP, get CasaOS or Yunohost. Very very simple. Your laptop is fine (you'll probably want to upgrade the ram soon).
XKCD 2501 applies in this thread.
I agree, there are so many layers of complexity in self-hosting, that most of us tend to forget, when the most basic thing would be a simple bare metal OS and Docker
you'll probably want to upgrade the ram soon
His hardware has a max ram limit of 4, so the only probable upgrade he could do is a SATA SSD, even so I'm running around 15 docker containers on similar specs so as a starting point is totally fine.
Surely most basic is an old computer and double clicking minecraft_server.jar? Pretty sure that is the first server I ran for people outside of my LAN actually.
Yeah, I started the same, hosting LAN parties with Minecraft and Counter Strike 1.6 servers on my own Windows machine at the time.
But what happens when you want to install some app/service that doesn't have a native binary installer for your OS, you will not only have to learn how to configure/manage said app/service, you will also need to learn one or multiple additional layers.
I could have said "simple bare metal OS and a binary installer" and for some people it would sound as Alien, and others would be nitpicky about it as they are with me saying docker (not seeing that this terminology I used was not for a newbie but for them), If the apps you want to self-host are offered with things like Yunohost or CasaOS, that's great, and there are apps/services that can be installed directly on your OS without much trouble, that's also great. But there are cases where you will need to learn something extra (and for me that extra was Docker).
simple bare metal OS and Docker
That’s exactly what the XKCD is about, what you wrote is just like the chemical formulas they are talking about in the comic for your average person
Agreed.
I've been using Linux for years.
I've done minor coding.
I've even installed Adguard and a VPN on a router.
Built my own water cooled PC.
I still don't quite understand what Docker is or does, or containerized stuff. I've avoided most networking stuff since XP, and it's basically a completely other field of tech as far as I'm concerned, like Math is to Physics.
I use VMs instead. I understand those and can pretend the benefits matter.
Step 1: be psychologically prepared to break it all. Don't depend on your services, at first, and don't host stuff for others, for the same reason.
Yunohost? Good for trying out stuff, I suppose. I haven't tried it myself. You could also try Debian, Alpine, or any other. They're approximately equivalent. Any differences between distros will be minuscule compared to differences between software packages (Debian is much more similar to Alpine than Nextcloud to Syncthing).
4GB of RAM? Don't set up a graphical interface. You don't need a desktop environment to run a server. Connect to it via SSh from your regular PC or phone. Set up pubkey auth and then disable password auth.
I recommend setting up SSH login first, then a webserver serving up HTTP, only, accessible via IP address.
Next comes DNS - get a name at https://freedns.afraid.org/
Then add HTTPS, get the certs from LetsEncrypt.
Finally, Nextcloud. It runs kind of "inside" your webserver. Now you can back up your phone, and share photos with family, etc.
YunoHost runs on Debian and basically just automates installs via scripts. Its easy to handle and still leaves open to ssh into the machine and learn/understand everything if you want to. Having to real knowledge about tech, networks, Linux etc will lead to nothing when sitting in front of an empty Debian box
asks for help starting with new tech stuff for the first time
Comment that tells them to not use a GUI has 20 upvotes so far
This is why it won't be the year of Linux anytime soon. Basically sending someone new straight into the deep end.
Eh, OP says:
I am familiar with Linux and comfortable in terminal
... and is constrained by little RAM. My stance stands.
Nobody is saying it, so I will. The most important thing is to just get started!
It doesn't matter if you go for a plain Debian server or a fancy proxmox installation with high availability. I believe the most important thing is just to start and experiment. And enjoy!
You can still tinker with YunoHost
Take a few steps back and ask yourself what needs you're trying to fill. I never heard of Yunohost before, but it sounds high-level and abstract. Are you a programmer? Are you familiar with Linux? Are you comfortable in a terminal? Are you familiar with networking?
Find out what you want to do before installing "everything and the kitchen sink" solutions.
I am familiar with Linux and comfortable in terminal, but I am not comfortable networking, and I am not a programmer.
I'll add a vote to all the people suggesting Yunohost. Yunohost is a perfect place to get your feet wet with basically no experience required. I've played with it myself and it does a good job of simplifying and holding your hand without oversimplifying or keeping you on a strict, tight leash. It even helps you deal with common newbie issues like dynamic IPs so you can become more reliably available on the internet, something that a lot of other guides just assume you're going to have a static IP assigned by your ISP or VPS and handwave away the complexity of what you'll have to do if you have a dynamic IP like most home connections. (Experienced self-hosters gradually discover that having access to a static IP somewhere, anywhere, makes life a lot easier, but don't worry, you'll get there too eventually, it's not important when getting started)
You can get started by working your way through the process here.
I agree but I do have to say that Yunohost is becoming bloated. Successive versions run way slower than they used to - I know it is part of the security and ease of use but it is becoming noticeable. You can also use some docker things in yunohost but for an absolute beginner Yunohost is by far the best way to do it.
I used yunohost for a bit and while it was easy setup, it wasn’t easy to troubleshoot weird errors because hardly anyone uses it.
I’d recommend setting up:
- debian with a desktop environment to start with
- figure out how to ssh into it from your main machine and maybe how to use tmux
- docker and how docker works
- self-hosting services using docker
don't expect a 19 year old laptop to perform all the tricks something more 'modern' can do, such as transcoding video for a streaming media server. also note that a t5600 is not a ulv chip (draws as much as 34w under load, on its own)--so probably not a candidate to run 'lid down' without some outside help for cooling.
it's not fast, it's not power efficient, it has slow networking (10/100 and 22-year old 'g' wifi), and lacks usb3 for 'tolerable' speed on extra external storage space---but it will be 'ok enough' for learning on.
if you go with something like yunohost or even dietpi, you will pretty much restrict yourself to what it can run and do and how it does it. if you want more 'control' or to install things they don't offer themselves, you'll need to 'roll your own'. a base (console only) debian would be a great place to start. popular, stable, and tons of online resources and tutorials.
I've been using YUNOhost for the last 3 years and it's been great. I had no prior experience and would have had no chance of self-hosting without it.
Start with docker. Any OS will do. Most Linux distros are better but I run docker on Mac, Linux, Windows (not a lot in windows since I despise Microsoft but it does work).
The great thing about docker is it is very portable, modular, and easy to get back to a known state. Say you screw something up, just revert and start over. It’s also very easy to understand in my opinion. It’s like all the benefits of virtualization with much less over head.
I have a Dell Inspiron 1545, that has similar specs to yours running Debian with Docker and around 15 services in containers, so my recommendation would be to run Debian server (with no DE), install docker, and start from there.
I would not recommend proxmox or virtual machines to a newbie, and would instead recommend running stuff on a bare metal installation of Debian.
There are a bunch of alternatives to manage and ease the management of apps you could choose from like, yunohost, casaOS, Yacht, Cosmos Cloud, Infinite OS, cockpit, etc. that you can check out and use on top of Debian if you prefer, but I would still recommend spending time on learning how to do stuff yourself directly with Docker (using docker compose files), and you can use something like Portainer or Dockge to help you manage your containers.
My last recommendation would be that when you are testing and trying stuff, don't put your only copy of important data on the server, in case something break you will lose it. Invest time on learning how to properly backup/sync/restore your data so you have a safety net in case that something happens, you have a way to recover.
As a counterpoint to no proxmox, I get a lot of utility in being able to entirely destroy and reprovision VMs. I get it adds a layer of complexity, but it's not without its merits!
I get your point, and know it has its merits, I would actually recommend Proxmox for a later stage when you are familiar with handling the basics of a server, and also if you have hardware that can properly handle virtualization, for OP that has a machine that is fairly old and low specs, and also is a newbie, I think fewer layers of complexity would be a better starting point to not be overwhelmed and just quit, and then in the future they can build on top of that.
No disagree here. :)
Step 1: Install proxmox
Step 2: run the post install script here, disable anything enterprise, test or related to high availability.
Step 3: check out the other scripts on the link. I suggest starting with a pi hole and experimenting from there.