Ask HN: How can a total beginner start with self-hosting?

185 points by kickaha ↗ HN
tl;dr Please point me to a true beginner’s reference/tutorial on networking.

Gradually, patiently, persistently, over the past ten years and more, I moved from Windows and Mac to all FOSS apps and then full Linux. Doing the same with my phone. Total success. Independence and self-reliance.

In short it’s all about control, privacy, and security, in that order. And: it’s a long term process that requires a commitment.

I understand desktop Linux (Ubuntu/Pop!_OS) well enough to get myself out of trouble when I mess up or an update breaks. But I have no clue about networking, and I don’t know where to start.

Syncthing keeps a handful of my important directories of user-files synced quite reliably.

I deleted my Google account years ago. But I’m still in iCloud and iOS for all the photos. Highly recommend Fastmail incidentally.

I have a small cheap Linode VPS (doing nothing right now), a Mullvad client on all my devices, Tailscale on all my devices (doing nothing because I don’t understand what it can do), and a Synology NAS in the closet with the modem/router (none of which I understand).

I want to:

- host my own photos and get out of Apple.

- host my own bare git repos and not rely on GitHub.

- host my own BitWarden server.

- host my own Tail-/Headscale (whatever the noun is).

- follow up on ideas that pop up after I comprehend networking.

I can HERPaDERP install packages on client and server, and copypasta configs I don’t understand. Where do I go to understand?

193 comments

[ 2.7 ms ] story [ 254 ms ] thread
Get a piece of hardware (old from Ebay is fine, consider power requirements, a small device with an SSD may be better) and throw the free VMWare ESXi on it, and start spinning up virtual machines at home.

Play and experiment. That's how I started, and as long as you have lots of off-line backups, you can get pretty far.

Tailscale makes two or more computers look like they're on the same network (simplification).

Later you can decide to keep things on your little virtual host on your home IP (depends on your connection and requirements) or migrate to a VPS at Linode, etc. I like having it at home with me, but that's just me.

I like this advice but would suggest proxmox instead of ESXi. (Seems to be a lot more traction in the homelab type of deployments and my own three-year experience has been really excellent.)
I thought about mentioning proxmox but in my (personal) experience it was easier to get up and running with ESXi.

Once I understood somewhat what ESXi was doing, it was easier to learn proxmox or Xen or whatever.

That could be. I came at Proxmox after other hypervisors as well, so I might be discounting the learning curve aspect; I did experience it as pretty close to zero, but that could be a measurement/framing error.
I can recommend openmediavault. It comes as something you can setup on any logic machine or on a raspberry pi. It comes with many storage servers built-in, and can also run any container service as well.
Sorry to be contrarian, but I had a pretty negative experience with OMV. The install is nonstandard and non-paradigmatic (install uses some 3rd party script, can't do an apt install), it sets up a bunch of nonstandard scripts and configs, and uninstalling is a nightmare (can't apt remove). When something breaks (like networking), you have to fight with OMV wanting to have its own way. There's also a certain lack of polish and issues that you simply don't see in more commercial products.

I'm currently using Cockpit Project (and quite happy with it).

Interested to know what others share.

I have an old computer that I connected to my router, and I’m able to ssh into it and do stuff.

It’s an old intel quad core with 16gb ram, and has a 1TB SSD. More than capable enough to handle a bit of workload. It runs Ubuntu and I’m using it to run backends for apps as I develop them.

Well, with Tailscale you have your own private network, so anything you run anywhere you can access on any device. You could DIY it a bit more using something like WireGuard directly (Tailscale uses WireGuard under the hood), but Tailscale makes it much easier, particularly with managing adding new devices, using DNS, etc.

I don't see much downside to sticking with Tailscale indefinitely, what are your reasons?

Exactly why I asked for pointers to tutorials: I have only the most superficial, decontextualized comprehension of words like WireGuard, tunnel, (virtual) private network, etc. Thanks to everyone who made suggestions.

> I don't see much downside to sticking with Tailscale indefinitely, what are your reasons?

Tailscale and Bitwarden both fall into the same category: they seem like good actors, they have generous free tiers, and if I come to rely on them at scales that aren't free I would be happy to pay. However, I want to understand them enough to be able to know that I could host them myself if god forbid they go out of business, are subject to attack, or whatever.

As I've succeeded at on the desktop, the hobbyist gratification is both the fun of tinkering mixed with the confidence that if it need it I have packed my own parachute.

