タイトル: 自前ホスティング(Docker)
SEOタイトル: Speckle Serverセルフホスト|docker-compose構成とデータ主権・運用設計
自前ホスティング(Docker)
Speckle はサーバー含めてオープンソースのため、SaaS の代わりに自社環境へ立てられます。docker-compose でまとめて起動する構成と、データ主権・バックアップなど運用の設計ポイントを整理します。
この記事の要点
- Speckle Server は OSS のため自社サーバー上でセルフホストできる
- 構成要素は概ね PostgreSQL・Redis・オブジェクトストレージ(MinIO 等)・サーバー・フロントエンド
docker-composeなどのコンテナ構成でまとめて起動するのが一般的- 社内にデータを置き続けたい「データ主権」の要件に応えられるが、運用設計の責任が生じる
本記事は Speckle カテゴリの一部として、Speckle Server の自前ホスティング(セルフホスト)を整理します。SaaS ではなく自社環境でデータを管理したい場合の選択肢です。サーバー全体の構成は アーキテクチャ もあわせて参照してください。
1なぜ自前ホスティングするのか
Speckle はサーバー含めてオープンソースのため、ホスティングされた SaaS を使う代わりに、自社のサーバーやクラウド上に同等の環境を立てられます。主な動機は次のとおりです。
一方で、サーバーの構築・監視・バックアップ・アップデートを自分たちで担う責任が生じます。SaaS と自前のどちらを選ぶかは、データ要件と運用体制のトレードオフです。小規模なチームや試験的な利用ではホスティング済みの SaaS から始め、データの社外保管に制約が出てきた段階でセルフホストへ移行する、という段階的な判断もよく取られます。いきなり本番をセルフホストで組むより、要件が固まってから踏み切るほうが手戻りを抑えられます。
2主な構成要素
| 要素 | 役割 |
|---|---|
| PostgreSQL | プロジェクト・ユーザー・メタデータなどを格納するDB |
| Redis | キャッシュ・キュー・セッションなどに使うインメモリストア |
| オブジェクトストレージ(MinIO 等) | モデルの実体(blob)など大きなデータの保存先。S3 互換 |
| Server(バックエンド) | API を提供する本体。GraphQL などで通信する |
| Frontend(フロントエンド) | Web UI とビューアを提供する |
これらを個別に立てるのは煩雑なため、コンテナでまとめて起動するのが一般的です。データの実体は オブジェクトモデル のとおり構造化されており、メタデータは DB、巨大な blob はオブジェクトストレージ、という役割分担になります。役割を分けておくことで、たとえば DB は冗長構成にし、ストレージは大容量のディスクへ、といったように構成要素ごとに最適なリソースを割り当てやすくなります。これは規模が大きくなったときの拡張余地にもつながります。
3docker-compose 構成のイメージ
各サービスを docker-compose でまとめて定義する構成が分かりやすい例です。YAML の記号やインデントは崩れやすいので、ここでは概念図として示します(実際の正しい定義は公式の compose ファイルを使ってください)。
services:
postgres:
image: postgres
redis:
image: redis
minio:
image: minio/minio
speckle-server:
image: speckle/speckle-server
depends_on:
- postgres
- redis
- minio
speckle-frontend:
image: speckle/speckle-frontend
ports:
- "80:8080"
上記はあくまで構成の関係を示すための簡略形で、環境変数・接続文字列・ボリュームなどの実設定は省いています。たとえば DB 接続文字列やバケット設定では & や <・> といった記号が現れることがあり、ファイルに書く際は正しい表記を保つ必要があります(本文中ではそれぞれ &・<・> として表記しています)。
4起動とアクセス
compose ファイルが用意できたら、まとめて起動します。コマンドは概念的に次のとおりです。
docker compose up -d
# 状態確認
docker compose ps
# ログ確認
docker compose logs -f speckle-server
起動後、フロントエンドの URL(例:自社サーバーのホスト名)にブラウザでアクセスし、管理者アカウントを作成します。クライアント側(Connector や SDK)からは、この自前サーバーの URL を接続先として登録します。.NET SDK での接続先指定は .NET SDK を参照してください。
運用上の設計ポイント
- TLS / ドメイン:HTTPS 化とリバースプロキシ(nginx 等)の前段配置
- 認証:社内 ID 基盤(SSO 等)との連携要否
- バックアップ:PostgreSQL のダンプとオブジェクトストレージのバックアップを両方とる
- ストレージ容量:モデルの blob は版を重ねると増えるため監視する
- アップデート:イメージ更新時の互換性とデータ移行の確認
セルフホストは「社内にデータを置き続けられる」強みがある一方、これらの運用設計を自分たちで担う必要があります。最初は検証環境で compose を立てて挙動を確認し、本番化の前にバックアップ・復旧手順まで固めておくことを勧めます。構成・イメージ名は版によって変わるため、導入時は公式の最新手順を確認してください。