The SDE vApps app catalogue
Explore the SDE vApps app catalogue, learn how to add your own recipes, and understand the template building process. Ideal for engineers using SDE vApps, with a focus on open-source applications and efficient app management.
The open-source apps SDE vApps can build and publish for you, how to add a recipe of your own, and how templates are built and kept up to date.
1. How the catalogue works
Each app in the catalogue comes from a recipe: the Debian packages and setup steps that install it, and the app(s) it publishes. sde-vapps builds a template from the recipe once per node, then clones a host from that template for each vApp. You don't build or patch the hosts by hand.
Open the admin page → Catalogue. Each card shows the app's category, licence, whether it's built in or imported, its recipe version, its notes, its templates per node, and What it installs (the packages, steps and app commands). Cards marked Uses the internet have Internet access on by default.
2. The built-in apps
37 apps, all on Debian 13. Memory and CPU are the recipe's suggestion for one user, preselected in the editor; add about 1 GiB per extra active user. Internet is the default for the vApp's Internet access: with it off, the host reaches only DNS and the domain controllers.
| App | Category | What it is | Licence | Notes | Memory · CPU | Internet |
|---|---|---|---|---|---|---|
| Blender | 3D and CAD | 3D modelling, animation and rendering. | GPL | Containers have no GPU, so the viewport and renders use the CPU: fine for teaching and light scenes. Heavy work belongs on a GPU desktop pool. | 4 GiB · 4 cores | No |
| FreeCAD | 3D and CAD | Parametric 3D CAD for engineering and product design. | LGPL | 4 GiB · 2 cores | No | |
| OpenSCAD | 3D and CAD | Code-based 3D modelling, popular for 3D printing. | GPL | 2 GiB · 2 cores | No | |
| PrusaSlicer | 3D and CAD | Prepare 3D models for printing (G-code), for most FDM and resin printers. | AGPL-3.0 | The host can't reach printers: export the G-code to the user's PC (Drive) and print from there. | 3 GiB · 2 cores | No |
| Audacity | Audio and music | Record and edit audio. | GPL | Recording needs the vApp's Microphone passthrough on. | 2 GiB · 2 cores | No |
| LMMS | Audio and music | Music production: beats, melodies, synths and mixing. | GPL | 2 GiB · 2 cores | No | |
| MuseScore 3 | Audio and music | Music notation: write, play back and print scores. | GPL | 2 GiB · 2 cores | No | |
| Arduino IDE | Electronics | Write, compile and upload Arduino sketches. Comes with the AVR boards (Uno, Nano, Mega) installed; others from the Boards Manager. | AGPL-3.0 | Uploading to a board needs USB, which a container can't take: sketches compile here, and boards connected with SDE Devices need a VM host (a Linux desktop pool). Internet access is on by default so the Boards and Library Managers work. | 3 GiB · 2 cores | Yes (on by default) |
| Fritzing | Electronics | Breadboard, schematic and PCB views for electronics projects (Arduino and others). | GPL | 2 GiB · 2 cores | No | |
| KiCad | Electronics | Electronics design: schematics and PCB layout, with the standard symbol and footprint libraries. | GPL | The 3D models package is left out (several GB), so the 3D viewer shows boards without component models. | 4 GiB · 2 cores | No |
| Godot 3 | Game development | 2D and 3D game engine and editor. | MIT | Containers have no GPU, so the 3D editor and previews are slow: 2D games work best. | 3 GiB · 2 cores | No |
| 0 A.D. | Games | Historical real-time strategy: build a civilisation and battle through ancient history. | GPL | Containers have no GPU, so the 3D runs on the CPU: expect low frame rates, best for small maps and skirmishes. Keyboard and mouse only. | 4 GiB · 4 cores | No |
| Battle for Wesnoth | Games | Turn-based fantasy strategy with campaigns, skirmishes and a map editor. | GPL | Turn-based, so it plays well over a remote session. | 2 GiB · 2 cores | No |
| Chess | Games | Chess against the Stockfish engine (adjustable strength) or another player. | GPL | 1 GiB · 1 core | No | |
| Freeciv | Games | Turn-based empire building, from the Stone Age to the Space Age (Civilization-style). | GPL | Single-player games start their own local server. | 2 GiB · 2 cores | No |
| OpenTTD | Games | Build a transport empire with trains, road vehicles, ships and aircraft. With the free OpenGFX graphics, OpenSFX sounds and OpenMSX music. | GPL | Light on the CPU: plays well over a remote session. | 2 GiB · 2 cores | No |
| QGIS | Geography | Maps and geographic data (GIS). | GPL | Online map layers need the vApp's Internet access on. | 4 GiB · 2 cores | No |
| darktable | Graphics | Photo workflow and RAW editing. | GPL | 4 GiB · 2 cores | No | |
| GIMP | Graphics | Photo editing and image creation. | GPL | 3 GiB · 2 cores | No | |
| Inkscape | Graphics | Vector graphics: logos, diagrams, illustrations, and files for laser and vinyl cutters. | GPL | 2 GiB · 2 cores | No | |
| Krita | Graphics | Digital painting and illustration. | GPL | 4 GiB · 2 cores | No | |
| GNU Octave | Maths and science | Numerical computing, largely compatible with MATLAB scripts. | GPL | 2 GiB · 2 cores | No | |
| LibreOffice | Office | Documents, spreadsheets and presentations, compatible with Microsoft Office files. Publish Writer, Calc or Impress as a vApp of its own. Publishes: LibreOffice Writer, LibreOffice Calc, LibreOffice Impress. | MPL-2.0 | 2 GiB · 2 cores | No | |
| Code::Blocks | Programming | C and C++ IDE, with the GCC compiler and GDB debugger. | GPL | 2 GiB · 2 cores | No | |
| Geany | Programming | Light, fast code editor for many languages, with build and run buttons. | GPL | 2 GiB · 2 cores | No | |
| Kate | Programming | Powerful text and code editor: tabs, split views, syntax highlighting for hundreds of languages, find and replace across files. | LGPL | 2 GiB · 2 cores | No | |
| Notepadqq | Programming | The Linux take on Notepad++: tabs, syntax highlighting, search and replace with regular expressions. | GPL | Last released in 2018 and no longer developed; Kate is the better-maintained choice. | 2 GiB · 2 cores | No |
| Spyder | Programming | Python for science and data: editor, variable explorer and plots, with NumPy, SciPy, Matplotlib and pandas. | MIT | 3 GiB · 2 cores | No | |
| Thonny | Programming | A beginner-friendly Python editor with a simple debugger. | MIT | MicroPython boards over USB need a VM host, as for the Arduino IDE. | 1 GiB · 1 core | No |
| Visual Studio Code | Programming | Microsoft's code editor, with Git, Python and a C/C++ compiler ready to use. Extensions from the Marketplace. | Microsoft (free to use) | Internet access is on by default for the Extensions Marketplace (and Git hosts); telemetry and self-updates are off. Microsoft's licence applies: for the open-source build, use VSCodium (also in the catalogue). | 3 GiB · 2 cores | Yes (on by default) |
| VSCodium | Programming | VS Code built from its open-source code, without Microsoft's branding or telemetry. Git, Python and a C/C++ compiler ready to use; extensions from Open VSX. | MIT | Internet access is on by default for the Open VSX extension registry (and Git hosts). A few Microsoft-only extensions (e.g. Live Share, the official C/C++ and Pylance) aren't on Open VSX: use the Visual Studio Code recipe if you need them. | 3 GiB · 2 cores | Yes (on by default) |
| Dia | Publishing | Diagrams: flowcharts, network and UML diagrams. | GPL | 1 GiB · 1 core | No | |
| Scribus | Publishing | Desktop publishing: posters, leaflets, newsletters and print-ready PDFs. | GPL | 2 GiB · 2 cores | No | |
| Commodore 64 | Retro computing | The Commodore 64 in VICE, the most accurate C64 emulator, with the 1541 disk drive. | GPL | Debian's VICE leaves out Commodore's ROMs, so they come from the official VICE 3.9 release (checksum checked), as they do in VICE's own downloads. Load .d64, .prg and .t64 files from the user's mapped folders (turn Drive on). Keyboard only: VICE can map a joystick to the keys (Preferences, Input devices). | 1 GiB · 1 core | No |
| ZX Spectrum | Retro computing | The Sinclair ZX Spectrum (16K, 48K, 128K, +2, +3) in the Fuse emulator, with the original ROMs. | GPL | The Spectrum ROMs come from Debian's spectrum-roms package (Amstrad allows them to be shared; Debian keeps them in non-free, which the build turns on only for that package). Load .tap, .tzx and .z80 files from the user's mapped folders (turn Drive on). Keyboard only: Fuse can map a joystick to the keys (Options, Joysticks). | 1 GiB · 1 core | No |
| Kdenlive | Video | Video editing with multiple tracks, effects and titles. | GPL | Containers have no GPU, so previews and renders use the CPU: fine for short projects. | 4 GiB · 4 cores | No |
| Shotcut | Video | Simple, quick video editor. | GPL | Containers have no GPU, so previews and renders use the CPU: fine for short projects. | 4 GiB · 4 cores | No |
The Web browsers template (Chromium and Pale Moon, for modern and legacy web vApps) is also a built-in recipe. It's built from the Hosts tab and isn't listed on the Catalogue tab.
3. Limits that apply to every app
- No GPU. Hosts are containers, so 3D, video and games render on the CPU. Heavy GPU work belongs on a GPU desktop pool.
- No USB. A container can't take a USB device: the Arduino IDE compiles sketches but can't upload them, and Thonny can't reach MicroPython boards. For boards connected with SDE Devices, use a Linux desktop pool (a VM) with the app installed.
- Keyboard and mouse only. RDP carries no gamepads. The emulators can map a joystick to keys.
- One window. The app runs maximised, with no desktop, panel or menu. Closing it ends the session.
- Files move between the app and the user's PC through the vApp's Drive (file transfer) passthrough, on by default for catalogue apps. It needs FUSE on the host (see troubleshooting).
4. Downloads from outside Debian
Most apps come straight from Debian's packages. These recipes also download something, and the build checks it against the checksum its maker publishes, failing if it doesn't match:
| App | What's downloaded | Other set-up |
|---|---|---|
| Arduino IDE | The official 2.3.10 AppImage (SHA-512 from Arduino's release file) | The AVR boards are installed for every new user; the update check is off. |
| Visual Studio Code | Microsoft's 1.143.0 .deb (SHA-256 from its update service) | No Microsoft apt repository: update it by rebuilding the template. Telemetry, self-updates and experiments are off for every new user. |
| VSCodium | The project's 1.140 .deb (SHA-256 from the release) | Self-update checks off. Extensions come from Open VSX. |
| Commodore 64 | The VICE 3.9 release, for Commodore's ROMs (SHA-256 pinned) | The build checks the KERNAL, BASIC, character and 1541 drive ROMs are there. |
| ZX Spectrum | Nothing: the ROMs are Debian's spectrum-roms | That package is in Debian's non-free section. The build turns non-free on for that one package, then puts the sources back as they were. |
| Notepadqq | Nothing | Its editor's sandbox can't start in a container, so it's turned off (the container is the boundary). |
5. Publish an app
- On the app's card, click Build template. sde-vapps picks the node with the most free memory; to choose a node, use Hosts → Templates, pick the app and a node, and click Build. Build it once on each node that will run the app if your nodes use local storage.
- When the card shows <node>: ready, click New vApp on the card.
- Check the name, choose Which app if the recipe publishes more than one (LibreOffice: Writer, Calc or Impress), set Who gets it, Users sign in with and Internet access, and click Create.
- sde-vapps clones a host (
sde-app-<id>), sets up sign-in, the firewall and file transfer, then publishes the tile. Each vApp has a host of its own.
The fields are described in the settings reference.
6. Import and export a recipe
6.1 Export
Click Export on any card, built in or imported. Your browser saves <id>.recipe.json. Use it as a starting point for a recipe of your own, or to move an imported recipe to another site.
6.2 Write or change a recipe
A recipe is a JSON file. A small one:
{
"id": "gnumeric",
"name": "Gnumeric",
"category": "Office",
"icon": "sheet",
"licence": "GPL",
"homepage": "http://www.gnumeric.org/",
"version": 1,
"description": "A light spreadsheet.",
"notes": "Turn Drive on so users can open and save files on their PC.",
"packages": ["gnumeric"],
"script": [],
"apps": [
{ "id": "gnumeric", "name": "Gnumeric", "exec": "gnumeric" }
],
"memory": 1024,
"cores": 1,
"disk": 8,
"internet": false
}
- id: 1–31 lower-case letters, digits or dashes. It can't be
webor the id of a built-in recipe. - packages: Debian 13 package names from main or contrib. A package from anywhere else needs steps in script that add its source (see the ZX Spectrum recipe), or the build stops with apt's exit 100.
- script: shell lines, one per entry, run as root with
sh -euafter the packages: any failing line stops the build. 64 KB at most. Lines that printVERSION <name> <version>are shown in the template's contents. - apps: 1–10 apps, each an id, a name and a command. The build fails with "app <id>: <program> isn't installed" if the command's program isn't there. Games in
/usr/gamesare found. - memory (MiB), cores, disk (GiB): defaults 2048, 2 and 8.
- version: raise it every time you change the recipe (section 8).
Every field is listed in the settings reference.
6.3 Import
- On the Catalogue tab, click Import recipe and choose the JSON file.
- sde-vapps checks it and says what's wrong if it can't be used ("Not imported: …"). Importing a file with the same id as an imported recipe replaces it; built-in recipes can't be replaced.
- Build its template and create a vApp, as in section 5.
Imported recipes are kept in the unit's data folder (recipes/, alongside the state) and the activity log records each import with its packages and script length. Delete on an imported card removes it from the catalogue; it's refused while a vApp uses it. Its templates stay until you remove them on the Hosts tab.
7. How a template is built
A build takes 5–15 minutes (the Web browsers template about 10). Its progress shows on the Hosts tab, step by step:
- downloading Debian 13: the Debian 13 container image, if the node doesn't have it.
- creating the container: an unprivileged container in the 7000–7099 range, 2 GiB and 2 cores, with the recipe's disk size, on
vmbr0(or the node's first bridge), namedsde-tpl-<recipe>. - starting.
- installing xrdp and <app>: the host kit (xrdp from Debian backports, the app-only session, PipeWire for sound, FUSE tools for mapped drives), the common base (locale, firewall, AD tools), then the recipe's packages and steps.
- sealing: SSH host keys and the machine id are removed, so every host cloned from it gets its own.
- converting to a template.
The building container needs the internet (or a Debian mirror) throughout. If a step fails, the row shows the error (and a Build log when there's no working template on that node), and the half-built container is removed. If a template already existed on that node, it stays in use until a new build succeeds, then the old one is removed. Hosts already cloned from it keep running.
sde-vapps-fuse.timer that the Proxmox bootstrap script installs turns it on within 2 minutes, for templates and hosts alike.8. Out of date templates and rebuilds
Each template records the recipe version it was built from, the host kit version, the sde-vapps version that built it, and what the build reported (xrdp, browser and package versions). The Hosts tab's Templates table shows these.
| You see | Why | What to do |
|---|---|---|
| Out of date: rebuild (Hosts), <node>: out of date (card) | The recipe's version is higher than the one the template was built from: the recipe changed, or a new sde-vapps brought a new version of a built-in recipe | Rebuild the template, then Rebuild host on each vApp that uses it. |
| Readiness: "built before vApps had sound, so its hosts play none" | The template holds an older host kit, without PipeWire | The same: rebuild, then Rebuild host. |
| Readiness: "over 45 days old" | Its packages haven't been updated for a while | Rebuild it for security updates. Monthly is a good habit. |
| Recipe removed, or Readiness "its recipe is gone from the catalogue" | The imported recipe was deleted | Remove the template (Hosts → Templates, the bin button) once nothing needs it. |
Rebuilding a template doesn't touch hosts already running: Rebuild host on a vApp replaces its container with a fresh clone of the current template (users on it are disconnected). Settings changes and new sde-vapps versions reach existing hosts without a rebuild, because sde-vapps sets each host up again whenever its settings or setup script change. Only what's installed in the template needs a rebuild.
A template can't be removed while a vApp is waiting for a host from it.
9. Related pages
- Setting up SDE vApps (one-click apps): setting up SDE vApps
- SDE vApps settings reference: every setting and Readiness check
- Troubleshooting SDE vApps: symptoms, causes and fixes
- Building a host for an "App on a host" vApp: apps the catalogue doesn't have, on a host you build
person people found this useful.