2. Projekte

2.3 Ein Projekt starten: Aktionen und Ports

Was eine Aktion ist, wie man sie startet und beendet, die Ausgabe, der Port, die Standardaktion und wie du eigene in der Datei panel.json hinzufügst.

In der App: «Projekte»

Kurz gesagt

  • Eine Aktion ist ein Befehl des Projekts mit einem Namen: „npm run dev“, „php artisan serve“, die Website…
  • Web-Aktionen erhalten vom Kit einen Port; das Kit wartet, bis sie antworten, und gibt dir die Adresse zum Öffnen.
  • Der Stern „Standard“ legt die Aktion der Schaltfläche „Starten“ fest.
  • Aktionen werden von selbst erkannt; deine eigenen fügst du mit „Neue Aktion“ hinzu, sie landen in der Datei panel.json des Projekts.
Die Seite eines Projekts, Bereich „Start“Beispieldaten
Die Seite eines Projekts, Bereich „Start“

Oben die Schaltflächen Starten, Editor, Terminal und Agent; darunter die gewählte Aktion mit Status, Befehl und Port sowie die Liste der Aktionen.

Der Abschnitt „Start“

Oben steht das Detail der gewählten Aktion (anfangs die Standardaktion), darunter die Liste „Aktionen“. Ein Klick auf eine Zeile wählt sie aus und zeigt ihre Ausgabe; ▶ und ■ in der Zeile starten und beenden sie.

EintragWas er anzeigt
Statusgestoppt, startet, lauscht (Web-Aktion bereit), läuft, beendet, gestoppt, Fehler (mit dem Exit-Code).
BefehlDer ausgeführte Befehl oder der Server, der die Website bereitstellt (Dateiserver des Kits, Apache oder Caddy).
OrdnerWo der Befehl ausgeführt wird.
PortNur für Web-Aktionen: „automatisch“ oder eine von dir gewählte Zahl.
AdresseWährend die Aktion lauscht, die zu öffnende Adresse (ein Link).
Vom TelefonMit eingeschaltetem „Lokales Netzwerk“ in den Einstellungen die Adresse mit der IP dieses PCs im Netzwerk, zum Öffnen von einem Telefon oder einem anderen PC im selben Netzwerk: „Kopieren“ und „QR-Code anzeigen“ zum Scannen mit der Kamera, statt die IP abzutippen. Den QR-Code erstellt Atollo selbst, ohne Dienst im Internet. Für einen Namen wie shop.localhost eines gemeinsamen Servers gibt es keine: Das Telefon kann diesen Namen nicht senden.
Herkunftpanel.json, wenn die Aktion von Hand im Projekt geschrieben ist.

Unter dem Detail steht der Bereich „Ausgabe von …“ mit dem Kästchen „Folgen“, das die letzten Zeilen im Blick behält. Das Kit bewahrt die letzten 3000 Zeilen jeder Aktion auf; seine Hinweise erscheinen als Zeilen, die mit [Atollo] beginnen. Die Schaltflächen oben: der Stern „Standard“, „Im Browser öffnen“ (während eine Web-Aktion lauscht) und „Ausgabe entfernen“ (wenn die Aktion beendet ist).

Was passiert, wenn du auf „Starten“ klickst

  1. Neu einlesenErkennt das Projekt erneut: panel.json könnte sich geändert haben.
  2. InstallierenFehlt der Aktion eine Komponente, installiert es sie zuerst.
  3. VorbereitenUmgebung des Kits, Versionen des Projekts, Port, Variablen der Aktion.
  4. StartenFührt den Befehl im Ordner der Aktion aus.
  5. WartenBei einer Web-Aktion, bis der Port antwortet: Dann hat sie den Status „lauscht“.
  • Der Browser öffnet sich nicht von selbst: Verwende „Im Browser öffnen“ (hier, in der „Schnellübersicht“ oder im Bereich „Aktivität“). Die Adresse ist meist http://localhost:<Port>/.
  • Wenn das Programm den zugewiesenen Port ignoriert und einen anderen in der Ausgabe ausgibt, folgt das Kit diesem.
  • „Beenden“ schließt den gesamten Prozessbaum der Aktion. Wenn du Atollo schließt, werden alle Aktionen beendet.
  • Gestartete Aktionen erscheinen auch im Bereich „Aktivität“ und im Zähler der Statusleiste; im Bereich beendet „Alles stoppen“ sie nach einer Bestätigung zusammen mit den laufenden Datenbanken und Webservern.

Der Port

