Etebase をセルフホストして PC と Android で同期するカレンダー・タスク管理の仕組みを構築する

Etebase + etesync-dav + Thunderbird + Tasks.org + Etar でカレンダー・タスク管理する

前回 の続き。

構成

EteSync という E2EE でカレンダーやタスク、連絡先、メモなどを同期できるオープンソースのサービスがあり、そのセルフホスト版として Etebase がある。

サーバーには Etebase を構築し、PC ではクライアントとして Thunderbird を使う。Etebase は直接扱えないため、etesync-dav を利用して CalDAV サーバーとしてカレンダーを追加する。Android には Etebase との連携が強い EtarTasks.org を導入する。

サーバーの設定

Etebase の導入

Docker Compose を使って動かす。

ファイル構成

1
2
3
.
|-- .env
`-- docker-compose.yml

ファイルの作成

victor-rds/docker-etebase を参考に設定する。

  • docker-compose.yml

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    
    version: '3'
    
    volumes:
        etebase_static:
        etebase_data:
        postgres_data:
    
    networks:
        proxy:
            external: true
        etebase:
            driver: bridge
    
    services:
        etebase:
            image: victorrds/etebase:latest
            container_name: "etebase"
            volumes:
            - etebase_data:/data:rw
            - etebase_static:${STATIC_PATH}:rw
            environment:
            SERVER: asgi
            SUPER_USER: ${ADMIN_USER}
            SUPER_PASS: ${ADMIN_PASS}
            DB_ENGINE: postgres
            DATABASE_NAME: ${DB_NAME}
            DATABASE_USER: ${DB_USER}
            DATABASE_PASSWORD: ${DB_PASS}
            DATABASE_HOST: postgres
            depends_on:
            - postgres
            restart: unless-stopped
            networks:
            - proxy
            - etebase
            labels:
            - "traefik.enable=true"
            - "traefik.http.routers.etebase.rule=Host(`${TRAEFIK_ETEBASE}`)"
            - "traefik.http.routers.etebase.entrypoints=https"
            - "traefik.http.routers.etebase.tls=true"
            - "com.centurylinklabs.watchtower.enable=true"
    
        postgres:
            image: postgres:13
            container_name: "postgres"
            volumes:
            - postgres_data:/var/lib/postgresql/data
            environment:
            POSTGRES_PASSWORD: ${DB_PASS}
            POSTGRES_USER: ${DB_USER}
            POSTGRES_DB: ${DB_NAME}
            restart: unless-stopped
            labels:
            - "com.centurylinklabs.watchtower.enable=true"
            networks:
            - etebase
    
  • .env

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    
    ADMIN_USER=admin
    ADMIN_PASS=<パスワード>
    
    DB_NAME=etebase_db
    DB_USER=etebase
    DB_PASS=<パスワード 2>
    
    STATIC_PATH=/srv/etebase
    CERT_DOMAIN=<ドメイン>
    
    TRAEFIK_ETEBASE=<ドメイン>
    

起動

1
docker compose up -d

起動後、.env で指定したドメインをブラウザで開き、“It works!” と表示されていたら成功。

Android の設定

EteSync の導入

他のアプリと連携するため、インストールする。

F-DroidGoogle Play からインストールする。

アプリを開いたら (+) マークからアカウントの追加画面へ進む。Username は admin, Password は .env で指定した ADMIN_PASS が入る。今回はセルフホストした Etebase を使うので、Show advanced settings にチェックを入れて EteSync Server URL に https://<ドメイン> を入力する。

ログインが完了したら EteSync アプリ側での設定は終わり。

Etar の導入

カレンダーアプリは Etar を使う。シンプルで使いやすく、EteSync との親和性も高いため。

F-DroidGoogle Play からアプリをインストールする。

アプリを開いたらおそらくすでに EteSync の連携が完了していると思うが、されていなかったら手動で追加する。

Tasks.org の導入

タスク管理アプリには Tasks.org を使う。まだ使いこなせていないが機能はかなり豊富。

F-DroidGoogle Play からアプリをインストールする。

アプリを開いたら [Settings] > [Not signed in] > [EteSync] からログインする。これも同様に “Show advanced settings” からサーバーを指定する。

PC の設定

etesync-dav の導入

先述の通り Thunderbird では Etebase を直接追加できないので、CalDAV サーバーとして追加するために etesync-dav を導入する必要がある。

  1. Releases から最新の etesync-dav.exe をダウンロードし、起動する
  2. ブラウザから localhost:37358 を開く
  3. ログイン画面が表示されるので、“add a new account” をクリックする
  4. いつものようにログインする

ログインに成功すると Welcome admin! と歓迎される。記載されている情報は Thunderbird でカレンダーを追加するときに使用する。

Thunderbird の設定

Thunderbird のメール設定はすでに完了しているものとする。

  1. Ctrl + Shift + C と Ctrl + Shift + D でタスクとカレンダーのタブを開く
  2. 左メニューの “Calendar” 横のプラスマークからカレンダーの作成画面を開く
  3. “On the Network” を選択して [Next]
  4. etesync-dav で確認した Username と Server をそれぞれ入力して [Find Calendars]
  5. パスワードの入力を求められるので etesync-dav の [Copy Password] をクリックしたあとに貼り付けて [Sign in]
  6. 追加したいカレンダーとタスクを指定したら [Subscribe] で完了

まとめ

普段タスクも予定もスカスカなので全然使いこなせている感じがしないが、今のところは不便な点もなく、満足している。

Built with Hugo
テーマ StackJimmy によって設計されています。