So I've decided to up my Linux knowledge. Previously I had successfully installed Ubuntu and gotten drivers etc. working. Basically called it quits there.
I'd like to embark on the journey though, I'd like my Linux knowledge to match my Windows knowledge as I feel it would be both interesting and useful.
However - where to start? Need some guidance on a path to follow or basic project to get my head around.
I've got a fresh Ubuntu installation and drivers installed, all updates done, etc. However, that was all just from following guidance on webpages and copy/pasting commands. Useful and effective, but limited on the learning side as I'm doing a lot of things without understanding why.
Could you guys please either recommend resources or, better yet, advise on a project/path to follow to up my skills? Obviously there are a million things to learn, so a good starting point would be appreciated.
If you’ve got some spare hardware install Ubuntu Server on an old machine or even a Raspberry Pi.
Now if you want to take it one step further setup Ubuntu Desktop on your main machine although not required it will force your hand a bit.
1. Go ahead and figure out how to SSH to the server.
1a. Learn to use vim from the very start to edit files. Don’t fall for the cop out of other editors and struggle later. Vi commands are built into many other Linux commands so just learn them now.
2. Once that’s done figure out how to make the SSH connection passwordless and more secure using SSH keys.
3. Maybe do something like changing the SSH port on the server to understand how editing works better and how to restart daemons/services without rebooting the machine.
4. Create a share on your server with both SMB/CIFS and NFS so you get to know both ways of working and then have your Desktop connecting to that. Can even let your Windows machines talk to it if that helps.
5. Take it one step further and learn how to make both shares connect automatically on boot up of your desktop using FSTAB.
6. You probably learnt a bit about permissions along the way already but did it the Google copy and paste way and probably made terrible mistakes. So now actively learn about permissions and tools like chmod and chown and what they do and how it all works.
7. Maybe make a second user on your server now and use the above permissions learnings to see how that actually works in practise.
8. Now you can start using things like tail and piping it into grep to monitor the logs in /var/log to see the above user logging in or failing their authentication etc.
9. You’ve probably cocked up mv and cp a bit by now learning how the paths and syntaxes work and how relative and absolute pertains to things. Maybe now you are learning the shortcuts and easy ways to get around the OS without a GUI.
10. Time to Cron - Learn what it is and how to use it. Maybe you make a small backup of something or write some log output or some such.
11. Now install something like Plex natively and make it work properly pointing it to some media folder with a movie or Tv show.
12. Install docker and then install Plex again from Linuxserver. Figure out what a bind mount is and get it to automatically fire on reboot etc.
12. Now take it further and install sonarr or radarr or even both in Docker and also some kind of torrent client. Make them all talk to each other and then push whatever to Plex.
You now have a functional Media server that can look after itself but probably spent a weekend trying to understand how the hell this Inception bullshit works with mounting paths and bind mounts.
Probably had some firewall or networking bullshit in between as well.
13. Take it further and install things like Nginx and Letsencrypt, DuckDNS and Fail2Ban and you suddenly have a web server secured on the internet.
14. Do it again and use Swag in Docker instead.
15. Host your own Bitwarden instance from said server.
16. Setup something like Uptime Kuma to monitor things and send you notifications via Telegram.
17. Setup a WireGuard server and connect to it from your phone or other devices and connect home to proxy your internet traffic.
If you haven’t learnt Linux along the way doing all the above I’ll eat my hat.