There are countless tutorials, walkthroughs, and lessons out there about learning to use Linux. The variety of distributions in the Linux ecosystem is astounding and can be overwhelming to the newcomer. In this series I will try to present my thoughts and experiences. I’d like to share the facts and tips I have found the most interesting and spurred me to learn and do more.

Installation

Coming from Windows as a primary OS, my first inclination was to install a dual boot setup. Of course I started with Ubuntu, the most widely spread Linux distro. Ubuntu is based off of Debian, a well-established stable OS that’s been around a long time. The most important lessons coming from dual booting was knowledge of the boot loader and the core files of any operating system. This led me into researching file structure, disk formats, partitions. Being naturally inquisitive, each snag in the road led to more research.

Security

While I’ve written a few posts on this topic before, security of your system cannot be overstated. For a local only desktop machine it’s not as important. When your hardware firewall isn’t pointing traffic to your machine, it’s unlikely someone on your own network will be trying to access your machine. However, to me it seems likely to follow that someone interested in Linux will end up creating a server of some sort. My first lesson in this was merely opening a machine to the outside world. I didn’t know yet what I’d be using it for, but then again I didn’t know much of anything yet! In no time my potential server had become a mail spam box! I began learning to secure my server, but at that point only in the most basic sense. My “server setup” post was basically saying “turn on the firewall and activate the most basic of security software”. It’s quite incomplete but I was using it to learn about file sharing software.

Servers

My first foray into servers was hosting my own file sync. There are quite a few options out there and I ended up trying many before landing on Nextcloud as my favorite (and current) setup. It took lost files and reverted versions but I learned a lot from installing each. First was Sparkleshare, an active and open-source solution. At first glance solves all my problems right? Little details in implementation make a huge difference. I had been actively learning the popular version control system, Git. Turns out that Sparkleshare uses Git in the background to sync files and check for changes. I tried to work around it, but my versions kept messing up and sync would inevitably crash. Next was Seafile, as mentioned in my Ubuntu 14.04 Server Setup post. Seafile is a mature software that worked fairly well for me for quite a while. Now to me, smaller and simpler software like these are easier to install. I like understanding how something works, at least at an overview level, so seeing all the files of a system makes that more clear. Some might argue that something more advanced and with a larger community would have an easy installer, which is true, but it’s all “magic” behind the scenes. Having been satisfied with Seafile I eventually realized the phone app was lacking and it was time to move to a more well-established behemoth. I’ve been using Nextcloud for over a year and it’s worked flawlessly. I’ve also since moved to using virtual cloud servers and linking the file back-end to an object storage space.

Remote Access

Access is another consideration of having a server whether local or cloud-based. Most often you will run a server headless. That is without a monitor, keyboard, mouse to interact with it directly. In this case you will interact with your server through the command line using SSH, or potentially with a web interface depending on the software being hosted. To be clear, SSH must be secured! Using the default settings and opening a firewall port to your server potentially gives an attacker direct access to perform any command on your machine.

As this is an intro to the topic of Linux and a general overview, I’ll continue on from here with more fine-grained articles so we can really dive in. Knowledge is built from acquired information, and knowing what you’re curious about helps me continue writing more specific articles!

⇒ Do you have any questions about what I’ve shared so far?