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:37] – 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 synch 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 synch. 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 synch server for Joplin, but since synching Joplin itself via WebDAV is so easy, and i have shown you already how to create a nice fileserver that includes WebDAV support, i will not bother with Joplin Synch Server. | ||
- | |||
- | 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 / | ||
- | > docker compose up -d | ||
- | </ | ||
- | |||
- | as well as future upgrades: | ||
- | <code bash> | ||
- | > cd / | ||
- | > docker compose down | ||
- | > docker compose pull | ||
- | > docker 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:// | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | ====== Joplin ====== | ||
- | |||
- | [[https:// | ||
- | |||
- | Don't get me wrong, i respect any monetization attempt from any open-source porject but as i have already stated, i tend to prefer leaning on the true-to-the-spirit Open Source projects that do it for fun and don't push for monetization. This is not because i think less of them, but because i think long term sustainability could be at risk if, or when, monetization fails to reach goals for the project, and the world is full of abandoned great Open Source repositories nobody cares reviving. | ||
- | |||
- | The main drawback of Joplin is that it does not provide a web interface natively but, luckly, there a community driver project to fill that gap which works quite nicely, with a few caveats. | ||
- | |||
- | ===== Synchronization ===== | ||
- | |||
- | Joplin synchronization is a bit unlogical to me, as it will **delete** all your notes when you sync a client with existing notes to an empty server. Basically, your server will always be dominating on first sync. | ||
- | |||
- | My suggestion is to setup the synchronization first, then link clients as you install them. Just don't sync for the first time a client with many notes already in it! | ||
- | |||
- | Jopin provide a [[https:// | ||
- | |||
- | So, here is what you need to do: | ||
- | * Create a folder in your WebDAV share (ex: **Notes-Sync**) | ||
- | * Install the Joplin client of your choice | ||
- | * Set-up sync in the client using WebDAV and **https:// | ||
- | * Sync! | ||
- | |||
- | ===== Installation ===== | ||
- | |||
- | Go ahead and install your preferrend clients on your phone, tablets and PC. Refer to [[https:// | ||
- | |||
- | |||
- | ===== Web Client Installation ===== | ||
- | |||