11.

Speckle Serverセルフホスト|docker-compose構成とデータ主権・運用設計

編集
Speckle · 11

自前ホスティング(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 を立てて挙動を確認し、本番化の前にバックアップ・復旧手順まで固めておくことを勧めます。構成・イメージ名は版によって変わるため、導入時は公式の最新手順を確認してください。

docker-compose 構成(概念) docker-compose(コンテナ群をまとめて起動) frontend Web UI・ビューア server GraphQL API 本体 postgres DB・メタデータ redis キャッシュ・キュー minio オブジェクト保存(blob) server が 3 つの 基盤に依存して連携
図: docker-compose 上で frontend と server が連携し、server が postgres・redis・minio に接続するセルフホスト構成

次に読む

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. Speckleとは
  2. アーキテクチャ(Server/Project/Model/Version)
  3. Speckleオブジェクトモデル
  4. コネクタ
  5. send/receive の基本ワークフロー
  6. Revit ⇄ Speckle の往復ワークフロー
  7. specklepy(Python SDK)入門
  8. .NET SDK 入門
  9. Speckle Automate
  10. Speckle Viewer・埋め込み
  11. 自前ホスティング(Docker)
  12. Speckle と IFC の違い・使い分け
  13. データ連携の実務パターン

最近更新/作成されたページ