Edit: Thanks to everyone who commented and helped with suggestions! I moved to Debian + Docker compose only and everything went well and it’s working perfectly!
TLDR: want to get rid of casaos from my home server and learn everything on my own from the beginning, am I crazy for wanting to wipe everything and reinstall the entire system?
Hi all! A few weeks ago I got a mini-pc (Beelink S12pro), a secondary internal sata ssd (thanks to those who helped me with the choice), and I slowly set up my server with quite a few services (the *arrs, jellyfin, immich, navidrome, gotify, uptime-kuma etc.) using casaos as overlay for everything (with Debian 12 as base and tailscale to access it outside my home). I like casaos interface, and it really helped me a lot in smoothing the process of approaching docker and managing a personal server.
However, I am starting to feel a bit restricted by casaos: almost immediately I was bypassing the 1-button install and customize the container to my liking, also if I need to change something deeper I always need to check if casaos has its own way of handling things. Plus, I don’t really like the frequent connections to the app store (and I couldn’t figure out how to change the interval), or the fact that everything casaos does is done as root, which also forced me to run some containers as root user. My server isn’t exposed to the internet so I can be less worried, but I would like to know more about permissions and stuff without being forced to just run everything as root.
Removing casaos is apparently quite easy with an uninstall script, you can also keep your containers intact, however it will leave behind a lot of the dependencies installed and modification made through the install script, apparently.
I don’t think these modifications will not be useful to me, but I would like to have a system when I know what I did, what is opened/installed/activated and what is not, and by just uninstalling casaos I will not have that. Note that I am also not against UIs, I think I will install dockge for easier managment of containers, but I would like the process to be learn->setup->use ui, and not the other way around.
Am I crazy for thinking about reinstalling the entire system and start from scratch? I have backups of everything: container data folders, compose files, various media. TBH, in one week of use there are not many things that are absolutely vital, moreover, most of the media are in the secondary drive which will be left untouched. Worst case scenario, I can also avoid restoring backups (except for the arrs which were the more time-consuming to set up).
In my mind these are the pros and cons
Pros: install stuff as needed and learn what does what, without having a script automagically doing that for me, probably gaining a deeper dive into docker/compose. No overlay, no mandatory root things, possibly less maintenance?
Cons: having to set things up again (system users, ssh access, tailscale, automount usb drives, mount points for the sata drive), possibly some container stuff will not just work by re-importing from a backup?
Does the selfhosted community have some advices or opinion on this? Maybe there are also easier ways I am missing, being kind of new to all this. Thanks in advance for any answer!
Isn’t completely blowing it away and building it back again why we all do this?
I don’t think you’re crazy. Sometimes when my shit gets bloated and I start getting confused about how things go together, I wipe everything and start fresh to refresh myself and organize better.
Back in the day, that’s what I did ALOT on Windows. Specially because of piracy and my younger me having no idea what he was doing XD !
Still happens on Linux with EndeavourOS but not for the same reasons ! There are millions times more ways to break stuff on Linux but I always learn Something new during the process.
Story time:
Learned the other day that some config files are loaded in a specific order and depending what display manager is installed. That was kinda eye opening to understand cause my system didn’t load
.profile
when.bash_profile
was present and I didn’t understood why ! Thanks Archwiki !
If you have backups and don’t mind the downtime until you have it up again, go for it.
You have tested restoring those backups, though, right?
Thanks for the answer : downtime isn’t a problem since I am the only one using the server for now, and I still have leftovers from a previous setup (stremio, local music) for the days I will be without the server.
You are absolutely right, I haven’t checked the backups yet, but I will make sure to do it. I was thinking to wipe radarr or sonarr, reinstall the container and restore from their manual backups, to see if everything works. For Immich is probably safer to start from scratch, I don’t have that many photos backed-up anyway and I heard it might not always work.
Try Proxmox or some other hyperisor. Also learn about cloud images and cloud-init. It’ll take seconds to spin up a new machine from scratch. And you can experiment as much as you want and break stuff. You can even create an isolated network within Proxmox itself with Onpnense and nested Proxmox to mess around with networking.
I don’t touch my home prod when I want to test some new service.
I see Proxmox mentioned a lot, but haven’t had the time to test it out. I will stick with Debian+Docker for now, but if it’s that convenient I might take a look at it one day :)
And you can experiment as much as you want and break stuff.
I really like this part especially
I installed it after breaking my Debian several times. Now, I just need to make sure I don’t bork my Proxmox :)
But that’s easy because I have nested proxmox with an isolated network backed by OPNsense. So I can break it as much as I’d like.
I would like to have a system when I know what I did, what is opened/installed/activated and what is not
Story of my life after 20 years on Linux. Maybe we could call it “modification anxiety”.
I believe this is the case for an immutable OS.
100%. This is exactly why I switched my home server over to NixOS and would struggle to go back. I used to reinstall all the time but now there really isn’t any need to, since I can just look at my configuration.nix file and know everything that’s installed, running and configured on my system. Whereas using any other distro I’m like WHAT ON EARTH IS RUNNING ON HERE?
Nice to know I am not alone! And I only recently started with linux, so I guess it’s not really something that goes away with time 😂
I need to take a look at an immutable OS sooner or later, although I feel I would be annoyed for not being able to modify stuff for my liking (probably I will never be satisfied in any case)
Immutable distros like NixOS don’t stop you from tweaking stuff, they just record every tweak centrally, so that you can undo them and do rollbacks.
Others can confirm that I’ve got that right. Haven’t tried it but the idea sounds great.
I’ve used NixOS on my laptop as a learning experience for the past year and find your summary solid. Rollbacks = 🍰.
My bugbear has been the Nix language itself. It’s functional, (a first for me,) and with the documentation lacking, I’ve been thrown for more than a few loops. That said, I have indeed learned quite a bit as a result. Still a ways to go, but here’s to the journey!
I would like to have a system when I know what I did, what is opened/installed/activated and what is not
You sound like you need to to look in to Nix and NixOS. The TLDR is that everything is declared in a configuration file(s), which you can and should back up in git. The config files tell you exactly what you did , and the config file comments together with git commit history tell you why.
The whole system is built from this configuration file. Rollback is trivially easy, either by rebooting and selecting an older build during the boot manager, or reverting to an older git commit and rebuilding (no reboot required, so usually faster)
Now fair warning, Nix (and NixOS) is a big topic, very different from normal way of thinking about software distribution and OS. Nix is not for everyone.
You should also at the very least have a git repo for docker-compose files for your services. Again, that will declaratively tell you what you did and why.
Also, if NixOS is too extreme, you should also look in to declarative management tools like Ansible etc
Reading your post again, you should start by moving your docker management from CasaOS to vanilla docker-compose files, and keep them in a git repo.
I still think you definitely should look in to NixOS and what it can offer, cause it seems like that is where your mindset is going.
But NixOS is a drastic change, you should start by just converting your individual services one by one from CasaOS management to docker-compose files. One compose file for all services is possible, but I would recommend one compose file for each service. Later you can move from Debian to NixOS while using the same docker-compose files.
I recommend switching to NixOS only after you have a basic but broad understanding of Linux, many things in NixOS are more complicated than in “normal” Linux, which is needed to archive what it does, but is overwhelming for someone who doesn’t know the what and why and where that using Linux brings.
Lol, I’m just over a week in to learning NixOS and this feels so true 😂
I feel like I’m just starting on the incline, luckily I don’t have any sturdy rope on hand 😂
I had a similar journey and recommend it. I started with Open Media Vault with docker containers configured via a GUI, then to Debian + docker compose, then to Debian deployed with Ansible + docker compose, and now I’m with NixOS + podman compose. The first jump to Debian was the most intimidating for me learning CLI commands for the first time and not having defaults chosen for me, but it was liberating to finally learn the actual tools and not just learn a GUI abstraction for tools.
The first jump to Debian was the most intimidating for me learning CLI commands for the first time and not having defaults chosen for me, but it was liberating to finally learn the actual tools and not just learn a GUI abstraction for tools.
I feel it, I am in the process now of transporting everything and I couldn’t agree more. I have a semi-idea of trying nixOS sometime, and I only recently learned about podman existence, is it that different to docker? I read it’s not a 100% replacement, but I guess it depends on the use-cases.
I view podman as a mostly drop in replacement for docker but it doesn’t have a daemon (for better and worse). I wouldn’t recommend using podman for you right now. I’d strongly recommend docker-compose (not docker run).
If you’re ever stuck trying to convert a docker run command to a compose.yml file, composerize.com is helpful.