Installazione e configurazione di Joplin Server come container Docker su Raspberry Pi

Joplin è un’applicazione gratuita e open-source per prendere note e gestire to-do list, disponibile per desktop (Windows, macOS, Linux), mobile (Android, iOS) e da riga di comando. Supporta note in Markdown, cifratura end-to-end, allegati e organizzazione tramite notebook e tag.

Per sincronizzare le note tra i propri dispositivi, Joplin può appoggiarsi a diversi servizi (Dropbox, OneDrive, WebDAV, Joplin Cloud a pagamento…) oppure a Joplin Server, un server di sincronizzazione open-source che possiamo ospitare autonomamente. In questo articolo vediamo come installarlo e configurarlo come container Docker sul nostro Raspberry Pi.

Prerequisiti:

  • Un Raspberry Pi (o qualsiasi altro host) con Docker e Docker Compose installati (qui una guida su come installarlo);
  • Un indirizzo IP statico sulla LAN per il nostro Raspberry Pi;
  • Facoltativo: un dominio con DDNS se vogliamo raggiungere il server anche da fuori casa.

Iniziamo creando una cartella dedicata che conterrà il file docker-compose.yml:

mkdir joplin-server
cd joplin-server
nano docker-compose.yml

e incolliamo quanto segue:

services:
  db:
    image: postgres:17
    restart: unless-stopped
    environment:
      - POSTGRES_USER=joplin
      - POSTGRES_PASSWORD=LA_TUA_PASSWORD
      - POSTGRES_DB=joplin
    volumes:
      - ./data/db:/var/lib/postgresql/data
    networks:
      - joplin_net

  app:
    image: joplin/server:latest
    restart: unless-stopped
    environment:
      - APP_BASE_URL=http://IP_DEL_TUO_RASPBERRY:22300
      - APP_PORT=22300
      - APP_NAME=Nome del tuo server
      - POSTGRES_HOST=db
      - POSTGRES_PORT=5432
      - POSTGRES_DATABASE=joplin
      - POSTGRES_USER=joplin
      - POSTGRES_PASSWORD=LA_TUA_PASSWORD
      - DB_CLIENT=pg
    ports:
      - "22300:22300"
    depends_on:
      - db
    networks:
      - joplin_net

networks:
  joplin_net:
    driver: bridge

Sostituiamo le parti in rosso: la password del database (usiamone una robusta, e la stessa in entrambi i punti in cui compare), l’IP del nostro Raspberry Pi e il nome che vogliamo dare al nostro server. Il valore di APP_BASE_URL è importante: deve corrispondere all’indirizzo con cui i client raggiungeranno il server, quindi se in seguito configuriamo un dominio con NGINX Proxy Manager andrà aggiornato di conseguenza.

Salviamo il file con CTRL+X, poi Y e Invio, dopodiché avviamo lo stack:

docker compose up -d

Attendiamo qualche secondo che il database venga inizializzato e le migrazioni vengano applicate, dopodiché apriamo il browser e digitiamo:

http://IP_DEL_TUO_RASPBERRY:22300

e ci troveremo davanti la schermata di login:

Joplin Server crea automaticamente un account amministratore di default, con queste credenziali:

  • Email: admin@localhost
  • Password: admin

Eseguiamo il login con queste credenziali: noteremo subito un avviso che ci ricorda che la password di default non è sicura e va cambiata, cosa che faremo tra poco.

Il pannello di amministrazione

Una volta effettuato l’accesso ci troviamo nella dashboard di amministrazione, da cui possiamo gestire utenti, attività pianificate, email in coda e report sullo stato del server:

Per prima cosa cambiamo la password dell’utente admin cliccando sull’avviso arancione in alto, oppure andando su “Users”, selezionando il nostro utente amministratore e impostando una nuova password sicura.

Creazione degli utenti

Se vogliamo usare Joplin Server solo per noi stessi possiamo continuare a usare l’account admin, ma conviene creare un utente dedicato: andiamo su “Users” e clicchiamo su “Add user”, inserendo email e password che useremo poi per sincronizzare i client Joplin.

Collegare i client Joplin al server

Con il server pronto, apriamo l’app Joplin (desktop o mobile) su uno dei nostri dispositivi e andiamo in Impostazioni > Sincronizzazione. Come “Target di sincronizzazione” selezioniamo “Joplin Server”, quindi inseriamo:

  • Indirizzo Joplin Server: http://IP_DEL_TUO_RASPBERRY:22300 (o il nostro dominio, se ne abbiamo configurato uno)
  • Email e Password: quelle dell’utente creato al passaggio precedente

Clicchiamo su “Verifica la configurazione della sincronizzazione” per controllare che tutto funzioni, poi salviamo. Da questo momento le note verranno sincronizzate con il nostro server ogni volta che eseguiamo una sincronizzazione manuale o automatica.

Dal pannello di amministrazione, nella sezione “Applications”, possiamo vedere quali applicazioni si sono collegate al nostro server:

Accesso da remoto e HTTPS

Se vogliamo sincronizzare le note anche quando siamo fuori casa, dobbiamo rendere raggiungibile il nostro Raspberry Pi dall’esterno. Sconsiglio di esporre direttamente la porta 22300 in chiaro: meglio mettere davanti un reverse proxy con certificato SSL, ad esempio installando NGINX Proxy Manager, puntandolo verso la porta 22300 del container.

Se non disponiamo di un indirizzo IP pubblico statico, ci servirà anche un servizio di DDNS per associare un nome a dominio al nostro IP che cambia nel tempo (sul blog trovate una guida su come farlo con Namecheap).

Ricordiamoci, una volta configurato il dominio, di aggiornare la variabile APP_BASE_URL nel nostro docker-compose.yml con l’indirizzo pubblico (es. https://joplin.tuodominio.com) e di rilanciare lo stack con docker compose up -d perché la modifica abbia effetto.

Buon divertimento!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Torna in alto