コンテナーでの実行(Docker / Podman)

DockerまたはPodmanを使って、Marinara Engineをコンテナーで動かします。コンテナーとは、アプリと動作に必要なものを一式にまとめたパッケージです。そのため、Node.jsをインストールする必要はありません。できるだけ少ない準備でMarinaraを動かしたい場合は、ここから始めてください。

始める前に

Marinaraを動かすコンピューターに、次のどちらかをインストールします。

以下で使う用語は次のとおりです。

公式のイメージはghcr.io/pasta-devs/marinara-engineにあります。

Marinaraを起動する

プロジェクトには、そのまま使えるdocker-compose.ymlファイルが入っています。Composeは、このファイルを読み込んでコンテナーを起動するDockerの機能です。この方法をおすすめします。

  1. ターミナル(コマンドを入力するウィンドウ)を開きます。Marinaraのチェックアウトがすでにある場合は、そのフォルダーでターミナルを開き、次の2つの手順を飛ばしてください。
  2. プロジェクトのファイルをダウンロードします。
   git clone https://github.com/Pasta-Devs/Marinara-Engine.git
  1. できたフォルダーに移動します。
   cd Marinara-Engine
  1. コンテナーをバックグラウンドで起動します。
   docker compose up -d

初回はghcr.io/pasta-devs/marinara-engine:latestイメージをダウンロードするため、数分かかることがあります。完了すると、ターミナルにコンテナーがStartedと表示されます。

  1. ブラウザーでhttp://127.0.0.1:7860を開きます。Marinaraのホーム画面が表示されます。

うまくいかなかった場合: 別のプログラムがポート7860を使っている可能性があります。8080など、空いているポートを選んでください。docker-compose.ymlと同じフォルダーに.envという名前のファイルを作ってPORT=8080という行を書き、もう一度docker compose up -dを実行します。Composeはこのファイルを毎回読み込むので、以後のアップデートでも新しいポートが保たれます。その後、http://127.0.0.1:8080を開きます。ほかの対処法はトラブルシューティングにあります。

Marinaraを停止する

同じフォルダーで次のコマンドを実行します。コンテナーが停止して削除されます。データはボリュームに残ります。

docker compose down

Podmanではpodman compose downを使います。

データの保存場所

Marinaraは、チャット、キャラクター、アップロードしたファイル、フォント、デフォルトの背景を、marinara-dataという名前のComposeボリュームに通常のファイルとして保存します。Composeは名前の先頭にプロジェクトフォルダー名を付けるので、実際の名前はPROJECT_marinara-dataのような形になります。正確な名前と保存場所は、次のコマンドで調べます。

docker volume ls --filter name=marinara-data
docker volume inspect PROJECT_marinara-data

PROJECT_marinara-dataは、1つ目のコマンドが表示した名前に置き換えてください。

Marinaraは初回起動時に、ボリューム内の/app/data/.envに空の設定ファイルも作成します。サーバーの設定はここに追加してください。再起動やイメージのアップデートのあとも残ります。サーバー設定リファレンスを参照してください。

コンテナーは起動のたびに、アプリが書き込めるようにデータフォルダーの所有権を直します。rootとして起動して所有権を直し、そのあとroot以外のユーザーに切り替えます。これはボリュームでも、自分のコンピューターからマウントしたフォルダーでも動作します。

別のデバイスからMarinaraを開く

デフォルトでは、ComposeはこのコンピューターからだけMarinaraに接続できるようにします。スマートフォンや別のコンピューターで開くには、ポートをすべてのインターフェースで公開する必要があります。その前にログインを設定してください。ログインなしでMarinaraをネットワークに公開しないでください。

Docker Desktop、OrbStack、rootless Docker(rootなしで動かすDocker)では、どのデバイスも1つのゲートウェイアドレスとして見えます。ログインがないと、すべてのインターフェースで公開したポートから誰でも入れてしまいます。ログインを設定すると、このコンピューターでもログインを求められます。TailscaleとDockerのバイパスを参照してください。

  1. Marinaraのフォルダーにあるdocker-compose.ymlを、テキストエディターで開きます。
  2. ports:の一覧から127.0.0.1:を削除します。
   ports:
     - "${PORT:-7860}:7860"
  1. environment:の一覧に、管理者用シークレットを追加します。自分で決めた、長くランダムな値を使ってください。
   environment:
     - ADMIN_SECRET=another-long-random-value
  1. 同じ一覧に、ログインを追加します。自分のユーザー名と、長くランダムなパスワードを使ってください。
   - BASIC_AUTH_USER=your-username
   - BASIC_AUTH_PASS=another-long-random-password
  1. ファイルを保存し、コンテナーを再起動します。
   docker compose up -d
  1. 別のデバイスでhttp://YOUR_COMPUTER_IP:7860を開きます。PORTを設定した場合は、そのポートを使います。ページでログインを求められます。

BASIC_AUTH_USERとBASIC_AUTH_PASSを省いた場合は、代わりに1回限りのセットアップコードを求められます。ログからコードを探し、新しいユーザー名とパスワードと一緒にページで入力してください。

docker logs <container> 2>&1 | grep "setup code"

アプリのログインは、あとからサインイン済みのブラウザーのSettings → Advanced → Access(設定 → 詳細設定 → アクセス)で変更できます。パスワードを忘れた場合は、docker exec <container> node scripts/reset-login.mjsを実行します。このコマンドは、BASIC_AUTH_USERとBASIC_AUTH_PASSで設定したログインは変更しません。その場合は、composeファイルでこれらを編集し、コンテナーを作り直してください。

