I always think about how to blog efficiently, quickly and easily. Even if I just started a new blog. WordPress is the greatest blogging software and do have many features I like, but it's too slow while uploading images and posting article for me.

Real-time preview is the feature I concern the most, and HackMd is doing a good job for that. So I decide to use HackMd to write my blog articles, then copy-paste to my WordPress blog (with some useful Markdown plugins installed).

HackMd Screenshot:

The images in my articles will be uploaded to imgur automatically so I don't worry about the backup anymore. For example, this image is hosted on imgur, not hosted on my Web Server.


  • Basic linux command line knowledge.
  • Install VirtualBox on your machine.
  • Install Vagrant on your machine.


Assume you already have VirtualBox and Vagrant installed on your machine.

1. Start Vagrant machine

Change the current working directory to where the vagrantfile is located. In this tutorial, the directory is /terryl-example/vagrant.

├── data/             - Synced folder on the host machine to the guest machine.
└── vagrant/          - Vargrant working folder.
    └── Vagrantfile

Vargrantfile example:

Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/bionic64"
  config.vm.box_check_update = false
  config.vm.hostname = "example.terryl.in"
  config.vm.network "private_network", ip: ""
  config.vm.synced_folder "../data", "/data"
  config.vm.provider "virtualbox" do |vb|
     vb.memory = "1024"
     vb.name = "terryl.in - example"

This example uses for the primary address.
Start the Vagrant machine by the following command.

vagrant up

2. Login to Vagrant machine

Log in to Vagrant machine.

vagrant ssh

Change user from vagrant to root.

sudo su

3. Install Docker and Docker-compose

apt-get update
apt-get install docker
apt-get install docker-compose -y

4. Clone HackMd repository

HackMD team provides a Docker image here.

cd /home
git clone https://github.com/hackmdio/codimd-container.git

This command will create an folder codimd-container inside /home folder.

5. Start HackMd docker container

cd codimd-container
docker-compose up

Once the docker container is running, you will see the screen such as below.

Now you can start using HackMd by accessing


If you would like to backup your data, open a new terminal while the Docker container is running, use the commands below :

Backup database

docker-compose exec database pg_dump hackmd -U hackmd  > backup.sql

Restore database

Restore data from a backup file:

cat backup.sql | docker exec -i $(docker-compose ps -q database) psql -U hackmd




  1. Start Vagrant machine
    • 0:23 - vagrant up
  2. Login to Vagrant machine
    • 2:21 - vagrant ssh
    • 2:23 - sudo su
  3. Install Docker and Docker-compose
    • 2:42 - apt-get update
    • 5:03 - apt-get install docker
    • 5:17 - apt-get install docker-compose
  4. Clone HackMd repository
  5. Start HackMd docker container
    • 9:31 - cd codimd-container
    • 9:34 - docker-compose up



After I wrote this article a few days, I still thought this way is still not so comfortable also a bit wasting time. I ended up to create a Markdown Editor plugin on WordPress for myself. But not just for myself. I released it as an open source project under GNU license, anyone can use it for free forever.

If you are using WordPress, search Githuber MD to find it. I hope you will like it.

Last modified: April 16, 2019



Write a Reply or Comment

Your email address will not be published.