Dein Arbeitsplatz.
Dein Container.

OpenTerminalApps gibt jedem Nutzer einen eigenen Linux-Arbeitsplatz im Browser – mit VS Code, VSCodium, JetBrains, Firefox und Terminal. Jede App läuft als eigener, scharfer Stream im eigenen Browsertab, jeder Arbeitsplatz hängt in einem eigenen Netz. Dazu ein Git-Server und ein KI-Assistent aus dem eigenen Haus – alles auf deiner Hardware.

ota – bash
0
Prüfungen, 107 davon im echten Browser
0
Handbuch-Kapitel, auf Deutsch und Englisch
0:1
Container pro Nutzer
0
fremde Hosts, die die Oberfläche lädt
Funktionsweise

Drei Schritte, ein Vollbild

Von der Anmeldung bis zum Stream: was zwischen Browser und Container passiert – in drei Stationen.

Anmelden

Einmal über Keycloak anmelden – mit Passwort, Passkey oder Einmalkennwort, auf Wunsch gegen Active Directory oder LDAP. Danach öffnen sich Arbeitsplatz, OTA-Git und Web-Anwendungen ohne zweiten Login.

Arbeitsplatz starten

Der eigene Linux-Container startet mit den Kernen und dem Speicher, die die Verwaltung zugeteilt hat – in einem eigenen Netz hinter einem Router. Das Zuhause bleibt erhalten.

App als Stream

Jede App auf ihrem eigenen Bildschirm, per Selkies 2.0 als H.264 über WebSockets – durch denselben HTTPS-Port wie die Oberfläche. Jede in einem eigenen Browsertab, der Bildschirm wächst mit dem Fenster.

Funktionen

Alles, was ein Arbeitsplatz im Browser braucht

Vom isolierten Container über das eigene Netz bis zur eigenen Paketquelle: die Bausteine, aus denen OpenTerminalApps besteht.

Ein Container, ein Zuhause

Jeder Nutzer bekommt einen eigenen Linux-Container. Alle Werkzeuge darin teilen sich ein Zuhause: dieselben Projekte, denselben SSH-Schlüssel, dieselbe Zwischenablage.

Jede App einzeln gestreamt

VS Code, PyCharm oder Firefox öffnen jeweils in einem eigenen Browsertab mit eigener Adresse – auch als Verknüpfung auf dem Desktop (PWA). Der XFCE-Desktop bleibt als zusätzliche Ansicht.

Ein eigenes Netz je Arbeitsplatz

Kein Firmennetz, keine Nachbarsitzung, kein Wirt – weil es keinen Weg dorthin gibt. Profile je Vorlage, Freigaben nach Adresse oder Name und befristete Portfreigaben.

Zentrale Anmeldung

Keycloak im Stack, verwaltet aus OTA heraus: Zwei-Faktor je Gruppe erzwingbar, Passkeys, AD- und LDAP-Anbindung – und ein lokaler Notzugang, falls Keycloak einmal nicht antwortet.

Root-Arbeitsplatz mit Docker

Für Entwickler: root, Docker und docker compose im Container – unter Sysbox, also ohne --privileged. Beenden hält an statt zu löschen; was installiert wurde, bleibt.

Eigene Paketquelle

Eigene .deb-Pakete per Drag & Drop, festgehaltene Stände mit Zurückdrehen – und auf Wunsch ein Spiegel von Debian 13 und Docker, damit Arbeitsplätze auch ohne Internet installieren.

Software in die Images

Pakete anklicken, Image bauen, Fassung aktivieren – mit Vorabprüfung, Rezepten und Rückrollen. Oder den eigenen Arbeitsplatz einrichten und als neue Fassung einfrieren.

Ablagen und Gruppenlaufwerke

Eine gemeinsame Ablage für alle, eine eigene je Nutzer und ein Laufwerk je Gruppe – in jeder laufenden Sitzung per Ziehen und Ablegen erreichbar.

Ressourcen und Kontingente

Kerne und Speicher je Nutzer und Vorlage, ein Kontingent je Zuhause und eine Kapazitätsanzeige, die Überbuchung zeigt, bevor sie passiert.

Betrieb mit Überblick

Alle Arbeitsplätze aller Nutzer auf einer Seite, ein root-Webterminal mit Protokoll, Sicherung nach Plan, /healthz und /metrics – und Updates mit einem Befehl.

Firmenproxy und NAT

Läuft hinter einem Firmenproxy und hinter einer Firewall mit Portweiterleitung. Nach außen reicht ein einziger Port – der Bildstrom geht durch denselben HTTPS-Eingang.

