# Anhang A · Testumgebung für Computer Use # # Diese Umgebung ist eine LEHRUMGEBUNG. Sie ist von Ihrem Rechner getrennt, # aber sie ist nicht gehärtet. Nutzen Sie sie mit Testkonten und Testdaten. # # Bauen: docker build -t astra-sandbox . # Starten: docker run --rm -p 127.0.0.1:8000:8000 \ # --memory=2g --cpus=2 --pids-limit=256 \ # --security-opt no-new-privileges \ # -e SANDBOX_TOKEN="$(openssl rand -hex 16)" \ # astra-sandbox # # Kein --network=host, keine Volumes aus Ihrem Dateisystem, kein --privileged. # Der Port ist absichtlich an 127.0.0.1 gebunden: von außen nicht erreichbar. FROM python:3.12-slim # X11 mit virtuellem Bildschirm, Fenstermanager, Screenshot-Werkzeug, Browser. # scrot ist Pflicht: ohne es liefert PyAutoGUI unter Linux keine Screenshots. RUN apt-get update && apt-get install -y --no-install-recommends \ xvfb x11-utils openbox scrot \ python3-tk python3-dev \ chromium \ fonts-dejavu-core \ xdotool \ && rm -rf /var/lib/apt/lists/* RUN pip install --no-cache-dir \ flask==3.1.3 \ gunicorn==23.0.0 \ pyautogui==0.9.54 \ pillow==11.3.0 \ pdfplumber==0.11.7 WORKDIR /app COPY sandbox_server.py helfer.py ./ # Ein Nutzer ohne Rechte. Der vom Modell erzeugte Code läuft mit DIESEN # Rechten — nicht mit Ihren (Kapitel 2.3). RUN useradd --create-home --shell /usr/sbin/nologin astra \ && chown -R astra:astra /app USER astra ENV DISPLAY=:99 \ SANDBOX_TIMEOUT=60 \ SANDBOX_MAX_CHARS=20000 \ PYTHONUNBUFFERED=1 EXPOSE 8000 # Xvfb und Fenstermanager starten, dann den Dienst. Browser und PyAutoGUI # benutzen damit dasselbe Display — sonst klickt der Agent ins Leere. CMD ["/bin/sh", "-c", "\ Xvfb :99 -screen 0 1440x900x24 -nolisten tcp & \ sleep 1 && openbox & \ exec gunicorn --bind 0.0.0.0:8000 --workers 1 --threads 8 \ --timeout 180 sandbox_server:app"]