Jede Web-Aktion hat ihren eigenen Port, den das Kit beim ersten Mal zwischen 7100 und 7999 wählt und dann bei jedem Start beibehält: So ändert sich die Adresse nicht. Wenn du eine bestimmte Nummer brauchst, gib sie in das Feld „Port“ ein und drück Eingabe (oder verlass das Feld); wenn du es leerst, kehrst du zum automatischen Port zurück.

  • Der Port muss zwischen 1024 und 65535 liegen.
  • Die Ports 7000 bis 7099 gehören dem Editor: Einer davon wird mit „Die Ports 7000 bis 7099 gehören dem Editor“ abgelehnt.
  • Ein bereits von einer anderen Aktion verwendeter Port wird mit „Port bereits … zugewiesen“ abgelehnt, mit Projekt → Aktion.
  • Auch ein Port, den schon ein Pool der Webserver oder eine Version einer Datenbank hat, wird abgelehnt, und die Meldung nennt den Besitzer: „Port … gehört bereits zum Server …: Wähle einen anderen.“ oder „Port … gehört bereits zur Datenbank …: Wähle einen anderen.“ (zum Beispiel MySQL 8.4).

Die Standardaktion

Es ist die Aktion, die mit der Schaltfläche „Starten“ der Seite, mit ▶ in der Projektzeile und mit Umschalt+Eingabe in „Projekt öffnen“ startet. Um sie zu ändern, wähle die Aktion in der Liste und klicke auf den Stern „Standard“. Wenn du das Projekt als Website bereitstellst, wird die Website von selbst zur Standardaktion.

Aktionen hinzufügen, bearbeiten und entfernen

  1. Klicke im Bereich „Start“ auf „Neue Aktion“, neben der Überschrift „Aktionen“.
  2. Fülle „Name“, „Typ“ („Website oder Webserver“, „App mit Fenster“ oder „Befehl“) und „Befehl“ aus; bei Bedarf „Ordner“ (relativ zum Projekt), „Adresse“ (nur für Websites) und „Variablen“, eine NAME=Wert pro Zeile. Im Befehl wird {port} zum Port der Aktion.
  3. Klicke auf „Speichern“. Die Aktion erscheint in der Liste; ihre ID ergibt sich aus dem Namen.
  • „Bearbeiten“ öffnet für die gewählte Aktion dasselbe Formular. Bei einer erkannten Aktion speichert es deine Version mit derselben ID, die an ihre Stelle tritt.
  • „Entfernen“ gibt es nur für deine eigenen Aktionen und fragt nach; hat eine erkannte Aktion dieselbe ID, kommt sie zurück.
  • Die Website bearbeitest du im Bereich „Website“, nicht hier.

Die Datei panel.json

Deine eigenen Aktionen, der Stern und die Website stehen in der Datei panel.json im Projektordner. Du kannst sie auch von Hand schreiben und auf „Aktualisieren“ klicken. Die Datei liegt im Projekt, kommt also in Git und gilt für alle, die das Projekt mit Atollo verwenden.

Beispiel für panel.jsonprojects\gestionale\panel.json
{
  "default": "dev",
  "actions": [
    {
      "id": "dev",
      "label": "Avvia tutto",
      "type": "web",
      "command": "npm run dev -- --port {port}",
      "folder": "frontend",
      "env": { "API_URL": "http://localhost:8000" }
    },
    {
      "id": "test",
      "label": "Prove",
      "type": "command",
      "command": "php artisan test"
    }
  ]
}
SchlüsselBedeutung
idKennung der Aktion: Kleinbuchstaben, Ziffern und - _ : . (höchstens 40 Zeichen).
labelDer Name, den du in der Liste siehst.
typeweb (ein Server mit Port), desktop (eine App mit Fenster) oder command (ein Befehl, der etwas tut und endet).
commandDer Befehl. {port} wird durch den Port der Aktion ersetzt.
folderDer Unterordner, in dem er ausgeführt wird (optional).
urlDie zu öffnende Adresse, wenn sie nicht http://localhost:{port}/ ist (optional).
envZusätzliche Umgebungsvariablen nur für diese Aktion (optional).
defaultOben in der Datei: die id der Standardaktion.
replaceOben in der Datei: true, um alle erkannten Aktionen zu entfernen und nur deine zu behalten.
Unter der Haube
  • Der Befehl wird unter Windows mit cmd.exe und unter macOS und Linux mit /bin/sh ausgeführt, im Ordner der Aktion, mit der Umgebung des Kits und den Versionen des Projekts. Die Token der Agenten (CLAUDE_CODE_OAUTH_TOKEN, GEMINI_API_KEY, LLAMA_API_KEY) sind nicht darin: Nur die von Atollo gestarteten Agenten erhalten sie.
  • Web-Aktionen erhalten die Variablen PORT (und ROCKET_PORT) mit dem Port; alle erhalten BROWSER=none, PYTHONUNBUFFERED=1 und ATOLLO_LANG. Wenn das Projekt eine MySQL-Datenbank des Kits hat und seine .env keinen anderen Port angibt, erhalten sie auch DB_PORT.
  • Die zugewiesenen und die von dir gewählten Ports stehen in data\projects\<Projekt>\ports.json, außerhalb des Projekts.
  • Jede Aktion läuft in einer eigenen Prozessgruppe (einem Job Object unter Windows): „Beenden“ schließt auch die Kindprozesse, zum Beispiel den von npm gestarteten Server.
  • In alten Dateien werden die italienischen Schlüssel (azioni, etichetta, comando, cartella, predefinita) und {porta} statt {port} weiterhin akzeptiert.