Just keep at it. Read some source. Play with vms or docker containers. You will get it with practice and exposure.
I do not know of an opinionated beginners guide, but would recommend browsing r/selfhosted and r/homelab a bit. Lots of these and similar questions are answered on a regular basis.

Some starting points

- photos: NextCloud

- git: Gitea

- BitWarden: Vaultwarden (even if you deploy this locally you want a SSL certificate as clients will refuse to connect otherwise)

I'd suggest using official docker images to get started as there’s plenty documentation available for all projects and experimenting is a bit easier when you can simply dispose a container without having to worry what’ll happen to your host OS.

As long as you run services locally on your Synology (assuming it supports docker) and don’t expose them to the Internet I’d encourage you to „just give it a try“.

Just don’t immediately start to rely on the services and run a dual strategy (NextCloud and iCloud photos for example) till you updated your container once or twice and feel comfortable troubleshooting issues with your stack. Nothing is more discouraging than having a service you need „right now“ being down and no idea how to get it back up.

It’ll be a long, fun journey. Good luck!

> - photos: NextCloud

If you don't mind horrible experience viewing photos/videos via nextcloud, go on. In my case this was unusable. Thumbnails not pregenerated even after trying (Yeah, didn't spend whole day on that issue) and generates on the fly. So viewing larger directory is... rubbish. Videos don't play as nice not to say they don't even have thumbnails. Feels like "guest book" from 2000 - no features that auto organizes stuff - just a directory with photos and you're on your own with unorganized mess of photos.

How great was HN when it suggested me https://photoprism.app/ - and it really just works! Nice, performant, featureful, yet feels lightweight. Finally I can view my photos.

I still use nextcloud just for sync and photoprism just has directory mounted as readonly. Still, sync from phone feels heavy along with "failed to sync" errors and just hangs doing nothing... I long to try out syncthing - but then I loose web access to documents which.. maybe someone can suggest some frontend for that?

Someone also suggested https://photostructure.com/ - it looks decent, haven't tried out.

