Comment installer le serveur EteSync sur Ubuntu 20.04

EteSync est une solution open-source pour synchroniser tes contacts, calendriers et tâches. Elle est auto-hébergée, fournit un cryptage de bout en bout et te permet de partager des données avec d’autres utilisateurs. Elle peut être intégrée aux bureaux GNOME et KDE. On peut y accéder via des clients de bureau, Web, Android et iOS.

Dans ce tutoriel, je vais te montrer comment installer EteSync avec Apache sur Ubuntu 20.04.

Conditions préalables

  • Un serveur fonctionnant sous Ubuntu 20.04.
  • Un nom de domaine valide pointé avec l’IP de ton serveur.
  • Un mot de passe root est configuré sur le serveur.

Pour commencer

Tout d’abord, mets les paquets système à la version mise à jour en exécutant la commande suivante :

apt-get update -y

Une fois que tous les paquets sont mis à jour, tu peux passer à l’étape suivante.

Installer le serveur MariaDB

Par défaut, EteSync utilise la base de données SQLite pour stocker ses informations. Ici, nous allons installer et utiliser MariaDB comme backend de base de données.

Tout d’abord, installe les dépendances requises à l’aide de la commande suivante :

apt-get install software-properties-common gnupg2 -y

Ensuite, ajoute la clé GPG et le référentiel MariaDB à l’aide de la commande suivante :

apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://mirror.lstn.net/mariadb/repo/10.5/ubuntu focal main'

Ensuite, mets à jour le référentiel MariaDB et installe la dernière version de MariaDB à l’aide de la commande suivante :

apt-get install mariadb-server -y

Après avoir installé le serveur MariaDB, connecte-toi au shell MariaDB avec la commande suivante :

mysql

Une fois que tu es connecté, crée une base de données et un utilisateur pour EteSync avec la commande suivante :

MariaDB [(none)]> create database etesync;
MariaDB [(none)]> create user [email protected] identified by 'securepassword';

Ensuite, accorde tous les privilèges à la base de données EteSync avec la commande suivante :

MariaDB [(none)]> grant all privileges on etesync.* to [email protected];

Ensuite, supprime les privilèges et sors de MariaDB avec la commande suivante :

MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;

Une fois que tu as terminé, tu peux passer à l’étape suivante.

Installer et configurer EteSync

Tout d’abord, tu dois installer certaines dépendances Python nécessaires à EteSync. Tu peux les installer toutes avec la commande suivante :

apt-get install python3-virtualenv python3-pip gcc libmysqlclient-dev build-essential git -y

Après avoir installé toutes les dépendances, télécharge la dernière version d’EteSync à l’aide de la commande suivante :

git clone https://github.com/etesync/server.git etesync

Une fois le téléchargement terminé, change le répertoire en etesync et crée un environnement virtuel Python avec la commande suivante :

cd etesync
virtualenv -p python3 .venv

Ensuite, active l’environnement virtuel avec la commande suivante :

source .venv/bin/activate

Ensuite, installe toutes les exigences à l’aide de la commande suivante :

pip install -r requirements.txt

Ensuite, copie le fichier de configuration type :

cp etebase-server.ini.example etebase-server.ini

Ensuite, modifie le fichier de configuration à l’aide de la commande suivante :

nano etebase-server.ini

Ajoute ou modifie les lignes suivantes en fonction de ta configuration :

media_root = /opt
allowed_host1 = etesync.example.com

;engine = django.db.backends.sqlite3
;name = db.sqlite3

engine = django.db.backends.mysql
name = etesync
user = etesync
password = securepassword
host = 127.0.0.1
port = 3306

Sauvegarde et ferme le fichier puis installe les autres modules à l’aide de la commande suivante :

pip3 install daphne
pip3 install mysqlclient
pip3 install aioredis

Ensuite, génère les fichiers statiques et migre la base de données à l’aide de la commande suivante :

./manage.py collectstatic
./manage.py migrate

