I've used many note taking and wiki applications over the last several years and found myself in this endless circle of switching note taking applications due to alternatives having features I've always wanted. But never have I found a note taking application that has fulfilled all of my needs until I rediscovered Joplin.
What is Joplin?
Joplin - an open source note taking and to-do application with synchronization capabilities for Windows, macOS, Linux, Android and iOS. Now with self hosting server options.
The features I wanted to have in a note taking application were pretty extensive and very specific. I reviewed 3 note taking applications in another article a few weeks ago but I overlooked a specific feature I did not know Joplin had! And that is the ability to self host your notes, encrypted using Joplin Server.
Key Features I Like About Joplin
- Desktop Apps for Windows, Linux, iOS and Android
- Seamless syncing between all devices conected to the server
- Encrypted notes using End-To-End Encryption (E2EE)
- Markdown with code snippet and emoji support
- Custom notebook icons
- Dark Mode and Theming
- Self Hosted version for Joplin Server
- Public note sharing option
- Note searching
- Note tagging
- Extensive plugin library
- Very active developement
There's many more features for Joplin that I could cover however, I want to focus today on Joplin Server and how easy this is to get up and running. Joplin Server can run in a Docker container on your server or anywhere you want to run it with Docker. Joplin Server will allow you to sync notes from the desktop application and mobile phone applications so you can view, edit or add notes anywhere on the go.
What's even more awesome? If your Joplin Server goes offline for whatever reason, you still have access to your notes on your devices that were previously synced. You just cannot sync new notes or to-do lists to the server until it comes back online.
Install Joplin Sync Server with Docker Compose
This stack uses Postgres to store the information from Joplin on the server. I used Portainer Stacks and pasted the Joplin Server Docker Compose stack into the editor, changed the volume directory and Postgres password.
version: '3' services: db: image: postgres:15 volumes: - /docker/joplindb:/var/lib/postgresql/data ports: - "5432:5432" restart: unless-stopped environment: - POSTGRES_PASSWORD=postgres - POSTGRES_USER=postgres - POSTGRES_DB=joplin app: image: joplin/server:latest depends_on: - db ports: - "22300:22300" restart: unless-stopped environment: - APP_PORT=22300 - APP_BASE_URL=https://websiteurl.com - DB_CLIENT=pg - POSTGRES_PASSWORD=postgres - POSTGRES_DATABASE=joplin - POSTGRES_USER=postgres - POSTGRES_PORT=5432 - POSTGRES_HOST=db - MAILER_ENABLED=1 - MAILER_HOST=smtp.gmail.com - MAILER_PORT=465 - MAILER_SECURE=1 - [email protected] - MAILER_AUTH_PASSWORD=Y0urP@ssw0rd - MAILER_NOREPLY_NAME=Joplin - MAILER_[email protected] volumes: joplindb:
This allows you to easily edit and deploy Docker Compose stacks and make any changes on the fly if needed. The installation took 30-50 seconds to complete for Joplin Server using this technique.
Once you get Joplin Server installed, make sure it is up and running on the domain you chose to use in the compose stack in the "APP_BASE_URL" variable. I use a reverse proxy called Nginx Proxy Manager. I setup a proxy sub domain so I can sync notes remotely.
Desktop and Mobile Applications
To connect to the server, you need to download one of the Joplin applications. I chose to start with Joplin Desktop for Windows. I installed it on my daily driver work laptop. You can choose between the provided applications that suit your needs! Click the banner below.
Connect your Device to Joplin Server
To connect Joplin Desktop for Windows to Joplin Server, click on "Tools" then "options". From there on the left side click on "Synchronization" and enter the Joplin Server address, email and password you used when configuring Joplin Server. You can click on "Check synchronization configuration" to see if the connection will work. If it doesn't, one of the options above are wrong. If everything is correct, you will see "Success! Synchronization configuration appears to be correct." Then just click "Apply" at the bottom then the Back button to start adding content in Joplin Desktop for Windows.
When you start to add content in Joplin Desktop, you will notice data will start appearing on the Joplin Server. You can see this by viewing it on your Joplin Server web panel under "Items"
All of your notes and data will be shown here. The app is open source and your notes are saved to an open format, so you'll always have access to them. Joplin uses End-To-End Encryption (E2EE) to secure your notes and ensure no one but yourself can access them.
The Joplin Server web panel is very basic. You can manage accounts, view logs, items and modify scheduled tasks. You cannot read your notes or add notes from the Joplin Server web panel, so do not be mistaken. Joplin Server is merely a "middle man" to sync your devices. I personally have not needed to change or modify anything in the panel. It was basically a "set it and forget it" type of setup and installation.
Also, it's good to note that if you use the Jopin desktop app on Windows, it does save your notes locally too. So if something does happen to your sync server you can still access your notes locally.
Why Joplin Server over Dropbox or Alternatives?
There has been some discussion on why to use Joplin Server over Dropbox, Nextcloud or other alternatives.
- Speed up the sync
- Sharing a note with anyone, using a URL
- Sharing a notebook with a user on the same Joplin Server
- User access
If you want to share notes publicly, this is the most significant reason for using Joplin Server. Joplin server also gives access control for others to sync their notes without having to give them filesystem access.
Final Notes and Thoughts
Joplin Sever is very lightweight and easy to setup. Connecting the Joplin Windows desktop app, iOS and Android apps were also very simple to do.
Having access to my notes and to-do lists from all of my devices is very critical to my workflow. Joplin comes through on all of my needed requirements in a note taking application.
If you find Joplin Server useful, be sure to stop by the Joplin Github repo to give it a star! Let us know in the comments below what you think about Joplin!