如何在Ubuntu上安装EteSync 2.0(Etebase)服务器

本教程将向您展示如何安装 同步 Ubuntu上的服务器。 EteSync是一种开源的端到端加密解决方案,用于同步您的日历,联系人,任务和便笺。

EteSync功能

最新版本是EteSync 2.0,具有

  • 端到端加密。
  • 无需单独的加密密码。 您只需要一个用于加密和登录的密码。
  • 对服务器进行身份验证的零知识证明,确保您的密码永远不会离开您的设备。
  • 设备之间的即时同步。
  • 与其他用户共享数据的能力
  • 客户端可用于台式机(DAV桥),Web,Android和iOS。
  • 与GNOME和KDE桌面集成(用于Evolution和Akonadi的EteSync后端)。
  • Mozilla Thunderbird的附加组件。
  • 升级到新的Etebase协议。

在不久的将来,EteSync也将增加对安全位置共享的支持。 EteSync在etesync.com提供托管服务。 我将向您展示如何在Ubuntu服务器上运行自托管实例,以及如何在各种平台上使用客户端软件。

步骤1:在Ubuntu上安装MariaDB Server的最新稳定版本

默认情况下,EteSync将用户信息存储在 SQLite的 数据库。 如果您喜欢使用 玛丽亚数据库,请按照以下说明进行操作。

您应该使用MariaDB的最新稳定版本10.5,因为如果在MariaDB 10.3上运行EteSync,将会出现问题。 要安装最新的稳定版本,请运行以下命令以在Ubuntu 20.04上添加MariaDB存储库。

sudo apt-get install software-properties-common

sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8

sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://mirror.lstn.net/mariadb/repo/10.5/ubuntu focal main'

要在Ubuntu 18.04上添加存储库,只需替换 focalbionic 在第三个命令中。

然后更新软件包索引并安装MariaDB服务器。

sudo apt update

sudo apt install mariadb-server

如果要将现有的MariaDB服务器升级到最新版本,则可能会看到以下消息。 我建议选择 N 保留当前版本并检查以后需要更改的内容。

在Ubuntu 20.04 18.04上安装mariadb 10.5

如果存在程序包依赖性问题,则可以运行以下命令对其进行修复。

sudo apt --fix-broken install

安装完成后,MariaDB服务器将自动启动。 您可以通过以下方式查看其状态:

systemctl status mariadb

如您所见,它处于活动状态并正在运行。

systemctl状态mariadb

提示:如果上述命令没有立即退出,请按Q键以恢复对终端的控制。

如果它没有运行,则可以使用以下命令手动启动它:

sudo systemctl start mariadb

要在引导时启用自动启动,请运行

sudo systemctl enable mariadb

步骤2:在MariaDB数据库服务器中为EteSync创建数据库和用户

使用以下命令登录MariaDB数据库服务器。 由于MariaDB现在正在使用 unix_socket 用于验证用户登录身份的插件,无需输入MariaDB root密码。 我们只需要在 mysql 用命令 sudo

sudo mysql

然后为EteSync创建一个数据库。 本教程为数据库命名 etebase。 您可以使用任何喜欢的名称。

create database etebase;

创建数据库用户。 同样,您可以为该用户使用您的首选名称。 更换 your-password 使用您的首选密码。

create user [email protected] identified by 'your-password';

授予该用户所有的权限 etebase 数据库。

grant all privileges on etebase.* to [email protected];

刷新特权并退出。

flush privileges;

exit;

etebase mariadb ubuntu

步骤3:在Ubuntu上安装EteSync 2.0 Server

安装Python3虚拟环境创建器。

sudo apt install python3-virtualenv

转到您的主目录。

cd

从Github克隆EteSync存储库。

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

转到新创建的目录。

cd etebase

创建一个Python3虚拟环境。

virtualenv -p python3 .venv

source .venv/bin/activate

pip install -r requirements.txt

复制示例配置文件。

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

编辑文件。

nano etebase-server.ini

找到以下行

;media_root = /path/to/media

取消注释并更改值。

media_root = /home/username/etebase/media/

找到以下行,

allowed_host1 = example.com

使用类似的子域 etebase.example.com

allowed_host1 = etebase.example.com

默认情况下,EteSync将用户信息存储在SQLite数据库中。 如果您更喜欢使用MariaDB数据库服务器,请注释掉以下两行(在每行的开头添加分号)。

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

然后在此文件的末尾添加以下行。 这告诉EteSync如何访问 etebase MariaDB中的数据库,该数据库是在步骤1中创建的。显然,您需要使用自己的密码 etebase 用户。

