Blueprint: How Ghost Migrated From Dedicated Servers to DigitalOcean


This DigitalOcean Blueprint article was written by Sebastian Gierlinger, a Senior DevOps Engineer at Ghost. It covers the steps that were taken to migrate the Ghost(Pro) infrastructure from dedicated servers to DigitalOcean Droplets. In each step, Sebastian will discuss the challenges that were faced, how each challenge was solved, and why each solution was chosen. He’ll also provide links to relevant resources that he found to be helpful. Ed.

Ghost(Pro) is the hosted platform for Ghost, an open source blogging platform, where users can rent pre-built Ghost blogs with a few clicks. Ghost(Pro) is what continuously funds the Nonprofit organization, the Ghost Foundation, that manages the Ghost open source project. Originally hosted on dedicated servers, Ghost(Pro) was migrated to DigitalOcean to enable on-demand scaling.

Problem Statement

In the last quarter of 2014, Ghost(Pro) was quickly outgrowing its original, dedicated server infrastructure, as it was serving about 100 million requests from tens of thousands of blogs every month. Scaling the existing infrastructure would require about two months of lead time for purchasing and deploying new physical servers. In short, the limitations of scaling a dedicated server infrastructure were threatening the growth of the Ghost(Pro) platform and, as a result, the further development

How To Work with Docker Data Volumes on Ubuntu 14.04

How To Work with Docker Data Volumes on Ubuntu 14.04


In this article we’re going to run through the concept of Docker data volumes: what they are, why they’re useful, the different types of volumes, how to use them, and when to use each one. We’ll also go through some examples of how to use Docker volumes via the docker command line tool.

By the time we reach the end of the article, you should be comfortable creating and using any kind of Docker data volume.


To follow this tutorial, you will need the following:

  • Ubuntu 14.04 Droplet
  • A non-root user with sudo privileges (Initial Server Setup with Ubuntu 14.04 explains how to set this up.)
  • Docker installed with the instructions from Step 1 of How To Install and Use Docker Compose on Ubuntu 14.04

Note: Even though the Prerequisites give instructions for installing Docker on Ubuntu 14.04, the docker commands for Docker data volumes in this article should work on other operating system as long as Docker is install.

Explaining Docker Containers

Working with Docker requires understanding quite a few Docker-specific concepts, and most of

How To Configure Collectd to Gather System Metrics for Graphite on Ubuntu 14.04


Collecting and visualizing data is an important way to make informed decisions about your servers and projects.

In a previous guide, we discussed how to install and configure Graphite to visualize data on our servers. However, we didn’t have a good way of collecting or even passing data into Graphite.

In this guide, we’ll discuss the installation and use of collectd, a system statistics gatherer that can collect and organize metrics about your server and running services.

We will show you how to install and configure collectd to pass data into Graphite to render. We will assume that you have Graphite up and running on an Ubuntu 14.04 server as we showed you in the last guide.

Install Collectd

The first thing we are going to do is install collectd. We can get this from the default repositories.

Refresh the local package index and then install by typing:

sudo apt-get update
sudo apt-get install collectd collectd-utils

This will install the daemon and a helper control interface. We still need to configure it so that it knows to pass the data it collects to Graphite.

Configure Collectd

Begin by opening the collectd configuration file in your editor with root privileges:

sudo nano /etc/collectd/collectd.conf

The first thing that

How to buy an external hard drive

It’s always a good idea to back up your computer. You may not trust your content to be stored in the cloud, so if you want a physical copy of your computer’s files – not just something that’s floating in the ether – you’ll want to buy an external hard drive (HDD). The process of purchasing an external HDD can be overwhelming, considering the large amount of options out there, but we’re here to help.

When deciding what’ll work best for your needs, consider the following: What will you be using it for; how much space do you really need; and how often will you be backing up your files? Also, do you want to be able to transport your external hard drive so that a lighter, encrypted one would be most convenient and best protected; or do you plan to keep it in one place, in which case you can afford a heavier but potentially cheaper device?

Answering these questions will help you gauge what the best storage device option will be for you right now.

Storage capacity

Storage capacity in external HDDs can range from about 2GB to 4TB. In fact, some drive companies put two 4TB drives in one chassis, creating

