2024-08-17, 03:22 PM
(This post was last modified: 2024-08-17, 03:25 PM by Host-in-the-Shell. Edited 3 times in total.)
Personally, I would advise to learn your way around server administration, bash scripting, and hosting services bare metal first; while docker is super useful and is worth learning for sure, it also abstracts a lot the work that goes into administering services, and could inadvertently create a knowledge gap.
I find that one way to get your hands dirty and learn a lot at once is to host a service like Nextcloud bare metal, since setting it up and updating it is a great teaching tool for many important skills at once, such as hosting a service, dealing with php, database management, cron jobs, and configuring a web server, preferably through a reverse proxy. Of course, follow the best recommended security practices if you intent to host any mission critical files in there. In fact, I still host it the manual way to this day, but behind a virtual machine. I appreciate the practice to keep me sharp, and thanks to the virtual machine I can store snapshots that allow me to destroy and restore at will, which is very useful.
One last piece of advice that may not jibe with everybody is to avoid jumping straight into using portainer after installing docker like 90% of guides will tell you to. I know an easy to understand GUI seems like the most appropriate for a new user, but portainer introduces a lot of pitfalls of its own and abstracts so much of the work involving docker that I think it becomes a crutch rather easily. I wasted around a year with it just to find out that I could do most of the same tasks through the terminal and automate everything even better with docker compose commands, a simple bash script and custom systemd unit. That said, after learning the docker commands and being comfortable with them, if you require a GUI you can use portainer to monitor your containers and access logs. I'd still advise against it administering them instead of using the cli however, as there are many portainer specific issues that are not present otherwise in my experience.
I find that one way to get your hands dirty and learn a lot at once is to host a service like Nextcloud bare metal, since setting it up and updating it is a great teaching tool for many important skills at once, such as hosting a service, dealing with php, database management, cron jobs, and configuring a web server, preferably through a reverse proxy. Of course, follow the best recommended security practices if you intent to host any mission critical files in there. In fact, I still host it the manual way to this day, but behind a virtual machine. I appreciate the practice to keep me sharp, and thanks to the virtual machine I can store snapshots that allow me to destroy and restore at will, which is very useful.
One last piece of advice that may not jibe with everybody is to avoid jumping straight into using portainer after installing docker like 90% of guides will tell you to. I know an easy to understand GUI seems like the most appropriate for a new user, but portainer introduces a lot of pitfalls of its own and abstracts so much of the work involving docker that I think it becomes a crutch rather easily. I wasted around a year with it just to find out that I could do most of the same tasks through the terminal and automate everything even better with docker compose commands, a simple bash script and custom systemd unit. That said, after learning the docker commands and being comfortable with them, if you require a GUI you can use portainer to monitor your containers and access logs. I'd still advise against it administering them instead of using the cli however, as there are many portainer specific issues that are not present otherwise in my experience.
Server specs => OS: Debian 12 | GPU: Arc A380 | CPU: Ryzen 5 5600X | 64GB RAM | 56TB