Nextcloud released a new version of their photos app a few days ago (https://nextcloud.com/blog/announcing-nextcloud-hub-3-brand-...). Haven't had the chance to try it yet though
What’s the difference between nextcloud hub and the good old nextcloud server?
No difference. Just a branding exercise.

Nextcloud will soon be at version 25, which will also be named Nextcloud Hub 3. Frank Karlitchek talks about this during the Q&A, about an hour and a half into the video linked below.

However there are major improvements coming in that new version, specifically to the Photos app[1]

[1] https://www.youtube.com/watch?v=dhJXZzqsv8A&t=1103

Plex is pretty good for viewing stored video and photos (pre-generated thumbnails and video transcoding + preview), while NextCloud is pretty good at syncing them. Install both and point plex to the synced photos and videos directory in the server.
It looks like r/selfhosted even has a wiki with some tips on getting up and running: https://wiki.r-selfhosted.com/

I've gone through some of it and it seems like a decent primer on where to start, but I'm not sure that it has all the required info that OP would want.

+1 on vaultwarden. I use 2 rpi’s: one in my own house and one in the house of family. I run regular backup’s using BorgBackup. I run OpenWRT on my router with WireGuard on it. I configured my mobiles/laptops to auto-route over WireGuard to my home.
> - git: Gitea

"Why gitea and not bare repos?"

- Better repo, user, and access management, all from a browser.

- LFS support.

- Being able to browse code in... well, a browser, is really nice.

- GH-like workflows generally, if you want that.

You can have it use sqlite for the DB to make it extremely easy to manage and backup and such. I'd expect that to be fine up to at least 50 moderately-active users, and maybe much higher.

Fair enough. But I just want a place to put dotfiles that I can share between machines. If I had more complex needs than that, I would probably not have had to ask this question!
Either a dedicated dotfile or just use Syncthing.
> As long as you run services locally on your Synology (assuming it supports docker) and don’t expose them to the Internet

How do I do all this while exposing it to the internet? I want to host stuff for my friends and family without putting them on a VPN to my house.

You could put your services behind a reverse proxy such as Traefik with forward-auth and expose it to port 443 (HTTPS) on your router, or (that's what I do and am happy with) use the cloudflared [1] demon to connect your services to Cloudflare where they can be protected behind Cloudflare Access using an SSO provider such as Okta (or Github or Google) for authentication. This method does not require you to expose any ports on your router and can all be done on the free/dev tiers of Cloudflare and Okta.

[1]: https://hub.docker.com/r/cloudflare/cloudflared

The term you're looking for is Homelab. There are so many YouTube videos. And a subreddit.
I'd say more like selfhosted. Homelab is more about people building discarded server racks and populating with power hungry and noisy second hand equipment. Its their hobby more power to them but they seldom focus on what's those monsters are running instead of how they put RGB lights on old R710s.
All of the tech that the op is asking about running is in under this banner on YouTube, aesthetic aside. If they want to get tutorials on how to do this and see other software people are running this is a resource.
My suggestion, which many people will probably disagree with here, is to go take the following certifications:

- CompTIA Network+

- Linux Foundation Certified IT Associate

For extra credit, pass the Linux Foundation Kubernetes certs, get a AWS cert, pass the Offensive Security PEN-200 cert, or take any of the GIAC certs. These won't make you competent, but they'll provide a baseline that you can quickly attain which will get you started.

After those, maybe consider project-based learning.

- Install Arch Linux

- Install Linux from Scratch

- Learn to use QubesOS and make your own OS templates/ISO.

I'm certain others here will say certs are a waste. I do not agree. They are a way for people who don't have enough context to quickly build that context.

Good luck!

I appreciate this perspective. But I was hoping for something at, um, a smaller scale of commitment. :-)
Cloudron.io might be helpful. Makes self-hosting a lot easier for beginners.
This is a long but satisfying road if you're a tinkerer. Start by prioritising. In my case, I was worried about Google locking me out so I started there, other things such as VPN could wait because I wasn't locked in on my VPN service.

In your case that might be migrating your photos off iCloud. I found the awesome-selfhosted[1] list to be excellent for trying out different products that match the size of the VPS you've got or maybe you just want to put that onto your local Synology NAS if you don't need your whole photo roll on the go.

Self hosted BitWarden is also another good starting point with the very lightweight vaultwarden[2] just make sure you always know where your vault is stored on your server and make backups.

While it's a long road it doesn't need to consume your life daily but it still requires you to keep up with all the things any sysadmin needs to handle like monthly patching, monitoring the logs for sustained abuse and break in attempts.

Subreddits /r/selfhosted and /r/homelab are also great places to have a browse.

[1] https://github.com/awesome-selfhosted/awesome-selfhosted#pho...

[2] https://github.com/dani-garcia/vaultwarden

Thanks for the tips. Yes, the subjective experience I'm looking for is tinkering-and-independence-satisfaction.
Keep at it. Keep reading and applying your knowledge.

My path was to use Linux distributions that are well-documented that you can assemble piece-wise. Examples include Slackware, Debian, and Arch. By understanding the pieces you’ll come to understand networking better, and you’ll better understand how to help yourself.

That’s just one path though, certainly there are others. Just look at how far you’ve come, and realize that with time you’ll pick up more.

Looking forward to following answers to this!

I can vouch for git repositories being easy to host on a VPS. I use a private git repo as my daily backup tool for my documents. A public one should be easy too. Access management for particular users, I'm not so sure about.

For hardware: in the past, I would say start with a raspberry pi. But those are impossible to find at list price now. So instead, if you look on ebay for SFF (small form-factor) workstations, you can find something like an HP Prodesk G1 with cpu/storage/memory for ~$50-60. Which is significantly cheaper than a raspberry pi 4B @ $100+ by resellers.

Slap on a distro, and you're off to the races. Checkout /r/homelab and /r/selfhosted on reddit. You'll probably want to read about DNS and local networking (DNS & Bind is a good book).

You'll understand by doing things. Don't blindly copy-paste configs. Spend some time to figure out what they're doing and type every line in manually.

It depends on what direction you want take. You could purchase a $5/mo digital ocean server or a $5 raspberry pi and start by installing https://pi-hole.net, https://nextcloud.com, https://syncthing.net, https://www.plex.tv, or some other software to get the first (largest) thing you want resolved. Then move on from there and install the next package you need.

Ad blocking for your phone? VPN for work? Self hosted email? Retro gaming? Figure out what you want most and jump into that instead of trying to get everything all at once as it can be overwhelming to consider every system instead of taking one step at a time.

Why is the self host advice to always buy a Raspberry Pi, use an old crappy computer you have lying around, etc?

I have a very beefy desktop for the first time in over a decade (maxed out Mac Studio) and I am wondering is there any real downside to having these services run on it?

You can certainly run these as background tasks on your existing daily driver, but you don't have to.

I've found a raspberrypi/orangepi to work just fine and it doesn't matter if the main computer is on, I'm upgrading to a new system, or traveling between work (laptops). It just sits in the closet and does it's thing using a tiny amount of electricity.

Mostly because you want a dedicated device to serve off of. If your desktop is always on it isn't that much different.

My desktop gets shut down, rebooted, crashed, wiped and reloaded, and otherwise abused as I get thoughts.

My home server has been the same (don't worry I run updates) for a couple years, chugging along, sipping about 1/4 the power my desktop would take.

In the beginning of your self hosting journey, the opposite might be true. You might want to try 300 things, and that's hard to do if you're trying to get work done on your desktop.

I have Pi's and old, beefy computers and what I really need is an "elastic personal cloud" where I can bring up the high-powered computer(s) online on demand[1]. I have WiFi-connected sockets and a python script than can turn them on or off, but no orchestration or global state.

1. My 12-year old, former top-of-the-line laptop is much faster than my 3rd-gen Pi when periodically ingesting and indexing JSON into a PostgeSQL db, I suspect slow IO and limited memory are to blame.

I have used wake on LAN sometimes for this too, but that was close enough for me, and I lost interest.

WoW (wake on wife), worked pretty well from the office, but I seem to get a little bit of latency and packet loss. Now I work from home, so I just get up and hit the power button on the more powerful machines.

My shock with compute power was when I got the Pi 4. It was faster than the AMD e350 I was using for backups except for disk IO. The E350 was not a powerful machine new, but I didn't realize how far we had come.

A USB 3 enclosure brought it to a level that was good enough the entire mini ITX build was pointless to keep around.

The downside is you might not want to leave your computer running all day and VM networking can be a pain if you want to access the services from other devices on your network.

A pi/old computer is a physical box you can put in a corner and you can be sure the physical network works if it is connected.

The only downside is, I believe, the electricity bill. The reason to use a rpi is that it has enough computational power to do many useful self-hosting tasks while consuming only a fraction of the power of a beefy computer.
Mac Studio idle is 11 W (max 115 W) compared to RPI 4 idling at 4 W (max 6 W).

It's reasonable to assume that the 115 W on a Mac Studio will never be hit on a workload that could be supported by a RPI...so you're looking at an extra $10-20/yr to operate the Mac Studio.

The biggest issue is just the upfront cost, since of course the Mac Studio is proportionally expensive to its capability.

Idle power consumption for Apple Silicon Mac is low despite it's workstation, it's outlier. Average Intel desktop consumes similar or a little more power for idle, that is acceptable IMO for flexibility and reuse. Maybe DIY PC consumes a bit more than average Dell desktop even if CPU is same. Average Intel workstation/server consumes much more than them so it's wasteful for almost idle server. So it depends on what is the previous PC.
Oh for sure, if you pick out a high consumption CPU then it'll be high for sure
Mostly energy usage. A raspi is going to use a lot less power than most crappy old computers and a hell of a lot less than your beefy desktop.
You could do it. But it's not a good fit. Workstations are more about customization and personalization. Servers are more about consistency, reproducibility, and reliability.

E.g. you can't restart your desktop while your roommate is watching a Plex movie. Or your VPN stops working because your roommate's cat walked on your keyboard while you were on vacation.

I had my home server on a pi and then an old laptop, and finally in a VM on my always-on Mac Mini. The hardware devices were nice for set-and-forget operation (especially the laptop, because the PSU acted as a UPS that kept it running during several power outages over the years).

I like the VM rather than running it directly on the Mac because it's trivial to copy the VM to another computer when I want to change hardware. Obviously, your services will be unavailable whenever the host machine restarts.

You may want your services to have good availability while being able to shut off and reboot your (likely power-hungry) desktop without concern.

Especially for DNS. Like, your system reboots for an OS update and now the rest of your the devices on your network have connectivity issues for an hour or so. Or you have a hardware issue and now you lack both the infra and the workstation so getting things up and running again becomes triply annoying.

I'll just recommend starting SMALL. Pick one, and start there. I'm not even sure which one on your list to recommend starting with, just pick one and go with it. All of those things are widely used and just asking your favorite non-Google search engine for docs/guides/how-tos will give you more good results than you need. Get to know that thing, how to set it up, configure it, keep it running, keep it secure, and how to recover from disasters. Make sure you know how to back it up and start over in the event of failure. So much of what you learn from setting up ONE will carry over to the others.
I build my own server for the first time last year running Unraid OS. It's been great. Super easy to set up, all apps are installed as docker containers. SpaceInvaderOne and Ibracorp are great youtube resources, and their forum community is super active and helpful.

Definitely still an amateur in my networking knowledge but I've learned a ton over the past year.

Thanks for those pointers!
https://old.reddit.com/r/selfhosted/ is a great community with lots of resources as well. Check the sidebar and wiki there.

Also, if you are into Docker, I love the images hosted by these guys. https://www.linuxserver.io/

I came here to literally say the exact same thing. These two resources are likely some of the most valuable things you'll find. I know some others have said "use the official docker images" and I'd say for selfhosting: don't. The folks who run LinuxServer.IO are awesome and the consistency of their documentation and container images is some of the best, in one place, that's out there today.

I would add two things to the mix here - the first is there are a bunch of blogs who cater to selfhosting as well as on YouTube. The ones on YouTube are much easier to find. I'd say one of the more active bloggers though is Jeremy who runs Noted [0].

The other thing I'd take into consideration is if you want to manage your selfhosting, and if not there are options there as well. One popular option as of late is Umbrel [1] and there's also some like Sandstorm [2] that have been around longer. Yunohost [3] also seems to have some traction in this type of self-hosting realm.

[0] https://noted.lol/ [1] https://umbrel.com/ [2] https://sandstorm.io/ [3] https://yunohost.org/

Thanks for the endorsement and the links.
To understand networking: read a book. Much of my early networking knowledge came from https://dl.acm.org/doi/book/10.5555/1593414 but you can probably find more modern variants of such a book. Getting a good grasp of networking requires reading and experimentation; luckily, you've got the tools for experimentation already.

Most of application deployment is little more than reading the docs and tuning the configuration to your needs. From what I read, I think you've got enough knowledge to get that stuff running on your servers. You can probably get a lot more out of learning about the underlying concepts.

For your own photos and cloud: I use Seafile, have used Nextcloud, and alternatives exist. Quite easy to set up, but with the ability to go deep into Modern (TM) Cloud (C) backends if you want.

For your Bitwarden setup: Vaultwarden is a lot easier on resources and has pretty much all the features you need. Also quite easy to set up.

For your tailscale setup: there's a guide for the server (https://github.com/juanfont/headscale/blob/main/docs/running...) and you can find more guides for the clients.

For your Git setup: Git works over simple SSH. If you can SSH into your server, you can host a git repository. If you want more (a nice web GUI) then Gitea or Gitlab can also be run on your server.

Things I recommend reading into if your knowledge about them is spotty (find guides or book recommendations):

- Networking (ARP, IPv4, IPv6, TCP, UDP, DNS, mDNS, maybe PPPoE, and other such abbreviations). This is a lot of reading. You can also try to get started with this stuff without reading into it (it's how I learned!) and have a terribly frustrated time by overlooking obvious mistakes and easy solutions, but I don't recommend that.

- SystemD services. People use Docker to solve a lot of daemon problems but good ol' systemd can do a huge part of that! I run most of my services in systemd rather than some kind of container setup because I don't want to have to deal with Docker and its many friends and dependencies whenever I'm trying to resolve a problem and so far it works great.

- Reverse proxies, if you're running multiple services on a single server with subdomains or subpaths; learn about nginx/caddy/apache2/whatever server you prefer and how to set up proxying. Along the way you will break stuff and learn new things with every error message or unexpected routing error you encounter!

- Firewalls; firewalld and ufw are nice ways to get started, nftables/iptables for the underlying stuff. It's not hard, per se, but it can get complicated fast. Maybe mess with the Windows firewall as well just for fun.

- Set up IPv6 if you don't have it already. This would allow you to do some more networking stuff and prepare you better for the future, because corporate networking people seem to be grumpy and annoyed at the thought of one day needing to enable a protocol from the 90s. If your ISP only does IPv4, https://ipv6.he.net/ will get you an IPv6 subnet for free and if you do all of their quizzes they'll even send you a free shirt!

- Along the way, you will (or should, at least) learn to use Wireshark and friends. Incredibly overwhelming at first but with some knowledge about networks you'll get the hang of it by setting up the right filters.

> To understand networking: read a book. Much of my early networking knowledge came from https://dl.acm.org/doi/book/10.5555/1593414 > [Computer networking: a top-down approach, Kurose and Ross 2009]

This is the kind of reference I was looking for. Anybody else have a favorite. Maybe more accessible? "For Dummies?" :-)

Thanks for all these concrete suggestions.

EDIT: "Free t-shirt"?! AWESOME :-)

I think this book is its own "for dummies" version: it starts at the very basic ("what is a HTTP?") and then slowly walks its way down to "how does conflict prevention in WiFi work?")

