メモアプリ Joplin のサーバーをセルフホストする

メモアプリ Joplin のサーバーをセルフホストする

前回 の続き。

概要

個人的なメモのデータは自分で管理したい (企業に預けたくない) が、デバイス間の同期やコラボレーション機能も欲しい、というわけで下記の要件を満たすメモアプリを探した。

  • セルフホスト可能
  • デバイス間の同期
  • コラボレーション機能
  • Markdown 対応
  • タグ機能
  • フォルダ機能 (できれば)

調べた結果、Joplin が条件を満たしていたので導入することにした。

サーバーの設定

Joplin の導入

Docker Compose を使って動かす。

ファイル構成

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

ファイルの作成

laurent22/joplin を参考に設定する。

  • 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
    57
    
    version: '3'
    
    networks:
        proxy:
            external: true
        joplin:
            driver: bridge
    
    services:
        db:
            image: postgres:13
            volumes:
                - ./data/postgres:/var/lib/postgresql/data
    #        ports:
    #            - "5432:5432"
            restart: unless-stopped
            environment:
                - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
                - POSTGRES_USER=${POSTGRES_USER}
                - POSTGRES_DB=${POSTGRES_DATABASE}
            networks:
                - joplin
            labels:
                - "com.centurylinklabs.watchtower.enable=true"
        app:
            image: joplin/server:latest
            depends_on:
                - db
            ports:
                - "22300:22300"
            restart: unless-stopped
            environment:
                - APP_PORT=22300
                - APP_BASE_URL=${APP_BASE_URL}
                - DB_CLIENT=pg
                - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
                - POSTGRES_DATABASE=${POSTGRES_DATABASE}
                - POSTGRES_USER=${POSTGRES_USER}
                - POSTGRES_PORT=${POSTGRES_PORT}
                - POSTGRES_HOST=db
                - MAILER_ENABLED=1
                - MAILER_HOST=${MAILER_HOST}
                - MAILER_PORT=${MAILER_PORT}
                - MAILER_SECURE=1
                - MAILER_AUTH_USER=${MAILER_AUTH_USER}
                - MAILER_AUTH_PASSWORD=${MAILER_AUTH_PASSWORD}
                - MAILER_NOREPLY_NAME=${MAILER_NOREPLY_NAME}
                - MAILER_NOREPLY_EMAIL=${MAILER_NOREPLY_EMAIL}
            networks:
                - proxy
                - joplin
            labels:
                - "traefik.enable=true"
                - "traefik.http.routers.joplin.rule=Host(`${TRAEFIK_JOPLIN}`)"
                - "traefik.http.routers.joplin.entrypoints=https"
                - "traefik.http.routers.joplin.tls=true"
                - "com.centurylinklabs.watchtower.enable=true"
    
    • .env
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      
      TRAEFIK_JOPLIN=notes.tsukimiya.io
      
      APP_BASE_URL=https://<URL>
      APP_PORT=22300
      
      DB_CLIENT=pg
      POSTGRES_PASSWORD=<DB のパスワード>
      POSTGRES_DATABASE=joplin
      POSTGRES_USER=joplin
      POSTGRES_PORT=5432
      POSTGRES_HOST=localhost
      
      MAILER_HOST=<SMTP サーバーのホスト名>
      MAILER_PORT=<SMTP サーバーのポート>
      MAILER_AUTH_USER=<SMTP サーバーのユーザー名>
      MAILER_AUTH_PASSWORD=<SMTP サーバーのパスワード>
      MAILER_NOREPLY_NAME=<送信者名>
      MAILER_NOREPLY_EMAIL=<送信者のメールアドレス>
      

今回は複数ユーザーでの利用を想定して、.env でユーザー登録用のメール設定を行っている。

起動

1
docker compose up -d

起動後、.env で指定したドメインをブラウザで開き、Email: admin@localhost Password: admin でログインする。ログイン後は Admin メニューから Email とパスワードを変更できる。

PC の設定

Joplin を使用するには専用のクライアントが必要になる。PC 向けのクライアントは GitHub に上がっているのでダウンロードする。

起動したら [Tools] > [Options] > [Synchronization] から Synchronization target を [Joplin Server (Beta)] に変更し、先程設定した情報を入力する。

所感

概要で挙げた要件をすべて満たしているだけあって、使用感は概ね満足。タグ機能に加えて「ノートブック」がフォルダの役割を果たしており、乱雑になりやすい各メモの整理も簡単だ。

1つ不満点を挙げるとすればコラボレーション機能か。定期的に (最小は5分毎) ノートの差分を同期サーバーにアップロードする形なので、HackMD のように複数人でリアルタイムに同じノートを編集することができない。

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