Enfin, démarre le serveur EteSync avec la commande suivante :

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

Si tout va bien, tu devrais obtenir la sortie suivante :

2021-07-09 05:42:28,510 INFO     Starting server at tcp:port=8001:interface=0.0.0.0
2021-07-09 05:42:28,510 INFO     HTTP/2 support not enabled (install the http2 and tls Twisted extras)
2021-07-09 05:42:28,511 INFO     Configuring endpoint tcp:port=8001:interface=0.0.0.0
2021-07-09 05:42:28,512 INFO     Listening on TCP address 0.0.0.0:8001

Appuie sur CTRL + C pour arrêter le serveur.

Ensuite, crée un utilisateur administratif à l’aide de la commande suivante :

./manage.py createsuperuser

Indique ton nom d’utilisateur, ton mot de passe et ton adresse e-mail comme indiqué ci-dessous :

Username: etesync
Email address: [email protected]
Password: 
Password (again): 
Superuser created successfully.

Ensuite, désactive l’environnement virtuel Python à l’aide de la commande suivante :

deactivate

Crée un fichier d’unité Systemd pour EteSync

Ensuite, tu devras créer un fichier d’unité systemd pour gérer EteSync. Tu peux le créer avec la commande suivante :

nano /etc/systemd/system/etesync.service

Ajoute les lignes suivantes :

[Unit]
Description=EteSync: End-to-End Encryption to Sync Calender, Contacts, Tasks and Notes.

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

[Install]
WantedBy=multi-user.target

Enregistre et ferme le fichier puis recharge le démon systemd pour appliquer les changements de configuration :

systemctl daemon-reload

Ensuite, démarre et active le service EteSync avec la commande suivante :

systemctl start etesync
systemctl enable etesync

Pour vérifier l’état du service EteSync, exécute la commande suivante :

systemctl status etesync

Tu obtiendras la sortie suivante :

? etesync.service - EteSync: End-to-End Encryption to Sync Calender, Contacts, Tasks and Notes.
     Loaded: loaded (/etc/systemd/system/etesync.service; disabled; vendor preset: enabled)
     Active: active (running) since Fri 2021-07-09 05:45:45 UTC; 5s ago
   Main PID: 16213 (daphne)
      Tasks: 1 (limit: 2353)
     Memory: 48.7M
     CGroup: /system.slice/etesync.service
             ??16213 /root/etesync/.venv/bin/python /root/etesync/.venv/bin/daphne -b 127.0.0.1 -p 8001 -u /tmp/etebase_server.sock etebase_se>

Jul 09 05:45:45 node1 systemd[1]: Started EteSync: End-to-End Encryption to Sync Calender, Contacts, Tasks and Notes..
Jul 09 05:45:46 node1 daphne[16213]: 2021-07-09 05:45:46,993 INFO     Starting server at tcp:port=8001:interface=127.0.0.1, unix:/tmp/etebase_>
Jul 09 05:45:46 node1 daphne[16213]: 2021-07-09 05:45:46,995 INFO     HTTP/2 support not enabled (install the http2 and tls Twisted extras)
Jul 09 05:45:46 node1 daphne[16213]: 2021-07-09 05:45:46,995 INFO     Configuring endpoint tcp:port=8001:interface=127.0.0.1
Jul 09 05:45:46 node1 daphne[16213]: 2021-07-09 05:45:46,997 INFO     Listening on TCP address 127.0.0.1:8001
Jul 09 05:45:46 node1 daphne[16213]: 2021-07-09 05:45:46,998 INFO     Configuring endpoint unix:/tmp/etebase_server.sock

À ce stade, EteSync est démarré et écoute sur le port 8001. Tu peux maintenant passer à l’étape suivante.

Configuration d’Apache en tant que Reverse Proxy

Il est également conseillé d’installer et d’utiliser Apache comme proxy inverse pour accéder à EteSync. Tout d’abord, installe le serveur Apache avec la commande suivante :

apt-get install apache2 -y

