Joplin Serverをdockerで構築

Joplin
Sponsored Link

メモアプリ探しの旅

定期的にメモアプリ探しの旅に出ます。
今回はスマートフォンをGoogle Pixel 7aに変えたタイミングで、ちょっと旅に出ました。

メモアプリに求めること

スマートフォンのメモアプリを探すにあたって、私は「スマートフォン、PCの間で同じメモが閲覧できること」を重要視しています。

正直スマートフォンだけで完結することはほとんどないので、この機能は必須です。
そして、もう一つ追加で「連携には可能な限りSelf host、つまり自前の環境が(できればDockerで構築できて)使用できること」があります。

書いている内容は大したことを書いていないとは思いますが、メモは書いている人にとってセンシティブな内容が含まれる事が多いと思っています。
なので、できればデータは個人の管理できる範囲内でとどめたいという思いがあります。

dockerがいいのは、自宅にdocker環境があるからです。

JoplinとObsidian


スマートフォンにインストールするメモアプリでは「Joplin」と「Obsibian」が有名です。

正直なところ今はどちらも使用して様子を見ているところです。

ちなみにそれぞれが提供しているクラウドサービスを利用すればデバイス間での同期は行えます。

そして同期についてもう少し調べると

Joplin:Self Hostでサーバーをdockerで構築できる。
Obsidian:Gitを利用した同期プラグインがある。

つまり、どちらもSelf Host環境での同期が可能なように見えます。

今回はJoplinの同期のためにJoblin Serverをたてたので、その備忘です。

(ObsidianのGit同期は、既に構築しているgitbucketを利用しようと計画していますが、どうやらGitHub前提のようで、今のところうまくいっていません。。。)

ざっくりとした流れ

手順のざっくりとした流れです。

順序 内容
0 環境準備
1 サーバー構築
2 初期設定

手順

環境準備

まず、環境を準備します。

必要となる環境は以下です。

環境 準備 備考
docker docker環境の構築(docker composeを含む) 既存環境を利用
DB(PostgreSQL) docker上へのPostgreSQLの構築+DB、ロールの作成 既存環境を利用
Webサーバー(nginx) docker上へのNginxの構築+公開用定義ファイルの作成 既存環境を利用
外部公開環境 FirewallやDNS、SSL証明書の準備 既存環境を利用

既存環境を利用するので、それぞれの細かな手順は割愛しますが、以下の内容だけは補足で書いておきます。

PostgreSQL DB、ロールの作成

PostgreSQLのDBを作成しておきます。あわせてロールも作成します。

DatabaseName:データベース名
RoleName:ロール名
RolePassword:ロールパスワード
SchemaName:スキーマ名

$ create database DatabaseName;
$ create role RoleName with login password 'RolePassword';
$ alter database DatabaseName owner to RoleName ;
$ create schema SchemaName AUTHORIZATION RoleName;

nginx公開用定義ファイルの作成

Nginxの公開用定義ファイルも作成しておきます。
今回はリバースプロキシ方式です。

書き方は以下のページを参考にします。

Problem setting up Joplin Server / nginx / docker
Thanks again. I tied yesterday evening but I didn't get it to work. I think we have some different configs in our mind: ...

※serverの定義部分は割愛しています※

location / {
    proxy_redirect off;
    rewrite        ^/joplin/(.*)$ /$1 break;
    proxy_pass     http://127.0.0.1:22300;

    proxy_set_header X-Forwarded-Host  $host;
    proxy_set_header Host              $host;
    proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP         $remote_addr;
    }

サーバー構築

それではdocker環境でサーバーを構築します。docker composeを利用します。

  1. .envファイルを用意します
    ファイルは.env-sampleにあるので、コピーして「.env」として保存します。

    URL:公開URL
    DatabaseName:データベース名
    RoleName:ロール名
    RolePassword:ロールパスワード
    SchemaName:スキーマ名
    PostgreSQLHostName:PostgreSQLサーバーホスト名

    # =============================================================================
    # PRODUCTION CONFIG EXAMPLE
    # -----------------------------------------------------------------------------
    # By default it will use SQLite, but that's mostly to test and evaluate the
    # server. So you'll want to specify db connection settings to use Postgres.
    # =============================================================================
    #
    APP_BASE_URL=URL
    APP_PORT=22300
    #
    DB_CLIENT=pg
    POSTGRES_PASSWORD=RolePassword
    POSTGRES_DATABASE=DatabaseName
    POSTGRES_USER=RoleName
    POSTGRES_PORT=5432
    POSTGRES_HOST=PostgreSQLHostName
    
    # =============================================================================
    # DEV CONFIG EXAMPLE
    # -----------------------------------------------------------------------------
    # Example of local config, for development. In dev mode, you would usually use
    # SQLite so database settings are not needed.
    # =============================================================================
    #
    # APP_BASE_URL=http://localhost:22300
    # APP_PORT=22300
    
  2. docker-composeの準備
    docker composeを利用するため、docker-compose.yamlを用意します。

    version: '3'
    
    services:
        app:
            image: joplin/server
            ports:
                - 22300:22300
            env_file:
                - .env
            restart: always
            container_name: joplin
    
  3. 実行します

    $ docker-compose up -d
    

    最初は「docker-compose up」でログをみることをお勧めします。

初期設定

  1. ブラウザで定義したURLを開きます

  2. Emailに「admin@localhost」、Passwordに「admin」を入力し、「Login」をクリックします

あとはメールアドレス、パスワードを変更しましょう。

そのあと、利用するユーザーを追加しておくことをお勧めします。

adminを利用することもありですが、通常ユーザーを作ってそのまま使うことをお勧めします。

あとはJoplinアプリ側で設定すれば利用できます。

コメント