Top 10 Web Conferencing Software Tools For eLearning Professionals

Collaborating with eLearning team members, offering live training events, and enabling online learners to reach out to their peers are just a few of the many uses for web conferencing software. However, due to the sheer abundance of web conferencing software tools that are available today, finding the one that suits your needs and fits your eLearning budget can be challenging. Just to make the process less time consuming and stressful, below you will find a list of the best 10 web conferencing software you may want to consider.

  1. AnyMeeting
    AnyMeeting is the go-to web conferencing and webinar tool for small organizations, thanks to the fact that it is an all-in-one platform which features everything from video and phone conferencing support to webinar hosting. It’s been around since 2011, and has quickly become one of the most popular options available, boasting over 800,000 registered hosts. You can sign up a free trial and pay just $18 for small group meetings after that.
  2. Onstream Meetings
    Onstream Meetings is great for eLearning professionals who want a more personalized web conferencing platform, as it allows you to customize every aspect of your web conference screen. Its interface is easy to use and they offer a

Why do I need anti-virus software?

Isn’t Linux virus-free?

For the most part, Linux is engineered in a fashion that makes it hard for viruses to run. However, there are many reasons you might want a virus scanner on your Linux PC:

  • you are required to have a virus scanner installed by the terms of use of the company you work for or are doing business with
  • to scan a Windows drive in your PC
  • to scan a Windows-based network attached server or hard drive
  • to scan Windows machines over a network
  • to protect a Windows virtual machine from within the virtual machine
  • to scan files you are going to send to other people
  • to scan e-mail you are going to forward to other people

  • some Windows viruses can run with Wine.

  • Linux virus infections are theoretically possible.

Other Security Issues

A Firewall is more important as it should prevent infections and prevent other types of attacks. SSH is also an important issue so it’s worth having a look at the main page on Security.

Ubuntu Networking Configuration Using Command Line

The basics for any network based on *nix hosts is the Transport Control Protocol/ Internet Protocol (TCP/IP) combination of three protocols. This combination consists of the Internet Protocol (IP),Transport Control Protocol (TCP), and Universal Datagram Protocol (UDP).

By Default most of the users configure their network card during the installation of Ubuntu. You can however, use the ifconfig command at the shell prompt or Ubuntu’s graphical network configuration tools, such as network-admin, to edit your system’s network device information or to add or remove network devices on your system

Configure Network Interface Using Command-Line

You can configure a network interface from the command line using the networking utilities. You configure your network client hosts with the command line by using commands to change your current settings or by editing a number of system files.

Configuring DHCP address for your network card

If you want to configure DHCP address you need to edit the /etc/network/interfaces and you need to enter the following lines replace eth0 with your network interface card

sudo vi /etc/network/interfaces

Note :- Use vi editor if you don’t have GUI installed

If you have GUI use the following command

gksudo gedit /etc/network/interfaces

# The primary network interface — use DHCP to find our address
auto eth0

What’s new in Ubuntu Server 14.04 LTS?

Ubuntu Server 14.04 LTS, which goes live today, is the third Ubuntu LTS release designed for cloud. After more than four years, we finally see the cloud coming of age, with OpenStack at its heart. Ubuntu has for a long time been the platform of choice for running enterprise workloads such as web infrastructure. Today, Ubuntu OpenStack sits at the heart of cloud infrastructure at some of the world’s largest and most innovative companies, some of which were mentioned in our press release. In fact, we are so confident of the maturity of OpenStack, that we’ve decided to support the Icehouse release for five years, just like the Ubuntu Server release it comes with. So, 14.04 is effectively both Ubuntu LTS and OpenStack LTS together.

14.04 is more than Ubuntu OpenStack. Docker, arguably the hottest cloud infrastructure technology around today, is included in this release. Ubuntu has always been the preferred platform for Docker users, and now support for Docker is included in the Ubuntu Advantage support packages offered by Canonical. Docker’s image repository includes official Ubuntu images, including 14.04, and Docker is available to Ubuntu users via apt-get. This release also includes quite a few package updates, including Tomcat

Why Ubuntu Linux Is a Good Business Choice

