Really enjoying lurking the last few days here. I have no coding experience, but like the idea of self-hosting a few things like Immich, Firefly III, PaperlessNGX, Nextcloud, and maybe Home Assistant. These are great tools even for non-tech people who care about privacy and functionality. I do run Plex off of a hard drive, and like the idea of putting all of this on a NAS in the future.
After an hour tutorial I can pull docker images and run containers on my Mac. But every app has different instructions, and every video tutorial I watch references new things and assumes you already have them or know what they are. Just trying to get any of those mentioned apps above running on Docker led me down rabbit holes about redis, mySQL, Oh my zsh, Xcode, gnu-sed, etc.
So my question is what is a good video course, or learning route, to take to acquire enough skills to download and use these apps? I don’t want to do anything fancy, just download and run the apps. What seems super simple to you guys is incredibly daunting to an outsider. Thanks for any advice here.
Edit for posterity: While listening to the Self Hosted podcast, they mentioned this step-by-step wiki called Perfect Media Server, created by one of the hosts of the show, to help newcomers begin self hosting.
Most services have installation for Docker. I started from knowing nothing about this stuff (albeit quite tech-savvy) and I would say my favorite route is with Docker compose. Don’t bother with tutorial videos or courses, this isn’t a theory-based activity but rather a practical one. For simple services (I’ll come back to this in a bit), you want to skim through the documentation and look for the keywords “Docker” or “compose”. Copy the file content as needed and fill in the gaps with the details as you personalize the service. Learn how to convert Docker run commands to compose. Use issue trackers, this community, the old reddit community to look for similar setup and inspirations.
Now, you want to self-host Firefly, Immich, etc. These, as far as I know, all have good docs and a compose file. Immich is a bit more involved. And a lot of them use big separate databases. Database administration is a bit scary, but hopefully, you won’t need to manually intervene or fix a broken database until you are better adapted to the world of self-hosting. Run backups, and do what I should have done: test run services before using it in production. Let’s say you want to run Immich. Start it up, and upload a few test files, and try to use all the functionalities. If it breaks, you don’t lose anything and can run the real thing when you’re confident it’s what you want.
Super helpful in lots of ways, thanks!
For any well-known software, ChatGPT – although it pains me to admit it it – is surprisingly good at providing reasonably clear installation and setup instructions.
Ohhh good thinking. He’s about to become my new best friend.
I’ve been playing with dockstarter for a while, found it a really good introduction to docker with a fairly consistent implementation of each container.
Helpful community generally too and lots of choices of software. https://dockstarter.com
Cool site, much appreciated!
Before you even start trying to run services over a network, you need to understand networks: https://cs.lmu.edu/~ray/notes/netsandinets/
Then you can start putting stuff on the network, and you’ll understand what you’re doing and why.
Great point, thank you. Backing out into https://cs.lmu.edu/~ray/classes/it/, I see there’s tons of good notes from that computer networks course, much appreciated!
Services vary a lot on how they are deployed and their dependencies, etc. The knowledge I have (and honestly I don’t have much) I just built over time, tinkering with different set-ups and trying to debug problems when they arose. So I guess just choose a few difference services and try to get them working (choose low-stakes ones at first, where the risk of getting pwned or losing everything is very low). Docker can abstract away a lot, so maybe try more direct deployments if you are interested in learning.
Great advice, thanks!