engine = django.db.backends.mysql
name = etebase
user = etebase
password = your-password
host = 127.0.0.1
port = 3306

保存并关闭文件。 Etebase服务器是Django应用程序,我们可以使用Daphne(Django Channels HTTP / WebSocket服务器)运行Etebase。 使用以下方法安装Daphne:

pip3 install daphne

由于我们使用MySQL / MariaDB作为数据库引擎,因此我们还需要安装 mysqlclient 模块。

sudo apt install libmysqlclient-dev

pip3 install mysqlclient

创建Django的静态文件。

./manage.py collectstatic

初始化应用程序。

./manage.py migrate

启动EteSync 2.0(Etebase)服务器。

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

daphne启动etebase服务器

步骤4:将EteSync作为系统服务运行

我们可以手动启动EteSync与 daphne -b 0.0.0.0 -p 8001 etebase_server.asgi:application,但在后台将EteSync作为系统服务运行更为方便。 按 Ctrl+C 停止当前的EteSync实例。

使用以下命令为EteSync创建系统服务单元文件。

sudo nano /etc/systemd/system/etebase.service

将以下行放入文件中。 更换 username 使用您的真实用户名。

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

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

[Install]
WantedBy=multi-user.target

保存并关闭文件。 现在我们可以启动并启用 etebase 系统服务。

sudo systemctl start etebase

sudo systemctl enable etebase

检查状态。

systemctl status etebase

systemctl状态etebase

如果 etebase 服务未处于活动状态(正在运行),您可以运行以下命令查看问题所在。

sudo journalctl -eu etebase

步骤5:设置反向代理

现在,我们需要为Django应用程序设置反向代理,以便稍后可以通过域名访问EteSync并轻松启用HTTPS。 我们可以使用Apache或Nginx完成此任务。

阿帕奇

如果您喜欢Apache,请使用以下命令安装Apache Web服务器。

sudo apt install apache2

要将Apache用作反向代理,我们需要启用 proxy 模块和 header 模块。

sudo a2enmod proxy proxy_http headers proxy_wstunnel

然后为EteSync创建虚拟主机文件。

sudo nano /etc/apache2/sites-available/etebase.conf

将以下配置放入文件中。 更换 etebase.example.com 与您的实际域名。 不要忘记为此子域创建DNS A记录。 如果您没有真实域名,建议您到NameCheap购买。 价格低廉,终身免费提供Whois隐私保护。

<VirtualHost *:80>
   ServerName etebase.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 /home/username/etebase/static

</VirtualHost>

保存并关闭文件。 然后启用此虚拟主机。

sudo a2ensite etebase.conf

重新启动Apache

sudo systemctl restart apache2

现在您可以使用域名访问EteSync Web界面 etebase.example.com

Nginx的

如果您更喜欢Nginx Web服务器,请安装Nginx。

sudo apt install nginx

在Nginx中为EteSync创建虚拟主机文件。

sudo nano /etc/nginx/conf.d/etebase.conf

将以下行放入文件中。 根据需要替换占位符,并且您应该为子域创建DNS A记录。

upstream etebase {
    server unix:///tmp/etebase_server.sock;
}

server {
    listen 80;
    listen [::]:80;
    server_name etebase.example.com;

    charset     utf-8;
    access_log /var/log/nginx/etebase.access;
    error_log /var/log/nginx/etebase.error;

    # 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;
    }
}

保存并关闭文件。 然后测试Nginx配置。

sudo nginx -t

如果测试成功,请重新加载Nginx以使更改生效。

sudo systemctl reload nginx

现在,您可以在以下位置访问EteSync Web界面: etebase.example.com

步骤6:启用HTTPS

为了加密HTTP流量,我们可以通过安装由Let’s Encrypt发行的免费TLS证书来启用HTTPS。 运行以下命令以在Ubuntu服务器上安装Let’s Encrypt客户端(certbot)。

sudo apt install certbot

如果使用Apache,则还需要安装Certbot Apache插件。

sudo apt install python3-certbot-apache

接下来,运行以下命令以获取并安装TLS证书。

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d etebase.example.com

如果使用Nginx,则还需要安装Certbot Nginx插件。

sudo apt install python3-certbot-nginx

接下来,运行以下命令以获取并安装TLS证书。

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d etebase.yourdomain.com