Après avoir installé le serveur Apache, active tous les modules proxy avec la commande suivante :

a2enmod proxy proxy_http headers proxy_wstunnel

Ensuite, crée un nouveau fichier de configuration d’hôte virtuel Apache :

nano /etc/apache2/sites-available/etesync.conf

Ajoute les lignes suivantes :

<VirtualHost *:80>
   ServerName etesync.example.com
   ErrorDocument 404 /404.html

   ErrorLog ${APACHE_LOG_DIR}/etebase_error.log
   CustomLog ${APACHE_LOG_DIR}/etebase_access.log combined

   ProxyPreserveHost On
   ProxyPass / http://127.0.0.1:8001/
   ProxyPassReverse / http://127.0.0.1:8001/
   Alias /static /etesync/static

</VirtualHost>

Enregistre et ferme le fichier puis active l’hôte virtuel Apache avec la commande suivante :

a2ensite etesync.conf

Ensuite, redémarre Apache pour mettre à jour les modifications :

systemctl restart apache2

Tu peux maintenant vérifier l’état d’Apache à l’aide de la commande suivante :

systemctl status apache2

Tu devrais obtenir la sortie suivante :

? apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2021-07-09 05:50:26 UTC; 5s ago
       Docs: https://httpd.apache.org/docs/2.4/
    Process: 17551 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
   Main PID: 17567 (apache2)
      Tasks: 55 (limit: 2353)
     Memory: 5.3M
     CGroup: /system.slice/apache2.service
             ??17567 /usr/sbin/apache2 -k start
             ??17568 /usr/sbin/apache2 -k start
             ??17569 /usr/sbin/apache2 -k start

Jul 09 05:50:26 node1 systemd[1]: Starting The Apache HTTP Server...
Jul 09 05:50:26 node1 apachectl[17558]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 45.58.3>

Accède à la console d’administration EteSync

Maintenant, ouvre ton navigateur Web et accède à l’interface d’administration d’EteSync en utilisant l’URL http://etesync.example.com/admin/. Tu seras redirigé vers la page suivante :

Connexion EteSync

Indique ton nom d’utilisateur admin, ton mot de passe et clique sur le bouton Sign In. Tu devrais voir la page suivante :

Administration du site

Sécuriser EteSync avec Let’s Encrypt SSL

Tout d’abord, tu dois installer le client Certbot Let’s Encrypt pour télécharger et installer le certificat SSL pour ton domaine.

Tu peux l’installer avec la commande suivante :

apt-get install python3-certbot-apache -y

Une fois installé, tu peux exécuter la commande suivante pour installer le certificat Let’s Encrypt pour ton domaine etesync.example.com.

certbot --apache -d etesync.example.com

Pendant l’installation, il te sera demandé de fournir ton adresse e-mail et d’accepter les conditions de service comme indiqué ci-dessous :

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): [email protected]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for etesync.example.com
Enabled Apache rewrite module
Waiting for verification...
Cleaning up challenges
Created an SSL vhost at /etc/apache2/sites-available/etesync-le-ssl.conf
Deploying Certificate to VirtualHost /etc/apache2/sites-available/etesync-le-ssl.conf
Enabling available site: /etc/apache2/sites-available/etesync-le-ssl.conf

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Ensuite, tape 2 et appuie sur Entrée pour télécharger et installer un certificat SSL gratuit pour ton domaine. Une fois l’installation terminée avec succès. Tu devrais obtenir la sortie suivante :

Enabled Apache rewrite module
Redirecting vhost in /etc/apache2/sites-enabled/etesync.conf to ssl vhost in /etc/apache2/sites-available/
etesync-le-ssl.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://etesync.example.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=etesync.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Conclusion

Félicitations ! Tu as réussi à installer EteSync sur le serveur Ubuntu 20.04 avec Let’s Encrypt SSL. Tu peux maintenant synchroniser ton calendrier et tes contacts facilement avec EteSync.

Vous aimerez aussi...