Zum Inhalt springen

Eigenen Server oder eigene VM verbinden

Als Markdown anzeigen

Du kannst einem Agenten deinen eigenen Linux-Server oder deine eigene VM als endue Computer geben. Du führst auf dem Rechner einen Installationsbefehl aus, und ab dann liegen die Dateien und Programme des Agenten dort.

Nutze deinen eigenen Server, wenn die Arbeit etwas braucht, das nur dieser Rechner hat: Zugang zu deinem internen Netzwerk, bereits installierte Tools und Daten, mehr CPU oder Speicherplatz als standardmäßig oder einen Rechner in einer Region deiner Wahl. Jeder Linux-Rechner unter deiner Kontrolle funktioniert, etwa ein VPS bei Vultr, eine EC2-Instanz auf AWS oder ein Server im eigenen Rechenzentrum.

Trifft nichts davon zu, brauchst du diese Seite nicht. Ein Agent bekommt automatisch einen endue Computer in der endue Cloud, sobald er zum ersten Mal einen braucht. Siehe Geräte.

  • Linux auf x86_64 oder aarch64. Das Programm ist eine einzelne statische Binärdatei, die Distribution spielt also keine Rolle.
  • systemd.
  • Root-Zugriff über sudo.
  • Ausgehender Internetzugang. endue Computer baut die Verbindung zu endue selbst über einen sicheren WebSocket auf, du musst also keinen eingehenden Port öffnen.
  1. Öffne Ressourcen › Geräte über die linke Seitenleiste und wähle in der Gruppe endue Computer Auf eigenem Gerät oder Server installieren.

    Auf der Seite eines Agenten im Agent Builder macht Ressourcen › Geräte › Eigenen Server verbinden dasselbe für diesen Agenten.

  2. Wähle den Agenten und optional einen Gerätenamen für die Liste (zum Beispiel build-server-01). Wähle Installationsbefehl erstellen.

    Hat der Agent bereits einen endue Computer in der endue Cloud, wirst du gefragt, ob du ihn samt Dateien zuerst löschen willst. Brichst du ab, ändert sich nichts. Siehe Den endue Computer eines Agenten in der endue Cloud ersetzen.

  3. Kopiere den Befehl und führe ihn auf deinem Server aus. Er sieht so aus:

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

    Der Befehl enthält ein Verbindungstoken für diesen Agenten und wird nur einmal angezeigt. Schließt du das Fenster, bevor du ihn kopiert hast, erstelle einen neuen Befehl.

  4. Warte auf „Verbunden“. Einige Sekunden nachdem der Befehl durchgelaufen ist, wechseln der Dialog und die Geräteliste zu Verbunden.

  1. Erkennt die Architektur, lädt endue Computer herunter und prüft die SHA-256-Prüfsumme. Stimmt die Prüfsumme nicht, installiert es nichts.

  2. Prüft, welches Profil dein Kernel unterstützt.

  3. Legt einen Systembenutzer namens endue an, der sich nicht anmelden kann.

  4. Legt für den Agenten Folgendes an:

    PfadEigentümer und RechteInhalt
    /etc/endue-computer/<agent-id>.envroot, 0600Die Verbindungsadresse, das Token und die Einstellungen, die du gewählt hast
    /var/lib/endue-computer/<agent-id>/workspaceendueDer Arbeitsbereich des Agenten: der Ordner, in dem er arbeitet
    /var/lib/endue-computer/<agent-id>/stateendueCheckpoints und gespeicherte Dateien, außerhalb des Arbeitsbereichs
  5. Aktiviert und startet einen systemd-Dienst für den Agenten, endue-computer@<agent-id>, und meldet, ob die Verbindung steht.

Häng Optionen an das Ende des Installationsbefehls an:

Terminal-Fenster
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
OptionStandardWirkung
--allow-exec <list>git,node,npm,npx,python3,pip3,curlDie Programme, die der Agent ausführen darf, kommagetrennt und ohne Pfade. --allow-exec "" schaltet das Ausführen von Programmen komplett ab.
--no-networkNetzwerk erlaubtProgramme, die der Agent ausführt, können das Netzwerk nicht nutzen.
--no-deleteLöschen erlaubtDer Agent kann keine Dateien in seinem Arbeitsbereich löschen. Tools wie git und npm löschen Lock- und temporäre Dateien und schlagen deshalb mit dem Profil sandboxed fehl.
--profile auto|sandboxed|managedautoWelches Profil verwendet wird.

Ein Programm auf der Liste, das auf dem Server nicht installiert ist, wird bei der Installation gemeldet. Versucht der Agent, es auszuführen, bekommt er „nicht installiert“ zurück.