Zweisprachig, hell und dunkel

Oberfläche, Anmeldeseite und Handbuch auf Deutsch und Englisch, mit einer Standardsprache für alle. Dunkel, hell oder wie der Rechner – schon vor der Anmeldung umschaltbar.

Neu in OpenTerminalApps

Was seit dem letzten Stand dazugekommen ist

Ein eigener Git-Server, ein KI-Assistent im Editor, ein Blick auf installierte Software und Gruppen direkt aus dem Verzeichnis – jeweils mit echtem Screenshot. Zum Vergrößern einfach anklicken.

OTA-Git

Ein eigener Git-Server, im Menü ein- und ausschaltbar

OTA bringt Forgejo mit – unter einer eigenen Subdomain hinter demselben Eingang wie OTA. Angemeldet wird mit den OTA-Zugangsdaten über Keycloak, und nur berechtigte Gruppen kommen hinein.

  • OTA legt die Konten an und sperrt statt zu löschen; OTA-Admins sind auch dort Admins.
  • Arbeitsplätze bekommen Git vorkonfiguriert: ein Token je Arbeitsplatz, widerrufen bei Ende – clone und push ohne Passwort.
  • SSH nur im Containernetz, andere Git-Server bleiben unberührt, Repositories sind Teil der Sicherung.
IDE-AI

Ein KI-Assistent im Editor – mit deinem eigenen KI-Server

Continue in VS Code, VSCodium und PyCharm, verbunden mit dem eigenen Server: vLLM, llama.cpp oder jeder andere mit OpenAI-Schnittstelle. Keine Anfrage verlässt das Haus.

  • Modelle als Auswahlliste, je Modell Kontextfenster und Antwortlänge; dazu Agent-Modus, Temperatur, Regeln und berechtigte Gruppen.
  • Die Pakete kommen aus der eigenen Paketquelle in jeden Arbeitsplatz mit passendem Editor – auch in Ubuntu- und Kasm-Images.
  • Die Firewall gibt den KI-Server frei, solange IDE-AI an ist. Die Telemetrie von Continue ist aus.
Softwaremonitoring

Sehen, was in den Arbeitsplätzen installiert ist

Stündlich erfasst OTA, welche Anwendungen in jedem laufenden Arbeitsplatz stecken – apt, Startmenü, Flatpak und Snap, ohne Versionen.

  • Eine Whitelist, befüllbar aus dem aktuellen Stand mit einem Klick.
  • Was nicht darauf steht, sehen Administratoren auf dem Dashboard – samt Nutzer und Arbeitsplatz – und geben es per Knopfdruck frei.
  • Wird es deinstalliert, verschwindet die Meldung von selbst.
Verzeichnis

Gruppen direkt aus AD oder OpenLDAP

Eine OTA-Gruppe bezieht ihre Mitglieder aus LDAP-Gruppen – zusätzlich zu den von Hand Aufgenommenen. Das gilt sofort bei der Anmeldung und per Abgleich.

  • Abgleich im einstellbaren Takt von 15 Minuten bis zu einem Tag, oder auf Knopfdruck.
  • Wer im Verzeichnis fehlt, wird deaktiviert, nie gelöscht. Konten ohne Gruppe sehen ein leeres Dashboard mit Hinweis.
  • Ein Domänenkonto lässt sich einem bestehenden OTA-Konto zuordnen – Container, Zuhause und Ablagen bleiben.

Außerdem neu

Web-Anwendungen mit Anmeldung

Open WebUI, Grafana & Co. im Katalog: OTA legt den OIDC-Zugang an und entscheidet, wer die Kachel sieht und wer sich anmelden darf.

Zweisprachig bis ins Handbuch

Umschalter oben rechts und eine Standardsprache für alle – sie gilt auch für die Anmeldeseite und das Handbuch.

Update-Banner

Während eines Updates zeigt jede OTA-Seite einen Hinweis – und er verschwindet erst, wenn die neue Fassung gesund ist.

Keine vollen Zuhause mehr

Speicherabbilder abgestürzter Programme entstehen nicht mehr; was noch auftaucht, räumt OTA vor jeder Messung und täglich weg.

Ressourcen wirken sofort

Geänderte Kerne und Speicher erreichen auch Container, die schon laufen oder pausiert sind.

Ein Eingang für alle Konten

Konten entstehen in Keycloak; alte lokale Konten ziehen beim nächsten Anmelden mit ihrem Passwort um. Lokal bleibt nur der Notzugang.

