メモアプリ探しの旅
定期的にメモアプリ探しの旅に出ます。
今回はスマートフォンを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の公開用定義ファイルも作成しておきます。
今回はリバースプロキシ方式です。
書き方は以下のページを参考にします。
※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を利用します。
-
.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
-
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
-
実行します
$ docker-compose up -d
最初は「docker-compose up」でログをみることをお勧めします。
初期設定
-
ブラウザで定義したURLを開きます
-
Emailに「admin@localhost」、Passwordに「admin」を入力し、「Login」をクリックします
あとはメールアドレス、パスワードを変更しましょう。
そのあと、利用するユーザーを追加しておくことをお勧めします。
adminを利用することもありですが、通常ユーザーを作ってそのまま使うことをお勧めします。
あとはJoplinアプリ側で設定すれば利用できます。
コメント