webtop-custom (sha256:bf7b922fd4f4993fa605265b9890c55b8dcffac54fa81083515108e3866d21c8)

Published 2026-08-07 13:28:22 +00:00 by CanHakan

Installation

docker pull forgejo.hakan-can.org/canhakan/webtop-custom@sha256:bf7b922fd4f4993fa605265b9890c55b8dcffac54fa81083515108e3866d21c8
sha256:bf7b922fd4f4993fa605265b9890c55b8dcffac54fa81083515108e3866d21c8

Image layers

COPY / / # buildkit
LABEL org.opencontainers.image.authors=Kasm Tech "info@kasmweb.com"
LABEL com.kasmweb.image=true
LABEL com.kasmweb.gpu_acceleration_egl=nvidia
ARG DISTRO=ubuntu
ARG EXTRA_SH=noop.sh
ARG LANG=en_US.UTF-8
ARG LANGUAGE=en_US:en
ARG LC_ALL=en_US.UTF-8
ARG START_PULSEAUDIO=1
ARG START_XFCE4=1
ARG TZ=Etc/UTC
ENV AUDIO_PORT=4901 DEBIAN_FRONTEND=noninteractive DISPLAY=:1 DISTRO=ubuntu GOMP_SPINCOUNT=0 HOME=/home/kasm-user INST_SCRIPTS=/dockerstartup/install KASMVNC_AUTO_RECOVER=true KASM_VNC_PATH=/usr/share/kasmvnc LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8 LD_LIBRARY_PATH=/opt/libjpeg-turbo/lib64/:/usr/local/lib/ LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:/usr/lib/i386-linux-gnu:/usr/local/nvidia/lib:/usr/local/nvidia/lib64 MAX_FRAME_RATE=24 NO_VNC_PORT=6901 NVIDIA_DRIVER_CAPABILITIES=graphics,compat32,utility OMP_WAIT_POLICY=PASSIVE PULSE_RUNTIME_PATH=/var/run/pulse SDL_GAMECONTROLLERCONFIG=030000005e040000be02000014010000,XInput Controller,platform:Linux,a:b0,b:b1,x:b2,y:b3,back:b8,guide:b16,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:b12,dpdown:b13,dpleft:b14,dpright:b15,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7 SHELL=/bin/bash START_PULSEAUDIO=1 STARTUPDIR=/dockerstartup START_XFCE4=1 TERM=xterm VNC_COL_DEPTH=24 VNCOPTIONS=-PreferBandwidth -DynamicQualityMin=4 -DynamicQualityMax=7 -DLP_ClipDelay=0 VNC_PORT=5901 VNC_PORT=5901 VNC_PW=vncpassword VNC_RESOLUTION=1280x1024 VNC_RESOLUTION=1280x720 VNC_VIEW_ONLY_PW=vncviewonlypassword TZ=Etc/UTC
EXPOSE map[4901/tcp:{} 5901/tcp:{} 6901/tcp:{}]
WORKDIR /home/kasm-user
USER 1000
ENTRYPOINT ["/dockerstartup/kasm_default_profile.sh" "/dockerstartup/vnc_startup.sh" "/dockerstartup/kasm_startup.sh"]
CMD ["--wait"]
USER root
ENV HOME=/home/kasm-default-profile
ENV STARTUPDIR=/dockerstartup
WORKDIR /home/kasm-default-profile
ENV DEBIAN_FRONTEND=noninteractive SKIP_CLEAN=true KASM_RX_HOME=/dockerstartup/kasmrx DONT_PROMPT_WSL_INSTALL=No_Prompt_please INST_DIR=/dockerstartup/install INST_SCRIPTS=/ubuntu/install/tools/install_tools_deluxe.sh /ubuntu/install/misc/install_tools.sh /ubuntu/install/chrome/install_chrome.sh /ubuntu/install/chromium/install_chromium.sh /ubuntu/install/firefox/install_firefox.sh /ubuntu/install/sublime_text/install_sublime_text.sh /ubuntu/install/vs_code/install_vs_code.sh /ubuntu/install/nextcloud/install_nextcloud.sh /ubuntu/install/remmina/install_remmina.sh /ubuntu/install/only_office/install_only_office.sh /ubuntu/install/signal/install_signal.sh /ubuntu/install/gimp/install_gimp.sh /ubuntu/install/zoom/install_zoom.sh /ubuntu/install/obs/install_obs.sh /ubuntu/install/ansible/install_ansible.sh /ubuntu/install/terraform/install_terraform.sh /ubuntu/install/telegram/install_telegram.sh /ubuntu/install/thunderbird/install_thunderbird.sh /ubuntu/install/slack/install_slack.sh /ubuntu/install/gamepad_utils/install_gamepad_utils.sh /ubuntu/install/cleanup/cleanup.sh
COPY ./src/ /dockerstartup/install # buildkit
RUN /bin/sh -c for SCRIPT in $INST_SCRIPTS; do bash ${INST_DIR}${SCRIPT} || exit 1; done && $STARTUPDIR/set_user_permission.sh $HOME && rm -f /etc/X11/xinit/Xclients && chown 1000:0 $HOME && mkdir -p /home/kasm-user && chown -R 1000:0 /home/kasm-user && rm -Rf ${INST_DIR} # buildkit
ENV HOME=/home/kasm-user
WORKDIR /home/kasm-user
USER 1000
CMD ["--tail-log"]
USER root
RUN /bin/sh -c curl -fsSL https://deb.nodesource.com/setup_24.x | bash - && apt-get install -y nodejs=24.18.0-1nodesource1 && rm -rf /var/lib/apt/lists/* # buildkit
RUN /bin/sh -c printf '[Desktop Entry]\nVersion=1.0\nName=WhatsApp\nExec=google-chrome --app=https://web.whatsapp.com --no-sandbox\nIcon=google-chrome\nTerminal=false\nType=Application\nCategories=Chat;Network;InstantMessaging;\n' > /usr/share/applications/whatsapp.desktop # buildkit
RUN /bin/sh -c npm install -g @anthropic-ai/claude-code@2.1.216 @openai/codex@0.144.6 gitea-mcp@0.0.10 notion-mcp-server@2.12.0 @modelcontextprotocol/server-slack@2025.4.25 @cocal/google-calendar-mcp@2.6.2 --no-audit --no-fund # buildkit
RUN /bin/sh -c printf '[Desktop Entry]\nVersion=1.0\nName=Claude Code\nComment=Anthropic Claude Code AI assistant\nExec=xfce4-terminal --title "Claude Code" -e "bash -c '\''claude; exec bash'\''"\nIcon=utilities-terminal\nTerminal=false\nType=Application\nCategories=Development;AI;\n' > /usr/share/applications/claude-code.desktop && printf '[Desktop Entry]\nVersion=1.0\nName=OpenAI Codex\nComment=OpenAI Codex CLI\nExec=xfce4-terminal --title "OpenAI Codex" -e "bash -c '\''codex; exec bash'\''"\nIcon=utilities-terminal\nTerminal=false\nType=Application\nCategories=Development;AI;\n' > /usr/share/applications/openai-codex.desktop && mkdir -p /home/kasm-user/Desktop && cp /usr/share/applications/claude-code.desktop /home/kasm-user/Desktop/claude-code.desktop && chmod +x /home/kasm-user/Desktop/claude-code.desktop && chown 1000:1000 /home/kasm-user/Desktop/claude-code.desktop # buildkit
RUN /bin/sh -c curl -sL https://gitea.com/gitea/tea/releases/download/v0.14.2/tea-0.14.2-linux-amd64 -o /usr/bin/tea && chmod +x /usr/bin/tea && curl -sL https://github.com/cli/cli/releases/download/v2.96.0/gh_2.96.0_linux_amd64.tar.gz | tar -xz --strip-components=2 -C /usr/bin gh_2.96.0_linux_amd64/bin/gh && chmod +x /usr/bin/gh # buildkit
RUN /bin/sh -c apt-get update && apt-get install -y --no-install-recommends onboard && apt-get clean && rm -rf /var/lib/apt/lists/* # buildkit
RUN /bin/sh -c printf '#!/bin/bash\nif pgrep -x onboard > /dev/null; then\n pkill -x onboard\nelse\n onboard --size=800x200 &\nfi\n' > /usr/local/bin/toggle-keyboard.sh && chmod +x /usr/local/bin/toggle-keyboard.sh && printf '[Desktop Entry]\nVersion=1.0\nName=Tastatur\nComment=Bildschirmtastatur ein/ausschalten\nExec=/usr/local/bin/toggle-keyboard.sh\nIcon=onboard\nTerminal=false\nType=Application\nCategories=Utility;Accessibility;\n' > /usr/share/applications/onboard-toggle.desktop # buildkit
RUN /bin/sh -c apt-get update && curl -sL https://github.com/obsidianmd/obsidian-releases/releases/download/v1.12.7/obsidian_1.12.7_amd64.deb -o /tmp/obsidian.deb && apt-get install -y --no-install-recommends /tmp/obsidian.deb && rm /tmp/obsidian.deb && apt-get clean && rm -rf /var/lib/apt/lists/* # buildkit
RUN /bin/sh -c printf '[Desktop Entry]\nVersion=1.0\nName=Obsidian\nComment=Second Brain – hakan-brain Vault\nExec=obsidian --no-sandbox /home/kasm-user/hakan-brain\nIcon=obsidian\nTerminal=false\nType=Application\nCategories=Office;TextEditor;\n' > /usr/share/applications/obsidian-vault.desktop # buildkit
RUN /bin/sh -c apt-get autoremove -y && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* # buildkit
RUN /bin/sh -c apt-get update && apt-get install -y --no-install-recommends cron && apt-get clean && rm -rf /var/lib/apt/lists/* && echo 'kasm-user ALL=(root) NOPASSWD: /usr/sbin/cron' > /etc/sudoers.d/kasm-cron && sed -i '1a sudo /usr/sbin/cron' /dockerstartup/vnc_startup.sh # buildkit
RUN /bin/sh -c sed -i 's|kasmvncpasswd -u kasm_user -wo|kasmvncpasswd -u h.can@hakan-can.de -wo|' /dockerstartup/vnc_startup.sh # buildkit
COPY vault-sync.sh /usr/local/bin/vault-sync.sh # buildkit
COPY ensure-mcp.py /usr/local/bin/ensure-mcp.py # buildkit
COPY gcp-oauth.keys.json /etc/google-calendar-mcp/gcp-oauth.keys.json # buildkit
RUN /bin/sh -c chmod +x /usr/local/bin/vault-sync.sh && printf '[Desktop Entry]\nType=Application\nName=Vault Sync\nComment=hakan-brain git pull on login\nExec=/usr/local/bin/vault-sync.sh\nHidden=false\nX-GNOME-Autostart-enabled=true\n' > /etc/xdg/autostart/vault-sync.desktop # buildkit
COPY claude-vault.sh /usr/local/bin/claude-vault.sh # buildkit
COPY claude-vault-autostart.sh /usr/local/bin/claude-vault-autostart.sh # buildkit
RUN /bin/sh -c chmod +x /usr/local/bin/claude-vault.sh /usr/local/bin/claude-vault-autostart.sh && printf '[Desktop Entry]\nType=Application\nName=Claude Vault Autostart\nComment=Oeffnet Claude Code tmux-Session automatisch nach Login\nExec=/usr/local/bin/claude-vault-autostart.sh\nStartupNotify=false\nTerminal=false\nX-GNOME-Autostart-enabled=true\n' > /etc/xdg/autostart/claude-vault-autostart.desktop && printf '[Desktop Entry]\nVersion=1.0\nName=Claude Code\nComment=Anthropic Claude Code – Vault Session (tmux)\nExec=xfce4-terminal --title "Claude Code" -e "/usr/local/bin/claude-vault.sh"\nIcon=utilities-terminal\nTerminal=false\nType=Application\nCategories=Development;AI;\n' > /usr/share/applications/claude-code.desktop && cp /usr/share/applications/claude-code.desktop /home/kasm-user/Desktop/claude-code.desktop && chmod +x /home/kasm-user/Desktop/claude-code.desktop && chown 1000:1000 /home/kasm-user/Desktop/claude-code.desktop # buildkit
COPY claude-remote-autostart.sh /usr/local/bin/claude-remote-autostart.sh # buildkit
RUN /bin/sh -c chmod +x /usr/local/bin/claude-remote-autostart.sh && printf '[Desktop Entry]\nType=Application\nName=Claude Remote Control Autostart\nComment=Startet claude remote-control dauerhaft im Hintergrund (hetzner-webtop)\nExec=/usr/local/bin/claude-remote-autostart.sh\nStartupNotify=false\nTerminal=false\nX-GNOME-Autostart-enabled=true\n' > /etc/xdg/autostart/claude-remote-autostart.desktop # buildkit
RUN /bin/sh -c apt-get update && apt-get install -y --no-install-recommends scrot && apt-get clean && rm -rf /var/lib/apt/lists/* # buildkit
COPY desktop-control.py /usr/local/bin/desktop-control.py # buildkit
COPY desktop-control-autostart.sh /usr/local/bin/desktop-control-autostart.sh # buildkit
RUN /bin/sh -c chmod +x /usr/local/bin/desktop-control.py /usr/local/bin/desktop-control-autostart.sh && printf '[Desktop Entry]\nType=Application\nName=Desktop Control API\nComment=HTTP API fuer Hermes Desktop Control (Port 7777)\nExec=/usr/local/bin/desktop-control-autostart.sh\nStartupNotify=false\nTerminal=false\nX-GNOME-Autostart-enabled=true\n' > /etc/xdg/autostart/desktop-control.desktop # buildkit
RUN /bin/sh -c apt-get update && apt-get install -y --no-install-recommends ffmpeg python3-pip && apt-get clean && rm -rf /var/lib/apt/lists/* && pip3 install --no-cache-dir faster-whisper # buildkit
ENV HF_HOME=/usr/local/share/whisper-cache
RUN /bin/sh -c mkdir -p /usr/local/share/whisper-cache && python3 -c "from faster_whisper import WhisperModel; WhisperModel('small', device='cpu', compute_type='int8')" && chmod -R a+rX /usr/local/share/whisper-cache # buildkit
COPY transcribe.sh /usr/local/bin/transcribe.sh # buildkit
RUN /bin/sh -c chmod +x /usr/local/bin/transcribe.sh # buildkit
RUN /bin/sh -c apt-get update && apt-get install -y --no-install-recommends jq && apt-get clean && rm -rf /var/lib/apt/lists/* && pip3 install --no-cache-dir img2pdf # buildkit
COPY claude-tasks-cron-autostart.sh /usr/local/bin/claude-tasks-cron-autostart.sh # buildkit
COPY claude-tasks-crontab.txt /usr/local/share/claude-tasks-crontab.txt # buildkit
COPY claude-tasks-default /usr/local/share/claude-tasks-default # buildkit
RUN /bin/sh -c chmod +x /usr/local/bin/claude-tasks-cron-autostart.sh && printf '[Desktop Entry]\nType=Application\nName=Claude Tasks Cron\nComment=Reinstalliert den Crontab aus ~/claude-tasks/crontab.txt bei jedem Login (deploy-fest)\nExec=/usr/local/bin/claude-tasks-cron-autostart.sh\nStartupNotify=false\nTerminal=false\nX-GNOME-Autostart-enabled=true\n' > /etc/xdg/autostart/claude-tasks-cron.desktop # buildkit
ARG CLAUDE_DESKTOP_VERSION=1.22209.3
RUN |1 CLAUDE_DESKTOP_VERSION=1.22209.3 /bin/sh -c apt-get update && curl -fsSLo /tmp/claude-desktop.deb "https://downloads.claude.ai/claude-desktop/apt/stable/pool/main/c/claude-desktop/claude-desktop_${CLAUDE_DESKTOP_VERSION}_amd64.deb" && apt-get install -y --no-install-recommends /tmp/claude-desktop.deb && rm /tmp/claude-desktop.deb && apt-get clean && rm -rf /var/lib/apt/lists/* # buildkit
RUN |1 CLAUDE_DESKTOP_VERSION=1.22209.3 /bin/sh -c printf '[Desktop Entry]\nVersion=1.0\nName=Claude Desktop\nComment=Anthropic Claude Desktop (Chat/Cowork/Code)\nExec=claude-desktop --password-store=gnome-libsecret --no-sandbox\nIcon=claude-desktop\nTerminal=false\nType=Application\nCategories=Development;AI;Network;\n' > /usr/share/applications/claude-desktop.desktop && cp /usr/share/applications/claude-desktop.desktop /home/kasm-user/Desktop/claude-desktop.desktop && chmod +x /home/kasm-user/Desktop/claude-desktop.desktop && chown 1000:1000 /home/kasm-user/Desktop/claude-desktop.desktop # buildkit
RUN |1 CLAUDE_DESKTOP_VERSION=1.22209.3 /bin/sh -c printf '[Desktop Entry]\nType=Application\nName=Claude Desktop Autostart\nComment=Startet Claude Desktop automatisch mit der Session (Dauer-Login)\nExec=sh -c "sleep 8; exec claude-desktop --password-store=gnome-libsecret --no-sandbox"\nTerminal=false\nStartupNotify=false\nX-GNOME-Autostart-enabled=true\n' > /etc/xdg/autostart/claude-desktop-autostart.desktop # buildkit
RUN |1 CLAUDE_DESKTOP_VERSION=1.22209.3 /bin/sh -c apt-get update && apt-get install -y --reinstall gnome-keyring && apt-get install -y --no-install-recommends libsecret-tools dbus-x11 && apt-get clean && rm -rf /var/lib/apt/lists/* # buildkit
COPY keyring-unlock.sh /usr/local/bin/keyring-unlock.sh # buildkit
RUN |1 CLAUDE_DESKTOP_VERSION=1.22209.3 /bin/sh -c chmod 755 /usr/local/bin/keyring-unlock.sh && printf 'kasm-keyring-fixed-9f3a2c' > /usr/local/share/kasm-keyring-pw && chmod 644 /usr/local/share/kasm-keyring-pw && printf '[Desktop Entry]\nType=Application\nName=Keyring Unlock\nComment=Entsperrt gnome-keyring automatisch (persistente Credentials fuer Nextcloud/Claude)\nExec=/usr/local/bin/keyring-unlock.sh\nTerminal=false\nStartupNotify=false\nX-GNOME-Autostart-enabled=true\nX-GNOME-Autostart-Phase=Initialization\n' > /etc/xdg/autostart/keyring-unlock.desktop # buildkit
USER 1000

Labels

Key Value
com.kasmweb.gpu_acceleration_egl nvidia
com.kasmweb.image true
org.opencontainers.image.authors Kasm Tech "info@kasmweb.com"
Details
Container
2026-08-07 13:28:22 +00:00
0
OCI / Docker
linux/amd64
Kasm Tech "info@kasmweb.com"
4.5 GiB
Versions (3) View all
20260813 2026-08-13
latest 2026-08-13
20260807 2026-08-08