docker compose ファイル一つで、cloud.foliowriter.app を支えているのと同じサーバーを自分のマシンで動かせます。ライブ共同編集、エンドツーエンド暗号化プロジェクト、組版プレビュー、PDF/Word/LaTeX への書き出し——Pandoc と Typst はイメージに同梱されています。個人利用は無料です。
mkdir folio && cd folio
curl -fsSLO https://foliowriter.app/selfhost/docker-compose.yml
FOLIO_DOMAIN=folio.example.com docker compose up -d
同梱の Caddy が、ドメイン用の Let’s Encrypt 証明書を取得・更新し、HTTPS とコラボレーション用の WebSocket をプロキシします。あとは https://folio.example.com を開くだけです。ドメインがまだない場合は、docker compose up folio-web を実行して http://localhost:8787 を開いてください。
foliowriter/folio-web は amd64 と arm64 向けに公開されています。FOLIO_ADMIN_EMAILS に自分のメールアドレスを入れてサーバーを起動します。
FOLIO_DOMAIN=folio.example.com [email protected] \
docker compose up -d
ここに列挙したアドレスは常に管理者になります——容量制限はなく、/admin ダッシュボード(アカウント、プロジェクト、ストレージ、トラフィック)も使えます。そのメールアドレスでサインインしてください。SMTP を設定していない場合、マジックサインインリンクはメールで送られる代わりにサーバーのログに出力されます。
docker compose logs folio-web | grep -i http
出力されたリンクを開けば、サインイン完了です。実際にメールを配信するには、SMTP_* 変数(どのリレーでも構いません)と、メール内のリンクが自分のドメインを使うよう PUBLIC_BASE_URL を設定してください。
設定はすべて環境変数で行います。docker-compose.yml の隣の .env ファイルに書いておけば、Compose が自動的に読み込みます。
FOLIO_DOMAIN=folio.example.com
PUBLIC_BASE_URL=https://folio.example.com
[email protected]
FOLIO_LIMIT_PROJECTS=0 # 0 = unlimited
FOLIO_LIMIT_STORAGE_MB=0 # 0 = unlimited
FOLIO_ENC_KEY=… # openssl rand -hex 32
| 変数 | 役割 |
|---|---|
FOLIO_DOMAIN | Caddy が配信し、証明書を取得するドメイン(デフォルトは localhost)。 |
PUBLIC_BASE_URL | サインインメールと共有リンクで使う絶対オリジン。 |
FOLIO_ADMIN_EMAILS | 常に管理者となるメールアドレス(カンマ区切り)。容量制限の対象外で、/admin を使えます。 |
SMTP_HOST / PORT / USER / PASS / SECURE / FROM | マジックリンクによるサインイン用の送信メール。未設定の場合 → リンクはコンテナのログに出力されます。 |
FOLIO_LIMIT_PROJECTS | アカウントごとのプロジェクト数(デフォルトは 2)。0 = 無制限——セルフホストする人の多くはこれを設定します。 |
FOLIO_LIMIT_STORAGE_MB | アカウントごとのストレージ容量(MB、デフォルトは 50)。0 = 無制限。 |
FOLIO_DEMOS | 自動リセットされるデモ用サンドボックスとして提供するプロジェクト ID(カンマ区切り)。 |
FOLIO_ALLOW_GUEST_PROJECTS | 1 に設定すると、訪問者がサインインせずにプロジェクトを作成できます(デフォルトでは作成にアカウントが必要です。デモは常に公開されています)。 |
FOLIO_ENC_KEY | 保存済みの認証アプリのシークレットを、保存時に暗号化するための 16 進 64 文字の鍵。 |
アップデート:docker compose pull && docker compose up -d。latest を追うよりバージョンを固定したい場合は、タグ付きのバージョン(foliowriter/folio-web:0.2.0)もあります。
すべて——プロジェクト、アカウント、セッション——は compose ファイルの隣の ./data にあります。バックアップするのはその一つのフォルダだけです。
docker compose stop folio-web
tar czf folio-backup-$(date +%F).tgz data
docker compose start folio-web
復元(あるいはサーバーの移行)は、data/ を元に戻して docker compose up -d を実行するだけです。
個人利用は無料です。イメージはプロプライエタリですが、自分自身、家族、個人的な共同執筆者のためにセルフホストする分には費用はかかりません。
チームや組織には商用ライセンスが必要です。企業、学校、その他の組織のために、あるいはその内部で運用する場合、または商用で運用する場合にはライセンスが必要です。無料枠はそれによって支えられています。お問い合わせください。すぐに対応します。
再配布、リブランディング、派生物の作成はできません。完全な条項はイメージのドキュメントに同梱されています。サーバーを運用したくない場合は、cloud.foliowriter.app がホスト版です——無料で始められます。