Joplin: My New Note-taking Solution

3 minute read

Update:
I switched to vim+git for note-taking this week because Joplin deleted a lot of my notes by accident, I put this post here for reference only, I may come back to give it a try when it gets more stable, maybe not.

Previously I am using Evernote for note taking, but it has some drawbacks that I dislike, I googled around, and looking for an open source note taking application that should including the following features:

  • Markdown based
  • Can work on iOS, macOS and Linux
  • Notes version control
  • Share notes
  • Collabrate on notebook with others

Joplin has all the features I want, and it is one of the most popular apps gaining 26k stars on github, so this is it.

Install Joplin

For macOS, go to Download page, it will download automatically.

For Linux, it can be install via command line:

wget -O - https://raw.githubusercontent.com/laurent22/joplin/dev/Joplin_install_and_update.sh | bash

For iOS, download it through AppStore.

For Android OS, download latest version and install it with adb or via file manager.

Notes Synchronization

Joplin supports synchronization with NextCloud, Dropbox, OneDrive, WebDAV and also it has pre-release version of Joplin server, if we wanna use the notebook sharing feature and fast synchronization then Joplin server is the only option.

Synchronize with Joplin server

There is an example docker compose file and env for quick setup with docker which can be found in the following URL:

docker-compose.server.yml:

version: '3'

services:
    db:
        image: postgres:13.1
        volumes:
            - ./data/postgres:/var/lib/postgresql/data
        ports:
            - "5432:5432"
        restart: unless-stopped
        environment:
            - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
            - POSTGRES_USER=${POSTGRES_USER}
            - POSTGRES_DB=${POSTGRES_DATABASE}
    app:
        image: joplin/server:latest
        depends_on:
            - db
        ports:
            - "22300:22300"
        restart: unless-stopped
        environment:
            - APP_PORT=22300
            - APP_BASE_URL=${APP_BASE_URL}
            - DB_CLIENT=pg
            - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
            - POSTGRES_DATABASE=${POSTGRES_DATABASE}
            - POSTGRES_USER=${POSTGRES_USER}
            - POSTGRES_PORT=${POSTGRES_PORT}
            - POSTGRES_HOST=db

.env:

APP_BASE_URL=http://ip.add.re.ss:22300
APP_PORT=22300

DB_CLIENT=pg
POSTGRES_PASSWORD=joplin
POSTGRES_DATABASE=joplin
POSTGRES_USER=joplin
POSTGRES_PORT=5432
POSTGRES_HOST=localhost

Copy these two files to VPS server, make changes as above, then run:

$ docker-compose up -d

It will pull the images and run the server, this should take a few minutes and at the end of this process, you will see the below message:

app_1  | 2021-10-17 23:38:28: App: Call this for testing: `curl http://ip.add.re.ss:22300/api/ping`

Try to test if the server is working with:

curl http://ip.add.re.ss:22300/api/ping

Server will response with status OK:

{"status":"ok","message":"Joplin Server is running"}%

Login to the Joplin server with following default account:

URL: http://ip.add.re.ss:22300/login
Email: admin@localhost
password: admin

Joplin server login

Please change the default account credentials ASAP.

Users can be added there.

To synchronize with Joplin server, touch and select Configuration, fill the Joplin Server URL with:

http://ip.add.re.ss:22300

Joplin Configuration

And save the configuration, the synchronization will be done automatically, or you can do synchronization manually.

Note History

Note history is enabled and kept for 90 days by default, this can be changed in settings (⌘+,) » Note History

Note History

To see the note history, select one note, and click the icon in the top right corner: Note History

Import Notes from Evernote

Joplin supports import ENEX format of notes exported by Evernote, it’s pretty easy to do notebook exporting and importing

  1. Export notes from Evernote Select the target notebook, go to File >> Export Note and save.
    Export Notebook

  2. Import notebook to Joplin
    Go to File >> Import >> ENEX - Evernote Export File (as Markdown)
    Export Notebook

Notebook sharing

Right click the notebook you want to share with others, select Share notebook... in the context menu. Add recipient in the Share Notebook window, that would be all. Share Notebook

Troubleshooting

ERROR: Couldn’t connect to Docker daemon

$ docker-compose up
ERROR: Couldn't connect to Docker daemon at http+docker://localhost - is it running?

If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.

A: Check with groups command to see if you are in docker group.