Objavljeno:

Joplin - odprtokodna rešitev za šifrirano deljenje zapiskov

Joplin je odprtokodna aplikacija za upravljanje z zapiski (angl. notes), ki je na voljo za različne operacijske sisteme (Linux, Windows, Mac, Android in iOS). Omogoča organiziranje in shranjevanje zapiskov in seznamov opravil (angl. to-do list), pri čemer le-ti lahko vsebujejo besedila, slike, URL povezave in datoteke. Joplin omogoča tudi osnovno oblikovanje zapiskov, in sicer s pomočjo Markdown ukazov, zapiske lahko organiziramo v mape in podmape ter jih kategoriziramo z oznakami (angls tags).

Joplin odjemalec za Linux

Joplin odjemalec za Linux.

Joplin seveda omogoča sinhronizacijo zapiskov med različnimi napravami. To uporabniku omogoča, da si zapiske in sezname opravil deli med svojimi napravami oziroma da si več uporabnikov deli zapiske med seboj. To je precej uporabno pri skupinskemu delu na kakšnih resnejših projektih, seveda pa aplikacijo lahko uporabimo tudi za povsem zasebna opravila, na primer deljenje nakupovalnih seznamov ali kaj podobnega. Najlepše pri vsem skupaj pa je, da Joplin omogoča E2E šifriranje zapiskov. Vsebina zapiskov je tako vidna samo na napravah, ki so si izmenjale ustrezne šifrirne ključe.

Sinhronizacija zapiskov je mogoča preko različnih storitev v oblaku, npr. Dropbox ali Nextcloud. Če pri tem uporabimo šifriranje, so naši zapiski varni tudi če so shranjeni v oblaku.

Joplin pa omogoča tudi deljenje zapiskov preko namenskega Joplin strežnika. Za razliko od drugih načinov sinhronizacije, ki omogočajo zgolj deljenje zapiskov med napravami, pa Joplin strežnik omogoča tudi deljenje zapiskov med različnimi uporabniki. Tako ima lahko uporabnik povsem zasebne beležke, določene beležke pa deli samo s konkretnim uporabnikom (oziroma več njimi).

Kljub temu, da je Joplin strežnik odprtokoden, je žal na voljo samo za osebno uporabo, kar pomeni, da se bo za morebitno komercialno uporabo kljub temu, da je aplikacija odprtokodna, potrebno dogovoriti z avtorjem. Ali pa uporabiti plačljivo oblačno rešitev Joplin Cloud, ki jo trži avtor aplikacije.

Kakorkoli, v nadaljevanju si bomo ogledali kako postaviti svoj lasten Joplin strežnik na Debian strežniku. V skladu z licenco, pa bomo strežnik uporabljali samo za osebno rabo.

Namestitev Joplin strežnika

Najprej je potrebno registrirati ustrezno poddpomeno, na primer joplin.yourserver.si, nato pa se na strežnik prijavimo kot navaden uporabnik, ki pa mora imeti administratorske pravice (preko sudo).

Naslednji korak je namestitev Docker Compose, ki je odvisna od vašega sistema in si je tukaj ne bomo podrobneje ogledali.

Sledi namestitev Joplin strežnika. Najprej naredimo ustrezno mapo:

sudo mkdir /opt/joplin
cd /opt/joplin/

V njej ustvarimo datoteko joplin-docker-compose.yml:

sudo nano joplin-docker-compose.yml

Vsebina datoteke:

version: '3'

services:
  db:
    image: postgres:13
    container_name: joplin-postgres
    volumes:
      - ./data/postgres:/var/lib/postgresql/data
    ports:
      - "127.0.0.1:5432:5432"
    restart: always
    environment:
      - POSTGRES_PASSWORD=your-VERY-secure-password
      - POSTGRES_USER=joplin-user
      - POSTGRES_DB=joplindb
  app:
    image: joplin/server:latest
    container_name: joplin-server
    depends_on:
      - db
    ports:
      - "127.0.0.1:8000:8000"
    restart: always
    environment:
      - APP_PORT=8000
      - APP_BASE_URL=https://joplin.yourserver.si
      - DB_CLIENT=pg
      - POSTGRES_PASSWORD=your-VERY-secure-password
      - POSTGRES_DATABASE=joplindb
      - POSTGRES_USER=joplin-user
      - POSTGRES_PORT=5432
      - POSTGRES_HOST=db

Nekaj dodatne razlage:

  • Vrstica "127.0.0.1:5432:5432" določa, da bo PostgreSQL strežnik dostopen samo lokalno (localhost, 127.0.0.1) na vratih 5432.
  • Geslo za PostgreSQL je potrebno nastaviti v POSTGRES_PASSWORD=your-VERY-secure-password.
  • Spremenjlivka APP_PORT=8000 določa na katerih vratih bo tekel strežnik
  • Spremenljivka APP_BASE_URL=https://joplin.yourserver.si določa URL naslov vašega Joplin strežnika.
  • Če želite lahko spremenite še vrednost POSTGRES_DATABASE in POSTGRES_USER.

Sedaj Joplin strežnik zaženemo:

sudo docker-compose -f joplin-docker-compose.yml up -d

Z ukazom sudo docker ps lahko pogledamo ali Joplin strežnik in baza podatkov v dockerju tečeta (joplin-server in joplin-postgres) .

Če želimo Joplin strežnik ugasniti, pa vpišemo ukaz sudo docker-compose -f joplin-docker-compose.yml down.