Ein erlaubtes Programm begrenzt nicht, was dieses Programm tut. Erlaubst du node oder python3, kann der Agent innerhalb der Grenzen des Profils jeden Code ausführen, den diese Programme ausführen können.

ProfilVoraussetzungWas vom Agenten gestartete Programme nicht können
sandboxedLinux 6.12 oder neuer (Landlock ABI 6)Dateien außerhalb des Arbeitsbereichsordners lesen oder schreiben. Alles unter managed gilt ebenfalls.
managedJeder andere Kernel, etwa Ubuntu 22.04 (5.15) oder der GA-Kernel von Ubuntu 24.04 (6.8)Root werden oder zusätzliche Rechte erlangen. systemd blendet /home, /root und die Ordner anderer Agenten aus und macht den Rest des Systems schreibgeschützt. Eine Dateisystem-Sandbox gibt es nicht: Programme können jede Datei lesen, die der Benutzer endue lesen kann.

auto wählt sandboxed, wenn der Kernel es unterstützt, und weicht sonst mit einem Hinweis auf managed aus. Verlangst du sandboxed auf einem Kernel, der es nicht unterstützt, bricht das Installationsskript ab, ohne etwas zu installieren. Nutze managed nur auf einem Server oder einer VM, die nur für den Agenten da ist.

Einen weiteren Agenten auf demselben Server hinzufügen

Abschnitt betitelt „Einen weiteren Agenten auf demselben Server hinzufügen“

Ein Server kann mehrere Agenten bedienen. Öffne unter Ressourcen › Geräte das Menü in der Zeile des Servers, wähle Agent hinzufügen, such den Agenten aus und führe den neuen Befehl auf demselben Server aus.

Jeder Agent bekommt einen eigenen Dienst, eine eigene Einstellungsdatei und eigene Ordner. Das Programm und der Benutzer endue werden gemeinsam genutzt. Beim Profil managed sorgt systemd dafür, dass kein Agent in die Ordner der anderen gelangt.

Ersetze <agent-id> durch den Wert nach --instance in deinem Befehl.

Terminal-Fenster
sudo systemctl status endue-computer@<agent-id> # läuft der Dienst?
sudo systemctl start endue-computer@<agent-id> # starten
sudo systemctl stop endue-computer@<agent-id> # stoppen
sudo journalctl -u endue-computer@<agent-id> -f # Log mitverfolgen

Solange der Dienst gestoppt ist, wird das Gerät als Aus angezeigt, und der Agent bittet dich, ihn zu starten. endue erstellt ersatzweise keinen Cloud-Computer.

Führst du einen Installationsbefehl mit demselben --instance erneut aus, werden die Einstellungen einschließlich des Tokens ersetzt und der Dienst neu gestartet.

Solange der Server des Agenten verbunden ist, kannst du keinen neuen Befehl erstellen. Stoppe zuerst den Dienst auf dem Server und erstelle den Befehl dann erneut.

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

Damit wird der Dienst des Agenten gestoppt und deaktiviert und seine Einstellungsdatei gelöscht. Der Arbeitsbereich und der state-Ordner bleiben erhalten, außer du ergänzt --purge. Ohne --instance werden alle Agenten auf dem Server entfernt. Ist kein Agent mehr übrig, werden auch das Programm und die Dienstdefinition entfernt.

Die Deinstallation auf dem Server entfernt das Gerät nicht aus endue, und das Entfernen in endue deinstalliert nichts auf dem Server. Mach beides: hier deinstallieren und im Zeilenmenü des Geräts beim Agenten Entfernen wählen. Siehe Ein Gerät entfernen.

  • Nur Linux auf x86_64 oder aarch64. Versionen für macOS und Windows gibt es noch nicht.
  • Ein endue Computer pro Agent. Ein Agent auf deinem Server kann nicht zusätzlich einen in der endue Cloud haben, und ein Agent, der schon auf einem anderen Server ist, muss dort zuerst entfernt werden.
  • endue kann weder deinen Server noch den Dienst starten. Ist einer von beiden nicht erreichbar, arbeitet der Agent ohne ihn.
  • Der Agent kann Tools auf dem Server nur nutzen, solange der Dienst verbunden ist. Programme, die er im Hintergrund gestartet hat, enden, wenn der Dienst stoppt.
  • Ohne systemd, etwa in manchen Containern, ergänze --no-systemd. Das Installationsskript legt dann die Dateien ab und gibt den Befehl aus, mit dem du endue Computer selbst startest. Die oben beschriebenen Schutzmaßnahmen von systemd gelten in diesem Fall nicht.
  • Startet der Dienst nicht und meldet status=226/NAMESPACE, kann der Rechner keine Mount-Namespaces anlegen. Das kommt in manchen LXC- und OpenVZ-Containern vor. Nutze eine vollständige VM oder --no-systemd.