本文へスキップ

SaaSをサーバー1台でセルフホスト、クラウドプラットフォームの請求なしで

最終更新:

Seedは借りたLinuxサーバーで動き、開発でも本番でもDocker Composeを使って、コマンド1つでデプロイできます。サーバーの準備は文書化された手順で一度だけ行い、それ以降のデプロイはそのコマンドだけです。

できること

  • 前段に証明書を自動取得するTraefik
  • アプリと並んで動くPostgresとValkey
  • S3互換のファイルストレージGarageに、メモの画像やPDF、プロフィール写真を保存。アップロードは署名付きリンク経由で、中身でチェックします。写真(HEICを含む)は、位置情報などのメタデータを取り除いた小さなAVIFとWebPに変換されます
  • VictoriaMetrics、VictoriaLogs、Grafanaとアラート
  • オプトインで毎日取れる、データベースの暗号化resticバックアップと、文書化された復元手順
  • バージョンタグをプッシュすると、CIからリリースイメージを公開

仕組み

デプロイはSSHでプロジェクトをサーバーにコピーし、Composeで起動します。デプロイのたびに、1回だけ動くサービスがデータベースのマイグレーションを適用します。前段にはTraefikがあり、ホストごとの証明書をLet's Encryptに要求します。

Postgres、Valkey、S3ファイルストア、メトリクス、ログ、アラート付きのダッシュボードがアプリと並んで動き、複数のプロダクトが同じプロキシの背後で1台のサーバーを共有できます。

$ deno task deploy Copying files... Copying infra/envs/.env.prod to infra/envs/.env... Creating web push keys if missing... Starting the app... Deploy completed.
一部省略:各ステップの間のrsyncとComposeの出力は割愛しています。
  • Traefik
  • Postgres
  • Valkey
  • VictoriaMetrics
  • VictoriaLogs
  • Grafana
  • Alertmanager
  • Garage file store
  • restic backups

よくある質問

Kubernetesは必要ですか?

いいえ。開発でも本番でも、サーバー1台のDocker Composeでプロダクト全体が動きます。

複数のプロダクトで1台のサーバーを共有できますか?

はい。プロキシは共有し、ディレクトリ、データベース、データはそれぞれ別に持ちます。サーバーを共有するのは、同じくらい信頼できるプロダクト同士だけにしてください。

バックアップはありますか?

はい。オプトインで、データベースの暗号化resticバックアップを毎日取れます。復元手順も文書化されています。

SeedはNodeやBunで動きますか?

まだです。Seedは現在Denoで動いており、Deno・Node・Bunのどれでも動くようにする作業を進めています(#623)。機能ページのランタイム計画をご覧ください。

1分で動くところを見てみましょう

デモは、初日から手に入るアプリそのものです。登録なしで開けて、ゲストアカウントには最初からサンプルデータが入っています。

ほかの機能

ログイン

パスキー、メールのログインリンク、Google、GitHub、2段階認証。認証サービスは不要です。

ログインについて詳しく読む

グループとロール

閲覧者からオーナーまでのロール付きグループ、招待、アクティビティログ。

グループとロールについて詳しく読む

課金

無料プラン、トライアル、猶予期間付きの、メンバー単位のStripe課金。

課金について詳しく読む

すべての機能 Seedとほかのスターターの比較