Joplin: My New Note-taking Solution
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
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
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
To see the note history, select one note, and click the icon in the top right corner:
Import Notes from Evernote
Joplin supports import ENEX format of notes exported by Evernote, it’s pretty easy to do notebook exporting and importing
-
Export notes from Evernote Select the target notebook, go to
File >> Export Note
and save.
-
Import notebook to Joplin
Go to File >> Import >> ENEX - Evernote Export File (as Markdown)
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.
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.