EteSync est une solution open source pour synchroniser vos contacts, calendriers et tâches. Il est auto-hébergé, fournit un chiffrement de bout en bout et vous permet de partager des données avec d'autres utilisateurs. Il peut être intégré aux bureaux GNOME et KDE. Il est accessible via des clients de bureau, Web, Android et iOS.
Dans ce tutoriel, je vais vous montrer comment installer EteSync avec Apache sur Ubuntu 20.04.
Prérequis
- Un serveur exécutant Ubuntu 20.04.
- Un nom de domaine valide pointé vers l'adresse IP de votre serveur.
- Un mot de passe root est configuré sur le serveur.
Mise en route
Tout d'abord, mettez à jour les packages système vers la version mise à jour en exécutant la commande suivante :
apt-get update -y
Une fois tous les packages mis à jour, vous pouvez passer à l'étape suivante.
Installation du 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, installez les dépendances requises à l'aide de la commande suivante :
apt-get install software-properties-common gnupg2 -y
Ensuite, ajoutez la clé MariaDB GPG et le référentiel à 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, mettez à jour le référentiel MariaDB et installez la dernière version de MariaDB avec la commande suivante :
apt-get install mariadb-server -y
Après avoir installé le serveur MariaDB, connectez-vous au shell MariaDB avec la commande suivante :
mysql
Une fois connecté, créez 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, accordez 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, videz les privilèges et quittez MariaDB avec la commande suivante :
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;
Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.
Installation et configuration d'EteSync
Tout d'abord, vous devrez installer certaines dépendances Python requises pour EteSync. Vous pouvez tous les installer 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échargez 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é, changez le répertoire en etesync et créez un environnement virtuel Python avec la commande suivante :
cd etesync
virtualenv -p python3 .venv
Ensuite, activez l'environnement virtuel avec la commande suivante :
source .venv/bin/activate
Ensuite, installez toutes les exigences à l'aide de la commande suivante :
pip install -r requirements.txt
Ensuite, copiez l'exemple de fichier de configuration :
cp etebase-server.ini.example etebase-server.ini
Ensuite, modifiez le fichier de configuration à l'aide de la commande ci-dessous :
nano etebase-server.ini
Ajoutez ou modifiez les lignes suivantes selon votre 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
Enregistrez et fermez le fichier puis installez les autres modules à l'aide de la commande suivante :
pip3 install daphne
pip3 install mysqlclient
pip3 install aioredis
Ensuite, générez les fichiers statiques et migrez la base de données avec la commande suivante :
./manage.py collectstatic
./manage.py migrate
Enfin, démarrez le serveur EteSync avec la commande suivante :
daphne -b 0.0.0.0 -p 8001 etebase_server.asgi:application
Si tout va bien, vous devriez obtenir le résultat suivant :
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
Appuyez sur CTRL + C pour arrêter le serveur.
Créez ensuite un utilisateur administratif à l'aide de la commande suivante :
./manage.py createsuperuser
Indiquez votre nom d'utilisateur, votre mot de passe et votre adresse e-mail comme indiqué ci-dessous :
Username: etesync Email address: [email protected] Password: Password (again): Superuser created successfully.
Ensuite, désactivez depuis l'environnement virtuel Python avec la commande suivante :
deactivate
Créer un fichier d'unité Systemd pour EteSync
Ensuite, vous devrez créer un fichier d'unité systemd pour gérer EteSync. Vous pouvez le créer avec la commande suivante :
nano /etc/systemd/system/etesync.service
Ajoutez 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
Enregistrez et fermez le fichier puis rechargez le démon systemd pour appliquer les modifications de configuration :
systemctl daemon-reload
Ensuite, démarrez et activez le service EteSync avec la commande suivante :
systemctl start etesync
systemctl enable etesync
Pour vérifier l'état du service EteSync, exécutez la commande suivante :
systemctl status etesync
Vous obtiendrez le résultat suivant :
? 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. Vous pouvez maintenant passer à l'étape suivante.
Configuration d'Apache en tant que proxy inverse
Il est également conseillé d'installer et d'utiliser Apache comme reverse proxy pour accéder à EteSync. Commencez par installer le serveur Apache avec la commande suivante :
apt-get install apache2 -y
Après avoir installé le serveur Apache, activez tous les modules proxy avec la commande suivante :
a2enmod proxy proxy_http headers proxy_wstunnel
Créez ensuite un nouveau fichier de configuration d'hôte virtuel Apache :
nano /etc/apache2/sites-available/etesync.conf
Ajoutez 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>
Enregistrez et fermez le fichier puis activez l'hôte virtuel Apache avec la commande suivante :
a2ensite etesync.conf
Ensuite, redémarrez Apache pour mettre à jour les modifications :
systemctl restart apache2
Vous pouvez maintenant vérifier le statut d'Apache à l'aide de la commande suivante :
systemctl status apache2
Vous devriez obtenir le résultat suivant :
? 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éder à la console d'administration EteSync
Maintenant, ouvrez votre navigateur Web et accédez à l'interface d'administration d'EteSync en utilisant l'URL http://etesync.example.com/admin/ . Vous serez redirigé vers la page suivante :
Indiquez votre nom d'utilisateur et votre mot de passe d'administrateur, puis cliquez sur Connexion bouton. Vous devriez voir la page suivante :
Sécuriser EteSync avec Let's Encrypt SSL
Tout d'abord, vous devrez installer le client Certbot Let's Encrypt pour télécharger et installer le certificat SSL pour votre domaine.
Vous pouvez l'installer avec la commande suivante :
apt-get install python3-certbot-apache -y
Une fois installé, vous pouvez exécuter la commande suivante pour installer le certificat Let's Encrypt pour votre domaine etesync.example.com.
certbot --apache -d etesync.example.com
Lors de l'installation, il vous sera demandé de fournir votre adresse e-mail et d'accepter les conditions d'utilisation 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, tapez 2 et appuyez sur Entrée pour télécharger et installer un certificat SSL gratuit pour votre domaine. Une fois l'installation terminée avec succès. Vous devriez obtenir le résultat suivant :
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
Toutes nos félicitations! vous avez installé avec succès EteSync sur le serveur Ubuntu 20.04 avec Let's Encrypt SSL. Vous pouvez maintenant synchroniser votre calendrier et contacter facilement avec EteSync.