Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
services:joplin [2024/02/27 08:59] – willy | services:joplin [Unknown date] (current) – removed - external edit (Unknown date) 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Joplin, the Note taking app ====== | ||
- | |||
- | [[https:// | ||
- | * It's **really** Open Source | ||
- | * It has no // | ||
- | * It has mobile, desktop and web clients | ||
- | * It support many types of synchronization, | ||
- | * It supports plugins | ||
- | * It is a **note taking** solution, not a brain-dump/ | ||
- | |||
- | There are plenty of note taking apps, but most of them are either commercial or even if supposedly Open Source, they are dependent on one or more freemium subscriptions / features. There is nothing bad in that, but it makes me wonder what will happen to the note taking app itself after the monetization approach fail (hoping not of course for them!) and you are left with an unmaintained mess. | ||
- | |||
- | Joplin at least it's not only fully Open Source and 100% free (as in beer), but has a strong community support and many additional tools built by the community to extend it's functionalities, | ||
- | |||
- | In it's basic form Joplin is a desktop app (windows/ | ||
- | |||
- | There is also a console based client, but i didn't installed it as of yet. | ||
- | |||
- | ===== A few CAVEATS first ===== | ||
- | |||
- | First of all, be aware that when you first setup sync to any Joplin client it will clear your local notes and import all the remote ones. This has the nasty consequence that if you already have a client with many notes, those **will be deleted**. So pay extra attention on you first initial sync. The client will warn you tough, so it's hard to lose all your notes by mistake. But you need to be aware or be sorry. | ||
- | |||
- | Second, the Joplin Web client is not official and is not maintained by the main developers. Nonetheless it seems pretty solid and of great quality, so i will show you how to install. | ||
- | |||
- | Third, Joplin Web Client is provided only as docker images, which sucks, but that's what is provided, and getting into a manual build of such a complex piece of software was, and still is, outside my concept of fun, so there you go, i will show you how to setup properly the docker images for Joplin Web. | ||
- | |||
- | Fourth, there is a sync server for Joplin, but since synching Joplin itself via WebDAV is so easy, and i have shown you already how to create a nice [[services: | ||
- | |||
- | Last, it seems that the Joplin Web client does not play well with a sub path, so you will need to spin a dedicated sub-domnain for it to work. | ||
- | |||
- | ===== Joplin Synchronization on WebDAV ===== | ||
- | |||
- | There is not much to say. Remember that [[selfhost: | ||
- | |||
- | Just create a subfolder under the //common// share (let's call it // | ||
- | < | ||
- | https:// | ||
- | </ | ||
- | |||
- | and tap sync! | ||
- | |||
- | |||
- | ===== Installing Jopin Web Client ===== | ||
- | |||
- | [[https:// | ||
- | |||
- | So, for proper organization, | ||
- | <code bash> | ||
- | > mkdir / | ||
- | > cd / | ||
- | > git clone https:// | ||
- | > ln -s joplin-vieweb/ | ||
- | </ | ||
- | |||
- | Edit the linked composer file to specify a proper port (i choose 7999) and the URLs that will be allowed: | ||
- | <file txt docker-compose.yml> | ||
- | version: ' | ||
- | |||
- | x-common-variables: | ||
- | | ||
- | |||
- | services: | ||
- | django-joplin-vieweb: | ||
- | image: gri38/ | ||
- | depends_on: | ||
- | - joplin-terminal-xapi | ||
- | environment: | ||
- | <<: | ||
- | restart: unless-stopped | ||
- | ports: | ||
- | - 7999:8000 | ||
- | volumes: | ||
- | - joplin:/ | ||
- | - joplin-vieweb:/ | ||
- | networks: | ||
- | - joplin-net | ||
- | |||
- | joplin-terminal-xapi: | ||
- | image: gri38/ | ||
- | restart: unless-stopped | ||
- | volumes: | ||
- | - joplin:/ | ||
- | networks: | ||
- | - joplin-net | ||
- | |||
- | volumes: | ||
- | joplin: | ||
- | joplin-vieweb: | ||
- | |||
- | networks: | ||
- | joplin-net: {} | ||
- | </ | ||
- | |||
- | since you will be accessing it only via the reverse proxy, it is fine to leave 127.0.0.1 and localhost as only allowed sources. Https will be handled by the reverse proxy, so do not worry about certificates. | ||
- | |||
- | Starting it is easy: | ||
- | <code bash> | ||
- | > cd / | ||
- | > podman compose up -d | ||
- | </ | ||
- | |||
- | as well as future upgrades: | ||
- | <code bash> | ||
- | > cd / | ||
- | > podman compose down | ||
- | > podman compose pull | ||
- | > podman compose up -d | ||
- | </ | ||
- | |||
- | Now, you need to setup the reverse proxy. | ||
- | |||
- | ===== NGINX configuration ===== | ||
- | |||
- | Since it is not working properly on a sub path, you need to provide a true subdomain for it. I will assume its **notes.mydomain.com**. | ||
- | |||
- | Add the following to your **/ | ||
- | < | ||
- | # Joplin web must be on it's own subdomain and will handle authentication | ||
- | server { | ||
- | server_name notes.mydomain.com; | ||
- | listen 8443 ssl; # managed by Certbot | ||
- | listen 443 ssl; # managed by Certbot | ||
- | client_max_body_size 50000M; | ||
- | large_client_header_buffers 4 32k; | ||
- | location = / { | ||
- | return 301 https:// | ||
- | } | ||
- | |||
- | location / { | ||
- | proxy_pass http:// | ||
- | } | ||
- | ssl_certificate / | ||
- | ssl_certificate_key / | ||
- | include / | ||
- | ssl_dhparam / | ||
- | } | ||
- | </ | ||
- | |||
- | and add also the new subdomain to the HTTP section of NGINX config, then extend your Let's Encrypt certificate: | ||
- | <code bash> | ||
- | > certbot --nginx certonly -d mydomain.com -d notes.mydomain.com | ||
- | </ | ||
- | |||
- | make sure you are listing ALL the domains for your cert! | ||
- | |||
- | NOTE: move all this into the updated NGINX page | ||
- | |||
- | ===== Initial setup for the web gui ===== | ||
- | |||
- | You first need to login to the Joplin Vieweb admin interface at **https:// | ||
- | |||
- | Last step is login in the web interface at **https:// | ||
- | |||