Synology DSM 7.x で Joplin Server をデプロイするなら、Container Manager の「プロジェクト」機能を使うのが最も簡単です。中身は Docker Compose で、PostgreSQL データベースコンテナと Joplin Server コンテナを 1 つずつ用意し、イメージ取得、コンテナ作成、日常的な起動管理は Synology に任せます。
この記事は Synology 専用版です。File Station のディレクトリ、Container Manager のプロジェクト、LAN アクセス、外部同期、リバースプロキシなど、実際の操作に重点を置きます。Linux サーバーで docker-compose.yml を手書きしたことがある人には馴染みのある流れです。Synology の GUI 中心で使っている人も、そのまま進められます。
どんな場面に向いているか
Joplin Server は、ノートの同期データを自分の機器に置きたいユーザーに向いています。Windows、macOS、iOS、Android などの Joplin クライアントを、自分のサーバー経由で同期できます。第三者のクラウドストレージに頼る必要がありません。
Synology にデプロイするのが向いているのは、次のようなケースです。
- NAS が常時稼働しており、家庭用または個人用の同期サーバーにできる;
- LAN 内だけで PC とスマートフォンを同期したい;
- Tailscale、WireGuard、リバースプロキシで外部同期したい;
- SSH だけでなく、Container Manager の GUI でコンテナを管理したい。
Joplin を一時的に試すだけなら、必ずしも Joplin Server は必要ありません。Joplin は WebDAV、S3、Dropbox などの同期方式もサポートしています。ただし長期的にセルフホストするなら、Joplin Server のほうが機能としてまとまっています。
ステップ 1:File Station でディレクトリを準備する
Synology の File Station を開き、docker 共有フォルダに入ります。
次のディレクトリを作成します。
|
|
さらに joplin の中にサブディレクトリを作ります。
|
|
最終的な構造はおおよそ次のようになります。
|
|
postgres_data は PostgreSQL データベースを保存するためのものです。Joplin Server の同期データは主にデータベースに入るため、このディレクトリは永続化が必須です。後でコンテナを更新または再作成しても、このディレクトリが残っていればデータは消えません。
ステップ 2:Container Manager でプロジェクトを作成する
Synology の Container Manager を開きます。
- 左側の
プロジェクトをクリックする; 新規作成またはCreateをクリックする;- プロジェクト名を
joplin-serverにする; - 先ほど作成した
/docker/joplinをパスに選ぶ; - ソースとして
docker-compose.yml を作成を選ぶ。
次の Compose 設定を貼り付けます。
|
|
必ず変更する箇所は 2 つです。
POSTGRES_PASSWORD:データベースのパスワード。2 箇所で完全に一致させます;APP_BASE_URL:Joplin クライアントが実際にサーバーへアクセスするアドレス。
LAN 内だけで使う場合は、APP_BASE_URL を Synology の LAN IP にします。
|
|
HTTPS リバースプロキシを設定済みなら、外部ドメインを直接指定します。
|
|
APP_BASE_URL は適当に入れてはいけません。Joplin クライアント同期、Web リダイレクト、添付ファイルリンクはすべてこれに依存します。実際にアクセスするアドレスをそのまま書いてください。
問題なければ、次へ進んで完了します。Container Manager が postgres:16 と joplin/server:latest を自動的にダウンロードし、2 つのコンテナを起動します。
ステップ 3:コンテナ状態を確認する
プロジェクト作成後、Container Manager のプロジェクトページで joplin-server を確認します。
通常は次の 2 つのコンテナがあります。
joplin-dbjoplin-server
どちらも緑色で実行中なら、次へ進めます。
正常に起動しない場合は、まずプロジェクトログを見てください。よくある原因は次のとおりです。
- データベースパスワードが 2 箇所で一致していない;
postgres_dataディレクトリの権限に問題がある;- Synology の
22300ポートが他のサービスに使われている; - YAML のインデントが崩れている。
ステップ 4:Joplin Server に初回ログインする
ブラウザーで次を開きます。
|
|
例:
|
|
デフォルト管理者アカウントは次のとおりです。
|
|
デフォルトパスワードは次のとおりです。
|
|
初回ログイン後、すぐに管理者パスワードを変更してください。特に外部アクセスを設定する予定がある場合、この手順は絶対に飛ばさないほうがよいです。
管理画面で管理者メールアドレスを変更できる場合は、自分のメールに変えておくと後で識別しやすくなります。
ステップ 5:一般ユーザーを作るべきか
1 人で使うだけなら、変更後の管理者アカウントで同期しても動きます。ただし、より整った運用にするなら、一般ユーザーを作成し、そのユーザーでノートを同期し、管理者は管理画面専用にするのがおすすめです。
管理画面での手順です。
Usersに入る;Add userをクリックする;- メールアドレスとパスワードを入力する;
- 保存する。
SMTP を設定していない場合、システムは有効化メールを送信したと表示しますが、実際には受信できません。その場合は管理画面の Emails ページに入り、未送信の有効化メールを見つけ、中の有効化リンクをコピーしてブラウザーで開けばアカウントを有効化できます。
個人利用なら SMTP なしでも問題ありません。複数人で長期利用する場合は、後で SMTP を設定したほうが登録、有効化、パスワードリセットが楽になります。
ステップ 6:Joplin クライアントの同期を設定する
PC またはスマートフォンの Joplin クライアントを開きます。
Options / Settingsに入る;Synchronizationを開く;- 同期先に
Joplin Serverを選ぶ; Joplin Server URLに、先ほど設定したAPP_BASE_URLを入力する;- ユーザー名に管理者メールまたは一般ユーザーのメールを入力する;
- 対応するパスワードを入力する;
Check synchronization configurationをクリックする。
チェックが成功したら保存し、同期を開始します。
失敗する場合は、まずクライアントからブラウザーで Joplin Server を開けるか確認します。多くの同期問題は Joplin 本体ではなく、APP_BASE_URL の誤り、未有効化アカウント、リバースプロキシ証明書の異常、スマートフォンが同じネットワークにいないことが原因です。
外部同期案 1:Tailscale または WireGuard
最も安全で扱いやすい外部同期方法は、スマートフォンや PC を VPN で自宅ネットワークに戻すことです。
よく使われる選択肢は次のとおりです。
- Tailscale;
- WireGuard;
- ZeroTier。
この方法の利点は、Joplin Server を直接インターネットに公開しなくてよいことです。Joplin クライアントの URL は、引き続き Synology の LAN アドレスで構いません。
|
|
外出先では、まず Tailscale または WireGuard に接続し、その後 Joplin を開いて同期します。
公開 IP、DDNS、証明書、ポート転送を扱いたくないなら、このルートが最も安定しています。欠点は、外部デバイスごとに VPN 接続が必要なことです。
外部同期案 2:Synology リバースプロキシと HTTPS
どのネットワークからでも Joplin を直接同期したい場合は、HTTPS ドメインを設定します。
大まかな流れは次のとおりです。
- ドメインまたは DDNS を用意する;
- ルーターで
443ポートを Synology に転送する; - Synology の
コントロールパネル -> ログインポータル -> 詳細 -> リバースプロキシサーバーで新しいルールを作成する; - 送信元を
https://joplin.example.com:443にする; - 宛先を
http://127.0.0.1:22300またはhttp://群暉內網IP:22300にする; - ドメイン用の HTTPS 証明書を取得して割り当てる;
- Compose の
APP_BASE_URLをhttps://joplin.example.comに変更する; - Container Manager でプロジェクトを再デプロイする。
リバースプロキシでは、一般的な転送ヘッダーをカスタムヘッダーに追加しておくとよいです。
|
|
Synology 標準のリバースプロキシ画面を使う場合、DSM の小バージョンによって項目名が少し違うことがあります。画面上の「カスタムヘッダー」や「WebSocket」関連の選択肢に従って追加してください。
また、Joplin で大きな添付ファイルを同期すると、アップロードサイズ制限に当たることがあります。Nginx Proxy Manager や手書き Nginx を使う場合は次を設定します。
|
|
Synology 内蔵リバースプロキシにこの項目がない場合は、まず通常の添付ファイル同期を試してください。大きなファイルを頻繁に同期するなら、Nginx Proxy Manager や Caddy のほうが柔軟です。
APP_BASE_URL を変更したら再デプロイする
最初は LAN IP でテストし、あとから HTTPS ドメインに変える人は多いです。それ自体は問題ありませんが、クライアント側だけを変えてはいけません。
Container Manager プロジェクトの Compose 設定も同時に変更します。
|
|
その後、プロジェクトを再デプロイして、コンテナの環境変数を反映させます。
APP_BASE_URL が古いままだと、次のような問題が起きることがあります。
- クライアントの同期チェックが失敗する;
- ログイン後に間違ったアドレスへリダイレクトされる;
- 添付ファイルリンクが異常になる;
- リバースプロキシ配下でプロトコル判定が間違う。
バックアップの要点
Synology 上で最も重要なのはこのディレクトリです。
|
|
ここに PostgreSQL データベースが保存されます。つまり Joplin Server の中核となる同期データです。Hyper Backup などのバックアップ計画に含めることをおすすめします。
より安全な運用は次のとおりです。
docker/joplin/postgres_dataを定期的にバックアップする;- Joplin クライアント側にもノートのコピーを残す;
- 重要なノートは定期的に JEX としてエクスポートする;
- コンテナ更新前にバックアップが使えることを確認する。
Joplin Server のイメージやコンテナ設定だけをバックアップしても十分ではありません。イメージは再ダウンロードできますが、データベースこそがあなたのデータです。
まとめ
Synology DSM 7.x に Joplin Server を入れる手順は、実際には多くありません。
- File Station で
docker/joplin/postgres_dataを準備する; - Container Manager のプロジェクト機能で Compose を作成する;
POSTGRES_PASSWORDとAPP_BASE_URLを正しく設定する;- 初回ログイン後すぐに管理者パスワードを変更する;
- クライアントの同期先に Joplin Server を選ぶ;
- 外部アクセスは Tailscale / WireGuard を優先し、必要なら HTTPS リバースプロキシを設定する。
最もつまずきやすいのは APP_BASE_URL です。このアドレスが正しく、データベースディレクトリが永続化されていれば、Joplin Server は Synology 上で安定したプライベートノート同期環境になります。