Skip to content

chore(kasmvnc): move from porting/ to apps/#2254

Merged
Crow-Control merged 15 commits intomainfrom
chore/move-kasmvnc-to-apps
May 7, 2026
Merged

chore(kasmvnc): move from porting/ to apps/#2254
Crow-Control merged 15 commits intomainfrom
chore/move-kasmvnc-to-apps

Conversation

@Crow-Control
Copy link
Copy Markdown
Member

Moves the kasmvnc container from porting/ to apps/.

Existing files (Dockerfile, docker-bake.hcl, start.sh, root/) moved unchanged via git mv. The two files required by the apps/ layout but missing under porting/ were added:

  • settings.yaml — declares ports 3000 (HTTP) and 3001 (HTTPS), the user-facing env vars actually read by start.sh (CUSTOM_PORT, CUSTOM_HTTPS_PORT, CUSTOM_USER, PASSWORD, SUBFOLDER, TZ), and the /config volume (HOME).
  • container-test.yaml — TCP probes for both declared ports.

Validated with docker buildx bake --print from apps/kasmvnc/.

Copilot AI review requested due to automatic review settings May 6, 2026 20:17
@Crow-Control Crow-Control requested a review from alfi0812 as a code owner May 6, 2026 20:17
@Crow-Control Crow-Control marked this pull request as draft May 6, 2026 20:17
@Crow-Control
Copy link
Copy Markdown
Member Author

@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.
Then run the container, parse the log and check if it runs correctly, commit any fixes again.

Check the defined tests, run the test suite and adapt the tests where needed. apply any fixes as commits again

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.yaml describing exposed ports, env vars, and /config volume.
  • Added apps/kasmvnc/container-test.yaml with 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.

Comment thread apps/kasmvnc/settings.yaml
Comment thread apps/kasmvnc/container-test.yaml
@CLAassistant
Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.
1 out of 2 committers have signed the CLA.

✅ Crow-Control
❌ Claude
You have signed the CLA already but the status is still pending? Let us recheck it.

@Claude
Copy link
Copy Markdown
Contributor

Claude AI commented May 6, 2026

@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.
...

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.

@Crow-Control
Copy link
Copy Markdown
Member Author

@claude[agent] continue fixing and committing fixes

@Crow-Control
Copy link
Copy Markdown
Member Author

@claude[agent] run build, fix and commit any issues and build again till it builds

@Claude
Copy link
Copy Markdown
Contributor

Claude AI commented May 7, 2026

@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):

  • Added libcrypt-dev and patched CMakeLists.txt for CMake compatibility
  • Removed /usr/local/man symlink before COPY to prevent conflicts
  • Updated runtime dependencies for Ubuntu 26.04 (libwebp7, util-linux, libgl1, xkb-data)
  • Added wheel group creation before adding users

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.

@Crow-Control
Copy link
Copy Markdown
Member Author

@claude[agent] If those ARE optional, make them optional

@Claude
Copy link
Copy Markdown
Contributor

Claude AI commented May 7, 2026

@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.

Copilot stopped work on behalf of Crow-Control due to an error May 7, 2026 08:18
@Crow-Control
Copy link
Copy Markdown
Member Author

@claude[agent] Now build and run it, parse the run output and run tests, tweak/fix where needed.

@Crow-Control
Copy link
Copy Markdown
Member Author

@claude[agent] now run the container and parse its logs, make sure it works.
If not fix that and try again.

Crow-Control and others added 6 commits May 7, 2026 10:31
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>
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>
Crow-Control and others added 3 commits May 7, 2026 10:31
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>
Claude AI and others added 4 commits May 7, 2026 08:54
Signed-off-by: Kjeld Schouten <info@kjeldschouten.nl>
@Claude
Copy link
Copy Markdown
Contributor

Claude AI commented May 7, 2026

@claude[agent] now run the container and parse its logs, make sure it works.
If not fix that and try again.

The container now runs successfully! Fixed in commits 7301619, fac7829, and 2e59284.

Issues resolved:

  • Fixed Dockerfile COPY paths to properly copy ./root/ and start.sh
  • Changed base image to python-node:3.14.4 for Node.js runtime
  • Added npm rebuild step to fix NODE_MODULE_VERSION mismatch
  • Fixed nginx permissions and config directory (conf.d)
  • Rewrote start.sh for proper multi-service startup

Container status:

  • All services running: Xvnc, nginx, openbox, kclient
  • Ports listening: 3000 (HTTP), 3001 (HTTPS), 6900 (KasmVNC HTTP), 6901 (WebSocket)
  • HTTP 200 responses on ports 3000 and 3001

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>
@Crow-Control Crow-Control marked this pull request as ready for review May 7, 2026 09:13
@Crow-Control Crow-Control merged commit 6f99701 into main May 7, 2026
7 of 8 checks passed
@Crow-Control Crow-Control deleted the chore/move-kasmvnc-to-apps branch May 7, 2026 09:13
@trueforge-bot
Copy link
Copy Markdown

trueforge-bot Bot commented May 7, 2026

📦 App Size Analysis

Note

Comparing ghcr.io/trueforge-org/kasmvnc:rollingghcr.io/trueforge-org/kasmvnc:sandbox

📈 Size Comparison Table

OS/Platform Previous Current Change Trend
linux/amd64 0 B 1.02 GB +1.02 GB (+∞) 🔼
linux/arm64 0 B 373.59 MB +373.59 MB (+∞) 🔼

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants