Category Archives: Linux

Setting Up My Cloud Server with Ubuntu 14.04 LTS and Seafile

The first home server I set up was built using parts from multiple old computers. I threw in two HDD’s for my first RAID setup, then installed Ubuntu 12.04 LTS. The main purpose for my server is to host a file cloud. *Seafile is my favorite software for private cloud storage.* Knowing nothing about network security means it wasn’t long before the server was infiltrated with a Postfix (mail server) spammer. Last week one of the drives failed and I decided it’s time to start from scratch and follow some security guides this time. I also upgraded to a real server distribution, meaning I have no GUI to work with, only a command prompt. Here I’ll do an overview of the steps I took to get the server set up and syncing files between my computers.

  • Download Ubuntu. My server is old and 32-bit so I needed to grab a non-standard release (ubuntu-14.04.1-server-i386.iso) from http://releases.ubuntu.com/14.04/. If your server computer is 64-bit then the normal Ubuntu downloads page should have what you want.
  • Burn Ubuntu .iso to a disk or usb drive. I prefer using disks so I can keep a permanent collection of operating systems. When on Windows, I like using ImgBurn to create OS disks. If you’re on Ubuntu, it’s easy as right clicking the .iso file and selecting “Burn to Disk”.
  • Install Ubuntu. The install process is pretty simple so just follow along with it. When installing Linux distros, I just look up any option I don’t understand yet.

Now boot up the server and the rest is all setup.

Almost every command for setting up the server requires superuser privilege. To save myself from typing ‘sudo‘ over and over, I log into root with  sudo su. If you don’t feel comfortable logged in as root, just use ‘sudo’ before each of the following commands.

  • First step of course is updating software.
  • Now install a firewall and activate it. Might as well open the ports now that we will need for the Seafile sync service.
  • Next I followed Matt Brock’s nice guide on Security Hardening Ubuntu Server 14.04. I skipped the steps related to Apache because I won’t be serving any websites from this server for now.
  • Install and configure Fail2Ban. The Ubuntu community guide on Fail2Ban works great for this.
  • As I found out before, it’s very important to harden an email service like Postfix. It’s a commonly installed program on servers and many people want to use your computer to send spam. When we installed Fail2Ban, it automatically installed Postfix to email reports. I followed this Postfix Hardening Guide on AskUbuntu.com.
  • Configure Logwatch. Again I used an Ubuntu community guide.
  • The last and most important step for my setup, is to install Seafile. At this point you’ll probably want to exit the superuser login. It’s just too easy to put the Seafile installation in the wrong home folder.
    1. Go to the download page and find the server link for your system. For my 32-bit Linux system, the correct download is 3.1.6 32bit. Right click the link and hit Copy link address.
    2. Now I can download it on the server using the wget command. Don’t forget to change this link to the current version for your computer!
    3. After downloading the Seafile server, read the manual and follow the instructions. I went with the simplest setup, which is using the SQLite database. The walkthrough is thorough and clear so no extra explanation is needed from me.

After going through all of these steps, I now have my server set up how I want it. Just download the Seafile client on any of your computers and you’ll be syncing files in no time.

If you have any questions at all please feel free to ask. I’m still learning, so if you ask about something I don’t know yet we can learn about it together! Thanks for reading and I hope my server experiences have proven useful to you. Have a happy day!

Linux – Find Command Examples and Tutorial

The find command is a powerful and versatile tool that can do much more than search for files. There are many ‘tests’ that can be added to make the search as specific as needed. Complex searches can then be combined with ‘actions’ to be performed on files that match. Here are a few examples:

***  ALWAYS perform searches first with NO COMMANDS on the end (like -delete or -exec). There is NO UNDOING a bad command so make sure you know what files will be affected.  ***

  • Find files by name (such as copies). As with many commands, the argument right after find tells it where to start looking. Using . says to start looking from the terminal’s current directory. The -name test uses unix-style wildcards and must match a complete file or directory name. Placing a * on each side of your query will find it in the middle of a name. The last part is a test for file type. The most common flags for -type are f for file, d for directory, and l for symbolic link.
  • Find empty folders and delete them. Here were are replacing the -name test with a simple check for -empty because we are looking for empty directories. We can then specify -type d to find only directories. The last part is a call to the action -delete. Use this carefully and remember, always search first and only use actions after you know what will be affected.
  • Find iPhone screenshots and move them to a screenshots folder. This example uses the -exec action flag, which can be used to perform almost any command on the found files. This flag really shows off the incredible usefulness of the find command. This time, were are not searching from current directory, but telling find to start from the “~/iPhonePics” folder. For the -name test, we are looking for any files ending in “.png”; so in this case we need only one wildcard to fill out the start of each filename: “*.png”. The -exec action has extra requirements for a complete command. Brackets {} are where each found file path will be inserted into the command. Also, the command must be finished off with \; to let find know that’s the end. In this case, the mv command will be performed on each file and told to move them from anywhere in “iPhonePics” to my “~/Screenshots” folder.

