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:
Gib deinen Admin-Benutzernamen und dein Passwort ein und klicke auf den Sign In Button. Du solltest die folgende Seite sehen:
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.