Chances are good that if someone walked into your office right now and peeked over your shoulder, they would see a Windows operating system on your computer. But, did you know that you have a choice of something other than Windows for that computer on your desk, and that you have the same choice for the servers in your data center?

One of those choices is Ubuntu Linux, a greatly enhanced Debian-based Linux distribution that installs easily, has the familiar Windows look and feel, and operates well on older hardware (expensive upgrade not required). Linux fans tout the positive attributes, often at high decibel levels, of Ubuntu Linux, which is perhaps the world’s most popular Linux distribution. But, is it business worthy?

Let’s first consider Ubuntu as a replacement for your Windows desktop or laptop operating system. Computer owners generally use an Internet browser, a word processing program, the occasional spreadsheet, an email application and almost nothing else. These computer owners may not realize that they’re paying $150 to $300 for the OS and another $300 or more for the office suite–most of which they’ll never use. Why add hundreds of dollars to a computer system that has a life expectancy

How To Install Prometheus using Docker on Ubuntu 14.04


Prometheus is an open source monitoring system and time series database. It addresses many aspects of monitoring such as the generation and collection of metrics, graphing the resulting data on dashboards, and alerting on anomalies. To achieve this, it offers a variety of components that are run separately but used in combination.

Docker provides a way for you to encapsulate server processes using Linux containers (or other encapsulation technologies) so that they are more easily managed and isolated from each other. To learn more about Docker, see The Docker Ecosystem: An Introduction to Common Components.

In this tutorial, we will learn how to install three key components for using Prometheus on Docker. These are:

  • A Prometheus server to collect metrics and query them
  • A Node Exporter to export system metrics in a Prometheus-compatible format
  • Grafana, a web-based graphical dashboard builder that supports Prometheus among other backends

There are many more components in the Prometheus ecosystem, but these three provide a good starting point for using Prometheus.


To follow this tutorial, you will need:

  • Ubuntu 14.04 Droplet
  • User with sudo access (see the Initial Server Setup with Ubuntu 14.04 tutorial for details)
  • Docker installed with the instructions from Step 1 of How To Install and Use Docker Compose on

20 Popular Ubuntu Linux Apps to Try Now

As Ubuntu Linux continues to grow in popularity, most discussions of it tend to focus on the basics of the operating system itself, including especially details about its desktop environment and user interface.

What many forget–or don’t even know about–is that users of Ubuntu also have a world of apps at their fingertips through the Ubuntu Software Center, ready and waiting to help them make the OS their own.

Thousands of free and open-source applications are available through the Ubuntu Software Center, as are numerous paid, commercial contenders. Downloading and installing them is easy, and ratings and reviews were recently added to help guide you to the best ones.

Of course, there’s nothing like a good list to help you find gems you might not come across otherwise, and that’s just what was published on Thursday on Ubuntu’s app developer site.

Which were the most popular apps in the month of January? Hint: Gaming figures prominently, but there were some business-oriented exceptions. Read on for a run-down of the free and commercial winners.

10 Free Apps

1. Marble Arena 2, a 3D physics-based marble game “featuring vibrant HD graphics, fun, and addictive star zapping gameplay,” as it’s described on the list;

2. Ryzom, a massively multiplayer online

How To Upgrade to PHP 7 on Ubuntu 14.04


PHP 7, which was released on December 3, 2015, promises substantial speed improvements over previous versions of the language, along with new features like scalar type hinting. This guide explains how to quickly upgrade an Apache or Nginx web server running PHP 5.x (any release) to PHP 7.

Warning: As with most major-version language releases, it’s best to wait a little while before switching to PHP 7 in production. In the meanwhile, it’s a good time to test your applications for compatibility with the new release, perform benchmarks, and familiarize yourself with new language features.

If you’re running any services or applications with active users, it is safest to first test this process in a staging environment.


This guide assumes that you are running PHP 5.x on an Ubuntu 14.04 machine, using either mod_php in conjunction with Apache, or PHP-FPM in conjunction with Nginx. It also assumes that you have a non-root user configured with sudo privileges for administrative tasks.

Adding a PPA for PHP 7.0 Packages

A Personal Package Archive, or PPA, is an Apt repository hosted on Launchpad. PPAs allow third-party developers to build and distribute packages for Ubuntu outside of the official channels. They’re often useful