I hope these three varied examples have given you inspiration on how to add the Linux find command into your tools. I am using this on Ubuntu 14.04 and version 4.4.2 of GNU findutils. Whatever version or Linux system you have it should work about the same. Please ask in the comments below if you have any questions! Have a great day!

Lesson Learned: Harden Postfix or Be Banned

Just a quick post to give warning to any beginners looking to set up Postfix. If setting up accounts to receive mail, go the extra mile and learn how to enable spam/virus filtering and reject backscatter-causing spam.

When I installed Postfix, the only thing actually needed was to send out mail. I wrote a script that emails me, and I also have logwatch email a daily report. It wasn’t necessary to enable incoming mail, but I did it for fun because I’d never set up a mail server before. Enabling incoming mail caused my server to send out undeliverable mail notifications in reply to spam. This has gotten me on two blacklists and has stopped Gmail from accepting any mails from my domain.

For now, I’m disabling the incoming mailbox and turning it into what is called a null client. I will also look into getting removed from the blacklist. First I’ll try this guide. My reports from logwatch are sorely missed because now I have to manually check the logs on my server.

Good luck on any of your email server endeavors and always keep security and spam in mind!

Install Light Table on Ubuntu with Launcher

Recently I’ve been trying out the open source editor Light Table. It has a lot of great features, my favorite being inline evaluation. The editor will run a single line of code and display the value at the end! It’s super customizable and really reminds me of Sublime Text in terms of looks.

Here are some simple instructions on how to install Light Table and create a nice launcher for it.

  • Download the correct version for your system from lighttable.com.
  • Change directory to wherever the file is located.
  • Unzip the archive. This will give you a folder called LightTable. The wildcard ‘*’ in the filename makes this command work for either the 32-bit or 64-bit downloads.
  • Move the unzipped folder to /opt to live with other non-traditional installations. Then delete the archive. Note: Programs in /opt are available to all users.
  • Create a launcher file called light-table.desktop and enter the details to make it work.

    Make sure to hit enter at the end to leave a blank line, then hit Ctrl+D to exit the cat command.
  • Make the launcher executable so Ubuntu registers it as a program.
  • Last step is to create a symlink in your user /bin folder to enable calling Light Table from a terminal. You can call yours whatever you want, but here I’ve named it ltable so the command to start it up is nice and short.

    Edit: If ~/bin does not exist, create it. Ubuntu treats ~/bin like a per-user installation folder. If you want this shortcut to be available for all users, instead use sudo and place it in /usr/local/bin.

That’s it! All done! Have fun using and customizing the Light Table editor! I’m certainly no Light Table expert but if you have any questions about these instructions please let me know in the comments. Have a great day!

Rainbow Terminal Text With Lolcat

Like seeing rainbows all over the place? Does it make you especially happy to have a colorful terminal? Yeah, me too. There’s a little Ruby program called lolcat and it will help you out (in the happiness department).

lolcat_rainbow_terminal_colorful_pandora_cli_pianobar

Steps to a super colorful terminal:

  1. Install lolcat in one of two ways.
    1. As a Ruby gem using the standard Ruby utility.  gem install lolcat
    2. Through your system’s package manager.  sudo apt-get install lolcat
  2. Pipe your program through lolcat.
    • cat cool_file.txt | lolcat

That’s really it. The only problem I’ve come across is when piping through a program that is still in control of the terminal output.  My main example is with Pianobar, the Pandora CLI app. It doesn’t actually break anything, you just can’t see the last line of the terminal. This means the song progress can’t be seen, and it can be a problem if the user is expected to enter information. I’ve gotten used to it though, it’s really worth it for the colors!

Have fun with rainbows all up in your face!

git_help_lolcat_rainbow_colors_cli_terminal