本教程將向您展示如何安裝 同步 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 服務器

默認情況下,EteSync 將用戶信息存儲在 SQLite 數據庫。如果你想使用 瑪麗亞數據庫,請按照以下步驟操作。

由於使用 MariaDB 10.3 運行 EteSync 時出現問題,您應該使用 MariaDB 的最新穩定版本 10.5。要安裝最新的穩定版本,請通過運行以下命令將 MariaDB 存儲庫添加到 Ubuntu 20.04:

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] https://mirror.lstn.net/mariadb/repo/10.5/ubuntu focal main'

要將存儲庫添加到 Ubuntu 18.04,只需替換 focal 什麼時候 bionic 在第三個命令中。

然後更新包索引並安裝 MariaDB 服務器。

sudo apt update

sudo apt install mariadb-server

將現有 MariaDB 服務器升級到最新版本時,您可能會看到以下消息:我們建議您選擇 N 保留您當前的版本,然後查看您需要更改的內容。

如果你有包依賴問題,你可以通過運行以下命令來修復它們:

sudo apt --fix-broken install

安裝完成後,MariaDB 服務器將自動啟動。您可以通過以下方式檢查狀態:

systemctl status mariadb

如您所見,它處於活動狀態並正在運行。

systemctl 狀態 mariadb

提示: 根據 如果上述命令沒有立即退出,則重新獲得對終端的控制權。

如果它沒有運行,您可以手動啟動它。

sudo systemctl start mariadb

要在啟動時啟用自動啟動,請運行

sudo systemctl enable mariadb

步驟 2:在 MariaDB 數據庫服務器上創建 EteSync 數據庫和用戶

使用以下命令登錄 MariaDB 數據庫服務器。 由於 MariaDB 目前使用 unix_socket 無需輸入 MariaDB 根密碼即可對用戶登錄進行身份驗證的插件。只需添加前綴 mysql 命令 sudo.

sudo mysql

接下來,為 EteSync 創建一個數據庫。為本教程命名數據庫 etebase. 你可以使用任何名字。

create database etebase;

創建數據庫用戶。同樣,您可以為該用戶使用您喜歡的任何名稱。交換 your-password 使用您選擇的密碼。

create user etebase@localhost identified by 'your-password';

授予此用戶所有權限 etebase 數據庫。

grant all privileges on etebase.* to etebase@localhost;

更新權限並退出。

flush privileges;

exit;

etebase mariadb ubuntu

第 3 步:在 Ubuntu 上安裝 EteSync 2.0 服務器

安裝 Python3 虛擬環境創建器和一些包構建工具。

sudo apt install python3-virtualenv python3-pip gcc build-essential

轉到您的主目錄。

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 在步驟 1 中創建的 MariaDB 數據庫。顯然你應該使用自己的密碼 etebase 用戶。

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

保存並關閉文件。 Etebase Server 是一個 Django 應用程序,您可以使用 Daphne (Django Channels HTTP/WebSocket Server) 來運行 Etebase。 安裝達芙妮。

pip3 install daphne

由於我們使用 MySQL/MariaDB 作為我們的數據庫引擎,我們還需要安裝它。 mysqlclient 模塊。

sudo apt install libmysqlclient-dev

pip3 install mysqlclient

安裝 aioredis 使用 Redis 緩存的模塊。

pip3 install aioredis

為 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 作為 systemd 服務在後台運行會更方便。根據 Ctrl+C 停止當前的 EteSync 實例。

使用以下命令為 EteSync 創建一個 systemd 服務單元文件:

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

將 EteSync 作為系統服務運行

保存並關閉文件。現在您可以啟動並啟用 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 / https://127.0.0.1:8001/
   ProxyPassReverse / https://127.0.0.1:8001/
   Alias /static /home/username/etebase/static

</VirtualHost>

保存並關閉文件。然後啟用這個虛擬主機。

sudo a2ensite etebase.conf

重啟阿帕奇

sudo systemctl restart apache2

現在您可以使用您的域名訪問 EteSync Web 界面 etebase.example.com.

nginx

如果您使用 Nginx 網絡服務器,請安裝 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 https://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.

故障排除

如果你看到 bad request (400) 嘗試訪問 EteSync Web 界面時出錯。 確保您已將 etesync 服務器名稱添加到 . allowd_hosts 它描述在 etebase-server.ini 文檔。然後重啟etebase(sudo systemctl restart etebase)。

你也可以 etebase-server.ini 文件,即更改

debug = false

到達

debug = true

然後重啟etebase。

sudo systemctl restart etebase

接下來,檢查 systemd 服務日誌。

sudo journalctl -eu etebase

第 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:強制 HTTPS 超過 301 重定向。
  • --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 然後登錄到管理控制台。然後,您可以創建個人用戶帳戶來同步日曆、聯繫人、任務和便箋。 請注意,Etebase 使用零知識證明進行身份驗證,因此您無需在 EteSync 管理控制台中為您的用戶創建密碼。

創建一個 etesync 用戶

接下來,您需要設置您的客戶端以使用 EteSync。

如何在您的 Ubuntu 桌面上安裝 Evolution EteSync 模塊

進化 GNOME 桌面環境的默認組件套件。您可以使用以下命令將其安裝在您的 Ubuntu 桌面上:

sudo apt install evolution

要將 EteSync 與 Evolution 一起使用,您需要按照以下說明為 Evolution 安裝 EteSync 模塊。

克隆 libetebase 存儲庫。

sudo apt install git

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

將 EteSync 與 Evolution 結合使用

在 Ubuntu 桌面上啟動 Evolution 應用程序。點擊 新的 單擊工具欄按鈕添加一個新的 應收賬款.

Evolution 添加了新的收藏夾帳戶 ubuntu

然後輸入您的 EteSync 用戶名和服務器地址。請注意,您必須添加 https:// 作為服務器地址前綴。選擇 找到您的 EteSync 帳戶 取消選中所有其他選項。然後點擊 調查 按鈕。

將 etesync 帳戶添加到 Evolution ubuntu

系統將提示您輸入密碼以繼續。這是真正設置密碼的時候了,所以點擊 輸入密碼 鏈接以設置您的密碼。

etesync 零知識證明 ubuntu

輸入密碼後,單擊重試按鈕以搜索建議。點擊 下一個 單擊按鈕繼續。

etesync 最喜歡的帳戶 ubuntu

與 NextCloud 同步

如果您有一個自託管的 Nextcloud 服務器並在 Nextcloud 服務器上安裝了日曆、任務或聯繫人應用程序,您可以將 Nextcloud DAV 服務器添加到 Evolution 以便它可以同步。只需添加另一個 應收賬款 在 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 etesync caldav carddav 同步

包起來

我們希望本文能幫助您在 Ubuntu 上設置自己的 EteSync 服務器。與往常一樣,如果您發現本文對您有幫助,請註冊我們的免費時事通訊以獲取提示和技巧。