Etesync Server con Nginx Letsencrypt e Ubuntu

Etesync server, installazione e configurazione su Ubuntu.

Proviamo ad installare su una VPS con SO Ubuntu 20.04 il server Etesync, alternativa Open Source a Google account con cui potremo sincronizzare in maniera sicura con qualsiasi dispositivo i nostri Contatti, Calendario e Note.

Al termine avremo installato Nginx, con abilitato HTTPS tramite Letsencrypt, che funziona come reverse proxy per il server Etesync con crittografia end-to-end.

I prerequisiti sono:

  • shell server Linux Ubuntu ( in questo caso utilizzeremo una VPS ) con permessi di root e un utente normale abilitato sudo ( in questo caso utilizzeremo una VPS )
  • qualche dimestichezza con la shell
  • Putty per collegarci da remoto ? forse
  • un dominio di proprietà su cui creare un record A a cui associare l’installazione

Bene, apriamo la shell del nostro utente e aggiorniamo i repository:

1
sudo apt update

installiamo python3, compilatori git ecc:

1
sudo apt install python3-virtualenv python3-pip gcc build-essential git nano
1
2
cd ~
git clone https://github.com/etesync/server.git etebase
1
2
3
4
5
cd etebase
virtualenv -p python3 .venv
source .venv/bin/activate
pip install -r requirements.txt
cp etebase-server.ini.example etebase-server.ini
1
nano etebase-server.ini

a questo punto editiamo il file aperto che sarà il file di configurazione del server e modifichiamo la riga “media_root” dove inseriremo il nostro reale utente e in “allowed_host1” il nostro host.domain.tld:

1
2
3
media_root = /home/<user>/etebase/media/
allowed_host1 = ete.domain.tld
language_code = it-it

ora installiamo l’applicativo Django e Redis cache e file statici:

1
2
3
4
pip3 install daphne
pip3 install aioredis
./manage.py collectstatic
./manage.py migrate

ora facendolo partire provvisorio ne verifichiamo il funzionamento, stoppiamo con CTRL+C:

1
daphne -b 0.0.0.0 -p 8001 etebase_server.asgi:application

creiamo un servizio ad hoc creando il suo file specifico:

1
sudo nano /etc/systemd/system/etebase.service
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
[Unit]
Description=EteSync: End-to-End Encryption to Sync Calender, Contacts, Tasks and Notes.

[Service]
WorkingDirectory=/home/<user>/etebase/
ExecStart=/home/<user>/etebase/.venv/bin/daphne -b 127.0.0.1 -p 8001 -u /tmp/etebase_server.sock etebase_server.asgi:application
User=<user>
Group=<user>
Restart=always
RestartSec=5s

[Install]
WantedBy=multi-user.target

avviamo ed abilitiamo il servizio all’avvio e controlliamo se tutto funziona:

1
2
3
4
sudo systemctl start etebase
sudo systemctl enable etebase
systemctl status etebase
sudo journalctl -eu etebase

Ora passiamo a installare, configurare Nginx:

1
2
3
4
5
6
sudo apt install nginx
sudo systemctl enable nginx
sudo systemctl start nginx
sudo systemctl status nginx
sudo rm /etc/nginx/sites-enabled/default
sudo nano /etc/nginx/conf.d/ete.domain.tld.conf
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
upstream etebase {
    server unix:///tmp/etebase_server.sock;
}

server {
    listen 80;
    listen [::]:80;
    server_name ete.domain.tld;

    charset     utf-8;
    access_log /var/log/nginx/ete.domain.tld.access.log;
    error_log /var/log/nginx/ete.domain.tld.error.log;

    # max upload size
    client_max_body_size 75M;

    location /static/ {
        alias /home/username/etebase/static/;
    }

    location / {
        proxy_pass http://etebase;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $server_name;
    }
}

testiamone la configurazione:

1
2
3
4
sudo nginx -t
sudo systemctl reload nginx
sudo systemctl restart nginx
sudo systemctl restart etebase

a questo punto installiamo Letsencrypt HTTPS in Nginx tramite certbot:

1
2
3
sudo apt install certbot
sudo apt install python3-certbot-nginx
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email tua@esempioemail.com -d ete.domain.tld

dovremmo ottenere il certificato sottola cartella /etc/letsencrypt.

Passiamo a creare l’utente di amministrazione del server e inseriamone l’email:

1
2
cd ~/etebase
./manage.py createsuperuser

Se tutto è andato come dovrebbe possiamo iniziare a configurare gli utenti all’indirizzo host.domain.tld e testare la configurazione anche da smarthphone tramite le app di Etesync-App che potete trovare direttamente dal Play Store e sono EteSync - Secure Data Sync e EteSync Notes - End-to-end, a questo punto la configurazione è abbastanza banale.

Le guide originali sono prese da Linuxbabe.com

Buon sync . . .