インストールガイド
Top / サポート情報 / マニュアル / InfiniCloud AI / インストールガイド / InfiniCloud AIのインストール

InfiniCloud AIのインストール

このドキュメントでは、InfiniCloud AI(Shiraito)を1台のサーバーに導入する手順を説明します。

各ステップの「確認」では、手順が正しく実行できているかを確認する方法を説明しています。エラーが発生した場合や、手順どおりに進まない場合は、「困ったときは」を参照してください。

本ガイドの手順で使用するコマンドは、すべて管理者(root)権限で実行します。

インストールの用意

  • Ubuntu などの Linux サーバー(22.04 / 24.04 を推奨)と、そのroot権限
  • インターネット接続
  • ローカルで推論する場合は NVIDIA GPU 搭載機(AMD GPU は現在未対応)。生成 LLM を外部 MaaS に出す maas プロファイルは、ローカル GPU なしで利用できます。
  • ディスクの空き容量は選ぶプロファイルとモデルによって変わります。最小構成でも 50GB 以上を用意し、27B / 120B モデルを使う構成は配布元に必要容量を確認してください。

STEP 1. インストーラーを取得して配置する

次の 1 行で、運用コマンド shiraitoctl がサーバーに入ります。

wget -O - -q https://ai-shiraito.dist.infinicloud.com/install.sh | sudo bash

確認

shiraitoctl is ready. と表示されれば成功です。

STEP 2. ドライバやミドルウェアのインストール(Docker など)

Shiraito は Docker 上で動きます。GPU を使うなら NVIDIA ドライバと Container Toolkit も必要です。これらは shiraitoctl setup-host に自動インストールさせることができます。

プロファイルの選択

プロファイルは、GPU だけでなく、使用するモデル、推論ランタイム、FineTune の可否をまとめて初期設定するものです。1 台につき 1 つを選び、STEP 2の setup-host とSTEP 3の init に同じ名前を指定します。

プロファイル一覧

インストール済みの profile を分類して確認するには、次を実行します。

sudo shiraitoctl profiles

新規導入では、VRAM容量に合わせて次のプロファイルから選びます。利用するモデルと対応アプリは、STEP 7と配布元の案内も確認してください。

この構成は、後で選ぶことができます。

--profile の名前対象特長用途
vram-24gbVRAM 24GB 級vLLM、Qwen3.5-9B、FineTune 不可NVIDIA L4 などの構成例
vram-48gbVRAM 48GB 級vLLM、Qwen3.6-27B-FP8、FineTune 不可NVIDIA L40S などの構成例
vram-96gbVRAM 80〜96GB 級vLLM、Qwen 27B + GPT-OSS 20B。推論容量を優先し FineTune は不可NVIDIA H100 / RTX Pro 6000 Blackwell などの構成例
vram-96gb-ftVRAM 80〜96GB 級vLLM、Qwen 9B + GPT-OSS 20B。Qwen の FineTune 用メモリを確保NVIDIA H100 / RTX Pro 6000 Blackwell などの FineTune 向け構成例
vram-192gbVRAM 160〜200GB 級vLLM、Qwen 27B + GPT-OSS 120B。推論容量を優先し FineTune は不可準備中
vram-192gb-ftVRAM 160〜200GB 級vLLM、Qwen 27B + GPT-OSS 20B。Qwen の FineTune 用に GPU 1 枚を空ける構成準備中
maasローカル GPU なし生成 LLM はリモート MaaS、埋め込みモデルだけ CPU でローカル実行外部LLM MaaSを使う場合

96GB / 192GB 級では、-ft なしが推論容量優先、-ft 付きが FineTune用のGPUメモリを確保する構成です。24GB/48GB 級はメモリ容量上、FineTuneに対応しません。

  • ft 付きのプロファイル(と、次に挙げる互換用の nvidia-* プロファイル)は config.ini に [finetune] enabled = true を持ち、アプリケーションは初回起動時に1度だけこれを読んで、default プールにLoRA(FineTuneの成果物)を載せる容量を宣言します。既存環境には影響しません。

nvidia-default、nvidia-h100、nvidia-rtx-pro6000 も既存環境との互換用に同梱しています。既存環境は、配布元から変更を案内されるまで、従来のプロファイルを継続してください。amd-rocm は将来対応用のプレースホルダーで、現在は選択できません。