V naslednjem koraku namestimo Nginx spletni strežnik ter nastavimo spletno stran preko katere bo dosegljiv naš Joplin strežnik.

Odpremo nastavitveno datoteko:

sudo nano /etc/nginx/sites-enabled/default

In vanjo vpišemo:

server {
  listen 80;
  listen [::]:80;
  server_name joplin.yourserver.si;
  client_max_body_size 50M;
  error_log /var/log/nginx/joplin-server.error;

  location / {
    proxy_pass http://127.0.0.1:8000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

S spremenljivko server_name nastavimo poddomeno preko katere bo Joplin strežnik dosegljiv, spremenljivka proxy_pass http://127.0.0.1:8000; pa spletnemu strežniku pove, da naj vse spletne zahtevke posreduje Joplin strežniku, ki lokalno teče na TCP vratih 8000.

Sedaj preverimo ali je Nginx nastavitvena datoteka brez napak: sudo nginx -t, nato pa spletni strežnik ponovno zaženemo: sudo service nginx restart.

Zdaj je potrebno nastaviti še požarni zid:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload

Na koncu pa namestimo Certbot, ki bo poskrbel za HTTPS šifriranje spletnih povezav.

Ko je Certbot nameščen, poženemo ukaz, s katerim za našo domeno pridobimo Let’s Encrypt digitalna potrdila in spletni strežnik ponovno zaženemo (primer):

sudo certbot -d joplin.yourserver.si -m matej@yourserver.si
sudo service nginx restart

In še zadnji korak. V Cronu nastavimo, da Certbot periodično preverja veljavnost spletnega digitalnega potrdila in ga po potrebi tudi samodejno obnovi. Vpišemo ukaz sudo crontab -e in dodamo vrstico:

15 4 * * * /usr/bin/certbot renew --quiet

Joplin strežnik je sedaj postavljen in dostopen na naslovu https://joplin.yourserver.si.

V primeru, da kaj ne dela, bo seveda potrebno pogledati dnevniške zapise, kar storimo z ukazom sudo docker logs joplin-server.

Prijava v Joplin strežnik

V Joplin strežnik se sedaj prijavimo z e-naslovom admin@localhost ter geslom admin.

V zgornjem desnem kotu kliknemo svoje uporabniško ime (Admin), vstopimo v svoj profil in spremenimo geslo ter vpišemo ostale podatke. Kliknemo Update Profile in postopek je zaključen.

Zdaj lahko v meniku izberemo razdelek Admin, izberemo Users in nato z Add user dodamo prvega uporabnika Joplin strežnika.

V nastavitvah Joplin odjemalca nato pod Synchronization target izberemo Joplin Server (Beta) ter vnesemo URL, uporabniško ime in geslo.

Varnostno arhiviranje zapiskov

Čisto na koncu je smiselno poskrbeti še za varnostno arhiviranje Joplin zapiskov na strežniku (na odjemalcih lahko varnostne kopije idelujemo z Joplin Backup vtičnikom). Kopijo PSQL baze podatkov naredimo z ukazi:

docker exec joplin-postgres sh -c 'pg_dumpall -U joplin-user > /home/psql_backup.sql'
sudo docker cp joplin-postgres:/home/psql_backup.sql /opt/joplin/data-backup/`date +%Y-%m-%d`_joplin_backup.sql
docker exec joplin-postgres sh -c 'rm /home/psql_backup.sql'

Datoteke se sedaj nahajajo v mapi /opt/joplin/data-backup/ .

Navedene ukaze lahko damo v cron in nastavimo, da se varnostno arhivranje samodejno izvaja enkrat dnevno, varnostne kopije pa hranimo samo za zadnjih 7 dni. Naredimo posebno skripto z ustreznimi ukazi (/usr/bin/sh /opt/joplin/joplinbackup.sh) in vanjo vpišemo:

/usr/bin/docker exec joplin-postgres sh -c 'pg_dumpall -U joplin-user > /home/psql_backup.sql'
/usr/bin/docker cp joplin-postgres:/home/psql_backup.sql /opt/joplin/data-backup/`date +%Y-%m-%d`_joplin_backup.sql
/usr/bin/docker exec joplin-postgres sh -c 'rm /home/psql_backup.sql'
/usr/bin/find /opt/joplin/data-backup -type f -mtime +7 -name '*.sql' -execdir rm -- '{}' \;

Datoteka mora biti izvršljiva (namig chmod +x). Na koncu v crontab (sudo crontab -e) vpišemo še:

0 1 * * * /usr/bin/sh /opt/joplin/joplinbackup.sh

S tem se bo varnostna kopija baze samodejno delala vsako noč ob enih zjutraj, hranile pa se bodo kopije za zadnjih 7 dni.

Zaključek

Joplin odjemalec za Android

Joplin odjemalec za Android.

Namestitev Joplin strežnika je enostavna, uporaba Joplin odjemalca pa prav tako. Joplin je odlična odprtokodna alternativa za komercialne aplikacije za urejanje zapiskov. S tem predstavlja neposredno konkurenco storitvam kot so Evernote in podobne.

Njegova glavna prednost je, da omogoča kvalitetno šifriranje, enostavno deljenje zapiskov med uporabniki, zapiske pa lahko hranimo na lastni infrastrukturi.

Kategorije: Informacijska tehnologija
Ključne besede: Linux, šifriranje