# VM の分離

> Skipbox がジョブどうしを分けるしくみ。ジョブごとの新しい VM、ディスクごとの削除、ジョブ一つのためのランナー、外からの接続の遮断、プライベートリポジトリだけ。

## ジョブごとに新しい VM

ジョブには、そのジョブのために作った新しい VM を一つずつ用意します。VM が動かすのはそのジョブだけで、ほかのジョブは渡しません。終われば、ディスクごと消します。起動から 6時間たって残っている VM も消します。

ジョブがディスクや Docker やメモリに残したものが、あとのジョブに届くことはありません。

## VM が動く場所

ヘルシンキにある、Fluxenic が Hetzner から借りている専用サーバーと、ジョブ一つごとに作る Hetzner Cloud のサーバーです。Hetzner Cloud のサーバーの vCPU は Hetzner のほかの利用者と共有ですが、そのサーバー、ネットワーク、ディスクを別のジョブと共有することはありません。

## ジョブ一つのためのランナー

ランナーは、ジョブ一つのために、そのジョブのラベルでその都度登録します。組織では組織の既定のランナーグループに、個人アカウントではジョブのリポジトリに登録するので、そのリポジトリのジョブしか動かせません。ジョブのあとに登録が残ったランナーは削除します。

## 外からの接続はできない

インターネットからジョブの VM へは接続できません。詳しくは[ネットワークと外向きの通信](https://docs.skipbox.dev/ja/network)へ。

## プライベートリポジトリだけ

公開リポジトリでは、プルリクエストを開いただれもが、セルフホストランナーでコードを動かせてしまいます。Skipbox は公開リポジトリのジョブを実行せず、オーナーにメールします。あとから公開にしたリポジトリも、待っているジョブを実行しません。

## ジョブが読めるもの

どのランナーでも同じく、ジョブの VM にはワークフローのシークレットとそのジョブ用の GitHub のトークンが入り、ジョブが動かすコードはそれを読めます。GitHub ホストランナーと同じ考え方で、ジョブには必要なシークレットだけを渡してください。

2026-11-09 更新 · https://docs.skipbox.dev/ja/isolation