Docker Desktop、OrbStack、rootless Dockerでは、このコンピューターでhttp://localhost:7860からMarinaraを開き、Settings(設定)でログインを設定します。これらの環境ではIP許可リストでデバイスを区別できないため、ログインを使ってください。アクセスを制限するほかの方法と、管理者用シークレットの役割については、リモートアクセス: ログインとIP許可リストを参照してください。

Marinaraをアップデートする

コンテナーは自動ではアップデートされません。先にバックアップを作成し(Marinaraのバックアップと復元を参照)、新しいイメージを取得して再起動します。docker-compose.ymlのあるフォルダーで次のコマンドを実行します。

docker compose pull && docker compose up -d

Podmanでは、代わりにpodman composeを使います。アプリでは、Settings → Advanced → Updates → Check for Updates(設定 → 詳細設定 → アップデート → アップデートの確認)にイメージのタグとこのコマンドが表示されます。コンテナーの場合、アプリ自身がアップデートを適用することはできません。

古いリリースに戻すには、docker-compose.ymlのimage:行にそのタグを指定してから、docker compose up -dを実行します。先に古いバージョンに戻すを参照してください。古いビルドは、新しいビルドが保存したデータを開けません。

イメージのタグを選ぶ

タグ内容
latest安定版のリリースです。docker-compose.ymlはこれを使います。
X.Y.Zghcr.io/pasta-devs/marinara-engine:2.5.1のように、1つのバージョンに固定したタグです。
staging未リリースのコードから作る不安定なテストビルドです。動かなくなることがあり、安定版のビルドへデータを戻せない場合もあります。
liteサイズの小さいイメージです。下を参照してください。
X.Y.Z-liteliteイメージのバージョンを固定したタグです。

stagingを動かす場合は、安定版のデータを変更できないように、別のボリュームを使ってください。

docker run -d --name marinara-staging \
  -p 127.0.0.1:7860:7860 \
  -v marinara-staging-data:/app/data \
  ghcr.io/pasta-devs/marinara-engine:staging

liteイメージ

liteイメージは、コンテナー向けの最小構成のLinuxベースであるWolfiの上に作られた、ダウンロードサイズの小さいイメージです。大きなローカルファイルを必要とする機能を省いています。

liteで省かれるもの使えなくなること
内蔵モデルAIモデルを自分のハードウェアで動かせません。
ローカル埋め込みモデルデバイス上でのテキスト埋め込みができません。
Memory Recall(セマンティック検索)ローカル埋め込みモデルに依存しています。
ローカルのWhisper音声入力Conversationの通話で音声をテキストに変換できません。
アバターの気分の読み取り2D Avatarsと3D Avatarsは、小さなローカルの感情モデルではなく、単語の一覧から表情を選びます。

チャット、Roleplay、Game Mode、エージェント、ロアブック、キャラクター、リモートのAIサービスなど、それ以外の機能はすべて動きます。AIの機能を使うには、外部サービスのアカウントを追加する必要があります。AIプロバイダーへの接続を参照してください。

docker run -d --name marinara-lite \
  -p 127.0.0.1:7860:7860 \
  -v marinara-data:/app/data \
  ghcr.io/pasta-devs/marinara-engine:lite

古いliteイメージの一部は、Raspberry Pi 4などのARMコンピューターで、AIへの送信中にSIGILLエラー(不正命令エラー)を出して異常終了します。こうしたデバイスでは、通常のlatestイメージを使ってください。最新の情報はMarinara Engineのトラブルシューティングを参照してください。

Podman

Podmanは同じイメージを実行できます。ほとんどのコマンドでは、dockerをpodmanに置き換えます。

podman compose up -d

Composeを使わずにコンテナーを1つ実行するには、次のようにします。

podman run -d \
  -p 127.0.0.1:7860:7860 \
  -v marinara-data:/app/data \
  ghcr.io/pasta-devs/marinara-engine:latest

podman composeにはpodman-composeヘルパーが必要です。次のいずれかでインストールします。

sudo dnf install podman-compose
sudo apt install podman-compose
pip install podman-compose

1行目はFedora用、2行目はDebianまたはUbuntu用で、3行目はpipが使える環境ならどこでも使えます。

イメージを自分でビルドする

ダウンロードせずにソースからビルドするには、次のようにします。

docker build -t marinara-engine .
docker run -d -p 127.0.0.1:7860:7860 -v marinara-data:/app/data marinara-engine

liteイメージをビルドするには、lite用のビルドファイルを使います。

docker build -f Dockerfile.lite -t marinara-engine:lite .

トラブルシューティング

ページが表示されない、またはポートがすでに使われている。 Marinaraを起動するにあるポートの対処法を参照してください。

Marinaraがファイルを書き込めない、または権限エラーが表示される。 コンテナーは起動のたびにフォルダーの所有権を直します。ホストのファイルシステムによってはこの修復に失敗することがあり、MARINARA_SKIP_DATA_CHOWN=trueを設定した場合は修復を行いません。エラーが続くときは、デフォルトのmarinara-dataボリュームを使ってください。これがもっとも確実です。

liteイメージがRaspberry Pi 4で異常終了する。 通常のlatestイメージを使ってください。

さらに詳しくはMarinara Engineのトラブルシューティングを参照してください。

関連ガイド