Nginx configuration for joplin note taking app

Introduction

Joplin may not be the most perfect note-taking application, but it is open-source, well-known, has a long release history, works on multiple operating systems, and supports plugins. It’s not perfect, but it’s good enough and highly usable. In case of this type of application, it is important to have an easy way to do export to migrate to another application (which is quite rare) and import using various format. It is possible that author, in the future, can change license or scope of free tier where next tier level price is not easy to accept.

In case of Joplin, there is possibility to export your notes to the following format:

Where it is possible to do import from formates as presented below.

Spoiler, Import from some applications can be very difficult (like OneNote) or surprisedly easy like Apple Notes (where convert application can do export to md files).

Joplin has two ways how you can create notes, using MarkDown (md) or/and (wyswyg) editor. md editor has also live view version. Both use autosave. In addition for mobile app, Joplin can use draw mode, and pen can be used in separated mode.

Another very useful function is synchronisation between many devices. By default it is possible to use Joplin cloud services which is the most optimised transfer option. Another few supported option contains tested by me Dropbox and Microsoft OneDrive (check below). Few self hosted options are also possible, including WebDav which was inspiration to that article.

It is possible encrypt data on the destination.

Nginx preparation as webdav.

I have prepared needed configuration using lxc and debian 11. Lxc container itself has debian 12 image version.

Inside lxc container install required software:

apt install libnginx-mod-http-dav-ext apache2-utils nginx-full nginx-extra nginx-core

and all the other required software you like.

apache2-utils is not expected in that set but it is required for htpasswd binary.

Create target directory, like “/webdav” and set required permissions

 mkdir -p /webdav/client_temp
 chown -R www-data:www-data /webdav
 sudo chmod -R 755 /webdav

Check if the nginx has plugin:

nginx -V 2>&1 | grep -o with-http_dav_module

Create password file and user:

htpasswd -c /etc/nginx/.htpasswd user

Generate certificates:

openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt

Copy ctl content of the file and set permissions:

cat /etc/ssl/certs/nginx-selfsigned.crt
chmod 660 /etc/ssl/private/nginx-selfsigned.key 
chmod 644 /etc/ssl/certs/nginx-selfsigned.crt 

Create required config in /etc/nginx/sites-enabled/default

server {
	listen 80 default_server;
	listen [::]:80 default_server;
	server_name _;
	return 301 https://$host$request_uri;
}

server {
	listen 443 ssl;
	server_name 192.168.22.35;
	ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
	ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;
	root /webdav;

	location /webdav/ {
		root /webdav;
		client_body_temp_path /webdav/client_temp;
		dav_methods PUT DELETE MKCOL COPY MOVE;
		dav_ext_methods PROPFIND OPTIONS LOCK UNLOCK;
		create_full_put_path on;
		dav_access user:rw group:rw all:r;
     	auth_basic "Restricted Access";
		auth_basic_user_file /etc/nginx/.htpasswd;
		autoindex on;
	}
	access_log /var/log/nginx/webdav_access.log;
	error_log /var/log/nginx/webdav_error.log;
}

Check your configuration with command:

nginx -t

Restart nginx

systemctl restart nginx
systemctl status nginx

Joplin configuration

Copy certificate to local file where Joplin is running.

Example of the configuration:

File joplin-webdav.crt contains certificate file.

Also in case you’re using self-signed certificate (as specified in this article) set “Ignore TLS certificate errors”.

In addition use Encryption to not store files on plain text files.

Conclusions

Joplin is not a perfect note-taking tool, but it is good enough. Since it is opensource with planty of export/import options. It is software I can definitely recommend.

Known issues are around editor (wyswyg) which not always behave as expected (for example some html marks are visible when switching to md editor).

Joplin iPad do not support self signed certificate (it is more how iPad iOS works).

No Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Linux
podcast

All podcast applications I have tested were quite OK(ish) – but I have always struggled with organizing podcasts, creating playlists, etc. It has always been challenging. Therefore, for me, it is more convenient to download podcasts as MP3s and manage them myself (in VLC, for example). There are many ways to do that, but my favorite …

Linux
jellyfin configuration in lxc container

Jellyfin is extremely useful software providing home streaming system. I am using it since a while for streaming my old ripped DVD, which I love to watch again and again. Jellyfin is opensource, cross platform as a server and as a client, including client for android and iOS. It is …

Uncategorized
Linux administration, few interesting tips

Change user id (uid) and group id (gid) for specific user