My First 5 Minutes On A Server; Or, Essential Security for Linux Servers

Server security doesn’t need to be complicated. My security philosophy is simple: adopt principles that will protect you from the most frequent attack vectors, while keeping administration efficient enough that you won’t develop “security cruft”. If you use your first 5 minutes on a server wisely, I believe you can do that.

Any seasoned sysadmin can tell you that as you grow and add more servers & developers, user administration inevitably becomes a burden. Maintaining conventional access grants in the environment of a fast growing startup is an uphill battle – you’re bound to end up with stale passwords, abandoned intern accounts, and a myriad of “I have sudo access to Server A, but not Server B” issues. There are account sync tools to help mitigate this pain, but IMHO the incremental benefit isn’t worth the time nor the security downsides. Simplicity is the heart of good security.

Our servers are configured with two accounts: root and deploy. The deploy user has sudo access via an arbitrarily long password and is the account that developers log into. Developers log in with their public keys, not passwords, so administration is as simple as keeping the authorized_keys file up-to-date across servers. Root login over

How To Import and Export an OrientDB Database on Ubuntu 14.04


OrientDB is a multi-model, NoSQL database, with support for graph and document databases. It is a Java application and can run on any operating system. It’s also fully ACID-complaint with support for multi-master replication. It is developed by a company of the same name, with an Enterprise and a Community edition.

In this article, we’ll be using the GratefulDeadConcerts database to demonstrate how to export and import an OrientDB database. That database comes with every installation of OrientDB, so you don’t have to create a new one.


To complete the tutorial, you’ll need the following:

  • Ubuntu 14.04 Droplet (see the initial setup guide)
  • Latest edition of OrientDB installed using How To Install and Configure OrientDB on Ubuntu 14.04

If you all all those things in place, let’s get started.

Step 1 — Export an Existing OrientDB Database

To import an OrientDB database, you must first export the DB to be imported. In this step, we’ll export the database that we need to import.

If OrientDB is not running, start it:

  • sudo service orientdb start

If you aren’t sure whether or not it is running, you can always check its status:

  • sudo service orientdb status

Then connect to the server using the OrientDB


The Ubuntu repositories contain thousands of packages, and with 3rd party repositories you can get even more. However, sometimes you might want to compile packages from source in the following cases.

  • Package is not available in the repositories
  • Package in the repositories may be too old
  • Package in the repositories has a feature in program disabled due to some reasons
  • Package in the repositories may have a bug which has been fixed by the author of the package.
  • You want to test a patch to help a developer fixing a bug
  • You want to try your hand at compiling programs from scratch.


You might need to compile software depending on the language in which the program is written. Applications which require compiling are usually written in C and C++. If this is the case, you will need to install a compiler gcc which can be obtained by installing the build-essential package. Normally, you can do this by typing the following in a terminal:

sudo apt-get install build-essential

and in order to run the

How To Set Up Apache Virtual Hosts on Ubuntu 14.04 LTS


The Apache web server is the most popular way of serving web content on the internet. It accounts for more than half of all active websites on the internet and is extremely powerful and flexible.

Apache breaks its functionality and components into individual units that can be customized and configured independently. The basic unit that describes an individual site or domain is called a virtual host.

These designations allow the administrator to use one server to host multiple domains or sites off of a single interface or IP by using a matching mechanism. This is relevant to anyone looking to host more than one site off of a single VPS.

Each domain that is configured will direct the visitor to a specific directory holding that site’s information, never indicating that the same server is also responsible for other sites. This scheme is expandable without any software limit as long as your server can handle the load.

In this guide, we will walk you through how to set up Apache virtual hosts on an Ubuntu 14.04 VPS. During this process, you’ll learn how to serve different content to different visitors depending on which domains they are requesting.


Before you begin this tutorial, you should

Top 7 Ubuntu Desktop Backup Software

As you already know, it is very critical to take backup of your system on an on-going basis.

If you are using Ubuntu desktop, depending on your requirement, you can use any one of the following software to perform backup. Play around with these and pick the one that satisfies your need.

1. Pybackpack

