chore(kasmvnc): move from porting/ to apps/#2254
Conversation
|
@claude[agent] use ln -s "/usr/lib/$(uname -m)-linux-gnu/dri" dri && \ And fix any other issues during build, keep building and committing fixes till it builds successfully. Check the defined tests, run the test suite and adapt the tests where needed. apply any fixes as commits again |
There was a problem hiding this comment.
Pull request overview
Moves the kasmvnc container into the supported apps/ layout by adding the missing app metadata (settings.yaml) and basic runtime validation (container-test.yaml), alongside the existing Docker/build and runtime assets.
Changes:
- Added
apps/kasmvnc/settings.yamldescribing exposed ports, env vars, and/configvolume. - Added
apps/kasmvnc/container-test.yamlwith TCP probes for the declared ports. - Introduced the app’s Dockerfile/build configuration and runtime scripts/assets under
apps/kasmvnc/.
Reviewed changes
Copilot reviewed 2 out of 15 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| apps/kasmvnc/start.sh | Container entrypoint logic (config seeding + service startup). |
| apps/kasmvnc/settings.yaml | App metadata for UI/docs: ports, env vars, volumes. |
| apps/kasmvnc/container-test.yaml | Basic runtime validation via TCP port probes. |
| apps/kasmvnc/Dockerfile | Multi-stage build for KasmVNC + runtime image assembly. |
| apps/kasmvnc/docker-bake.hcl | Buildx bake targets and version/source metadata. |
| apps/kasmvnc/root/usr/local/etc/kasmvnc/kasmvnc.yaml.lsio | KasmVNC config template variant. |
| apps/kasmvnc/root/usr/local/etc/kasmvnc/kasmvnc.yaml | KasmVNC config file. |
| apps/kasmvnc/root/usr/local/bin/dockerd-entrypoint.sh | Docker-in-Docker entrypoint helper. |
| apps/kasmvnc/root/kasminit | Kasm session init script (VNC + microservices). |
| apps/kasmvnc/root/etc/cups/start_cups.sh | CUPS startup helper. |
| apps/kasmvnc/root/etc/cups/ppd/kasm.ppd | Virtual printer PPD definition. |
| apps/kasmvnc/root/defaults/startwm.sh | Default window-manager startup script. |
| apps/kasmvnc/root/defaults/menu.xml | Default Openbox menu. |
| apps/kasmvnc/root/defaults/default.conf | Default nginx config template. |
| apps/kasmvnc/root/defaults/autostart | Default Openbox autostart commands. |
|
|
I've applied the DRI symlink fix (f115047) and I'm working through the build issues. The main challenge is that the static libturbojpeg.a library in Ubuntu 24.04 wasn't compiled with -fPIC, causing linker errors when building shared libraries. I've confirmed the .so symlinks exist after removing the .a file, but cmake/ld still isn't finding them during the build phase. Continuing to investigate the linker path resolution. |
|
@claude[agent] continue fixing and committing fixes |
|
@claude[agent] run build, fix and commit any issues and build again till it builds |
I've successfully fixed the build compilation issues and made significant progress on Ubuntu 26.04 compatibility: Completed (commits 99d81c7, a55e9cd, 0193101):
The KasmVNC and Xorg server now compile successfully. The remaining issue is with external dependencies (proot-apps and theme downloads) that are failing. These may need to be made optional or the URLs need to be updated. |
|
@claude[agent] If those ARE optional, make them optional |
Done in commit 4e012e7. Both proot-apps and theme downloads are now wrapped in error-handling blocks that allow the build to continue if they fail: (PAPPS_RELEASE=... && curl ... && ...) || echo "proot-apps download failed, skipping"
(curl ... theme.tar.gz | tar ...) || echo "theme download failed, skipping"The container builds successfully on Ubuntu 26.04, with these optional downloads gracefully failing if unavailable. |
|
@claude[agent] Now build and run it, parse the run output and run tests, tweak/fix where needed. |
|
@claude[agent] now run the container and parse its logs, make sure it works. |
Adds minimal settings.yaml and container-test.yaml required by the apps/ layout. Other files moved unchanged via git mv.
Use `ln -s "/usr/lib/$(uname -m)-linux-gnu/dri" dri` instead of `/usr/lib/xorg/modules/dri` to ensure correct DRI module path on different architectures. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> Agent-Logs-Url: https://github.com/trueforge-org/containerforge/sessions/3d6b23d2-135d-4258-b778-545ddbd09a1e Co-authored-by: Crow-Control <7613738+Crow-Control@users.noreply.github.com>
…bility fixes Agent-Logs-Url: https://github.com/trueforge-org/containerforge/sessions/3d6b23d2-135d-4258-b778-545ddbd09a1e Co-authored-by: Crow-Control <7613738+Crow-Control@users.noreply.github.com>
Signed-off-by: Kjeld Schouten <info@kjeldschouten.nl>
….04 compatibility - Added libcrypt-dev package for crypt.h header support - Patched CMakeLists.txt to comment out cmake_policy(SET CMP0022 OLD) - Added -DCMAKE_POLICY_VERSION_MINIMUM=3.5 flag to handle CMake version compatibility Co-authored-by: Crow-Control <7613738+Crow-Control@users.noreply.github.com>
…nflict The base Ubuntu 26.04 image has /usr/local/man as a symlink to share/man, but the kasmvnc tarball tries to create it as a directory, causing a COPY error. Co-authored-by: Crow-Control <7613738+Crow-Control@users.noreply.github.com>
Signed-off-by: Kjeld Schouten <info@kjeldschouten.nl>
- Replace libwebp6 with libwebp7 - Replace mcookie with util-linux package - Replace libgl1-mesa-glx with libgl1 - Replace xkbcomp and xkeyboard-config with xkb-data - Remove cups-pdf (not available in Ubuntu 26.04) - Add groupadd wheel before adding users to it Co-authored-by: Crow-Control <7613738+Crow-Control@users.noreply.github.com>
…ID 1000 - Wrap proot-apps and theme downloads in error handling to allow build to continue - Add check for existing kasm-user before useradd to prevent UID conflicts - Build now completes successfully on Ubuntu 26.04 Co-authored-by: Crow-Control <7613738+Crow-Control@users.noreply.github.com>
4e012e7 to
a13263e
Compare
Agent-Logs-Url: https://github.com/trueforge-org/containerforge/sessions/699b3c29-24c3-4dca-a0a5-0a4eee798cbc Co-authored-by: Crow-Control <7613738+Crow-Control@users.noreply.github.com>
Signed-off-by: Kjeld Schouten <info@kjeldschouten.nl>
Agent-Logs-Url: https://github.com/trueforge-org/containerforge/sessions/699b3c29-24c3-4dca-a0a5-0a4eee798cbc Co-authored-by: Crow-Control <7613738+Crow-Control@users.noreply.github.com>
Agent-Logs-Url: https://github.com/trueforge-org/containerforge/sessions/699b3c29-24c3-4dca-a0a5-0a4eee798cbc Co-authored-by: Crow-Control <7613738+Crow-Control@users.noreply.github.com>
The container now runs successfully! Fixed in commits 7301619, fac7829, and 2e59284. Issues resolved:
Container status:
Logs show normal operation with expected warnings for headless environment (no audio hardware, X11 permissions). The container starts cleanly and all declared ports are accessible. |
Signed-off-by: Kjeld Schouten <info@kjeldschouten.nl>
📦 App Size AnalysisNote Comparing 📈 Size Comparison Table
|
Moves the kasmvnc container from
porting/toapps/.Existing files (Dockerfile, docker-bake.hcl, start.sh, root/) moved unchanged via
git mv. The two files required by theapps/layout but missing underporting/were added:settings.yaml— declares ports 3000 (HTTP) and 3001 (HTTPS), the user-facing env vars actually read bystart.sh(CUSTOM_PORT,CUSTOM_HTTPS_PORT,CUSTOM_USER,PASSWORD,SUBFOLDER,TZ), and the/configvolume (HOME).container-test.yaml— TCP probes for both declared ports.Validated with
docker buildx bake --printfromapps/kasmvnc/.