Joplin Server は、Joplin 公式の同期サーバーです。自分で立てれば、ノートデータを自分の VPS、NAS、または家庭用サーバーに置き、デスクトップやスマートフォンのクライアントを第三者のクラウドストレージに頼らず同期できます。
現在いちばん扱いやすい方法は Docker Compose です。PostgreSQL コンテナを 1 つ、Joplin Server コンテナを 1 つ用意し、APP_BASE_URL を正しく設定すれば使い始められます。
この手順は、Ubuntu、Debian、CentOS、Synology、Unraid、OpenMediaVault など、Docker が動く環境を想定しています。
事前準備
始める前に、次を確認してください。
- 長時間稼働できるサーバーまたは NAS;
- Docker と Docker Compose がインストール済み;
- LAN 内だけで同期するなら内部 IP;
- 外部から同期するなら、ドメイン名と HTTPS リバースプロキシ;
- データベース用の強いパスワード。サンプルのまま使わないこと。
家の中の数台だけで同期するなら、http://内網IP:22300 のようなアドレスで動かせます。外出先のスマートフォンからも同期したい場合は、Nginx Proxy Manager、Caddy、Traefik などで HTTPS を使ってください。裸の HTTP サービスをそのままインターネットに公開するのは避けたほうが安全です。
Joplin 用の作業ディレクトリを作る
まず、Joplin Server の設定とデータベースデータを置くディレクトリを作ります。
|
|
パスは /opt/joplin や /volume1/docker/joplin など、自分の環境に合わせて構いません。重要なのは、PostgreSQL のデータディレクトリを永続化することです。コンテナを消したときにデータまで消えないようにします。
docker-compose.yml を書く
作業ディレクトリで Compose ファイルを作成します。
|
|
次の設定を貼り付けます。
|
|
特に変更が必要なのは次の 2 つです。
POSTGRES_PASSWORD:データベースのパスワード。dbとappの両方で完全に一致させます;APP_BASE_URL:Joplin クライアントがサーバーへアクセスする固定 URL。
APP_BASE_URL は非常に重要です。クライアントが実際に開けるアドレスを指定してください。
- LAN のみ:
http://192.168.1.10:22300 - 公開 IP:
http://your-public-ip:22300 - ドメインと HTTPS:
https://joplin.example.com
あとでアクセス先を変える場合は、APP_BASE_URL も変更してサービスを再起動してください。そうしないと、クライアント同期、Web のリダイレクト、添付ファイルリンクで問題が出ることがあります。
Joplin Server を起動する
docker-compose.yml があるディレクトリで実行します。
|
|
コンテナ状態を確認します。
|
|
初回起動に時間がかかる場合はログを見ます。
|
|
通常、Joplin Server は 22300 ポートで待ち受けます。ブラウザーで設定した APP_BASE_URL を開き、ログインページが表示されれば基本的なデプロイは成功です。
初回管理者ログイン
Joplin Server の初期管理者アカウントは次のとおりです。
|
|
初期パスワードは次のとおりです。
|
|
初回ログイン後、最初に必ず管理者パスワードを変更してください。特にインターネットからアクセスできる場合、初期パスワードを残すのは危険です。
管理画面にログインしたら、Change Password ページで admin を強いパスワードに変更します。
普段使いの同期アカウントを作る
日常のノート同期に管理者アカウントを直接使うのはおすすめしません。一般ユーザーを作成し、PC やスマートフォンではそのアカウントを使うほうが安全です。
管理画面での手順は次のとおりです。
Usersを開く;Add userをクリックする;- 普段使うメールアドレスとパスワードを入力する;
- ユーザーを作成する。
ここでよくある落とし穴があります。SMTP メールサーバーを設定していない場合、Joplin Server は有効化メールを送ったと表示しますが、実際には受信できません。
回避方法は簡単です。
- 管理画面に戻る;
Emailsメニューを開く;- 未送信の有効化メールを見つける;
- 中の有効化リンクをコピーする;
- ブラウザーの新しいタブで開き、アカウントを有効化する。
有効化後、この一般ユーザーでクライアント同期ができます。
Joplin クライアントの同期設定
デスクトップ版またはモバイル版の Joplin App で設定します。
設定またはOptionsを開く;同期またはSynchronizationに入る;- 同期先として
Joplin Serverを選ぶ; Joplin Server URLにAPP_BASE_URLを入力する;Email / Usernameに、有効化した一般ユーザーのメールアドレスを入力する;Passwordにそのユーザーのパスワードを入力する;Check sync configurationを実行する。
チェックが通れば保存して同期を開始できます。
失敗する場合は、まず次を確認します。
- クライアントから
APP_BASE_URLをブラウザーで開けるか; APP_BASE_URLが Compose ファイルと一致しているか;- 一般ユーザーが作成済みだけでなく、有効化済みか。
外部アクセスには HTTPS を使う
家庭内 Wi-Fi や LAN だけで使うなら HTTP でも通常は問題ありません。外部から同期するなら、リバースプロキシと HTTPS を使うのがおすすめです。
よく使われる方法は次のとおりです。
- Nginx Proxy Manager;
- Caddy;
- Traefik;
- 手動の Nginx 設定。
リバースプロキシを使う場合、APP_BASE_URL はクライアントが最終的にアクセスする HTTPS アドレスにします。
|
|
Nginx を手動で設定する場合、少なくとも次の 2 点に注意します。
- アップロード上限を上げる。例:
client_max_body_size 100M;。大きな添付ファイル付きノートの同期失敗を避けるためです; Host、X-Forwarded-For、X-Forwarded-Protoなどの header を正しく転送し、Joplin Server が URL やプロトコルを誤判定しないようにする。
簡単な Nginx リバースプロキシ例です。
|
|
Nginx Proxy Manager を使う場合は、通常ドメインをサーバーの 22300 ポートへプロキシし、SSL 証明書を有効にするだけで済みます。Compose の APP_BASE_URL も HTTPS ドメインに変更するのを忘れないでください。
よくある問題
APP_BASE_URL を変更しても反映されない
docker-compose.yml を変更したら、コンテナを再作成します。
|
|
それでもおかしい場合は、コンテナ内の環境変数が本当に更新されているか確認します。ファイルを書き換えただけでサービスを再起動していない、というケースがよくあります。
クライアント同期でネットワークエラーが出る
まず次を確認してください。
- スマートフォンや PC のブラウザーで Joplin Server を開けるか;
- リバースプロキシの証明書が正常か;
APP_BASE_URLがクライアントから実際にアクセスするアドレスか;- ファイアウォールで
22300または HTTPS ポートが許可されているか; - 一般ユーザーが有効化済みか。
大きな添付ファイルの同期に失敗する
Nginx や他のリバースプロキシ経由でアクセスしている場合、まずアップロードサイズ制限を確認してください。Nginx のデフォルト制限は小さいことがあるため、次のように設定します。
|
|
添付ファイルがさらに大きい場合は、値を上げます。
SMTP なしでも使えるか
使えます。個人や家庭用途なら SMTP なしでも動きます。ユーザー作成後の有効化メールは、管理画面の Emails ページから直接確認し、有効化リンクをコピーできます。
複数人のチームで長期利用するなら、SMTP を設定したほうがユーザー登録、パスワードリセット、通知がきちんと動きます。
バックアップのすすめ
Joplin Server で最も重要なデータは PostgreSQL にあります。今回の例では次の場所です。
|
|
このディレクトリを定期的にバックアップするか、PostgreSQL の pg_dump でデータベースバックアップを取ってください。Joplin Server コンテナだけをバックアップしても意味は薄いです。コンテナは再取得できますが、同期データはデータベースにあります。
クライアント側にもノートデータのコピーは残りますが、それだけを唯一のバックアップにしないほうが安全です。サーバーデータベースのバックアップ + クライアント側コピー + 必要に応じた JEX エクスポート、という形が安定します。
まとめ
Joplin Server の Docker Compose デプロイは難しくありません。実際に詰まりやすいのは主に次の 3 点です。
APP_BASE_URLはクライアントが実際にアクセスするアドレスにする;- 初期管理者パスワード
adminはすぐ変更する; - SMTP がない場合、新規ユーザーは管理画面の
Emailsページから有効化リンクをコピーする。
LAN 内で使うなら http://IP:22300 で同期できます。外部から使うなら HTTPS リバースプロキシを用意し、アップロードサイズ制限も調整してください。これらを押さえれば、Joplin Server は安定したプライベートノート同期環境になります。