So installierst du den EteSync Server unter Ubuntu 20.04

EteSync ist eine Open-Source-Lösung, um deine Kontakte, Kalender und Aufgaben zu synchronisieren. Sie wird selbst gehostet, bietet eine Ende-zu-Ende-Verschlüsselung und erlaubt es dir, Daten mit anderen Nutzern zu teilen. Sie kann in GNOME und KDE Desktops integriert werden. Es kann über Desktop-, Web-, Android- und iOS-Clients genutzt werden.

In diesem Tutorial zeige ich dir, wie du EteSync mit Apache auf Ubuntu 20.04 installieren kannst.

Voraussetzungen

  • Ein Server, auf dem Ubuntu 20.04 läuft.
  • Ein gültiger Domainname, der auf die IP deines Servers zeigt.
  • Ein Root-Passwort ist auf dem Server konfiguriert.

Erste Schritte

Aktualisiere zunächst die Systempakete auf die aktuelle Version, indem du den folgenden Befehl ausführst:

apt-get update -y

Sobald alle Pakete aktualisiert sind, kannst du mit dem nächsten Schritt fortfahren.

MariaDB Server installieren

Standardmäßig verwendet EteSync die SQLite Datenbank, um seine Informationen zu speichern. Hier werden wir MariaDB als Datenbank-Backend installieren und verwenden.

Als erstes installierst du die benötigten Abhängigkeiten mit dem folgenden Befehl:

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

Nun fügst du den MariaDB GPG-Schlüssel und das Repository mit dem folgenden Befehl hinzu:

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'

Dann aktualisierst du das MariaDB Repository und installierst die neueste Version von MariaDB mit dem folgenden Befehl:

apt-get install mariadb-server -y

Nachdem du den MariaDB Server installiert hast, melde dich mit folgendem Befehl in der MariaDB Shell an:

mysql

Sobald du eingeloggt bist, erstelle eine Datenbank und einen Benutzer für EteSync mit dem folgenden Befehl:

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

Erteile der EteSync-Datenbank alle Rechte mit dem folgenden Befehl:

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

Als nächstes löschst du die Berechtigungen und beendest MariaDB mit dem folgenden Befehl:

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

Sobald du damit fertig bist, kannst du mit dem nächsten Schritt fortfahren.

Installieren und Konfigurieren von EteSync

Zuerst musst du einige Python-Abhängigkeiten installieren, die für EteSync benötigt werden. Du kannst sie alle mit dem folgenden Befehl installieren:

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

Nachdem du alle Abhängigkeiten installiert hast, lade die neueste Version von EteSync mit dem folgenden Befehl herunter:

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

Sobald der Download abgeschlossen ist, wechselst du in das Verzeichnis etesync und erstellst eine virtuelle Python-Umgebung mit dem folgenden Befehl:

cd etesync
virtualenv -p python3 .venv

Als nächstes aktiviere die virtuelle Umgebung mit dem folgenden Befehl:

source .venv/bin/activate

Dann installierst du alle Voraussetzungen mit dem folgenden Befehl:

pip install -r requirements.txt

Nun kopierst du die Beispielkonfigurationsdatei:

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

Schlussendlich bearbeite die Konfigurationsdatei mit dem folgenden Befehl:

nano etebase-server.ini

Füge die folgenden Zeilen hinzu oder ändere sie entsprechend deiner Konfiguration:

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

Speichere und schließe die Datei und installiere dann weitere Module mit dem folgenden Befehl:

pip3 install daphne
pip3 install mysqlclient
pip3 install aioredis

Als nächstes generierst du die statischen Dateien und migrierst die Datenbank mit dem folgenden Befehl:

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

Zum Schluss starte den EteSync Server mit dem folgenden Kommando:

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

Wenn alles in Ordnung ist, solltest du die folgende Ausgabe erhalten:

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

Drücke CTRL + C, um den Server zu stoppen.

Als nächstes erstellst du einen administrativen Benutzer mit dem folgenden Befehl:

./manage.py createsuperuser