Architektur

Drei Ebenen, ein Stream

Zwischen Browser und Anwendung liegen drei Ebenen: der Wirt mit dem Eingang, das Netz der Arbeitsplätze und der Arbeitsplatz selbst. Bewege den Zeiger über die Szene, um sie zu drehen.

Wirt

Der Wirt

  • Traefik und HTTPS mit eigener CA
  • Keycloak, API und Oberfläche
  • Nur der Agent fasst Docker an
Netz

Das Netz

  • Ein Netz je Arbeitsplatz
  • Router mit nftables und Namensdienst
  • Profile, Freigaben, Portfreigaben
Arbeitsplatz

Der Arbeitsplatz

  • Debian 13, XFCE, Selkies 2.0
  • Jede App auf eigenem Bildschirm
  • Ein Zuhause, Git und KI-Assistent

Zeiger über die Szene bewegen, um die Ebenen zu drehen.

Warum OpenTerminalApps

Selbst gehostet heißt: du bestimmst

OpenTerminalApps ist kein Cloud-Dienst und keine Blackbox. Es ist eine offene Plattform, die auf deiner Hardware läuft – und deren Entscheidungen samt Sackgassen offen dokumentiert sind. Es gibt keinen Anbieter, der mitbestimmt, wann sich was verändert.

Volle Kontrolle

Hardware, Netz, Updates – alles bei dir. Die Oberfläche lädt nichts von fremden Hosts nach, und die IP-Adresse keines Nutzers verlässt das Haus.

Scharfe Streams

H.264 statt rechteckiger Ausschnitte über VNC: jede App ein eigener Stream – flüssig bei Text, Code und Oberflächen.

Gemessen, nicht behauptet

452 automatische Prüfungen, 107 davon in einem echten Browser – bis zur Frage, ob der Stream wirklich Bilder dekodiert.

Läuft neben Kasm

Port 443 bleibt frei, Kasm-Images lassen sich einbinden und Profile übernehmen – Umstieg im eigenen Tempo.

Kein Lock-in

Apache-2.0, Debian als Basis, Docker als Transport, Keycloak als Anmeldung: Jeder Baustein ist offen und austauschbar.

Rundgang

Acht Screenshots, eine Plattform

Keine Mockups: echte Screenshots aus einer laufenden Installation – vom Dashboard über den KI-Assistenten bis zum Betrieb. Klick auf ein Bild vergrößert es.

Start & Dashboard

Die eigene laufende Sitzung mit ihren Anwendungen, was sie an Kernen und Speicher bekommen hat und was sie im Netz darf. Darunter Git, Web-Anwendungen und alles, was sich sonst starten lässt.

IDE-AI in VS Code

Ein Stream aus dem Arbeitsplatz: VS Code mit Continue, das die Frage an den eigenen KI-Server schickt – im eigenen Browsertab.

Workspaces

Die Vorlagen mit Kapazitätsanzeige: freier Arbeitsspeicher, Zusage je Sitzung, Kerne. Überbuchung sieht man vorher, nicht im OOM-Kill.

Netz

Der Grundregelsatz mit Grund und Herkunft je Zeile, wer gerade unter welcher Adresse arbeitet, Durchsatz, verworfene Pakete und befristete Portfreigaben.

Paketquellen

Spiegel von Debian 13 und Docker samt Alter, eigene Pakete und Snapshots – und die Betriebsart: Spiegel zuerst, nur Spiegel oder aus.

Softwaremonitoring

Was in den laufenden Arbeitsplätzen installiert ist und nicht auf der Whitelist steht – mit Herkunft, Nutzer und einem Knopf zum Freigeben.

OTA-Git

Forgejo ein- und ausschalten, Subdomain und berechtigte Gruppen festlegen, Konten abgleichen – alles in den Einstellungen von OTA.

Betrieb

Alle Arbeitsplätze aller Nutzer mit Status, Ressourcen und „zuletzt aktiv“ – dazu das root-Webterminal mit Protokoll.

1 / 8
Galerie

Alle Screenshots im Raster

Dreizehn Ecken der Plattform – echte Screenshots aus einer laufenden Installation, nur Hostnamen und Adressen sind anonymisiert. Die Oberfläche erscheint in der Sprache, die oben eingestellt ist.

Schnellstart & Doku

In wenigen Minuten zum ersten Arbeitsplatz