哪里:

  • --apache:使用Apache插件。
  • --nginx:使用nginx插件。
  • --agree-tos:同意服务条款。
  • --redirect:通过301重定向强制HTTPS。
  • --hsts:将Strict-Transport-Security标头添加到每个HTTP响应。 强制浏览器始终对域使用TLS。 防御SSL / TLS剥离。
  • --staple-ocsp:启用OCSP装订。 有效的OCSP响应被装订到服务器在TLS期间提供的证书。

现在应该获得证书并自动安装。

etebase服务器ubuntu certbot https

步骤7:建立使用者帐户

创建一个超级管理员用户。

./manage.py createsuperuser

etebase ubuntu创建超级用户

然后去 etebase.example.com/admin 并登录到管理控制台。 接下来,您可以创建用于同步日历,联系人,任务和便笺的单个用户帐户。 请注意,您不需要在EteSync管理控制台中为用户创建密码,因为Etebase使用零知识证明进行身份验证。

etesync创建用户

现在,我们需要设置客户端以使用EteSync。

如何在Ubuntu桌面上安装Evolution EteSync模块

演化 是GNOME桌面环境中的默认组件套件。 您可以使用以下命令将其安装在Ubuntu桌面上:

sudo apt install evolution

要在Evolution中使用EteSync,我们需要按照以下步骤安装用于Evolution的EteSync模块。

克隆 libetebase 资料库。

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

转到新创建的目录。

cd libetebase/

安装所需的软件包以从源代码构建软件包。

sudo apt install build-essential libssl-dev cargo

编译源程序包。

make

安装二进制文件。

sudo make install

然后回到上一个目录。

cd ..

克隆 Evolution-EteSync 资料库。

git clone https://gitlab.gnome.org/GNOME/evolution-etesync

转到新创建的目录。

cd evolution-etesync/

安装所需的软件包以从源代码构建软件包。

sudo apt install cmake intltool evolution-data-server-dev evolution-dev libedata-book1.2-dev libedata-cal2.0-dev libecal2.0-dev libebook1.2-dev

编译并安装软件包。

mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr ..
make -j
sudo make -j install

在Evolution中使用EteSync

现在,在您的Ubuntu桌面上启动Evolution应用程序。 点击 按钮,然后添加一个新的 收款账户

演化添加新的收藏帐户ubuntu

然后输入您的EteSync使用名和服务器地址。 请注意,您需要添加 https:// 作为服务器地址的前缀。 选择 查找一个EteSync帐户 并取消其他所有选项。 然后点击 抬头 按钮。

在Evolution ubuntu中添加一个etesync帐户

它将要求您输入密码以继续。 实际上是时候设置密码了,所以单击 输入密码 链接并设置密码。

etesync零知识证明ubuntu

输入密码后,单击“重试”按钮,它将找到一个候选者。 点击 下一个 按钮继续。

etesync收集帐户ubuntu

与NextCloud同步

如果您拥有一台自托管的Nextcloud服务器,并且在Nextcloud服务器上安装了Calendar,Tasks或Contacts应用程序,则可以在Evolution中添加Nextcloud DAV服务器,以便对其进行同步。 只需添加另一个 收款账户 在Evolution中,输入您的Nextcloud用户名和CalDAV / CardDAV地址,然后选择 查找CalDAV / CardDAV服务器,取消其他所有选项。 然后输入您的Nextcloud密码。 Nextcloud CalDAV / CardDAV地址应为 https://nextcloud.yourdomain.com/remote.php/dav

etesync nextcloud Ubuntu

使用iOS EteSync应用

要在iOS上同步日历,联系人和任务,首先需要在iOS中设置CalDAV / CardDAV帐户。 转到 设定值 应用-> 日历 -> 帐目 -> 新增帐户 -> 其他,然后添加一个CalDAV和CardDAV帐户。 CalDAV用于同步日历,而CardDAV用于同步设备上的联系人。

如果您拥有自托管的Nextcloud服务器,则可以使用Nextcloud CalDAV / CardDAV帐户。 如果您没有账户,只需使用一个假账户即可。

ios添加caldav carddav帐户

接下来,从应用程序商店安装EteSync应用程序。 然后添加您的EteSync帐户。

etesync ios客户端

登录到您的EteSync帐户后,转到 设定 EteSync应用程序中的菜单。 在里面 高级 部分,选择您的CardDAV帐户 通讯录同步 并选择您的CalDAV帐户 同步日历和提醒

标签ios ios etesync

包起来

我希望这篇文章可以帮助您在Ubuntu上设置自己的EteSync服务器。 与往常一样,如果您发现此帖子有用,请订阅我们的免费新闻通讯以获取更多提示和技巧trick

Sidebar