docker hackmd image
Switch branches/tags
Clone or download
Pull request Compare This branch is 5 commits ahead, 104 commits behind hackmdio:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



  • git
  • docker (docker toolbox recommended)
  • docker-compose (included in the docker toolbox)

See more here:

Get started

This is a modified version for relative URL.

  1. Start you docker via Docker Quickstart Terminal, you will see a machine IP (remember that).
  2. Run git clone
  3. cd docker-hackmd && cd hackmd && docker build -t hackmdio/hackmd:0.4.4-1 . && cd ..
  4. sudo cp nginx.conf.example /etc/nginx/sites-enabled/hackmd && sudo service nginx reload
  5. sudo cp upstart.hackmd.conf /etc/init/hackmd.conf
  6. Run docker-compose up in your docker terminal.
  7. Wait until see th log HTTP Server listening at port 3000, it will take few minutes based on your internet.
  8. Press ctrl-C to stop
  9. Run sudo service hackmd start
  10. Open any browser and surf <machine IP>/hackmd/


Start your docker and enter the terminal, follow below commands:

cd docker-hackmd ## enter the directory
git pull ## pull new commits
docker-compose pull ## pull new containers
docker-compose up ## turn on


Start your docker and enter the terminal, follow below commands:

  • run docker ps to check all your containers
~  docker ps
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                    NAMES
2c04d7b1b8d4        dockerhackmd_hackmd   "/bin/bash /hackmd/do"   3 days ago          Up 17 seconds>3000/tcp   dockerhackmd_hackmd_1
4949b888c1cb        postgres              "/docker-entrypoint.s"   3 days ago          Up 18 seconds       5432/tcp                 dockerhackmd_db-postgres_1
  • backup postgresql by docker exec <postgresql_container_id> pg_dump hackmd -U postgres > <postgresql_backup_name>
~  docker exec 4949b888c1cb pg_dump hackmd -U postgres > postgresql_backup.sql
  • copy your backup out of container by docker cp <container_id>:<backup_path> <host_path>


Similar to backup steps, but last command is

~  cat postgresql_backup.sql | docker exec -i <container_id> psql -U hackmd

Custom build

The default setting would use pre-build docker image, follow below steps to customize your HackMD.

  1. Modify docker-compose.yml at line 8 image: hackmdio/hackmd:0.4.4 to build: hackmd.
  2. Change the config file in hackmd/config.json, example here.
  3. Run docker-compose build --no-cache in the docker terminal to build your own image.
  4. Then docker-compose up to startup.

Happy HackMD 😄