Projects to Learn Linux
-
People often ask where to start learning Linux, and the answer is always to "just start doing projects." That's hard to do, of course, because someone without server experience might not have a good set of project ideas that would reflect real business processes to start out with. So I am going to start collecting ideas:
- Build a Linux Jump Box
- Build a Linux Logging Server like ELK, Graylog or Splunk
- Build a Linux Monitoring System like Zabbix, Zenoss or Nagio
- Build a Linux Ticketing System like ServiceDesk+ or osTicket
- Build a Linux Documentation Management System like MediaWiki, Dokuwiki or Alfresco.
- Build a Linux VoIP PBX like FreePBX.
- Build a Linux Instant Messaging System like Rocket.Chat, Mattermost or OpenFire.
- Build a Linux Email System like Zimbra.
- Build a Linux Media Server for home movies, music, pictures, etc.
- Build a Linux Backups System.
- Build a Linux Shared Storage System using NFS for other Linux Machines.
- Build a Linux Shared Storage System using Samba for Windows and Mac OSX devices.
- Build a Linux Active Directory server with Samba 4 or FreeIPA.
- Build a DevOps management system with Salt, Ansible, Chef or Puppet.
- Script your builds, script maintenance tasks.
General Project Tips:
- Always use enterprise Linux OS Distros: CentOS / RHEL, OpenSuse / Suse or Ubuntu (mostly in that order)
- Treat the systems as if they were production and secure them, monitor them, etc.
- Always vitualize
- Use real server hardware when you can
- Use enterprise cloud platforms when you can (Amazon, Azure, Rackspace, Softlayer, Digital Ocean, Vultr, etc.)
- Do everything in such a way as to make your current business or any potential employer jealous of your home or lab network. Do this by raising the bar on the home line to be what a business should be like.
-
I definitely felt like I was learning some Linux things when building my ELK server (still need to finish), but if you're using the distro for FreePBX or Elastix there isn't a requirement to use the command line, especially once initial setup was completed.
-
@Dashrender said:
I definitely felt like I was learning some Linux things when building my ELK server (still need to finish), but if you're using the distro for FreePBX or Elastix there isn't a requirement to use the command line, especially once initial setup was completed.
Not a requirement but if you have a fleet of Linux servers (even for your lab) you will be wanting to do things from the command line even for FreePBX such as:
- Configuring it for your jump server
- Adding it to your logging
- Adding it to your monitoring
- Configuring users and security
- Checking performance
-
I just finished setting up an ELK server. Much less painful than I expected
-
Few things on Linux are ever as painful as people imagine that they will be.
-
@scottalanmiller said:
Few things on Linux are ever as painful as people imagine that they will be.
So much of this that i need to work on to help improve our internal infrastructure and improve our behind the scenes stuff. Just so little time around other things needing to be done (and that generate revenue) right now.
-
@johnhooks said:
I just finished setting up an ELK server. Much less painful than I expected
Mine was horribly painful a year ago. I haven't come back to it. My problem was trying to go CentOS 7 when it was too new. If I had done CentOS 6 then, it would likely have been simple.
-
@JaredBusch said:
@johnhooks said:
I just finished setting up an ELK server. Much less painful than I expected
Mine was horribly painful a year ago. I haven't come back to it. My problem was trying to go CentOS 7 when it was too new. If I had done CentOS 6 then, it would likely have been simple.
CentOS 7 made a pretty big leap in "PITA" status. CentOS 5 and CentOS 6 were essentially identical from an interface standpoint and for almost a decade using CentOS while things improved as far as speed, stability and features, the "way" in which we interfaced with them was dead simple and totally consistent. But CentOS 7 really shook things up and you have to change a lot of the things that you know.
-
@scottalanmiller said:
CentOS 7 made a pretty big leap in "PITA" status. CentOS 5 and CentOS 6 were essentially identical from an interface standpoint and for almost a decade using CentOS while things improved as far as speed, stability and features, the "way" in which we interfaced with them was dead simple and totally consistent. But CentOS 7 really shook things up and you have to change a lot of the things that you know.
Not having a ton of admin experience in 5 & 6, I honestly had none of those problems with 7. It is what I truly started to actually LEARN on. Yeah, I have used various Linux systems for a decade, but that was not anything more than occasional updates or something in a command line. generally managing things from a GUI otherwise.
You know, the way applications are supposed to be managed.
-
I'm not unbiased given my long experience on CentOS 3, 4 5 & 6 but I really feel that the interface on 7 is much harder to learn, especially around service management. In the old system, it was super obvious what was happening as you just ran scripts and could look at the filesystem and it was all right there. In 7 you have to rely on knowing tools that sometimes lack some functionality that was trivial in the old systems. I'm sure 7 introduces more power and stability, I just wish that they could have kept it as super easy for some of those tasks as 6 had been.
-
@scottalanmiller said:
I'm not unbiased given my long experience on CentOS 3, 4 5 & 6 but I really feel that the interface on 7 is much harder to learn, especially around service management. In the old system, it was super obvious what was happening as you just ran scripts and could look at the filesystem and it was all right there. In 7 you have to rely on knowing tools that sometimes lack some functionality that was trivial in the old systems. I'm sure 7 introduces more power and stability, I just wish that they could have kept it as super easy for some of those tasks as 6 had been.
I'm in the same boat as @JaredBusch and mostly started with 7. It seems easier to me, esp with things like systemd and firewalld. Firewalld syntax makes much more sense to me than iptables and systemctl enable <service> is easier (in typing regards) than a sym link. Again, this is all opinion.
-
Well let me propose the extra complication just so you have my perspective....
In CentOS 7 you want to start the web server. What do you type? What is its name?
In CentOS 6 you just go to /etc/init.d and look and you can see the names of every installed service right there. No guessing or having to know ahead of time. You get to have the built in shell's tab-completion mechanism handle it for you. Can't remember if the database is mysql, mysqld, maria, maridadb, maridadbd, etc.? Just hit tab and it will tell you. Can't do that anymore.
-
@scottalanmiller said:
Well let me propose the extra complication just so you have my perspective....
In CentOS 7 you want to start the web server. What do you type? What is its name?
In CentOS 6 you just go to /etc/init.d and look and you can see the names of every installed service right there. No guessing or having to know ahead of time. You get to have the built in shell's tab-completion mechanism handle it for you. Can't remember if the database is mysql, mysqld, maria, maridadb, maridadbd, etc.? Just hit tab and it will tell you. Can't do that anymore.
Ya I see your point. Systemd will list them but you can't tab complete through them.
-
Yeah, it's not tragic, but the ways that we are used to working are gone. So have to adapt.
-
@JaredBusch said:
@johnhooks said:
I just finished setting up an ELK server. Much less painful than I expected
Mine was horribly painful a year ago. I haven't come back to it. My problem was trying to go CentOS 7 when it was too new. If I had done CentOS 6 then, it would likely have been simple.
I was the same, about 3 months ago I started one, but ran into road blocks.. haven't gone back yet.
-
I wouldn't mind seeing a good guide for ELK. I've thought about setting one up, but never had the resoures in my home lab until recently.
-
@scottalanmiller said:
Few things on Linux are ever as painful as people imagine that they will be.
That was me before- I thought it was very painful, but as time goes by I discovered it's not that painful if you're already familiar or at least you already know the command.
And I need to do work more to improve my knowledge. Looking forward to start working on learning Linux projects. -
@dafyre said:
I wouldn't mind seeing a good guide for ELK. I've thought about setting one up, but never had the resoures in my home lab until recently.
-
@scottalanmiller Thanks.
-
@scottalanmiller said:
@dafyre said:
I wouldn't mind seeing a good guide for ELK. I've thought about setting one up, but never had the resoures in my home lab until recently.
That's the one I used.
If you want to cheat, they have a one click installer