Most of those chapters are probably not relevant to you. All the wireless stuff is nice if you want to dig into setting up your own radio network but you can stick to the internet stuff. Not even everything in there may be relevant to your interests, I've forgotten most of the network/routing graph discovery stuff myself because it's not really relevant unless you're planning on running a corporate network or an ISP. I recommend just giving it a good go, and skipping the parts you probably won't ever need. You can always read them later if a later chapter refers to them and you need to understand after all.

As for Linux stuff, last month's Humble Bundle had a bunch of Linux related books: https://web.archive.org/web/20220913000217/https://www.humbl...

You can probably find people talking about this bundle online and find out what books/alternatives they recommend. There were a few Reddit threads about this at the very least, maybe a HN thread or two as well.

Great to know! Thank you.
This is a very good question.

My best answer is: find a mentor.

Someone you can repeatedly ask for detailed pointers from as you get stuck. This could be a colleague, an IRC/Discord friend or even someone on Twitter that you have bonded with.

I have been mentoring people close to me on computers and Linux since I was about 13 years old and am now 39. And it has been a real blessing, since you learn a lot by being forced to explain what you already know.

As a teenager I didn’t think of this as mentoring of course. But I wad very lucky to have had my 3 years older brother as computing mentor, which gave me a great head start compared to my peers.