This has a very simple and intutive user interface. This has the following two tabs:

  • Backup: Specify the backupset name, and the backup destination. You can also specify a remote server where the backup can be stored via SSH. From the backup tab, you can also launch the backupset editor, where you can specify the backupset name, description, the files and folders that needs to be included or excluded from the backup.
  • Restore: Select the backup location from where you like to restore, and the backupset name.
# apt-cache search pyback
pybackpack - user friendly file backup tool for GNOME

# sudo apt-get install pybackpack

# pybackpack

Read more: Backup Your Files/Folders on Ubuntu Desktop using Pybackpack GUI Tool

2. Sbackup

sbackup stands for simple backup. When you launch this software, it has the following tabs:

  • General
  • Include: Specify the list of folders or files that needs to be included in the backup.
  • Exclude: Specify the list of folders

How To Deploy a Clojure Web Application on Ubuntu 14.04


There continues to be an uptick in interest around functional programming and, more specifically, programming for the web in Clojure. Many tutorials on how to build basic applications often overlook deployment details. This article will show you how to deploy a Clojure web application to a Ubuntu 14.04 Droplet.

Specifically, we will create a sample Clojure application and package it for production use, and set up the Clojure app environment on the server using Supervisor to run the app and Nginx to serve requests to it.


Before you begin this guide you’ll need the following:

  • One Ubuntu 14.04 Droplet
  • A non-root user account with sudo access on your server, which you can set up by following these instructions

Step 1 — Creating and Packaging a Sample Clojure App

The very first step is to use git to grab the example Clojure project to deploy.

First, update your packages and install git on the server.

  • sudo apt-get update
  • sudo apt-get install git

Next, clone the sample project repository.

  • git clone

This repository is the end result of following the Clojure Basic Web Development tutorial. If you like, instead of cloning this repository, you can follow that tutorial yourself.


How to Backup Ubuntu Desktop Using sbackup Simple Backup GNOME Tool

sbackup stands for simple backup.

sbackup is a backup utility for GNOME desktop. The user interface is simple, intuitive and has several advanced features to satisfy most of your typical Linux desktop backup needs.

If you need a very simple and straight forward backup GUI tool for Ubuntu, check out pybackpack that we discussed earlier.

1. Install sbackup

First, install sbackup software on your Ubuntu Desktop using apt-get install as shown below.

$ sudo apt-cache search sbackup
sbackup - Simple Backup Suite for desktop use (core functionality)
sbackup-gtk - Simple Backup Suite GTK+ graphical user interface
sbackup-plugins-fuse - Simple Backup Suite FUSE plugins

$ sudo apt-get install sbackup

To launch the tool, click on “Applications” -> System Tools -> Simple Backup-Configuration

This will prompt you to “Enter your password to perform administrative tasks” before launching the GUI.

2. Backup Profiles

A profile is a combination of several file and folders that needs to be included or excluded from the backup, along with other sbackup options.

By default sbackup comes with a profiles called “Default profile”, you can edit this profile and changes the values accordingly. But you cannot delete this profile.

If you want to create your own profile, do the following:

Go to “Tools” -> Profile Manager -> Click on “Add” -> Give

How to Configure Synergy on Linux to Share Keyboard and Mouse with Multiple Systems

Synergy is an open source network utility which can be used to share one keyboard and mouse with multiple systems.

Synergy utility works on client-server model.

The system whose keyboard and mouse you want to share, runs the synergy server service (synergys), and all the other systems runs the synergy client service (synergyc) to connect to server.

Synergy is a platform independent utility. Compiled version of synergy is available for various platforms including Windows, Linux, Mac OS X, Android and Apple iOS. You can download source code and compiled version from here.

# For Mac OSX :
sudo port install synergy

# For Fedora, CentOs and RHEL :
sudo yum install synergy

# For Ubuntu, LinuxMint and Debian :
sudo apt-get install synergy

Example Synergy Configuration Setup

In my case, I have three systems mac-dev (OSX Maverick 10.9.1), nix-dev (Ubuntu), fed-dev (Fedora 20) which is connected in local network.

Synergy Keyboard Mouse

After installation, you need to define a configuration file to run synergy.

Configuration file has information about how these systems are connected in X,Y Plane. The synergy