なお、これらのプロファイルの実体は /opt/JPC/shiraito/profiles 以下にあります。setup-host と init には、同じprofile名をそれぞれ明示してください。setup-host で指定したprofileは、後続の init へ自動的には引き継がれません。

自動インストール

# まず何をするか確認(ドライラン。実際には変更しません)
sudo shiraitoctl setup-host --profile vram-96gb

# 問題なければ実行(--yes を付ける)
sudo shiraitoctl setup-host --profile vram-96gb --yes
  • --profile は STEP 3と同じ名前を指定します(上の表を参照)。
  • GPU ドライバを新しく入れた場合は再起動を求められます。
    • GPUドライバが新しく入った場合のみ再起動して、もう一度同じコマンドを実行すれば続きを行います(何回実行しても安全です)。
sudo reboot

# 再起動後にもう一度:
sudo shiraitoctl setup-host --profile vram-96gb --yes
setup-host は --yes を付けない限りホストを変更しません。前提ソフトを自分で入れる場合は、STEP 5の doctor が表示する不足項目と導入コマンドを確認してください。GPUドライバの新規導入時は、再起動後に同じ setup-host コマンドをもう一度実行します。

STEP 3. 初期化する

推論ランタイム設定の初期化をします。推論は、Dockerで動作する shiraito_llm_sm が管理するvLLMです。

# 例: VRAM 80〜96GB 級の NVIDIA GPU の場合
sudo shiraitoctl init --profile vram-96gb

確認

実行すると、最後に「Next steps」が表示されます。STEP 7の表と合わせて、取得するモデルを確認してください。

一度初期化した環境で init --force を実行すると、.env と var/config.ini を雛形から作り直し、DB パスワード・初期管理者のパスワード・手入力した SMTP 設定も置き換えます。MFA の強制( [security] require_mfa )だけは、作り直す前の var/config.ini の値を引き継ぎます。キーが無かった場合は、アプリの既定と同じ true(強制する)を書きます。 false(強制しない)を書くのは、var/config.ini が無い新規導入のときだけです。 --force の後も強制しないで使うときは、4-4 の手順で false に書き直します。通常のアップグレードやプロファイル確認では --force を付けないでください。

STEP 4. 環境設定

4-1. 公開ドメイン

公開運用(https)をする場合は、ドメインなどを設定します。

sudo nano /opt/JPC/shiraito/.env