Not knowing exactly where you or others reading this comment are currently getting stuck, here are a few random pointers:

netstat -a -n -l -p

ls -la /proc

man mdadm

iptables -L -n

rsync -a -e ssh myfolder user@host:

And reading Beij’s (?) tutorial on TCP socket programming if you are an aspiring C programmer.

I like this idea. I live in a little college town so I think I can tap into a circle of nerds.

Thanks especially for the concrete list of topics to bork around with.

Plex is a great product if you want to host your own photos, music, and media such as movies and tv shows. If you aren't a fan of Plex you can try jellyfin.

As others have mentioned, proxmox, Unraid, and/or TrueNAS are great if you have unused/extra hardware sitting around. Personally I have a box for Proxmox VM's, and an Unraid server for storage and several docker containers i use regularly. I'm still very cloud dependant for the convenience factor, but this should help give you some direction.

There are also communities on reddit like /r/selfhosted and /r/DataHoarder/ that you might want to check out.

One thing that has kept me from starting to self-host is that I'm terrified of the thought of opening ports on my network to the open internet. For people who have self-hosted, how do you secure or set up your network?
I self host a lot, the main thing is to keep your software up to date and make sure you don't accidentally open any ports you don't mean to. The top main mistakes people make is 1) never updating software and then getting exploited, and 2) accidentally not having or misconfiguring your firewall. Like leaving an "internal" service exposed to the internet.
nginx or other reverse proxy running SSL - don't open ports directly to any of the apps.

You should also run fail2ban on everything.

jzymbaluk's fear is mine too. I should have made it explicit!

I'll follow these pointers for sure.

(comment deleted)
Without meaning that in a rude way: Learn to find and read documentation.

Oh and very much avoid random tutorials on the internet. As in, go for official source and use these tutorial only to connect the dots. The reason is that there is huge amounts of really bad advice on the internet and a lot of the tutorials only work in very specific situations (versions, OSs, etc.). Official documentation tends to be a lot better, and it's a good idea to choose software that provides good documentation.

Also make sure you do it one step at a time. You want to give things time to know what failure cases it might have. This prevents you from situations where everything "crashes and burns", because there is an update.

No offense taken. Sounds like good advice.
Exception: any how-to guides in Arch or Gentoo's documentation & community wikis or what have you are likely to be excellent and sometimes a far better use of time than reading the official docs. Most of the steps, tips, and advice aside from parts related to package management will be useful just about anywhere.