Gib deinen Benutzernamen, dein Passwort und deine E-Mail wie unten gezeigt an:

Username: etesync
Email address: admin@example.com
Password: 
Password (again): 
Superuser created successfully.

Als Nächstes deaktiviere dich aus der virtuellen Python-Umgebung mit dem folgenden Befehl:

deactivate

Erstelle eine Systemd Unit Datei für EteSync

Als nächstes musst du eine systemd Unit Datei erstellen, um EteSync zu verwalten. Du kannst sie mit dem folgenden Befehl erstellen:

nano /etc/systemd/system/etesync.service

Füge die folgenden Zeilen hinzu:

[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

Speichere und schließe die Datei und lade dann den systemd-Daemon neu, um die Konfigurationsänderungen anzuwenden:

systemctl daemon-reload

Starte und aktiviere als nächstes den EteSync-Dienst mit dem folgenden Befehl:

systemctl start etesync
systemctl enable etesync

Um den Status des EteSync-Dienstes zu überprüfen, führe den folgenden Befehl aus:

systemctl status etesync

Du wirst die folgende Ausgabe erhalten:

? 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

Zu diesem Zeitpunkt ist EteSync gestartet und lauscht auf Port 8001. Du kannst nun mit dem nächsten Schritt fortfahren.

Apache als Reverse Proxy konfigurieren

Es ist auch ratsam, Apache als Reverse Proxy zu installieren und zu verwenden, um auf EteSync zuzugreifen. Als erstes installierst du den Apache Server mit dem folgenden Befehl:

apt-get install apache2 -y

Nach der Installation des Apache-Servers aktivierst du alle Proxy-Module mit dem folgenden Befehl:

a2enmod proxy proxy_http headers proxy_wstunnel

Als nächstes erstellst du eine neue Apache Virtual Host Konfigurationsdatei:

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

Füge die folgenden Zeilen hinzu:

<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>

Speichere und schließe die Datei und aktiviere den virtuellen Apache-Host mit dem folgenden Befehl:

a2ensite etesync.conf

Starte als nächstes den Apache neu, um die Änderungen zu aktualisieren:

systemctl restart apache2

Du kannst nun den Apache-Status mit dem folgenden Befehl überprüfen:

systemctl status apache2

Du solltest die folgende Ausgabe erhalten:

? 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>

Access EteSync Admin Console

Öffne nun deinen Webbrowser und rufe das EteSync Admin Interface über die URL http://etesync.example.com/admin/ auf. Du wirst auf die folgende Seite weitergeleitet:

EteSync Anmeldung

Gib deinen Admin-Benutzernamen und dein Passwort ein und klicke auf den Sign In Button. Du solltest die folgende Seite sehen:

Website Verwaltung

EteSync mit Let’s Encrypt SSL sichern

Zuerst musst du den Certbot Let’s Encrypt Client installieren, um das SSL Zertifikat für deine Domain herunterzuladen und zu installieren.

Du kannst es mit dem folgenden Befehl installieren:

apt-get install python3-certbot-apache -y

Sobald er installiert ist, kannst du den folgenden Befehl ausführen, um das Let’s Encrypt Zertifikat für deine Domain etesync.example.com zu installieren.

certbot --apache -d etesync.example.com

Während der Installation wirst du aufgefordert, deine E-Mail-Adresse anzugeben und die Nutzungsbedingungen zu akzeptieren, wie unten gezeigt:

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): admin@example.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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

Als nächstes gibst du 2 ein und drückst auf Enter, um ein kostenloses SSL-Zertifikat für deine Domain herunterzuladen und zu installieren. Sobald die Installation erfolgreich abgeschlossen wurde. Du solltest die folgende Ausgabe erhalten:

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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Fazit

Herzlichen Glückwunsch! Du hast EteSync erfolgreich auf dem Ubuntu 20.04 Server mit Let’s Encrypt SSL installiert. Du kannst nun deinen Kalender und deine Kontakte einfach mit EteSync synchronisieren.

Das könnte dich auch interessieren …