Ein Linux-Host mit Docker und Compose-Plugin, dazu git, make und openssl. Die Ports 8443 und 8081 müssen frei sein – 443 bleibt bewusst unbelegt, damit ein bestehendes Kasm daneben weiterlaufen kann.

Installieren

git clone https://github.com/bmetallica/openterminalapps.git
cd openterminalapps

sudo make setup                # .env mit Geheimnissen, Zertifikat
sudo make up                   # Stack bauen und starten
sudo make admin NAME=deinname  # erstes Administratorkonto

make ps                        # alle Dienste "healthy"?
curl -k https://localhost:8443/healthz

Aktualisieren

cd openterminalapps
sudo make backup     # erst sichern, dann ändern
git pull
sudo make update     # .env ergänzen, bauen, starten

Laufende Sitzungen werden nicht unterbrochen: Sie behalten ihr Abbild, bis sie beendet werden. Während des Updates zeigt jede OTA-Seite ein Banner.

Das Handbuch – 28 Kapitel

Es liegt im Programm unter Hilfe und im Repository, auf Deutsch und Englisch. Jedes Kapitel öffnet sich in der eingestellten Sprache auf GitHub.

Handbuch im Repository Apache-2.0 · 28 Kapitel · Deutsch und Englisch
FAQ

Häufige Fragen

Die Fragen, die vor der Installation am häufigsten kommen – von Hardware und Anmeldung über Kasm bis zu Git und KI.

Einen Linux-Host mit Docker und dem Compose-Plugin, dazu git, make und openssl. Frei sein müssen die Ports 8443 und 8081 sowie 30000–30019 als Vorrat für Portfreigaben. Der Bildstrom braucht keinen eigenen Port. Wie viel Leistung nötig ist, hängt von Nutzerzahl und Zuteilung ab – die Workspace-Übersicht zeigt, was der Host trägt.

Über Keycloak, das im Stack mitkommt – oder ein vorhandenes. Konten, Gruppen und die AD- oder LDAP-Anbindung richtet man in OTA ein. Zwei-Faktor lässt sich je Gruppe erzwingen, wahlweise mit Passkey. Für den Notfall gibt es unter /notfall einen lokalen Zugang, der ohne Keycloak funktioniert.

Nichts. Die Plattform steht unter Apache-2.0, der Quellcode liegt offen auf GitHub, und es gibt keine Abos, Seats oder Metering. Für die Anwendungen in den Images gelten deren eigene Lizenzen – das Handbuch prüft die wichtigsten am Lizenztext.

Ja. OTA läuft neben einer bestehenden Kasm-Installation auf demselben Host, ohne dort etwas umzustellen – Port 443 bleibt frei. Kasm-Images und ganze Registries lassen sich einbinden, Profile übernehmen. Umgestellt wird Nutzer für Nutzer.

Alles, was unter Debian 13 mit XFCE läuft: VS Code, VSCodium, JetBrains, Firefox, Terminal, Büro- und Fachsoftware. Pakete wählt man per Klick, für den Rest gibt es Rezepte, eigene .deb-Pakete und Golden Images – und als Zusatz Kasm-Images.

Jeder Arbeitsplatz hängt in einem eigenen Netz und erreicht weder Nachbarn noch Wirt noch Firmennetz, solange niemand es freigibt. Nur der Agent fasst Docker an, die Oberfläche lädt nichts von fremden Hosts, und Verwaltungsvorgänge stehen im Protokoll. 452 automatische Prüfungen messen das nach – die Netzregeln von innen.

Ja – das ist der Punkt: Continue im Editor spricht mit deinem Server, etwa vLLM oder llama.cpp, oder jedem anderen mit OpenAI-Schnittstelle. IDE-AI ist in den Einstellungen ein- und ausschaltbar; ausgeschaltet ist alles wieder weg.

Nein. OTA-Git ist im Menü ein- und ausschaltbar, beim Ausschalten bleiben die Daten erhalten. Andere Git-Server funktionieren im Arbeitsplatz weiter wie bisher, und eine eigene .gitconfig hat Vorrang.

sudo make backup, git pull, sudo make update. Das Update ergänzt fehlende Einstellungen, baut und startet, und die Datenbank wandert von selbst mit. Laufende Sitzungen werden nicht unterbrochen; sie übernehmen die neue Fassung beim nächsten Start.

Bereit für deinen eigenen Arbeitsplatz im Browser?

Quellcode, Handbuch und alle Container-Definitionen liegen offen im Repository. Klonen, drei make-Befehle, und der erste Arbeitsplatz ist wenige Minuten später online.