コンテンツにスキップ

自分のサーバーや VM を接続する

Markdown で表示

自分の Linux サーバーや VM を、エージェントの endue Computer として使わせることができます。そのマシンでインストールコマンドを1つ実行すれば、それ以降、エージェントのファイルとプログラムはそこに置かれます。

そのマシンにしかないものが作業に必要なときに、自分のサーバーを使います。社内ネットワークへのアクセス、インストール済みのツールやデータ、既定より多くの CPU やディスク、自分で選んだリージョンにあるマシンなどです。自分で管理している Linux マシンであれば、Vultr の VPS、AWS の EC2 インスタンス、オンプレミスのサーバーなど、何でも使えます。

どれにも当てはまらなければ、このページは必要ありません。エージェントは、初めて必要になったときに endue クラウド上の endue Computer を自動的に使えるようになります。デバイスを参照してください。

  • x86_64 または aarch64 の Linux。プログラムは単一の静的バイナリなので、ディストリビューションは問いません。
  • systemd。
  • sudo による root 権限。
  • 外向きのインターネット接続。endue Computer は安全な WebSocket で endue に接続しに行くため、受信用のポートを開ける必要はありません。
  1. 左サイドバーからリソース › デバイスを開き、endue Computer グループの自分のデバイス・サーバーにインストールを選びます。

    エージェントビルダーで1つのエージェントのページを開いている場合は、リソース › デバイス › 自分のサーバーを接続で、そのエージェントに対して同じ操作ができます。

  2. エージェントを選び、必要に応じて一覧に表示するデバイス名(例:build-server-01)を入力します。インストールコマンドを作成を選びます。

    エージェントがすでに endue クラウド上の endue Computer を持っている場合は、先にそれとその中のファイルを削除するかどうかを確認されます。キャンセルすれば何も変わりません。エージェントの endue クラウド Computer を置き換えるを参照してください。

  3. コマンドをコピーして、サーバーで実行します。コマンドは次のような形です。

    Terminal window
    curl -fsSL https://download.endue.ai/computer/install.sh | sudo sh -s -- \
    --endpoint <endpoint> --token <token> --instance <agent-id>

    コマンドには、このエージェント用の接続トークンが含まれています。表示されるのは一度だけです。コピーする前にウィンドウを閉じてしまった場合は、新しいコマンドを作成します。

  4. 接続済みになるまで待ちます。コマンドが完了して数秒後に、ダイアログとデバイス一覧が接続済みに変わります。

  1. アーキテクチャを判別して endue Computer をダウンロードし、SHA-256 チェックサムを検証します。チェックサムが一致しない場合は、何もインストールしません。

  2. カーネルがどのプロファイルに対応しているかを確認します。

  3. ログインできないシステムユーザー endue を作成します。

  4. エージェント用に、次のものを作成します。

    パス所有者とモード内容
    /etc/endue-computer/<agent-id>.envroot, 0600接続先のアドレス、トークン、選んだ設定
    /var/lib/endue-computer/<agent-id>/workspaceendueエージェントのワークスペース(エージェントが作業するフォルダー)
    /var/lib/endue-computer/<agent-id>/stateendueワークスペースの外に置かれる、チェックポイントと保存済みのファイル
  5. エージェント用の systemd サービス endue-computer@<agent-id> を有効化して起動し、接続できたかどうかを報告します。

エージェントにできることを決める

Section titled “エージェントにできることを決める”

インストールコマンドの末尾に、オプションを追加します。

Terminal window
curl -fsSL https://download.endue.ai/computer/install.sh | sudo sh -s -- \
--endpoint <endpoint> --token <token> --instance <agent-id> \
--allow-exec git,python3 --no-network
オプション既定値効果
--allow-exec <list>git,node,npm,npx,python3,pip3,curlエージェントが実行できるプログラム。パスを付けずに、カンマ区切りで指定します。--allow-exec "" を指定すると、プログラムの実行を完全に無効にします。
--no-networkネットワークを許可エージェントが実行するプログラムは、ネットワークを使えません。
--no-delete削除を許可エージェントは、ワークスペース内のファイルを削除できません。git や npm などのツールはロックファイルや一時ファイルを削除するため、sandboxed プロファイルでは失敗します。
--profile auto|sandboxed|managedauto使用するプロファイル。

一覧にあってもサーバーにインストールされていないプログラムは、インストール時に報告されます。エージェントがそのプログラムを実行しようとすると、「インストールされていません」という結果が返ります。

