Joplin
I have been looking for a cross os and cross platform note taking software. In my searches I found several that would do for basic needs but I wanted something that really works for me. So my requirements were markdown formatting, syncing of notes with ease, and of course free with preference of being open source.
In looking I found Joplin and Obsidian. Both fit the markdown need. The ease of use I spent some time with each for a day or two and nothing jumped out at me. I even tried the mobile apps. The winner in ease of use was Joplin but Obsidian had the feature sets. As an extended requirement I liked that with Obsidian I could have a directory of markdown files and it was readable. Joplin just consumes and keeps things in their own way.
The last thing was Sync. This is where the two made a clear difference. Joplin I could self host a beta version of the server and Obsidian was paid only (at the time of my search). Obviously I wanna be a cheap bastered and own where my data is stored. So I chose to give Joplin a go for a couple of months. So far I have been quite happy.
Setup of Joplin Server
Docker
So after some seaching I found this docker container that is the “Official Joplin Server”.
1
2
3
4
5
mkdir /joplin-server
cd /joplin-server
wget https://raw.githubusercontent.com/laurent22/joplin/dev/docker-compose.server.yml
cp docker-compose.server.yml docker-compose.server.yml.original
vi docker-compose.server.yml
Modify things if you desire. I went with file system mounts instead of docker volumes. I also chose to use a .env file that lives with this compose file too for some of the settings defined in the compose file.
1
2
3
4
5
6
7
8
9
APP_BASE_URL=https://joplin.local/
APP_PORT=22300
DB_CLIENT=pg
POSTGRES_PASSWORD=joplinpassword
POSTGRES_DATABASE=joplindatabase
POSTGRES_USER=joplinusername
POSTGRES_PORT=54321
POSTGRES_HOST=localhost
Inital Configuration
Per the Readme.md here
Update the admin user credentials
By default, Joplin Server will be setup with an admin user with email admin@localhost and password admin. For security purposes, the admin user’s credentials should be changed. On the Admin Page, login as the admin user. In the upper right, select the Profile button update the admin password.
Basically need to know: admin@localhost / admin for your username/password.
Open up the URL to your joplin server assume you have it working via your favorite reverse proxy. Login with the inital credentials. Once in I would just take over the admin account as your own.
- Admin (at the top)
- Users
- Click Admin
- Update all the fields
- Full Name
- Password
- Repeat Password
Setup of the Joplin Client
Assuming you are able to get the server working via your favorite reverse proxy.
Desktop
- Tools->Options
- Synchronization
- Set
- Sechronization target: Joplin Server (Beta)
- Joplin Server URL: https://joplin.local/
- Joplin Server EMail: YourEmailHere
- Joplin Server Password: YourPasswordHere
- Sechronization interval: 5 Min (or your preference)
- Check Synchronization configuration
- If good Apply/Ok
Mobile
Android
- Hamburger Menu
- Configuration
- Set
- Sechronization target: Joplin Server (Beta)
- Joplin Server URL: https://joplin.local/
- Joplin Server EMail: YourEmailHere
- Joplin Server Password: YourPasswordHere
- Sechronization interval: 5 Min (or your preference)
- Check Synchronization configuration
iOS
- Hamburger Menu
- Configuration
- Set
- Sechronization target: Joplin Server (Beta)
- Joplin Server URL: https://joplin.local/
- Joplin Server EMail: YourEmailHere
- Joplin Server Password: YourPasswordHere
- Sechronization interval: 5 Min (or your preference)
- Check Synchronization configuration
Summary
At this point any client you have setup should be able to sync to the server. Any changes you make should be able to be replicated to other clients with ease. I would how ever try to limit the changes coming from one client at a time as to reduce risk of sync having a possible problem. Which is why I have a stuck with the defaul of a 5 minute interval of a sync.
After Thoughts
Not going to modify the post inline but in the Inital Configuration I suggest to take the admin user. This is not an ideal thing to do, make a new user and store your data in that user account. Change the admin creds to something else and store those.