Solosyncのセルフホスト方式では、自分で設置したSync Serverにデータを保存します。
必要な環境
- PHP 8.2以上(
pdo_mysql、json、hash、openssl拡張) - MySQL 8以上、または対応するMariaDB
- HTTPSで公開できる環境
- Apache環境(
.htaccessが使えるもの)、または自由にDocumentRootに設定できるWebサーバー
1. サーバーファイルを配置する
Sync ServerのReleaseの配布ZIPのsolosync-server/を展開してアップロードします。
.htaccessが動作するサーバーであれば、最悪フォルダ全体がアクセス可能でも秘密鍵等は守られますが、そうでない場合はpublic/だけをDocumentRootに設定し、private/、src/、migrations/をWebからアクセスできないようにしてください。もちろん、.htaccessが動作するApacheでもDocumentRootを適切に設定したほうがいいですが。
以降の説明では、https://example.com/solosync/に設置したとして進めます。テキト〜に読み替えてください。
2. 初回セットアップを開く
ブラウザでhttps://example.com/solosync/setup.phpを開きます。初回アクセスで自動的にprivate/setup.key.phpに本人確認用のキーが作られます。ファイルマネージャー等でそのファイルを開き、return '...';の引用符の中身だけをセットアップ画面へ貼り付けてください。(ファイル全体は貼り付けないで)
続けてDB接続情報と管理者パスワード等を入力します。
ブラウザ版Solocordを使う場合、許可Originにブラウザ版のURLを設定しないと同期できません。公式Web版はhttps://sc.kakikou.appです。自分でアプリをセルフホストしてる人はそのURLを設定してください。(現状アプリ自体のセルフホストは未対応)
モバイル、デスクトップのみ使う場合はCORSのOrigin登録は不要です。
Cloudflare等のリバースプロキシ的なものを使っている人はX-Forwarded-Protoをオンにしてください。具体的に言えば、Cloudflareで暗号化モード:フレキシブル を選んでいる場合、これをオンにしないとHTTPで接続してるという判定になり接続ができません。
3. 接続キーを発行する
https://example.com/solosync/admin/にアクセスし、ユーザー名adminとセットアップ時のパスワードでログインします。管理画面で接続キーを作成し、表示されたキーを安全な場所へ控えてください。キー本文が表示されるのは作成時の1回だけです。
4. Solocordから接続する
SolocordのSolosync設定で「セルフホスト」を選び、Sync Server URLに設置先のベースURL(例https://example.com/solosync)、接続キーに管理画面で発行した値を入力します。初めて使う空のサーバーは、接続したSolosync Groupに結び付けられます。
すでに別のGroupがあるサーバーに接続する場合、アプリが復元または統合の確認を表示することがあります。内容を確認してから選択してください。バックアップしてから移行することをおすすめします。
諸注意
SyncPack(同期データ)はエンドツーエンド暗号化されてません。ホスト管理者と信頼されたプラグインは同期内容を読めます。エンドツーエンドとは同期する端末同士で暗号化しあうことで中継地(=セルフホストSolosyncサーバー)では一切通信内容を読めなくするものですが、Solosync Selfhostはそもそもその人自身がホストすることを前提に作られているため、サーバー側でメモの内容を傍受できます。逆に暗号化されてないおかげでSolosync Pluginが動作します。