プログラムを許可しても、そのプログラムでできることが制限されるわけではありません。node や python3 を許可すると、エージェントはプロファイルの範囲内で、それらが実行できるあらゆるコードを実行できます。

プロファイル条件エージェントが実行するプログラムにできないこと
sandboxedLinux 6.12以降(Landlock ABI 6)ワークスペースフォルダーの外にあるファイルの読み書き。managed の制限もすべて適用されます。
managedそれ以外のカーネル。Ubuntu 22.04(5.15)や Ubuntu 24.04 の GA カーネル(6.8)などroot になることや、権限の取得。systemd が /home、/root、ほかのエージェントのフォルダーを隠し、それ以外のシステムを読み取り専用にします。ファイルシステムのサンドボックスはないため、プログラムは endue ユーザーが読めるファイルなら、どれでも読めます。

auto は、カーネルが対応していれば sandboxed を選び、対応していなければ通知を出したうえで managed にフォールバックします。対応していないカーネルで sandboxed を指定すると、インストーラーはインストールせずに終了します。managed は、エージェント専用のサーバーか VM でのみ使ってください。

同じサーバーに別のエージェントを追加する

Section titled “同じサーバーに別のエージェントを追加する”

1台のサーバーを、複数のエージェントで使えます。リソース › デバイスでサーバーの行のメニューを開いてエージェントを追加を選び、エージェントを選んだら、新しいコマンドを同じサーバーで実行します。

エージェントごとに専用のサービス、設定ファイル、フォルダーが作られ、プログラムと endue ユーザーは共有されます。managed プロファイルで、各エージェントがほかのエージェントのフォルダーに入れないようにしているのは systemd です。

<agent-id> は、コマンドの --instance の後ろにある値に置き換えます。

Terminal window
sudo systemctl status endue-computer@<agent-id> # 実行中かどうか
sudo systemctl start endue-computer@<agent-id> # 起動
sudo systemctl stop endue-computer@<agent-id> # 停止
sudo journalctl -u endue-computer@<agent-id> -f # ログを追う

サービスが停止している間、デバイスはオフと表示され、エージェントは起動するよう知らせます。endue が代わりにクラウドの Computer を作成することはありません。

同じ --instance でインストールコマンドをもう一度実行すると、トークンを含む設定が置き換えられ、サービスが再起動されます。

エージェントのサーバーが接続されている間は、新しいコマンドを作成できません。先にサーバーでサービスを停止してから、コマンドを作成し直します。

Terminal window
curl -fsSL https://download.endue.ai/computer/install.sh | sudo sh -s -- \
--uninstall --instance <agent-id>

このコマンドは、エージェントのサービスを停止して無効化し、設定ファイルを削除します。ワークスペースと state のフォルダーは、--purge を付けない限り残ります。--instance を指定しない場合は、サーバー上のすべてのエージェントが削除されます。エージェントが1つも残らなければ、プログラムとサービス定義も削除されます。

サーバーでアンインストールしても endue からデバイスは削除されず、endue で削除してもサーバーからアンインストールされるわけではありません。ここでのアンインストールと、デバイスの行メニューでそのエージェントを外す操作の両方を行ってください。デバイスを削除するを参照してください。

  • 対応しているのは、x86_64 または aarch64 の Linux のみです。macOS 版と Windows 版はまだありません。
  • endue Computer は、エージェントごとに1台です。自分のサーバーにいるエージェントが endue クラウド上にも持つことはできません。また、すでに別のサーバーにいるエージェントは、先にそちらから外す必要があります。
  • endue は、自分のサーバーやサービスを起動できません。どちらかが停止している場合、エージェントはそれなしで作業します。
  • エージェントがサーバー上のツールを使えるのは、サービスが接続されている間だけです。エージェントがバックグラウンドで起動したプログラムは、サービスが停止すると一緒に停止します。
  • 一部のコンテナなど systemd がない環境では、--no-systemd を付けます。インストーラーはファイルを配置し、endue Computer を自分で起動するためのコマンドを表示します。この場合、前述の systemd による保護は適用されません。
  • サービスが status=226/NAMESPACE で起動に失敗する場合、そのマシンではマウント名前空間を作成できません。これは一部の LXC や OpenVZ のコンテナで起こります。完全な VM を使うか、--no-systemd を付けます。