必要な項目を自分の環境に合わせて書き換えます。

  • SITE_HOST
    • 公開するドメイン名(例 shiraito.example.com )。このドメインがインターネットからこのサーバーに向いている必要があります(Let's Encrypt 証明書のため)。
  • ACME_EMAIL
    • 証明書通知用のメールアドレス。lan 運用では証明書には使いません。 INITIAL_ADMIN_EMAIL が空なら、初期管理者のメールアドレスの候補にもなります(4-3)。候補は、そのアドレスに届いたコードで確かめるまで使われません。

POSTGRES_PASSWORD と POSTGRES_APP_PASSWORD は init が強いランダム値を自動生成します。初回起動後に変更するとDBに接続できなくなるため、通常は編集しません。古いインストーラから引き継いだ .env に changeme が残っている場合だけ、初回起動前に強い値へ変更してください。

4-2. メール送信(SMTP)

Shiraito は、ログインコード(MFA)・ユーザー招待・パスワード再設定をメールで送ります。SMTP は同じ .env に設定します。この方法は shiraito-app 1.2.7 以降で利用できます。

MFA を強制している環境では、ログインに必須です。SMTP が無いとコードが届かず、ログインできません。var/config.ini に require_mfa が無い環境(既存の環境)は、アプリの既定で MFA を強制します。shiraito-app 2.1.26より前の版は、この設定に関係なく常に強制します。新規導入では init が var/config.ini に [security] require_mfa = false を書くため、MFAは強制されず、初期管理者はパスワードだけでログインできます。ただしSMTPが無いと、ローカルの利用者は初期管理者1人だけです(招待と自己登録にメールが要るため)。SMTPを設定して送信を確かめてから、管理画面「設定 > セキュリティ設定」でMFAを強制にできます。 shiraito-app 2.1.26 以降で、SMTPを後で整える場合(MFAを強制しないで始める場合)は、4-4の手順で require_mfa が false になっているかを確かめてから進めます。

.env の #SMTP_... で始まるコメント例を、利用するメールサーバーの値で次のように置き換えます。以下は 465番ポート(暗黙TLS)の例です。

SMTP_HOST=smtp.yourprovider.com
SMTP_PORT=465
SMTP_USERNAME=your-account@yourprovider.com
SMTP_PASSWORD='your-smtp-password'
SMTP_USE_TLS=false
SMTP_USE_SSL=true
SMTP_FROM=noreply@yourdomain.com
キー説明
SMTP_HOST / SMTP_PORTSMTPサーバーのホスト名とポート
SMTP_USERNAME / SMTP_PASSWORDSMTP の認証情報。認証が不要な社内リレーでは空欄にできます。
SMTP_USE_SSL / SMTP_USE_TLS暗号化方式。次の表の組み合わせを使い、両方を true にしません。
SMTP_FROM受信者に表示される送信元メールアドレス
接続方式ポートの例SMTP_USE_SSLSMTP_USE_TLS
暗黙 TLS(SMTPS)465truefalse
STARTTLS587falsetrue

既存環境の var/config.ini に [email] がある場合は、未設定の SMTP_*  項目だけがそこへフォールバックします。新規導入では設定場所を .env に揃えてください。

init が新規作成した .env は所有者だけが読める権限になります。既存環境では sudo chmod 600 /opt/JPC/shiraito/.env で確認できます。ただし、SMTP_PASSWORD はbackendコンテナの環境変数にも渡ります。より厳格に管理する場合は SMTP_PASSWORD_FILE と Docker secret 等を使えますが、secretファイルを backend コンテナへ別途マウントする必要があります。パスだけを .env に書いても動作しません。優先順位は SMTP_PASSWORD_FILE、SMTP_PASSWORD、var/config.ini の順です。.env を含むバックアップも 秘密情報として扱ってください。

4-3. 初期管理者(shiraito-app 2.1.26 以降)

アプリを起動したときに利用者が1人もいなければ、.env の次の値から管理者を 1 人作ります。利用者が 1 人以上いれば読まれないので、既存の環境は変わりません。

キー既定説明
INITIAL_ADMIN_USERNAMEadminユーザー名。LDAP に同じ名前の人がいると、その人は LDAP でログインできなくなるので、別の名前にします。
INITIAL_ADMIN_PASSWORDinit がランダム値(16 進 64 桁)を入れるパスワード。16 文字未満・changeme を含む・ユーザー名と同じ、のどれかに当たる値では作られません。
INITIAL_ADMIN_EMAIL空メールアドレスの候補。空なら ACME_EMAIL が候補になります。example.com などの仮の値は候補にしません。
  • パスワードの確認
    • init は画面に出しません。次で確認します。
sudo grep '^INITIAL_ADMIN_PASSWORD=' /opt/JPC/shiraito/.env
  • アプリへの渡し方
    • up が起動の前に、この値を var/secrets/initial_admin_password(root だけが読める)に写し、アプリにはファイルで渡します。コンテナの環境変数には入りません。.env から行を消すと、次の up で写しも消えます。 var/secrets は up が作ったディレクトリのまま使います。var/ はコンテナから書き込めるため、var/secrets が symlink のときや、up を実行する利用者以外の持ち物のときは、 up は写さずにエラーで止まります(行が無いときは、写しを消さずに警告だけ出します)。
  • 手で書く場合
    • 値は単引用符で囲みます( INITIAL_ADMIN_PASSWORD='...' )。中の $ や # も書いたとおりに使われます。値の中に単引用符は書けません。.env はdocker composeも読むため、囲まない値や二重引用符の中に閉じていない ${ があったり、引用符を閉じていなかったりすると、compose が .env を読めず up が止まります。値の前後の空白はアプリが落とします。
  • メールアドレスの候補
    • そのアドレスに届いたコードで確かめるまで、パスワードの再設定にもMFAにも使われません。MFA を強制していなければ、ログイン後にアカウント設定で確かめます。強制していれば、初回ログインの認証コードが候補に届き、通ると確定します。
  • MFA を強制したまま導入する場合
    • 初回の up の前に、SMTP(4-2)と、管理者の本物のメールアドレス( INITIAL_ADMIN_EMAIL )を .env に書きます。候補が無い・仮の値の場合や、SMTPが未設定の場合は、管理者は作られません(backendのログにERRORが出ます)。
  • 初期管理者ができるまで、LDAP・OIDCを有効にしないでください。
    • 誰かが先にログインすると利用者が1人以上になり、初期管理者は作られなくなります。

4-4. MFA(多要素認証)を強制するか( shiraito-app 2.1.26 以降)

ログインで認証コード(MFA)を求めるかは、var/config.ini の [security] require_mfa で決まります。true は強制する、false は強制しない、です。キーが無ければ、アプリの既定で強制します。require_mfa は .env には書きません(このインストーラの構成では、.env に書いてもbackendに渡らず、効きません。SMTP の設定(4-2)は .env のままです)。

今の値は次で確かめます。何も表示されなければキーが無い(強制する)状態です。

sudo grep -n 'require_mfa' /opt/JPC/shiraito/var/config.ini
  • 新規導入
    • `init` が `require_mfa = false` を書くので、強制しません。SMTP(4-2)が無くても、初期管理者(4-3)はパスワードだけでログインできます。
  • 強制しないで始めたいのに true になっている・キーが無い場合
    (以前のインストーラで初期化した環境、init --force で作り直した環境など)
    • var/config.ini の [security] の節に require_mfa = false と書きます。[security] の節が無ければ、ファイルの末尾に次の2行を足します。同じ節を2つ作ると、アプリが起動しません。
    • 値は true か false で書きます。綴りを間違えるとアプリが起動しないので、書いた後は sudo shiraitoctl doctor(STEP 5)で require_mfa についての警告が出ないことを確かめます。初回の up(STEP 9)より前に書いた場合は、その up で反映されます。すでに起動している環境(既存の環境の更新など)で書き換えた場合は、sudo shiraitoctl restart で反映します(lan の場合は --env lan を付けます)。
[security]
require_mfa = false
  • 強制に切り替える
    • SMTP を設定し、管理画面「設定 > 認証設定」のメール送信テストで届くことを 確かめてから、「設定 > セキュリティ設定」の「多要素認証」で切り替えます。管理画面で一度保存すると、以後はその値が `var/config.ini` より優先されます(`var/config.ini` を書き換えても効きません)。
  • 強制したまま SMTP が使えなくなり、ログインできないとき: アプリの文書
    • /opt/JPC/shiraito/app/docs/sysadmin/sys_serveradmin-security.ja.md の節「多要素認証の強制(セキュリティ設定)」にある項目「締め出されたときの戻し方」に沿って戻します。

STEP 5. 点検する(doctor)

ここで一度、前提が揃っているか確認します。build の前に必ず実行してください。

sudo shiraitoctl doctor

確認

doctor: all required checks passed. と出れば、ホストの前提条件は OK です。不足があると → で入れるべきコマンドが出るので、それを実行して(またはSTEP 2の setup-host をやり直して)から doctor をもう一度流します。( docker-compose.yml not installed yet・app not installed・no key is registered の警告はSTEP 6 の後で消えるので、今は無視可。)

doctor はSMTPの疎通やprofile定義の配布前検査までは行いません。メール送信はSTEP 9 の起動後に確認します(「困ったとき」の送信テスト)。初回の起動前は、.env に初期管理者のパスワードが残っているという警告が出ます。これは4-3の手順で消えます。

doctor は、導入の後も、アプリの更新の後や困ったときに流せます。failed: は失敗の扱いで、最後に some required checks failed と出ます。warn: と info: は知らせるだけです。鍵(6-1)はアプリの取得( pull-app )にだけ使い、up・build・起動時の自動起動は鍵を読みません。そのため、鍵が無い・期限が切れたことは warn: で、動いているサービスは止まりません。doctorは何も消しません。

出力意味と対処
ok: docker compose plugin found (version …)Docker Composeの版です。問い合わせのときに伝えてください。
warn: no key is registered鍵が登録されていません。アプリの取得に要ります(6-1 の set-key )。
failed: the registered key is invalid登録した鍵が set-key の検査を通りません(別の CA の証明書、証明書と秘密鍵の組の不一致など)。key-info で確かめ、正しい鍵を set-key で登録し直します。
warn: the … key … expired on鍵の期限が切れています。アプリの更新が止まりますが、動いているサービスは止まりません。新しい鍵を受け取り、set-key で入れ替えます。
warn: the … key … expires on … days left期限が近づいています(残りが30日と有効期間の4分の1の短い方を切りました)。新しい鍵を配布元に求めます。
is valid only fromサーバーの時計が、鍵の有効期間の始まりより前を指しています。時計を合わせます( timedatectl )。
warn: …/license/… is mode鍵のファイルの権限か所有者が違います。→ のコマンドで直します。
warn: the key is for EC, but the installed app is ES鍵と入っているアプリのエディションが違い、この鍵ではアプリを更新できません。このサイト用の、アプリと同じエディションの鍵を登録します(エディションを切り替えるには鍵のほかにも手順が要ります)。
warn: built before shiraito-app … was installedアプリを更新した後に build していないため、前のアプリのまま動いています。build の後に up します。
failed: nvidia-smi not found`、`failed: nvidia-container-toolkit not found入っているアプリがGPUを使うのに、NVIDIAのドライバかツールキットがありません。GPUが要るのは ES・CEと、.env に SHIRAITO_ACCELERATOR=nvidia を書いたECです。STEP 2の setup-host で入れます。
info: an NVIDIA GPU driver is installed, but …EC のサーバーに GPU がありますが、使っていません。使うときは .env に SHIRAITO_ACCELERATOR=nvidia を書いて up します。
info: compose files (…)up などが重ねるcomposeファイルの一覧です。
warn: … is left over: the installed app does not ship itアプリが置かなくなった compose ファイルの写しが残っています(ロールバックやECへの切り替えの後)。使われませんが、→ のコマンドで消せます。
failed: the installed app ships …, but … is missingアプリが置いたcomposeファイルの写しが無く、compose が止まります。アプリを入れ直します( → のコマンド)。rpm では pull-app が入っている版を入れ直さないので、その版の .rpm ファイルを dnf reinstall で入れ直します。
warn: the container shiraito_llm_sm … is left overアプリにもう無いローカルLLMのコンテナが残っていて、GPUを使ったままです。次の up が起動の前に消します。
info: EC runs no local LLMEC のサーバーで、ローカル LLM のためのデータ( var/models/hf のモデル、var/lora_weights の LoRA、llm_sm のイメージ)が占める容量を表示します。var/ はお客様のデータなので、doctor は消しません。埋め込みモデル( intfloat/multilingual-e5-base )と、設定していればリランカー・音声認識のモデルはECでも使います。要らないものだけを、確かめてから消します。

STEP 6. アプリを取得する(set-key・pull-app)

6-1. ライセンスを登録する(set-key)

配布元から受け取ったライセンスを、pull-app の前に登録します。ライセンスは、このサーバーが取得できるアプリのエディション(ES・EC・CE)を決めます。ライセンスは次のファイルです。

  • 発行元証明ファイル(例:jpc-client.pfx )
sudo shiraitoctl set-key jpc-client.pfx
sudo shiraitoctl key-info

set-key は、証明書が installer に同梱の CA(/opt/JPC/shiraito/share/ca/)から発行されたこと、有効期間の内にあること、CNの形を確かめてから、/opt/JPC/shiraito/license/ に置きます(root だけが読めます)。エディションは使うたびに証明書のCNから読み取り、ほかの場所には保存しません。

  • CA:TRUE と出て止まったときは、CAの証明書だけを渡しています。クライアント証明書と秘密鍵を配布元に求めてください。
  • correct the clock と出て止まったときは、サーバーの時計を合わせてからやり直します。
  • 別のエディションのライセンスに入れ替えるには --force が要ります。ライセンスを入れ替えても、入っているアプリのエディションは変わりません。
  • 見本のライセンス(CN に example@infinicloud.com を含むもの)は試験用です。本番では、そのサイト用に発行されたライセンスを登録します。

確認

  • key-info の最後に key-info: the key passes every check. と出れば成功です。
  • days left は期限までの残りの日数です。期限が来る前に新しいライセンスを受け取り、同じ set-key で入れ替えます。

6-2. アプリを取得する(pull-app)

sudo shiraitoctl pull-app

pull-app は、6-1で登録したライセンスを使って配布サーバーからアプリを取得します。取得の前にライセンスを手元で確かめ(無い・期限切れ・有効期間の前なら、何も送らずに止まります)、ライセンスのエディションで取得先を決めます。ライセンスを出すタイミングはアプリの取得だけで、モデルの取得( pull-models )には使いません。

バージョンを指定しなければ、既定ではstableラインの最新版が入ります。

目的コマンド
今回だけhardenを使うsudo shiraitoctl pull-app --harden
今回だけstableを使うsudo shiraitoctl pull-app --stable
今後もhardenを使うsudo shiraitoctl pull-app --harden --save-default
今後もstableを使うsudo shiraitoctl pull-app --stable --save-default
特定版を入れる/戻すsudo shiraitoctl pull-app 2.1.20

stableは通常の更新ラインです。hardenは、stableの中から追加確認済みの版だけを選んだ慎重な更新ラインです。同じappパッケージを使い、harden用の別ビルドではありません。

保存した選択は /opt/JPC/shiraito/.env.shiraitoctl に記録されます。app設定を持つ .env とは別ファイルです。installerを更新しても既存の選択は上書きされません。

harden対象版がまだない場合や、配信サーバーがhardenに対応していない場合、stableへ自動的に切り替えずエラーで停止します。必要なら --stable を明示してください。

特定バージョンの指定はチャネル設定を参照しません。hardenを既定にしている場合や、チャネル設定ファイルに問題がある場合でも、次の形でロールバックできます。

sudo shiraitoctl pull-app 2.1.20
  • stable / --harden と特定バージョンは同時指定できません。 USBなどの--fromで最新版を自動選択できるのはstableだけです。オフラインでharden相当の 版を入れる場合は、確認済みのバージョンを明示してください。hardenを既定として保存済みで、 USB内のstable最新版を選ぶ場合は sudo shiraitoctl pull-app --from /media/InfiniCloudAI --stable と指定します。

確認

installed shiraito-app <version> と出れば成功です。

止まったときは、出力の ERROR: の行とその次の行で原因が分かります。どの場合も、ライセンスを使わない取得や別の取得先へのやり直しはせず、何も入れずに止まります。

出力原因と対処
no key is registeredライセンスを登録していません。6-1 の set-key で登録します
the certificate expired onライセンスの期限が切れています。新しいライセンスを受け取り、set-key で入れ替えます
correct the clockサーバーの時計がライセンスの有効期間より前を指しています。時計を合わせます( timedatectl )
the registered key is for EC(または CE )ライセンスは EC(CE)用ですが、いまの shiraitoctl が取得できるのはESのアプリだけです。何も取得していません。そのエディションに対応したインストーラを配布元から受け取ります。
HTTP 403 wrong-editionライセンスのエディションと取得先が違います。SHIRAITO_PACKAGES_URL  を設定していれば外します。
HTTP 403 revokedライセンスが失効しています。配布元に新しいライセンスを求めます。
HTTP 403 invalid配布サーバーがライセンスを受け付けません。key-info でライセンスを確かめ、配布元に問い合わせます。
HTTP 403( without the X-Shiraito-Gate header )配布サーバーが理由を示さずに断りました(配布サーバーの設定が済んでいない可能性があります)。配布元に問い合わせるか、パッケージのファイルがあれば --from で入れます。
HTTP 404指定した版は配信されていません(版を省くと、チャネルの最新版を取ります)。版を省いて出たときは、ライセンスのエディションのアプリがまだ配信されていません。
HTTP 400、The TLS connection ... failed配布サーバーから見て、ライセンスが期限切れか有効期間の前です。サーバーの時計を確かめます( timedatectl )
does not trust the certificate配布サーバーの証明書を検証できません。サーバの時計、CA 証明書( ca-certificates パッケージ)、TLS を中継するプロキシを確かめます。
Cannot reachネットワーク・DNS・プロキシ( https_proxy )の設定を確かめます。

SHIRAITO_PACKAGES_URL で取得先を変えられますが、配布サーバー以外のホストには鍵を出しません。

STEP 7. モデルを取得する(list-models/pull-models)

プロファイルが使うローカルモデルをすべて取得します。モデルは容量が大きく、取得に時間がかかります。埋め込みモデル intfloat/multilingual-e5-base も必須です。

プロファイル取得するモデル
vram-24gbQwen/Qwen3.5-9B、intfloat/multilingual-e5-base
vram-48gbQwen/Qwen3.6-27B-FP8、intfloat/multilingual-e5-base
vram-96gb-ftQwen/Qwen3.5-9B、openai/gpt-oss-20b、intfloat/multilingual-e5-base
vram-96gb / vram-192gb-ftQwen/Qwen3.6-27B-FP8、openai/gpt-oss-20b、intfloat/multilingual-e5-base
vram-192gbQwen/Qwen3.6-27B-FP8、openai/gpt-oss-120b、intfloat/multilingual-e5-base
maasintfloat/multilingual-e5-base(生成 LLM はリモートのため取得不要)

既存環境との互換用 profile では、nvidia-default は vram-24gb 相当、nvidia-h100 / nvidia-rtx-pro6000 は vram-96gb-ft 相当のモデルを取得します。新規導入では上の vram-* profile を選んでください。

配布可能なモデルと取得済みのモデルは、次のコマンドで確認できます。出力の [*] は取得済み、[ ] は未取得を表します。

sudo shiraitoctl list-models

例として `vram-96gb` のモデルを取得する場合:

sudo shiraitoctl pull-models Qwen/Qwen3.6-27B-FP8 openai/gpt-oss-20b intfloat/multilingual-e5-base

確認

installed model: ... と出れば成功です。

Web UI のモデル設定から別のLLMを選ぶ場合は、そのモデルも事前に取得してください。

STEP 8 以降のコマンドは、内部で docker compose を実行します。既定の prod では docker-compose.yml に docker-compose.prod.yml を重ね、Let's Encrypt の証明書を取得します。社内・閉域網の HTTP 運用では、各コマンドに --env lan を付けて docker-compose.lan.yml を使います。アプリがエディションごとの overlay( docker-compose.shiraito_llm_sm.yml・docker-compose.gpu.yml )を持つ版では、入っているアプリに合わせて、それも自動で重ねます(ECのdocker-compose.gpu.yml は、.env がSHIRAITO_ACCELERATOR=nvidia のときだけ)。これらの配布composeファイルは pull-app で更新されるため、直接編集しないでください。docker compose を直接使うときは、docker compose -f … と手で並べずにsudo shiraitoctl compose <引数> を使ってください(例: sudo shiraitoctl compose ps)。手で並べると overlay が外れます。

STEP 8. ビルドする(build)

sudo shiraitoctl build               # 公開運用(prod)
# 社内・閉域(lan)の場合: sudo shiraitoctl --env lan build

20〜40 分ほどかかります。完了するまでそのまま待ってください。

STEP 9. 起動する(up)

公開運用(https)の場合:

sudo shiraitoctl up

社内・閉域網で HTTP 運用する場合:

sudo shiraitoctl --env lan up
up は鍵を読みません。鍵の期限が切れても、起動と再起動は止まりません。入っているアプリに shiraito_llm_sm のサービスが無いのに(EC に切り替えた後など)、このcomposeプロジェクトの shiraito_llm_sm のコンテナが残っていれば、up は起動の前にそれだけを消し、removed the leftover container shiraito_llm_sm と表示します。ほかのコンテナ(自分で重ねたoverlayで起動したものなど)は消しません。

状態を見たいとき

状態を見るには

sudo shiraitoctl status

ログは下記の通りです。

sudo shiraitoctl logs

ブラウザで https://<SITE_HOST>(lan の場合は http://<サーバーのIP> )にアクセスし、画面が開けば導入完了です。続けて、初期管理者でログインします(4-3)。

HTTP ではブラウザの JavaScript セキュリティ制限により、クリップボード操作などの一部機能が使えない場合があります。

ログインしたら、次を行います。

  1. パスワードを変更します。
  2. .env から INITIAL_ADMIN_PASSWORD の行を消し、sudo shiraitoctl up を実行します(lan の場合は `--env lan` を付けます)。 var/secrets の写しも消えます。
  3. sudo shiraitoctl doctor で、初期管理者のパスワードについての警告が消えたことを確かめます。
行を消すまでは、backup-files のバックアップ(.env と var/ を含む)にもこのパスワードが 入ります。shiraito-app 2.1.26 より前の版はこれらの値を使わず、最初の管理者は従来どおり ログイン画面から登録します。