Namespace
vastai
Image / Tag
linux-desktop:cuda-12.9-ubuntu24.04-2026-06-16
Content Digest
sha256:7ff5a37efa5d9faf53286ea2fb096c4a4ab1d7571b37ab2e04283034c5eaa408
Details
Created

2026-06-16 13:54:09 UTC

Size

5.31 GB

Content Digest
Labels
  • maintainer
    Vast.ai Inc <contact@vast.ai>
  • org.opencontainers.image.description
    Linux desktop container image suitable for Vast.ai.
  • org.opencontainers.image.source
    https://github.com/vastai/
  • org.opencontainers.image.version
    24.04

Environment
CATALINA_BASE

/opt/tomcat9

CATALINA_HOME

/opt/tomcat9

DATA_DIRECTORY

/workspace

DBUS_SESSION_BUS_ADDRESS

unix:path=/run/user/1001/dbus/session_bus_socket

DEBIAN_FRONTEND

noninteractive

DESKTOP_SESSION

plasma

DISPLAY

:20

DISPLAY_CDEPTH

24

DISPLAY_DPI

96

DISPLAY_REFRESH

60

DISPLAY_SIZEH

1080

DISPLAY_SIZEW

1920

GSTREAMER_PATH

/opt/gstreamer

GTK_IM_MODULE

fcitx

IMAGE_TYPE

vast

KDE_APPLICATIONS_AS_SCOPE

1

KDE_FULL_SESSION

true

KDE_SESSION_VERSION

5

KWIN_COMPOSE

N

KWIN_EFFECTS_FORCE_ANIMATIONS

0

KWIN_EXPLICIT_SYNC

0

KWIN_X11_NO_SYNC_TO_VBLANK

1

NVIDIA_DRIVER_CAPABILITIES

all

PATH

/opt/instance-tools/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

PIPEWIRE_LATENCY

128/48000

PIPEWIRE_RUNTIME_DIR

/run/user/1001

PIP_BREAK_SYSTEM_PACKAGES

1

PULSE_RUNTIME_PATH

/run/user/1001/pulse

PULSE_SERVER

unix:/run/user/1001/pulse/native

PYTHONUNBUFFERED

1

PYTHON_VERSION

3.12

QT_IM_MODULE

fcitx

SELKIES_ENABLE_BASIC_AUTH

false

SELKIES_ENABLE_RESIZE

false

TCLLIBPATH

/usr/lib/tcltk/default

UV_CACHE_DIR

/.uv/cache

UV_LINK_MODE

copy

UV_NO_CACHE

1

UV_PYTHON_BIN_DIR

/.uv/python_bin

UV_PYTHON_INSTALL_DIR

/.uv/python_install

VGL_DISPLAY

egl

WORKSPACE

/workspace

XDG_CURRENT_DESKTOP

KDE

XDG_RUNTIME_DIR

/run/user/1001

XDG_SESSION_DESKTOP

KDE

XDG_SESSION_TYPE

x11

XIM

fcitx

XMODIFIERS

@im=fcitx

__GL_SYNC_TO_VBLANK

0


Layers

[#000] sha256:cb259a83ac3dd9fea0b394df41df2b298adf0df938fef5999475af18a751c257 - 0.52% (28.4 MB)

[#001] sha256:19a4b2f51a006831a9fea15b7a16a7a086bb883bec48f7edf219d0da3067a906 - 0.0% (1.53 KB)

[#002] sha256:a2d7b729ba0aeac9635aa10530999722af3dafc3eb2c14029ab308817590780f - 0.0% (141 KB)

[#003] sha256:a354479b7b6115e05675addaec2ae99e29dc4faac79d3fc0dcfb7e00b9a1ccfe - 0.0% (183 Bytes)

[#004] sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 - 0.0% (32 Bytes)

[#005] sha256:2ebf2937caf9c23f06e6c1db9b4d25d648bd85525417a6bc2b8b75aea2684cac - 0.16% (8.47 MB)

[#006] sha256:976b7fc9f4159f7883c82939c8217f6304bc3ed2c7f127f49775c45fe75c99ba - 10.82% (588 MB)

[#007] sha256:9297e2e93d2b8ea35f0781c3432282d06311bda68fde5e8947d54b05fbc670c6 - 0.0% (1.54 KB)

[#008] sha256:02c8fb24051c8429080fde5f3d19b2bba0d52a1b56d3b624d2370855e39398e2 - 0.0% (3.28 KB)

[#009] sha256:c0246098c3bd45581bd6b38d83a1ff4b2f83ec6cda4eba52cb25636c39a6b874 - 0.43% (23.6 MB)

[#010] sha256:ebc0be24d845fe918da0ff506b59b7af9e3b858759960aedd99ced5be5d358db - 1.67% (90.8 MB)

[#011] sha256:a92306a6f18d3bd4d5f7940b0b20ab0f516469805398963f50bbb6297fd2f9c7 - 0.0% (83.8 KB)

[#012] sha256:518bb8d659cfdfd8ef1858f0dc9778dc29c9001f101a08ab0dbded46776b46df - 0.25% (13.7 MB)

[#013] sha256:1cc04506868fd21682dadc7b384891bac03cf00b706f5964be7947ae16ce406b - 1.2% (65.5 MB)

[#014] sha256:1882923ca1f7425070cf081b0591ae5056ebccfebb2ac4c44ba0a79c60c0f3bd - 0.19% (10.4 MB)

[#015] sha256:cbb9bf1f679755ff8513c6980ebc5d272a6749e09ca0d9c42b189fcb28296683 - 2.98% (162 MB)

[#016] sha256:45055ebf6618ad4424cab38259720300d9a5589e7c9e1329899fe50504115c8d - 0.21% (11.4 MB)

[#017] sha256:a75ed521b65d4548bcf73fe3bf0ed6ce44d7920eb08a47ca952c3a52199bbd6b - 4.15% (225 MB)

[#018] sha256:8112a1f5cc99be568c989b0679d968d629e4e10846515f9c22f53d70732b4267 - 0.0% (631 Bytes)

[#019] sha256:070d38fe452d88c68b2ee2754614583f61342a8fdcf967bc951758366b3084ee - 0.44% (23.7 MB)

[#020] sha256:846dfb3a18ef105db8c51ea186dfb466c1d502dc5052c1d8a5424645998ea223 - 0.0% (119 Bytes)

[#021] sha256:a7691d49c57edf7cc1467ca16fdfdd9094f1971f21a7c4c852e45d9170ed867f - 19.52% (1.04 GB)

[#022] sha256:339dc082ad56988ec63e0ad48c31a72ff55b2501d80c46d57c20180a4f8a5277 - 0.0% (117 Bytes)

[#023] sha256:da17b8d41281e63ae46c5fecd7453e5082ee25fdcf2cfeee31fb791277f62cfa - 0.0% (142 KB)

[#024] sha256:7a47955c9a7fe3b3f0bd5091c6992c1de826df65258aed399d8e0ed3b1805c92 - 0.0% (83.8 KB)

[#025] sha256:1c33236519b3d1370b6b6072c6b5fdce9b82c5b22c4977b71d22eac62af5f109 - 0.0% (120 Bytes)

[#026] sha256:45c8da82fccc7a869324a8af5e679a991365f30fad0c536bbbe7d966889ebf98 - 0.0% (142 KB)

[#027] sha256:06874740a1efeca8cad626a7b26ce3b277bc81421b6d7f63a9ec32d831fa3e77 - 0.0% (83.7 KB)

[#028] sha256:df4e9600d5d2f6d70fc83974d2c4150e4380109d4657f0d067391289f6d25088 - 0.0% (118 Bytes)

[#029] sha256:27e50e05fa0290262c8724ac892f735578f302bab3b686686e312ab94172e2d6 - 0.0% (143 KB)

[#030] sha256:cf65df49bb9c9498d1ee1483d5cfeb908c22f8a41e32743bc2b76e49aea8aa77 - 0.0% (84.3 KB)

[#031] sha256:0fb63ee18fec47bae875cfffe731750dde1280d9c0432b15ba920fb3ad70a840 - 0.0% (120 Bytes)

[#032] sha256:8e8e233c4cb80067b1735515e17c2b47553b5663dd8911f894f3f0fb36c30460 - 0.0% (10.5 KB)

[#033] sha256:59ee19827696c5a94aa69d3dd8a839c5f70505adee2231c8ab00d5ce363643ef - 15.19% (826 MB)

[#034] sha256:913674d2719829e8b1f3471b54de36ac534cb5dc492d79fc31bade59a940f5a3 - 0.0% (377 Bytes)

[#035] sha256:3b1bbf9608051690794cd425478a825d914b1fd07ae29781bfeb798237db476a - 0.12% (6.66 MB)

[#036] sha256:6842e9ca5b459ac0e91f60a24802d706b296e6fa66bdf57907152195d12cac94 - 4.32% (235 MB)

[#037] sha256:98aaa67c8a9d8a7abebff1912e9d5b6f2e527b1ce60a8604eb97c9bf0f1ea039 - 2.02% (110 MB)

[#038] sha256:fff25f2aeee82bc8ab090e0bbf1e2da4acdae8c1a952c6e1aa24ba79ec74e53b - 0.06% (3.01 MB)

[#039] sha256:86a4ef7b7558775a911918141738e5ab98eef40266bdc4acb4dbfb419d8afecc - 0.23% (12.5 MB)

[#040] sha256:5b21b29bd3501d05ceb52e61f1f69a7b97c72162ce9732aa051e452753c78990 - 0.1% (5.28 MB)

[#041] sha256:f61d4b05e1b1daea3baa9e5d4b93bddea8df722681f59d833b8f2acffc82edc3 - 1.55% (84.3 MB)

[#042] sha256:b3d4b54f0687f98ef609cb1193653de018a241aedca8c3fc5101368cc3a5a32b - 16.85% (916 MB)

[#043] sha256:c6f2421f8298ca200a98f267338793982ae76a0fd8051d02a008ba233f26dc74 - 2.69% (146 MB)

[#044] sha256:b6b90c404d33072a323198018592327084c624ca5e73cb589e3d8eb55a971f19 - 3.35% (182 MB)

[#045] sha256:beb66a72f528a5ad1897d48237529deeb7b4bd2607c5d28704338a0b2e25193b - 9.18% (499 MB)

[#046] sha256:c9a04517821ea2c3d0d15033b52b11e8159817f5b9f38c03ef054bf02f737ae9 - 1.78% (96.6 MB)

[#047] sha256:f6456602e7c3098e7415380847272ddfeb1a78c6ecb9c7b7ac11b1cb8a45c05a - 0.0% (163 Bytes)

[#048] sha256:5ced94e957b0a0a8efad0c2cf041280ce9a8c5d988051f360e6db99880bd44ca - 0.0% (119 Bytes)


History
2026-05-20 01:37:19 UTC

/bin/sh -c #(nop) ARG RELEASE

2026-05-20 01:37:19 UTC

/bin/sh -c #(nop) ARG LAUNCHPAD_BUILD_ARCH

2026-05-20 01:37:19 UTC

/bin/sh -c #(nop) LABEL org.opencontainers.image.version=24.04

2026-05-20 01:37:21 UTC

/bin/sh -c #(nop) ADD file:46ac5b8ee4c64ad9ebe840abd5619f571a617ac19483764d47d0eeba7907934f in /

2026-05-20 01:37:22 UTC

/bin/sh -c #(nop) CMD ["/bin/bash"]

2026-06-05 14:06:42 UTC (buildkit.dockerfile.v0)

LABEL org.opencontainers.image.source=https://github.com/vastai/

2026-06-05 14:06:42 UTC (buildkit.dockerfile.v0)

LABEL org.opencontainers.image.description=Base image suitable for Vast.ai.

2026-06-05 14:06:42 UTC (buildkit.dockerfile.v0)

LABEL maintainer=Vast.ai Inc <contact@vast.ai>

2026-06-05 14:06:42 UTC (buildkit.dockerfile.v0)

SHELL [/bin/bash -c umask 002 && /bin/bash -c "$@" -]

2026-06-05 14:06:42 UTC (buildkit.dockerfile.v0)

RUN /bin/bash -c umask 002 && /bin/bash -c "$@" - sed -i '1i umask 002' /root/.bashrc # buildkit

2026-06-05 14:06:42 UTC (buildkit.dockerfile.v0)

COPY ./ROOT/ / # buildkit

2026-06-05 14:06:42 UTC (buildkit.dockerfile.v0)

ENV IMAGE_TYPE=vast

2026-06-05 14:06:42 UTC (buildkit.dockerfile.v0)

ENV DATA_DIRECTORY=/workspace

2026-06-05 14:06:42 UTC (buildkit.dockerfile.v0)

ENV WORKSPACE=/workspace

2026-06-05 14:06:42 UTC (buildkit.dockerfile.v0)

ENV PIP_BREAK_SYSTEM_PACKAGES=1

2026-06-05 14:06:42 UTC (buildkit.dockerfile.v0)

ENV DEBIAN_FRONTEND=noninteractive

2026-06-05 14:06:42 UTC (buildkit.dockerfile.v0)

ENV PYTHONUNBUFFERED=1

2026-06-05 14:06:42 UTC (buildkit.dockerfile.v0)

RUN /bin/bash -c umask 002 && /bin/bash -c "$@" - mkdir -p /usr/lib/tcltk && ln -sf /usr/lib/tcltk/$(uname -m)-linux-gnu /usr/lib/tcltk/default # buildkit

2026-06-05 14:06:42 UTC (buildkit.dockerfile.v0)

ENV TCLLIBPATH=/usr/lib/tcltk/default

2026-06-05 14:06:42 UTC (buildkit.dockerfile.v0)

ENV NVIDIA_DRIVER_CAPABILITIES=all

2026-06-05 14:06:42 UTC (buildkit.dockerfile.v0)

ARG BASE_IMAGE=ubuntu:24.04

2026-06-05 14:06:43 UTC (buildkit.dockerfile.v0)

RUN |1 BASE_IMAGE=ubuntu:24.04 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && if [[ "$BASE_IMAGE" == "nvidia/cuda:12.8"* ]]; then NCCL_VERSION=$(dpkg-query -W -f='${Version}' libnccl2 2>/dev/null | cut -d'-' -f1 || echo "0.0.0"); if dpkg --compare-versions "$NCCL_VERSION" lt "2.26.2"; then apt-get -y update; apt-get install -y --allow-change-held-packages libnccl2=2.26.2-1+cuda12.8 libnccl-dev=2.26.2-1+cuda12.8; fi; fi && apt-get clean && rm -rf /var/lib/apt/lists/* # buildkit

2026-06-05 14:07:01 UTC (buildkit.dockerfile.v0)

RUN |1 BASE_IMAGE=ubuntu:24.04 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && if ! command -v unminimize >/dev/null 2>&1; then apt-get update; apt-get install -y --no-install-recommends unminimize; fi && printf "%s\n%s" y y | unminimize && apt-get clean && rm -rf /var/lib/apt/lists/* # buildkit

2026-06-05 14:07:01 UTC (buildkit.dockerfile.v0)

ARG TARGETARCH=amd64

2026-06-05 14:08:15 UTC (buildkit.dockerfile.v0)

RUN |2 BASE_IMAGE=ubuntu:24.04 TARGETARCH=amd64 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && ([ $TARGETARCH = "arm64" ] && echo "Skipping i386 architecture for ARM builds" || dpkg --add-architecture i386) && apt-get update && apt-get upgrade -y && apt-get install --no-install-recommends -y acl bc ca-certificates gpg-agent software-properties-common locales lsb-release curl wget sudo moreutils nano vim less jq git git-lfs man tzdata expect fonts-dejavu fonts-freefont-ttf fonts-ubuntu ffmpeg sox mesa-utils-extra htop iotop strace libtcmalloc-minimal4 lsof procps psmisc nvtop rdma-core libibverbs1 ibverbs-providers libibumad3 librdmacm1 infiniband-diags build-essential cmake ninja-build gdb libssl-dev pkg-config autoconf automake libtool libffi-dev libcurl4-openssl-dev libxml2-dev libsqlite3-dev libpng-dev libjpeg-dev libwebp-dev python3-full python3-dev python3-pip netcat-traditional net-tools dnsutils iproute2 iputils-ping traceroute dos2unix rsync rclone zip unzip xz-utils zstd linux-tools-common cron rsyslog clinfo pocl-opencl-icd opencl-headers ocl-icd-libopencl1 ocl-icd-dev ocl-icd-opencl-dev vulkan-tools && mkdir -p /etc/OpenCL/vendors && echo "libnvidia-opencl.so.1" > /etc/OpenCL/vendors/nvidia.icd && apt-get clean && rm -rf /var/lib/apt/lists/* # buildkit

2026-06-05 14:08:15 UTC (buildkit.dockerfile.v0)

ARG TARGETARCH=amd64

2026-06-05 14:08:20 UTC (buildkit.dockerfile.v0)

RUN |2 BASE_IMAGE=ubuntu:24.04 TARGETARCH=amd64 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && if ! compgen -G "/etc/apt/sources.list.d/cuda*" > /dev/null && ! compgen -G "/etc/apt/sources.list.d/rocm*" > /dev/null; then UBUNTU_VERSION=$(. /etc/os-release && echo "$VERSION_ID" | tr -d '.') && if [[ "$TARGETARCH" = "amd64" ]]; then ARCH="x86_64"; elif [[ "$TARGETARCH" = "arm64" ]]; then ARCH="sbsa"; else echo "Unsupported TARGETARCH: ${TARGETARCH}. Cannot configure Nvidia CUDA repository." >&2; exit 1; fi && curl -fsSL https://developer.download.nvidia.com/compute/cuda/repos/ubuntu${UBUNTU_VERSION}/${ARCH}/3bf863cc.pub | gpg --dearmor --yes -o /usr/share/keyrings/nvidia-cuda.gpg && echo "deb [signed-by=/usr/share/keyrings/nvidia-cuda.gpg] https://developer.download.nvidia.com/compute/cuda/repos/ubuntu${UBUNTU_VERSION}/${ARCH} /" > /etc/apt/sources.list.d/cuda.list && apt-get update && apt-get clean && rm -rf /var/lib/apt/lists/*; fi # buildkit

2026-06-05 14:08:20 UTC (buildkit.dockerfile.v0)

RUN |2 BASE_IMAGE=ubuntu:24.04 TARGETARCH=amd64 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && useradd -ms /bin/bash user -u 1001 -g 0 && sed -i '1i umask 002' /home/user/.bashrc && echo "PATH=${PATH}" >> /home/user/.bashrc && echo "user ALL=(ALL) NOPASSWD:ALL" | tee /etc/sudoers.d/user && sudo chmod 0440 /etc/sudoers.d/user && mkdir -m 700 -p /run/user/1001 && chown 1001:0 /run/user/1001 && mkdir -p /run/dbus && mkdir -p /opt/workspace-internal/ # buildkit

2026-06-05 14:08:20 UTC (buildkit.dockerfile.v0)

ENV UV_CACHE_DIR=/.uv/cache

2026-06-05 14:08:20 UTC (buildkit.dockerfile.v0)

ENV UV_NO_CACHE=1

2026-06-05 14:08:20 UTC (buildkit.dockerfile.v0)

ENV UV_LINK_MODE=copy

2026-06-05 14:08:20 UTC (buildkit.dockerfile.v0)

ENV UV_PYTHON_BIN_DIR=/.uv/python_bin

2026-06-05 14:08:20 UTC (buildkit.dockerfile.v0)

ENV UV_PYTHON_INSTALL_DIR=/.uv/python_install

2026-06-05 14:08:21 UTC (buildkit.dockerfile.v0)

RUN |2 BASE_IMAGE=ubuntu:24.04 TARGETARCH=amd64 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && mkdir -p "${UV_CACHE_DIR}" "${UV_PYTHON_BIN_DIR}" "${UV_PYTHON_INSTALL_DIR}" && curl -LsSf https://astral.sh/uv/install.sh -o /tmp/uv-install.sh && chmod +x /tmp/uv-install.sh && UV_UNMANAGED_INSTALL=/usr/local/bin /tmp/uv-install.sh && rm -rf /tmp/* # buildkit

2026-06-05 14:08:26 UTC (buildkit.dockerfile.v0)

RUN |2 BASE_IMAGE=ubuntu:24.04 TARGETARCH=amd64 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && git clone https://github.com/nvm-sh/nvm.git /opt/nvm && (cd /opt/nvm/ && git checkout `git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1)`) && source /opt/nvm/nvm.sh && nvm install --lts # buildkit

2026-06-05 14:08:26 UTC (buildkit.dockerfile.v0)

COPY ./portal-aio /opt/portal-aio # buildkit

2026-06-05 14:08:26 UTC (buildkit.dockerfile.v0)

COPY /go/caddy /opt/portal-aio/caddy_manager/caddy # buildkit

2026-06-05 14:08:26 UTC (buildkit.dockerfile.v0)

ARG TARGETARCH=amd64

2026-06-05 14:08:30 UTC (buildkit.dockerfile.v0)

RUN |2 BASE_IMAGE=ubuntu:24.04 TARGETARCH=amd64 /bin/bash -c umask 002 && /bin/bash -c "$@" - chown -R 0:0 /opt/portal-aio && set -euo pipefail && uv venv --seed /opt/portal-aio/venv -p 3.11 && mkdir -m 770 -p /var/log/portal && chown 0:0 /var/log/portal/ && mkdir -p opt/instance-tools/bin/ && . /opt/portal-aio/venv/bin/activate && uv pip install -r /opt/portal-aio/requirements.txt && deactivate && wget -O /opt/portal-aio/tunnel_manager/cloudflared https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-${TARGETARCH} && chmod +x /opt/portal-aio/tunnel_manager/cloudflared && ln -s /opt/portal-aio/caddy_manager/caddy /opt/instance-tools/bin/caddy && ln -s /opt/portal-aio/tunnel_manager/cloudflared /opt/instance-tools/bin/cloudflared && apt-get clean && rm -rf /var/lib/apt/lists/* # buildkit

2026-06-05 14:08:31 UTC (buildkit.dockerfile.v0)

RUN |2 BASE_IMAGE=ubuntu:24.04 TARGETARCH=amd64 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && uv venv --seed /opt/instance-tools/provisioner/venv -p 3.11 && . /opt/instance-tools/provisioner/venv/bin/activate && uv pip install -r /opt/instance-tools/lib/provisioner/requirements.txt && deactivate # buildkit

2026-06-05 14:09:07 UTC (buildkit.dockerfile.v0)

RUN |2 BASE_IMAGE=ubuntu:24.04 TARGETARCH=amd64 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && cd /opt && git clone https://github.com/vast-ai/vast-cli && wget -O /usr/local/share/ca-certificates/jvastai.crt https://console.vast.ai/static/jvastai_root.cer && update-ca-certificates && pip install --no-cache-dir --ignore-installed jupyter supervisor tensorboard magic-wormhole && mkdir -p /var/log/supervisor # buildkit

2026-06-05 14:09:07 UTC (buildkit.dockerfile.v0)

ARG TARGETARCH=amd64

2026-06-05 14:09:09 UTC (buildkit.dockerfile.v0)

RUN |2 BASE_IMAGE=ubuntu:24.04 TARGETARCH=amd64 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && SYNCTHING_VERSION="$(curl -fsSL "https://api.github.com/repos/syncthing/syncthing/releases/latest" | jq -r '.tag_name' | sed 's/[^0-9\.\-]*//g')" && SYNCTHING_URL="https://github.com/syncthing/syncthing/releases/download/v${SYNCTHING_VERSION}/syncthing-linux-${TARGETARCH}-v${SYNCTHING_VERSION}.tar.gz" && mkdir -p /opt/syncthing/config && mkdir -p /opt/syncthing/data && wget -O /opt/syncthing.tar.gz $SYNCTHING_URL && (cd /opt && tar -zxf syncthing.tar.gz -C /opt/syncthing/ --strip-components=1) && chown -R user:root /opt/syncthing && rm -f /opt/syncthing.tar.gz # buildkit

2026-06-05 14:09:09 UTC (buildkit.dockerfile.v0)

ARG BASE_IMAGE=ubuntu:24.04

2026-06-05 14:09:09 UTC (buildkit.dockerfile.v0)

ARG PYTHON_VERSION=3.12

2026-06-05 14:09:09 UTC (buildkit.dockerfile.v0)

ENV PYTHON_VERSION=3.12

2026-06-05 14:12:11 UTC (buildkit.dockerfile.v0)

RUN |3 BASE_IMAGE=ubuntu:24.04 TARGETARCH=amd64 PYTHON_VERSION=3.12 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && curl -L -o /tmp/miniforge3.sh "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh" && bash /tmp/miniforge3.sh -b -p /opt/miniforge3 && /opt/miniforge3/bin/conda init && su -l user -c "/opt/miniforge3/bin/conda init" && mkdir -p /venv && /opt/miniforge3/bin/conda config --set auto_activate_base false && /opt/miniforge3/bin/conda config --set always_copy true && /opt/miniforge3/bin/conda config --set pip_interop_enabled true && /opt/miniforge3/bin/conda config --add envs_dirs /venv && /opt/miniforge3/bin/conda config --set env_prompt '({name}) ' && su -l user -c "/opt/miniforge3/bin/conda config --set auto_activate_base false" && su -l user -c "/opt/miniforge3/bin/conda config --set always_copy true" && su -l user -c "/opt/miniforge3/bin/conda config --set pip_interop_enabled true" && su -l user -c "/opt/miniforge3/bin/conda config --add envs_dirs /venv" && su -l user -c "/opt/miniforge3/bin/conda config --set env_prompt '({name}) '" && if [[ "$BASE_IMAGE" == *"nvidia"* ]]; then /opt/miniforge3/bin/conda config --add channels nvidia; su -l user -c "/opt/miniforge3/bin/conda config --add channels nvidia"; fi && /opt/miniforge3/bin/conda create -p /venv/main python="${PYTHON_VERSION}" -y && mkdir -p /venv/main/etc/conda/{activate.d,deactivate.d} && echo 'echo -e "\033[32mActivated conda/uv virtual environment at \033[36m$(realpath $CONDA_PREFIX)\033[0m"' > /venv/main/etc/conda/activate.d/environment.sh && /opt/miniforge3/bin/conda clean -ay && rm -rf /tmp/* # buildkit

2026-06-05 14:12:12 UTC (buildkit.dockerfile.v0)

RUN |3 BASE_IMAGE=ubuntu:24.04 TARGETARCH=amd64 PYTHON_VERSION=3.12 /bin/bash -c umask 002 && /bin/bash -c "$@" - cat <<'CONDA_ACTIVATION_SCRIPT' > /venv/main/bin/activate if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then echo "This script must be sourced: source bin/activate" exit 1 fi # Define deactivate function deactivate() { # Deactivate conda environment if type conda &> /dev/null; then conda deactivate 2>/dev/null || true fi # Unset the deactivate function itself unset -f deactivate # Return success return 0 } # Check if conda is properly initialized by testing for the conda shell function # (not just the command existence) if ! type conda &> /dev/null || ! declare -F conda &> /dev/null; then # Add condabin to PATH if not already there if [[ "$PATH" != *"/opt/miniforge3/condabin"* ]]; then export PATH="/opt/miniforge3/condabin:$PATH" fi # Source the conda shell script to load shell functions if [[ -f /opt/miniforge3/etc/profile.d/conda.sh ]]; then source /opt/miniforge3/etc/profile.d/conda.sh fi fi # Activate the conda environment conda activate "$(realpath /venv/main)" CONDA_ACTIVATION_SCRIPT # buildkit

2026-06-05 14:12:18 UTC (buildkit.dockerfile.v0)

RUN |3 BASE_IMAGE=ubuntu:24.04 TARGETARCH=amd64 PYTHON_VERSION=3.12 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && . /venv/main/bin/activate && uv pip install wheel huggingface-hub[cli] ipykernel ipywidgets && python -m ipykernel install --name="main" --display-name="Python3 (main venv)" && python -m ipykernel install --name="python3" --display-name="Python3 (ipykernel)" && deactivate && /usr/bin/pip install conda-pack ipykernel && /usr/bin/python3 -m ipykernel install --name="system-python" --display-name="Python3 (System)" && apt-get clean && rm -rf /var/lib/apt/lists/* # buildkit

2026-06-05 14:12:18 UTC (buildkit.dockerfile.v0)

ENV PATH=/opt/instance-tools/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

2026-06-05 14:12:18 UTC (buildkit.dockerfile.v0)

RUN |3 BASE_IMAGE=ubuntu:24.04 TARGETARCH=amd64 PYTHON_VERSION=3.12 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && env-hash > /.env_hash # buildkit

2026-06-05 14:12:18 UTC (buildkit.dockerfile.v0)

ENTRYPOINT ["/opt/instance-tools/bin/entrypoint.sh"]

2026-06-05 14:12:18 UTC (buildkit.dockerfile.v0)

CMD []

2026-06-05 14:53:57 UTC (buildkit.dockerfile.v0)

ENV NVIDIA_DRIVER_CAPABILITIES=all

2026-06-05 14:53:57 UTC (buildkit.dockerfile.v0)

ARG CUDA_VERSIONS=12-9

2026-06-05 14:53:57 UTC (buildkit.dockerfile.v0)

RUN |1 CUDA_VERSIONS=12-9 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && [ -n "${CUDA_VERSIONS// }" ] || { echo "CUDA_VERSIONS must not be empty" >&2; exit 1; } && apt-get update && PACKAGES="" && lowest_dotver="" && for ver in ${CUDA_VERSIONS}; do dashver="${ver//./-}" && dotver="${ver//-/.}" && PACKAGES="$PACKAGES cuda-compat-${dashver} cuda-nvcc-${dashver} cuda-cccl-${dashver} cuda-nvrtc-${dashver} libnpp-${dashver} libnvjpeg-${dashver} libcufft-${dashver}" && if [ -z "$lowest_dotver" ] || [ "$(printf '%s\n%s\n' "$dotver" "$lowest_dotver" | sort -V | head -n1)" = "$dotver" ]; then lowest_dotver="$dotver"; fi; done && PACKAGES="$PACKAGES libnccl2=*+cuda${lowest_dotver}" && set -f && apt-get install -y --no-install-recommends $PACKAGES && set +f && apt-get clean && rm -rf /var/lib/apt/lists/* # buildkit

2026-06-05 14:53:57 UTC (buildkit.dockerfile.v0)

RUN |1 CUDA_VERSIONS=12-9 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && env-hash > /.env_hash # buildkit

2026-06-10 10:48:13 UTC (buildkit.dockerfile.v0)

COPY ./ROOT / # buildkit

2026-06-10 10:48:13 UTC (buildkit.dockerfile.v0)

COPY portal-aio /opt/portal-aio # buildkit

2026-06-10 10:48:13 UTC (buildkit.dockerfile.v0)

RUN /bin/bash -c umask 002 && /bin/bash -c "$@" - env-hash > /.env_hash # buildkit

2026-06-12 15:48:22 UTC (buildkit.dockerfile.v0)

COPY ./ROOT / # buildkit

2026-06-12 15:48:22 UTC (buildkit.dockerfile.v0)

COPY portal-aio /opt/portal-aio # buildkit

2026-06-12 15:48:22 UTC (buildkit.dockerfile.v0)

RUN /bin/bash -c umask 002 && /bin/bash -c "$@" - env-hash > /.env_hash # buildkit

2026-06-15 13:36:06 UTC (buildkit.dockerfile.v0)

COPY ./ROOT / # buildkit

2026-06-15 13:36:06 UTC (buildkit.dockerfile.v0)

COPY portal-aio /opt/portal-aio # buildkit

2026-06-15 13:36:06 UTC (buildkit.dockerfile.v0)

RUN /bin/bash -c umask 002 && /bin/bash -c "$@" - env-hash > /.env_hash # buildkit

2026-06-16 13:49:03 UTC (buildkit.dockerfile.v0)

LABEL org.opencontainers.image.source=https://github.com/vastai/

2026-06-16 13:49:03 UTC (buildkit.dockerfile.v0)

LABEL org.opencontainers.image.description=Linux desktop container image suitable for Vast.ai.

2026-06-16 13:49:03 UTC (buildkit.dockerfile.v0)

LABEL maintainer=Vast.ai Inc <contact@vast.ai>

2026-06-16 13:49:03 UTC (buildkit.dockerfile.v0)

COPY ./ROOT / # buildkit

2026-06-16 13:49:03 UTC (buildkit.dockerfile.v0)

ARG TARGETARCH=amd64

2026-06-16 13:50:10 UTC (buildkit.dockerfile.v0)

RUN |1 TARGETARCH=amd64 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && add-apt-repository ppa:pipewire-debian/pipewire-upstream -y && add-apt-repository ppa:pipewire-debian/wireplumber-upstream -y && apt-get update && BASE_PACKAGES=( alsa-base alsa-utils aom-tools bzip2 coturn dbus file fonts-hack fonts-liberation fonts-noto fonts-noto-cjk fonts-noto-cjk-extra fonts-noto-color-emoji fonts-noto-extra fonts-noto-hinted fonts-noto-mono fonts-noto-ui-extra fonts-noto-unhinted fonts-opensymbol fonts-symbola glib-networking gnupg gstreamer1.0-plugins-bad gzip inotify-tools kmod lame libavcodec-extra libdrm2 libegl1 libgcrypt20 libgirepository-1.0-1 libgl1 libgles1 libgles2 libglib2.0-0 libglu1 libglvnd0 libglx0 libgudev-1.0-0 mesa-vulkan-drivers libopengl0 libopus0 libpci3 libpulse0 libsm6 libspa-0.2-bluetooth libspa-0.2-jack libva2 libvdpau-va-gl1 libvdpau1 libwayland-egl1 libx11-6 libx11-xcb1 libxau6 libxcb-dri3-0 libxcb1 libxdamage1 libxdmcp6 libxext6 libxfixes3 libxtst6 libxv1 novnc pipewire pipewire-audio-client-libraries pipewire-pulse python3-gi python3-numpy python3-setuptools python3-wheel svt-av1 unar vainfo vdpauinfo websockify wireplumber wmctrl x11-apps x11-utils x11-xkb-utils x11-xserver-utils x11vnc x264 x265 xauth xbitmaps xcvt xdg-user-dirs xdg-utils xdotool xfonts-base xfonts-scalable xinit xkb-data xclip xsel xserver-xorg-core xserver-xorg-input-all xserver-xorg-input-wacom xserver-xorg-video-fbdev xsettingsd xvfb ) && I386_PACKAGES=( libc6:i386 libdrm2:i386 libegl1:i386 libgl1:i386 libgles1:i386 libgles2:i386 libglu1:i386 libglvnd0:i386 libglx0:i386 libopengl0:i386 libsm6:i386 libva2:i386 libvulkan-dev:i386 libx11-6:i386 libxau6:i386 libxcb1:i386 libxdmcp6:i386 libxext6:i386 libxtst6:i386 libxv1:i386 ) && AMD64_ONLY_PACKAGES=( rar unrar ) && if [[ $TARGETARCH == "amd64" ]]; then apt-get install --no-install-recommends -y "${BASE_PACKAGES[@]}" "${I386_PACKAGES[@]}" "${AMD64_ONLY_PACKAGES[@]}"; else apt-get install --no-install-recommends -y "${BASE_PACKAGES[@]}"; fi && ln -s /usr/share/novnc/vnc.html /usr/share/novnc/index.html # buildkit

2026-06-16 13:50:10 UTC (buildkit.dockerfile.v0)

RUN |1 TARGETARCH=amd64 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && VULKAN_API_VERSION=$(dpkg -s libvulkan1 | grep -oP 'Version: [0-9|\.]+' | grep -oP '[0-9]+(\.[0-9]+)(\.[0-9]+)') && mkdir -pm755 /etc/vulkan/icd.d/ && printf '{"file_format_version" : "1.0.0","ICD": {"library_path": "libGLX_nvidia.so.0","api_version" : "%s"}}' "$VULKAN_API_VERSION" > /etc/vulkan/icd.d/nvidia_icd.json && mkdir -pm755 /usr/share/glvnd/egl_vendor.d/ && printf '{"file_format_version" : "1.0.0","ICD": {"library_path": "libEGL_nvidia.so.0"}}' > /usr/share/glvnd/egl_vendor.d/10_nvidia.json # buildkit

2026-06-16 13:50:15 UTC (buildkit.dockerfile.v0)

RUN |1 TARGETARCH=amd64 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && VIRTUALGL_VERSION="$(curl -fsSL "https://api.github.com/repos/VirtualGL/virtualgl/releases/latest" | jq -r '.tag_name' | sed 's/[^0-9\.\-]*//g')" && cd /tmp && curl -fsSL -O "https://github.com/VirtualGL/virtualgl/releases/download/${VIRTUALGL_VERSION}/virtualgl_${VIRTUALGL_VERSION}_${TARGETARCH}.deb" && apt-get install -y ./virtualgl_${VIRTUALGL_VERSION}_${TARGETARCH}.deb && chmod -f u+s /usr/lib/libvglfaker.so /usr/lib/libvglfaker-nodl.so /usr/lib/libdlfaker.so /usr/lib/libgefaker.so && case "$(dpkg --print-architecture)" in amd64) MULTIARCH_DIR="x86_64-linux-gnu" ;; arm64) MULTIARCH_DIR="aarch64-linux-gnu" ;; *) echo "Unsupported arch for VirtualGL symlink: $(dpkg --print-architecture)"; exit 1 ;; esac && mkdir -p "/usr/lib/${MULTIARCH_DIR}" && ln -sf /usr/lib/libvglfaker.so "/usr/lib/${MULTIARCH_DIR}/libvglfaker.so" && if [[ $TARGETARCH == "amd64" ]]; then curl -fsSL -O "https://github.com/VirtualGL/virtualgl/releases/download/${VIRTUALGL_VERSION}/virtualgl32_${VIRTUALGL_VERSION}_${TARGETARCH}.deb" && apt-get install -y ./virtualgl32_${VIRTUALGL_VERSION}_${TARGETARCH}.deb && chmod -f u+s /usr/lib32/libvglfaker.so /usr/lib32/libvglfaker-nodl.so /usr/lib32/libvglfaker-opencl.so /usr/lib32/libdlfaker.so /usr/lib32/libgefaker.so && chmod -f u+s /usr/lib/i386-linux-gnu/libvglfaker.so /usr/lib/i386-linux-gnu/libvglfaker-nodl.so /usr/lib/i386-linux-gnu/libvglfaker-opencl.so /usr/lib/i386-linux-gnu/libdlfaker.so /usr/lib/i386-linux-gnu/libgefaker.so; fi && rm -f /tmp/virtualgl* # buildkit

2026-06-16 13:50:39 UTC (buildkit.dockerfile.v0)

RUN |1 TARGETARCH=amd64 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && apt-get update && apt-get install --no-install-recommends -y meson pkg-config libc6-dev libegl-dev libglvnd-dev libva-dev libopenh264-dev libvpx-dev libvulkan-dev libwayland-dev libxrandr-dev libgstreamer-plugins-bad1.0-dev libffmpeg-nvenc-dev wayland-protocols libelf-dev && NVIDIA_VAAPI_DRIVER_VERSION="$(curl -fsSL "https://api.github.com/repos/elFarto/nvidia-vaapi-driver/releases/latest" | jq -r '.tag_name' | sed 's/[^0-9\.\-]*//g')" && cd /tmp && curl -fsSL "https://github.com/elFarto/nvidia-vaapi-driver/archive/v${NVIDIA_VAAPI_DRIVER_VERSION}.tar.gz" | tar -xzf - && mv -f nvidia-vaapi-driver* nvidia-vaapi-driver && cd nvidia-vaapi-driver && meson setup build && meson install -C build && rm -rf /tmp/* && echo "/usr/local/nvidia/lib" >> /etc/ld.so.conf.d/nvidia.conf && echo "/usr/local/nvidia/lib64" >> /etc/ld.so.conf.d/nvidia.conf # buildkit

2026-06-16 13:50:55 UTC (buildkit.dockerfile.v0)

RUN |1 TARGETARCH=amd64 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && if [[ "$(dpkg --print-architecture)" == "amd64" ]]; then cd /opt && SELKIES_VERSION="$(curl -fsSL "https://api.github.com/repos/selkies-project/selkies-gstreamer/releases/latest" | jq -r '.tag_name' | sed 's/[^0-9\.\-]*//g')" && cd /opt && curl -fsSL "https://github.com/selkies-project/selkies-gstreamer/releases/download/v${SELKIES_VERSION}/gstreamer-selkies_gpl_v${SELKIES_VERSION}_ubuntu$(grep '^VERSION_ID=' /etc/os-release | cut -d= -f2 | tr -d '\"')_$(dpkg --print-architecture).tar.gz" | tar -xzf - && cd /tmp && curl -O -fsSL "https://github.com/selkies-project/selkies-gstreamer/releases/download/v${SELKIES_VERSION}/selkies_gstreamer-${SELKIES_VERSION}-py3-none-any.whl" && /usr/bin/pip3 install --no-cache-dir --force-reinstall "selkies_gstreamer-${SELKIES_VERSION}-py3-none-any.whl" "websockets<14.0" && rm -f "selkies_gstreamer-${SELKIES_VERSION}-py3-none-any.whl" && cd /opt && curl -fsSL "https://github.com/selkies-project/selkies-gstreamer/releases/download/v${SELKIES_VERSION}/selkies-gstreamer-web_v${SELKIES_VERSION}.tar.gz" | tar -xzf - && cd /tmp && curl -o selkies-js-interposer.deb -fsSL "https://github.com/selkies-project/selkies-gstreamer/releases/download/v${SELKIES_VERSION}/selkies-js-interposer_v${SELKIES_VERSION}_ubuntu$(grep '^VERSION_ID=' /etc/os-release | cut -d= -f2 | tr -d '\"')_$(dpkg --print-architecture).deb" && apt-get update && apt-get install --no-install-recommends -y ./selkies-js-interposer.deb && rm -f selkies-js-interposer.deb; else echo "Skipping Selkies install on $(dpkg --print-architecture); dropping supervisor program."; rm -f /etc/supervisor/conf.d/selkies.conf; fi # buildkit

2026-06-16 13:51:02 UTC (buildkit.dockerfile.v0)

RUN |1 TARGETARCH=amd64 /bin/bash -c umask 002 && /bin/bash -c "$@" - apt-get purge -y --auto-remove meson libegl-dev libglvnd-dev libva-dev libopenh264-dev libvpx-dev libvulkan-dev libwayland-dev libxrandr-dev libgstreamer-plugins-bad1.0-dev libffmpeg-nvenc-dev wayland-protocols libelf-dev && apt-get clean && rm -rf /var/lib/apt/lists/* # buildkit

2026-06-16 13:51:02 UTC (buildkit.dockerfile.v0)

ENV CATALINA_BASE=/opt/tomcat9

2026-06-16 13:51:02 UTC (buildkit.dockerfile.v0)

ENV CATALINA_HOME=/opt/tomcat9

2026-06-16 13:51:03 UTC (buildkit.dockerfile.v0)

RUN |1 TARGETARCH=amd64 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && TOMCAT_VERSION="$(curl -fsSL https://dlcdn.apache.org/tomcat/tomcat-9/ | grep -oP 'v\K[0-9]+\.[0-9]+\.[0-9]+' | sort -V | tail -n1)" && cd /opt && wget "https://dlcdn.apache.org/tomcat/tomcat-9/v${TOMCAT_VERSION}/bin/apache-tomcat-${TOMCAT_VERSION}.tar.gz" && tar xzf "apache-tomcat-${TOMCAT_VERSION}.tar.gz" && rm "apache-tomcat-${TOMCAT_VERSION}.tar.gz" && ln -s "/opt/apache-tomcat-${TOMCAT_VERSION}" /opt/tomcat9 && chmod +x /opt/tomcat9/bin/*.sh && useradd -r -m -U -d /opt/tomcat9 -s /bin/false tomcat && chown -R tomcat:tomcat "/opt/apache-tomcat-${TOMCAT_VERSION}" && chmod -R 755 "/opt/apache-tomcat-${TOMCAT_VERSION}" # buildkit

2026-06-16 13:51:03 UTC (buildkit.dockerfile.v0)

COPY /guacamole-install/ / # buildkit

2026-06-16 13:51:14 UTC (buildkit.dockerfile.v0)

RUN |1 TARGETARCH=amd64 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && ldconfig && apt-get update && apt-get install --no-install-recommends -y libcairo2 libjpeg-turbo8 libuuid1 libpango-1.0-0 libvncserver1 libpulse0 libvorbis0a libwebp7 && . /etc/os-release && case "$VERSION_ID" in 24.04) apt-get install --no-install-recommends -y libavcodec60 libavformat60 libavutil58 libswscale7 libpng16-16t64 libfreerdp-client2-2t64 libssl3t64 ;; *) apt-get install --no-install-recommends -y libavcodec58 libavformat58 libavutil56 libswscale5 libpng16-16 libfreerdp-client2-2 libssl3 ;; esac && sed -i 's/port="8080"/port="16200" address="127.0.0.1"/' /opt/tomcat9/conf/server.xml && wget -O /opt/tomcat9/webapps/guacamole.war https://downloads.apache.org/guacamole/1.5.5/binary/guacamole-1.5.5.war && chown tomcat:tomcat /opt/tomcat9/webapps/guacamole.war && mkdir -p /etc/guacamole/{extensions,lib} && wget -O /etc/guacamole/extensions/guacamole-auth-noauth-1.5.5.jar https://github.com/GauriSpears/guacamole-noauth/releases/download/1.5.5/guacamole-auth-noauth-1.5.5.jar && echo "guacd-hostname: localhost" > /etc/guacamole/guacamole.properties && echo "guacd-port: 4822" >> /etc/guacamole/guacamole.properties && echo "noauth-config: /etc/guacamole/noauth-config.xml" >> /etc/guacamole/guacamole.properties && touch /etc/guacamole/noauth-config.xml && chown -R tomcat:tomcat /etc/guacamole && chmod -R 755 /etc/guacamole # buildkit

2026-06-16 13:52:57 UTC (buildkit.dockerfile.v0)

RUN |1 TARGETARCH=amd64 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && apt-get update && apt-get install --install-recommends -y kde-baseapps plasma-desktop plasma-workspace adwaita-icon-theme-full appmenu-gtk3-module ark aspell aspell-en breeze breeze-cursor-theme breeze-gtk-theme breeze-icon-theme dbus-x11 debconf-kde-helper desktop-file-utils dolphin dolphin-plugins enchant-2 fcitx fcitx-frontend-gtk2 fcitx-frontend-gtk3 fcitx-frontend-qt5 fcitx-module-dbus fcitx-module-kimpanel fcitx-module-lua fcitx-module-x11 fcitx-tools fcitx-hangul fcitx-libpinyin fcitx-m17n fcitx-mozc fcitx-sayura fcitx-unikey filelight frameworkintegration gwenview hunspell im-config kwrite kcalc kcharselect kdeadmin kde-config-fcitx kde-config-gtk-style kde-config-gtk-style-preview kdeconnect kdegraphics-thumbnailers kde-spectacle kdf kdialog kfind kget khotkeys kimageformat-plugins kinfocenter kio kio-extras kmag kmenuedit kmix kmousetool kmouth ksshaskpass ktimer kwin-addons kwin-x11 libdbusmenu-glib4 libdbusmenu-gtk3-4 libgail-common libgdk-pixbuf2.0-bin libgtk2.0-bin libgtk-3-bin libkf5baloowidgets-bin libkf5dbusaddons-bin libkf5iconthemes-bin libkf5kdelibs4support5-bin libkf5khtml-bin libkf5parts-plugins libpam0g libpam-modules libqt5multimedia5-plugins libreoffice librsvg2-common media-player-info okular okular-extra-backends plasma-browser-integration plasma-calendar-addons plasma-dataengines-addons plasma-integration plasma-runners-addons plasma-widgets-addons qml-module-org-kde-runnermodel qml-module-org-kde-qqc2desktopstyle qml-module-qtgraphicaleffects qml-module-qt-labs-platform qml-module-qtquick-xmllistmodel qt5-gtk-platformtheme qt5-image-formats-plugins qt5-style-plugins qtspeech5-flite-plugin qtvirtualkeyboard-plugin software-properties-qt sonnet-plugins sweeper systemsettings ubuntu-drivers-common vlc vlc-plugin-access-extra vlc-plugin-notify vlc-plugin-samba vlc-plugin-skins2 vlc-plugin-video-splitter vlc-plugin-visualization # buildkit

2026-06-16 13:53:15 UTC (buildkit.dockerfile.v0)

RUN |1 TARGETARCH=amd64 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && install -d -m 0755 /etc/apt/keyrings && curl -fsSL https://packages.mozilla.org/apt/repo-signing-key.gpg -o /etc/apt/keyrings/packages.mozilla.org.asc && echo "deb [signed-by=/etc/apt/keyrings/packages.mozilla.org.asc] https://packages.mozilla.org/apt mozilla main" > /etc/apt/sources.list.d/mozilla.list && printf 'Package: *\nPin: origin packages.mozilla.org\nPin-Priority: 1000\n' > /etc/apt/preferences.d/mozilla && apt-get update && apt-get install --no-install-recommends -y firefox && apt-get clean && rm -rf /var/lib/apt/lists/* # buildkit

2026-06-16 13:53:34 UTC (buildkit.dockerfile.v0)

RUN |1 TARGETARCH=amd64 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && if [[ "$(dpkg --print-architecture)" == "amd64" ]]; then cd /tmp && curl -o google-chrome-stable.deb -fsSL "https://dl.google.com/linux/direct/google-chrome-stable_current_$(dpkg --print-architecture).deb" && apt-get update && apt-get install -y ./google-chrome-stable.deb && rm -f google-chrome-stable.deb && apt-get clean && rm -rf /var/lib/apt/lists/* && update-alternatives --install /usr/bin/google-chrome-stable google-chrome-stable /usr/local/bin/google-chrome 100 && update-alternatives --set x-www-browser /usr/bin/google-chrome-stable; else echo "Skipping Google Chrome on $(dpkg --print-architecture); Firefox above is the default browser."; fi # buildkit

2026-06-16 13:53:34 UTC (buildkit.dockerfile.v0)

ARG BLENDER_VERSION=

2026-06-16 13:53:59 UTC (buildkit.dockerfile.v0)

RUN |2 TARGETARCH=amd64 BLENDER_VERSION= /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && if [[ "$(dpkg --print-architecture)" == "amd64" ]]; then if [ -z "$BLENDER_VERSION" ]; then MAJOR_MINOR=$(curl -fsSL "https://download.blender.org/release/" | grep -oP 'Blender\K\d+\.\d+' | sort -V | tail -1) && BLENDER_VERSION=$(curl -fsSL "https://download.blender.org/release/Blender${MAJOR_MINOR}/" | grep -oP "blender-\K${MAJOR_MINOR}\.\d+" | sort -V | tail -1); fi && echo "Installing Blender ${BLENDER_VERSION} (amd64 tarball)" && cd /opt && wget "https://download.blender.org/release/Blender${BLENDER_VERSION%.*}/blender-${BLENDER_VERSION}-linux-x64.tar.xz" && tar xvf "blender-${BLENDER_VERSION}-linux-x64.tar.xz" && rm "blender-${BLENDER_VERSION}-linux-x64.tar.xz" && ln -s "/opt/blender-${BLENDER_VERSION}-linux-x64/blender" /usr/bin/blender && cp "/opt/blender-${BLENDER_VERSION}-linux-x64/blender.desktop" /usr/share/applications && cp "/opt/blender-${BLENDER_VERSION}-linux-x64/blender.svg" /usr/share/icons/hicolor/scalable/apps/; else echo "Installing Blender from Ubuntu noble apt (arm64; no official Linux arm64 tarball exists)" && apt-get update && apt-get install --no-install-recommends -y blender && apt-get clean && rm -rf /var/lib/apt/lists/*; fi # buildkit

2026-06-16 13:54:09 UTC (buildkit.dockerfile.v0)

RUN |2 TARGETARCH=amd64 BLENDER_VERSION= /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && apt-get update && apt-get install --no-install-recommends -y glmark2 # buildkit

2026-06-16 13:54:09 UTC (buildkit.dockerfile.v0)

ENV XDG_RUNTIME_DIR=/run/user/1001

2026-06-16 13:54:09 UTC (buildkit.dockerfile.v0)

ENV DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1001/dbus/session_bus_socket

2026-06-16 13:54:09 UTC (buildkit.dockerfile.v0)

USER user

2026-06-16 13:54:09 UTC (buildkit.dockerfile.v0)

RUN |2 TARGETARCH=amd64 BLENDER_VERSION= /bin/bash -c umask 002 && /bin/bash -c "$@" - mkdir -p "$XDG_RUNTIME_DIR/dbus" # buildkit

2026-06-16 13:54:09 UTC (buildkit.dockerfile.v0)

ENV DISPLAY=:20

2026-06-16 13:54:09 UTC (buildkit.dockerfile.v0)

ENV PIPEWIRE_LATENCY=128/48000

2026-06-16 13:54:09 UTC (buildkit.dockerfile.v0)

ENV PIPEWIRE_RUNTIME_DIR=/run/user/1001

2026-06-16 13:54:09 UTC (buildkit.dockerfile.v0)

ENV PULSE_SERVER=unix:/run/user/1001/pulse/native

2026-06-16 13:54:09 UTC (buildkit.dockerfile.v0)

ENV PULSE_RUNTIME_PATH=/run/user/1001/pulse

2026-06-16 13:54:09 UTC (buildkit.dockerfile.v0)

ENV __GL_SYNC_TO_VBLANK=0

2026-06-16 13:54:09 UTC (buildkit.dockerfile.v0)

ENV DISPLAY_SIZEW=1920

2026-06-16 13:54:09 UTC (buildkit.dockerfile.v0)

ENV DISPLAY_SIZEH=1080

2026-06-16 13:54:09 UTC (buildkit.dockerfile.v0)

ENV DISPLAY_REFRESH=60

2026-06-16 13:54:09 UTC (buildkit.dockerfile.v0)

ENV DISPLAY_DPI=96

2026-06-16 13:54:09 UTC (buildkit.dockerfile.v0)

ENV DISPLAY_CDEPTH=24

2026-06-16 13:54:09 UTC (buildkit.dockerfile.v0)

ENV VGL_DISPLAY=egl

2026-06-16 13:54:09 UTC (buildkit.dockerfile.v0)

ENV SELKIES_ENABLE_RESIZE=false

2026-06-16 13:54:09 UTC (buildkit.dockerfile.v0)

ENV SELKIES_ENABLE_BASIC_AUTH=false

2026-06-16 13:54:09 UTC (buildkit.dockerfile.v0)

ENV GSTREAMER_PATH=/opt/gstreamer

2026-06-16 13:54:09 UTC (buildkit.dockerfile.v0)

ENV DESKTOP_SESSION=plasma

2026-06-16 13:54:09 UTC (buildkit.dockerfile.v0)

ENV XDG_SESSION_DESKTOP=KDE

2026-06-16 13:54:09 UTC (buildkit.dockerfile.v0)

ENV XDG_CURRENT_DESKTOP=KDE

2026-06-16 13:54:09 UTC (buildkit.dockerfile.v0)

ENV XDG_SESSION_TYPE=x11

2026-06-16 13:54:09 UTC (buildkit.dockerfile.v0)

ENV KDE_FULL_SESSION=true

2026-06-16 13:54:09 UTC (buildkit.dockerfile.v0)

ENV KDE_SESSION_VERSION=5

2026-06-16 13:54:09 UTC (buildkit.dockerfile.v0)

ENV KDE_APPLICATIONS_AS_SCOPE=1

2026-06-16 13:54:09 UTC (buildkit.dockerfile.v0)

ENV KWIN_COMPOSE=N

2026-06-16 13:54:09 UTC (buildkit.dockerfile.v0)

ENV KWIN_EFFECTS_FORCE_ANIMATIONS=0

2026-06-16 13:54:09 UTC (buildkit.dockerfile.v0)

ENV KWIN_EXPLICIT_SYNC=0

2026-06-16 13:54:09 UTC (buildkit.dockerfile.v0)

ENV KWIN_X11_NO_SYNC_TO_VBLANK=1

2026-06-16 13:54:09 UTC (buildkit.dockerfile.v0)

ENV GTK_IM_MODULE=fcitx

2026-06-16 13:54:09 UTC (buildkit.dockerfile.v0)

ENV QT_IM_MODULE=fcitx

2026-06-16 13:54:09 UTC (buildkit.dockerfile.v0)

ENV XIM=fcitx

2026-06-16 13:54:09 UTC (buildkit.dockerfile.v0)

ENV XMODIFIERS=@im=fcitx

2026-06-16 13:54:09 UTC (buildkit.dockerfile.v0)

USER root

2026-06-16 13:54:09 UTC (buildkit.dockerfile.v0)

RUN |2 TARGETARCH=amd64 BLENDER_VERSION= /bin/bash -c umask 002 && /bin/bash -c "$@" - env-hash > /.env_hash # buildkit

Details
Created

2026-06-16 13:57:02 UTC

Size

4.28 GB

Content Digest
Labels
  • maintainer
    Vast.ai Inc <contact@vast.ai>
  • org.opencontainers.image.description
    Linux desktop container image suitable for Vast.ai.
  • org.opencontainers.image.source
    https://github.com/vastai/
  • org.opencontainers.image.version
    24.04

Environment
CATALINA_BASE

/opt/tomcat9

CATALINA_HOME

/opt/tomcat9

DATA_DIRECTORY

/workspace

DBUS_SESSION_BUS_ADDRESS

unix:path=/run/user/1001/dbus/session_bus_socket

DEBIAN_FRONTEND

noninteractive

DESKTOP_SESSION

plasma

DISPLAY

:20

DISPLAY_CDEPTH

24

DISPLAY_DPI

96

DISPLAY_REFRESH

60

DISPLAY_SIZEH

1080

DISPLAY_SIZEW

1920

GSTREAMER_PATH

/opt/gstreamer

GTK_IM_MODULE

fcitx

IMAGE_TYPE

vast

KDE_APPLICATIONS_AS_SCOPE

1

KDE_FULL_SESSION

true

KDE_SESSION_VERSION

5

KWIN_COMPOSE

N

KWIN_EFFECTS_FORCE_ANIMATIONS

0

KWIN_EXPLICIT_SYNC

0

KWIN_X11_NO_SYNC_TO_VBLANK

1

NVIDIA_DRIVER_CAPABILITIES

all

PATH

/opt/instance-tools/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

PIPEWIRE_LATENCY

128/48000

PIPEWIRE_RUNTIME_DIR

/run/user/1001

PIP_BREAK_SYSTEM_PACKAGES

1

PULSE_RUNTIME_PATH

/run/user/1001/pulse

PULSE_SERVER

unix:/run/user/1001/pulse/native

PYTHONUNBUFFERED

1

PYTHON_VERSION

3.12

QT_IM_MODULE

fcitx

SELKIES_ENABLE_BASIC_AUTH

false

SELKIES_ENABLE_RESIZE

false

TCLLIBPATH

/usr/lib/tcltk/default

UV_CACHE_DIR

/.uv/cache

UV_LINK_MODE

copy

UV_NO_CACHE

1

UV_PYTHON_BIN_DIR

/.uv/python_bin

UV_PYTHON_INSTALL_DIR

/.uv/python_install

VGL_DISPLAY

egl

WORKSPACE

/workspace

XDG_CURRENT_DESKTOP

KDE

XDG_RUNTIME_DIR

/run/user/1001

XDG_SESSION_DESKTOP

KDE

XDG_SESSION_TYPE

x11

XIM

fcitx

XMODIFIERS

@im=fcitx

__GL_SYNC_TO_VBLANK

0


Layers

[#000] sha256:fff3795b437199a0b714aadba6fb2c251d7da853c3e257d3fed1d2c8d0f05158 - 0.63% (27.5 MB)

[#001] sha256:0a929e8ade5e11d6810f56ab62a7528e25c0df1400f86a2c415ae5945d505103 - 0.0% (1.53 KB)

[#002] sha256:132800e59677bf5a971b9a55917f12c9a0ad7f25add5c833a7faae8997852c0b - 0.0% (141 KB)

[#003] sha256:96ce238e76ab1c85cbab97bdf93b38e5a9855929141b24d6a9e80128d843250b - 0.0% (184 Bytes)

[#004] sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 - 0.0% (32 Bytes)

[#005] sha256:9bd612321a76e1044b8ebb841bf274df25925f452b617d011a3899fcfdcfcad2 - 0.19% (8.35 MB)

[#006] sha256:01e82cd04241d2c7ad846fda25c06aa011933ef53d8020c94916b96ce891fe62 - 12.58% (551 MB)

[#007] sha256:e9714dfec942ea90503352e99e460e61f4232fddf509addb01041eb6810f02cb - 0.0% (1.54 KB)

[#008] sha256:190bac6a302077d2975fb68ba3ebf7da4b791ce2fd0447cdd95ffda1cf86b864 - 0.0% (3.27 KB)

[#009] sha256:c57191263f2ba96b1789ba97bb6423b39ad65385fe0f1f48c116fa334ee35ce6 - 0.52% (22.6 MB)

[#010] sha256:8875d1ae81fb7a333cbefc728075f828be718b9312c7d5e03600c5dc1e940876 - 2.05% (89.8 MB)

[#011] sha256:d467c6447e00ea7c40df87d32f56241f36227c6c53cf5e771d07600d903f3769 - 0.0% (83.8 KB)

[#012] sha256:5729a4d378460497b403cf86c050b622168c336ca02c8b74bb6ee6b675e6c10e - 0.29% (12.7 MB)

[#013] sha256:466ad5f4f309c89b5d8f9723dd941748c2dad61f03768108bc6b3be8da518ed1 - 1.47% (64.3 MB)

[#014] sha256:593b30ffb0f2d8c53144216731dcb824d8634858488bc62407b8b901a0802e93 - 0.23% (10.2 MB)

[#015] sha256:51e716b6e95ba93f44080e487c06adfed0ea882144560a6bce7e350e0b25fb1d - 3.54% (155 MB)

[#016] sha256:a1397c92beb166e32120aee566cf1b28e99be77abfd3de9ccb06c43ae9627345 - 0.24% (10.6 MB)

[#017] sha256:2cc2cdb84858b80a40d2f0dd5258775033cec435f7bc38e4f847bbc51dd4c247 - 4.74% (208 MB)

[#018] sha256:c45c82abd3f9a42d322ec0cffb236359dffa79f8824f7202bf416c967339d1be - 0.0% (633 Bytes)

[#019] sha256:4fa9e0399e48a3f506f5eb83cb7197e89c7e861011cf5d911c4a20e6dac101aa - 0.56% (24.6 MB)

[#020] sha256:ae68167cecb7956158154702237f22023bdba726ac52e640974611eceeaec5ad - 0.0% (119 Bytes)

[#021] sha256:c938cbd9b9c78a549bb191e0c40b7bbd070685b390b41e085f2177f16ad3e134 - 23.01% (1010 MB)

[#022] sha256:d84e87a5dc3e3c2fe44c381644a159ebd0a39ee03418484e105ea9ab4b1d9461 - 0.0% (118 Bytes)

[#023] sha256:d81124661eebb1d948c46892fbad61ddd25df17bb9468342f576965f70b224e6 - 0.0% (142 KB)

[#024] sha256:6f07dcbc7522804821966dae5ce1cacbd7f6d50ba2c44ad89bc6bcd6d678f221 - 0.0% (83.8 KB)

[#025] sha256:cdbc6a537c75ce346ba6cbccda5e9eebc5b815364dd8a2860b1e7dfdfe0792e1 - 0.0% (119 Bytes)

[#026] sha256:6389b9858c2cb8e4bc698ebf9c8e32575b71ab1babb9e2164f7ac1c7adeadcad - 0.0% (142 KB)

[#027] sha256:25b2d8ec78adb229ba1949ec88cf6e64291f3762c55518495250e373a904e2d7 - 0.0% (83.7 KB)

[#028] sha256:db9556c18c6f5942f67cc248cc33a8542c9fb6b0bf2e337133a83dedce2d279c - 0.0% (119 Bytes)

[#029] sha256:56caf04595cb7d4caeee6f366c7e25a1b8b6f017484d850016a1470d1ce84db2 - 0.0% (143 KB)

[#030] sha256:de68b3096108d46bce473a67a9e9975e760a941e1fc5cd54d908eabab9961c42 - 0.0% (84.3 KB)

[#031] sha256:a772fc825be6fc242405c2772773e3f7069c218deba8604d67bdbe8dac93f1a9 - 0.0% (119 Bytes)

[#032] sha256:cf94a05dbb47861535c8a7571ff0499d59a1c2b9af551e7ad50667ae18b3a51a - 0.0% (10.5 KB)

[#033] sha256:41d5039a8348e893d1983a64f06857d39e088b6c28747bbc7a834bb4c8a78754 - 15.36% (673 MB)

[#034] sha256:862cf9e82ed62d75c6f14965a88645e830807e0a4b84d28466a98b156d5faf64 - 0.0% (377 Bytes)

[#035] sha256:c03eb3e4fab6e38347979b78d73bd681a07e9d303aec8b469bdecab7b8daa4b4 - 0.11% (4.88 MB)

[#036] sha256:001dfd990819b2f2b86897bbf03f13554b6f5433f8647918fc7058988cbc0733 - 3.75% (164 MB)

[#037] sha256:740353136880bd82e61d9859cbcae1b18fca96c265d1fd5a454fe98b69f70b0c - 0.0% (181 Bytes)

[#038] sha256:c78794171413e1901cd73c8e402f7f9b60dbd86089662dfeab4b1ba929db94fd - 0.07% (2.99 MB)

[#039] sha256:0c41007f0560f52bbd900ed590d67e4a52b2689d305de270e581d06f8fd17379 - 0.29% (12.5 MB)

[#040] sha256:475a2465282e2b1bcc19482eb114910434953487c7ae6467ab67741212ec00d8 - 0.12% (5.28 MB)

[#041] sha256:65ad80e46ad3b0c27c786b3c6d5e8560c131156dc76e5cdf3629eb0f66645529 - 1.55% (68 MB)

[#042] sha256:9a8c9db6615e226028a27ce822e9002582c6e8293c043118c34228b1831c8964 - 20.84% (913 MB)

[#043] sha256:5df3b3a8a78cccfcec926b60ad17e0f39e555ba5d9530a17c8b42ef1a31da869 - 3.1% (136 MB)

[#044] sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 - 0.0% (32 Bytes)

[#045] sha256:25f5a7c8199dc86efa22d911b728146cb3d81e5437d20ed001db4dffee175571 - 2.9% (127 MB)

[#046] sha256:857428f02b12424c5a50b85754c976770ac3b867a462a940a7b62b67d59f5f70 - 1.83% (80 MB)

[#047] sha256:543fffc537d2a23869bf3a0fedb06905e3fefe300602d455b9698b4499c6273d - 0.0% (164 Bytes)

[#048] sha256:77e94fb43af5aa2b39870163a1aa18d837ed517931bf1293b842f70e1c23a45b - 0.0% (120 Bytes)


History
2026-05-20 01:37:31 UTC

/bin/sh -c #(nop) ARG RELEASE

2026-05-20 01:37:31 UTC

/bin/sh -c #(nop) ARG LAUNCHPAD_BUILD_ARCH

2026-05-20 01:37:31 UTC

/bin/sh -c #(nop) LABEL org.opencontainers.image.version=24.04

2026-05-20 01:37:34 UTC

/bin/sh -c #(nop) ADD file:08e1f650999ca51d9b63c782d658d9485c64263966d69dc423a3b64a16449f00 in /

2026-05-20 01:37:34 UTC

/bin/sh -c #(nop) CMD ["/bin/bash"]

2026-06-05 14:08:12 UTC (buildkit.dockerfile.v0)

LABEL org.opencontainers.image.source=https://github.com/vastai/

2026-06-05 14:08:12 UTC (buildkit.dockerfile.v0)

LABEL org.opencontainers.image.description=Base image suitable for Vast.ai.

2026-06-05 14:08:12 UTC (buildkit.dockerfile.v0)

LABEL maintainer=Vast.ai Inc <contact@vast.ai>

2026-06-05 14:08:12 UTC (buildkit.dockerfile.v0)

SHELL [/bin/bash -c umask 002 && /bin/bash -c "$@" -]

2026-06-05 14:08:12 UTC (buildkit.dockerfile.v0)

RUN /bin/bash -c umask 002 && /bin/bash -c "$@" - sed -i '1i umask 002' /root/.bashrc # buildkit

2026-06-05 14:08:12 UTC (buildkit.dockerfile.v0)

COPY ./ROOT/ / # buildkit

2026-06-05 14:08:12 UTC (buildkit.dockerfile.v0)

ENV IMAGE_TYPE=vast

2026-06-05 14:08:12 UTC (buildkit.dockerfile.v0)

ENV DATA_DIRECTORY=/workspace

2026-06-05 14:08:12 UTC (buildkit.dockerfile.v0)

ENV WORKSPACE=/workspace

2026-06-05 14:08:12 UTC (buildkit.dockerfile.v0)

ENV PIP_BREAK_SYSTEM_PACKAGES=1

2026-06-05 14:08:12 UTC (buildkit.dockerfile.v0)

ENV DEBIAN_FRONTEND=noninteractive

2026-06-05 14:08:12 UTC (buildkit.dockerfile.v0)

ENV PYTHONUNBUFFERED=1

2026-06-05 14:08:13 UTC (buildkit.dockerfile.v0)

RUN /bin/bash -c umask 002 && /bin/bash -c "$@" - mkdir -p /usr/lib/tcltk && ln -sf /usr/lib/tcltk/$(uname -m)-linux-gnu /usr/lib/tcltk/default # buildkit

2026-06-05 14:08:13 UTC (buildkit.dockerfile.v0)

ENV TCLLIBPATH=/usr/lib/tcltk/default

2026-06-05 14:08:13 UTC (buildkit.dockerfile.v0)

ENV NVIDIA_DRIVER_CAPABILITIES=all

2026-06-05 14:08:13 UTC (buildkit.dockerfile.v0)

ARG BASE_IMAGE=ubuntu:24.04

2026-06-05 14:08:13 UTC (buildkit.dockerfile.v0)

RUN |1 BASE_IMAGE=ubuntu:24.04 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && if [[ "$BASE_IMAGE" == "nvidia/cuda:12.8"* ]]; then NCCL_VERSION=$(dpkg-query -W -f='${Version}' libnccl2 2>/dev/null | cut -d'-' -f1 || echo "0.0.0"); if dpkg --compare-versions "$NCCL_VERSION" lt "2.26.2"; then apt-get -y update; apt-get install -y --allow-change-held-packages libnccl2=2.26.2-1+cuda12.8 libnccl-dev=2.26.2-1+cuda12.8; fi; fi && apt-get clean && rm -rf /var/lib/apt/lists/* # buildkit

2026-06-05 14:09:17 UTC (buildkit.dockerfile.v0)

RUN |1 BASE_IMAGE=ubuntu:24.04 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && if ! command -v unminimize >/dev/null 2>&1; then apt-get update; apt-get install -y --no-install-recommends unminimize; fi && printf "%s\n%s" y y | unminimize && apt-get clean && rm -rf /var/lib/apt/lists/* # buildkit

2026-06-05 14:09:17 UTC (buildkit.dockerfile.v0)

ARG TARGETARCH=arm64

2026-06-05 14:11:14 UTC (buildkit.dockerfile.v0)

RUN |2 BASE_IMAGE=ubuntu:24.04 TARGETARCH=arm64 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && ([ $TARGETARCH = "arm64" ] && echo "Skipping i386 architecture for ARM builds" || dpkg --add-architecture i386) && apt-get update && apt-get upgrade -y && apt-get install --no-install-recommends -y acl bc ca-certificates gpg-agent software-properties-common locales lsb-release curl wget sudo moreutils nano vim less jq git git-lfs man tzdata expect fonts-dejavu fonts-freefont-ttf fonts-ubuntu ffmpeg sox mesa-utils-extra htop iotop strace libtcmalloc-minimal4 lsof procps psmisc nvtop rdma-core libibverbs1 ibverbs-providers libibumad3 librdmacm1 infiniband-diags build-essential cmake ninja-build gdb libssl-dev pkg-config autoconf automake libtool libffi-dev libcurl4-openssl-dev libxml2-dev libsqlite3-dev libpng-dev libjpeg-dev libwebp-dev python3-full python3-dev python3-pip netcat-traditional net-tools dnsutils iproute2 iputils-ping traceroute dos2unix rsync rclone zip unzip xz-utils zstd linux-tools-common cron rsyslog clinfo pocl-opencl-icd opencl-headers ocl-icd-libopencl1 ocl-icd-dev ocl-icd-opencl-dev vulkan-tools && mkdir -p /etc/OpenCL/vendors && echo "libnvidia-opencl.so.1" > /etc/OpenCL/vendors/nvidia.icd && apt-get clean && rm -rf /var/lib/apt/lists/* # buildkit

2026-06-05 14:11:14 UTC (buildkit.dockerfile.v0)

ARG TARGETARCH=arm64

2026-06-05 14:11:18 UTC (buildkit.dockerfile.v0)

RUN |2 BASE_IMAGE=ubuntu:24.04 TARGETARCH=arm64 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && if ! compgen -G "/etc/apt/sources.list.d/cuda*" > /dev/null && ! compgen -G "/etc/apt/sources.list.d/rocm*" > /dev/null; then UBUNTU_VERSION=$(. /etc/os-release && echo "$VERSION_ID" | tr -d '.') && if [[ "$TARGETARCH" = "amd64" ]]; then ARCH="x86_64"; elif [[ "$TARGETARCH" = "arm64" ]]; then ARCH="sbsa"; else echo "Unsupported TARGETARCH: ${TARGETARCH}. Cannot configure Nvidia CUDA repository." >&2; exit 1; fi && curl -fsSL https://developer.download.nvidia.com/compute/cuda/repos/ubuntu${UBUNTU_VERSION}/${ARCH}/3bf863cc.pub | gpg --dearmor --yes -o /usr/share/keyrings/nvidia-cuda.gpg && echo "deb [signed-by=/usr/share/keyrings/nvidia-cuda.gpg] https://developer.download.nvidia.com/compute/cuda/repos/ubuntu${UBUNTU_VERSION}/${ARCH} /" > /etc/apt/sources.list.d/cuda.list && apt-get update && apt-get clean && rm -rf /var/lib/apt/lists/*; fi # buildkit

2026-06-05 14:11:18 UTC (buildkit.dockerfile.v0)

RUN |2 BASE_IMAGE=ubuntu:24.04 TARGETARCH=arm64 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && useradd -ms /bin/bash user -u 1001 -g 0 && sed -i '1i umask 002' /home/user/.bashrc && echo "PATH=${PATH}" >> /home/user/.bashrc && echo "user ALL=(ALL) NOPASSWD:ALL" | tee /etc/sudoers.d/user && sudo chmod 0440 /etc/sudoers.d/user && mkdir -m 700 -p /run/user/1001 && chown 1001:0 /run/user/1001 && mkdir -p /run/dbus && mkdir -p /opt/workspace-internal/ # buildkit

2026-06-05 14:11:18 UTC (buildkit.dockerfile.v0)

ENV UV_CACHE_DIR=/.uv/cache

2026-06-05 14:11:18 UTC (buildkit.dockerfile.v0)

ENV UV_NO_CACHE=1

2026-06-05 14:11:18 UTC (buildkit.dockerfile.v0)

ENV UV_LINK_MODE=copy

2026-06-05 14:11:18 UTC (buildkit.dockerfile.v0)

ENV UV_PYTHON_BIN_DIR=/.uv/python_bin

2026-06-05 14:11:18 UTC (buildkit.dockerfile.v0)

ENV UV_PYTHON_INSTALL_DIR=/.uv/python_install

2026-06-05 14:11:19 UTC (buildkit.dockerfile.v0)

RUN |2 BASE_IMAGE=ubuntu:24.04 TARGETARCH=arm64 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && mkdir -p "${UV_CACHE_DIR}" "${UV_PYTHON_BIN_DIR}" "${UV_PYTHON_INSTALL_DIR}" && curl -LsSf https://astral.sh/uv/install.sh -o /tmp/uv-install.sh && chmod +x /tmp/uv-install.sh && UV_UNMANAGED_INSTALL=/usr/local/bin /tmp/uv-install.sh && rm -rf /tmp/* # buildkit

2026-06-05 14:11:24 UTC (buildkit.dockerfile.v0)

RUN |2 BASE_IMAGE=ubuntu:24.04 TARGETARCH=arm64 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && git clone https://github.com/nvm-sh/nvm.git /opt/nvm && (cd /opt/nvm/ && git checkout `git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1)`) && source /opt/nvm/nvm.sh && nvm install --lts # buildkit

2026-06-05 14:11:24 UTC (buildkit.dockerfile.v0)

COPY ./portal-aio /opt/portal-aio # buildkit

2026-06-05 14:11:24 UTC (buildkit.dockerfile.v0)

COPY /go/caddy /opt/portal-aio/caddy_manager/caddy # buildkit

2026-06-05 14:11:24 UTC (buildkit.dockerfile.v0)

ARG TARGETARCH=arm64

2026-06-05 14:11:29 UTC (buildkit.dockerfile.v0)

RUN |2 BASE_IMAGE=ubuntu:24.04 TARGETARCH=arm64 /bin/bash -c umask 002 && /bin/bash -c "$@" - chown -R 0:0 /opt/portal-aio && set -euo pipefail && uv venv --seed /opt/portal-aio/venv -p 3.11 && mkdir -m 770 -p /var/log/portal && chown 0:0 /var/log/portal/ && mkdir -p opt/instance-tools/bin/ && . /opt/portal-aio/venv/bin/activate && uv pip install -r /opt/portal-aio/requirements.txt && deactivate && wget -O /opt/portal-aio/tunnel_manager/cloudflared https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-${TARGETARCH} && chmod +x /opt/portal-aio/tunnel_manager/cloudflared && ln -s /opt/portal-aio/caddy_manager/caddy /opt/instance-tools/bin/caddy && ln -s /opt/portal-aio/tunnel_manager/cloudflared /opt/instance-tools/bin/cloudflared && apt-get clean && rm -rf /var/lib/apt/lists/* # buildkit

2026-06-05 14:11:31 UTC (buildkit.dockerfile.v0)

RUN |2 BASE_IMAGE=ubuntu:24.04 TARGETARCH=arm64 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && uv venv --seed /opt/instance-tools/provisioner/venv -p 3.11 && . /opt/instance-tools/provisioner/venv/bin/activate && uv pip install -r /opt/instance-tools/lib/provisioner/requirements.txt && deactivate # buildkit

2026-06-05 14:12:12 UTC (buildkit.dockerfile.v0)

RUN |2 BASE_IMAGE=ubuntu:24.04 TARGETARCH=arm64 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && cd /opt && git clone https://github.com/vast-ai/vast-cli && wget -O /usr/local/share/ca-certificates/jvastai.crt https://console.vast.ai/static/jvastai_root.cer && update-ca-certificates && pip install --no-cache-dir --ignore-installed jupyter supervisor tensorboard magic-wormhole && mkdir -p /var/log/supervisor # buildkit

2026-06-05 14:12:12 UTC (buildkit.dockerfile.v0)

ARG TARGETARCH=arm64

2026-06-05 14:12:12 UTC (buildkit.dockerfile.v0)

RUN |2 BASE_IMAGE=ubuntu:24.04 TARGETARCH=arm64 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && SYNCTHING_VERSION="$(curl -fsSL "https://api.github.com/repos/syncthing/syncthing/releases/latest" | jq -r '.tag_name' | sed 's/[^0-9\.\-]*//g')" && SYNCTHING_URL="https://github.com/syncthing/syncthing/releases/download/v${SYNCTHING_VERSION}/syncthing-linux-${TARGETARCH}-v${SYNCTHING_VERSION}.tar.gz" && mkdir -p /opt/syncthing/config && mkdir -p /opt/syncthing/data && wget -O /opt/syncthing.tar.gz $SYNCTHING_URL && (cd /opt && tar -zxf syncthing.tar.gz -C /opt/syncthing/ --strip-components=1) && chown -R user:root /opt/syncthing && rm -f /opt/syncthing.tar.gz # buildkit

2026-06-05 14:12:12 UTC (buildkit.dockerfile.v0)

ARG BASE_IMAGE=ubuntu:24.04

2026-06-05 14:12:12 UTC (buildkit.dockerfile.v0)

ARG PYTHON_VERSION=3.12

2026-06-05 14:12:12 UTC (buildkit.dockerfile.v0)

ENV PYTHON_VERSION=3.12

2026-06-05 14:14:58 UTC (buildkit.dockerfile.v0)

RUN |3 BASE_IMAGE=ubuntu:24.04 TARGETARCH=arm64 PYTHON_VERSION=3.12 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && curl -L -o /tmp/miniforge3.sh "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh" && bash /tmp/miniforge3.sh -b -p /opt/miniforge3 && /opt/miniforge3/bin/conda init && su -l user -c "/opt/miniforge3/bin/conda init" && mkdir -p /venv && /opt/miniforge3/bin/conda config --set auto_activate_base false && /opt/miniforge3/bin/conda config --set always_copy true && /opt/miniforge3/bin/conda config --set pip_interop_enabled true && /opt/miniforge3/bin/conda config --add envs_dirs /venv && /opt/miniforge3/bin/conda config --set env_prompt '({name}) ' && su -l user -c "/opt/miniforge3/bin/conda config --set auto_activate_base false" && su -l user -c "/opt/miniforge3/bin/conda config --set always_copy true" && su -l user -c "/opt/miniforge3/bin/conda config --set pip_interop_enabled true" && su -l user -c "/opt/miniforge3/bin/conda config --add envs_dirs /venv" && su -l user -c "/opt/miniforge3/bin/conda config --set env_prompt '({name}) '" && if [[ "$BASE_IMAGE" == *"nvidia"* ]]; then /opt/miniforge3/bin/conda config --add channels nvidia; su -l user -c "/opt/miniforge3/bin/conda config --add channels nvidia"; fi && /opt/miniforge3/bin/conda create -p /venv/main python="${PYTHON_VERSION}" -y && mkdir -p /venv/main/etc/conda/{activate.d,deactivate.d} && echo 'echo -e "\033[32mActivated conda/uv virtual environment at \033[36m$(realpath $CONDA_PREFIX)\033[0m"' > /venv/main/etc/conda/activate.d/environment.sh && /opt/miniforge3/bin/conda clean -ay && rm -rf /tmp/* # buildkit

2026-06-05 14:14:59 UTC (buildkit.dockerfile.v0)

RUN |3 BASE_IMAGE=ubuntu:24.04 TARGETARCH=arm64 PYTHON_VERSION=3.12 /bin/bash -c umask 002 && /bin/bash -c "$@" - cat <<'CONDA_ACTIVATION_SCRIPT' > /venv/main/bin/activate if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then echo "This script must be sourced: source bin/activate" exit 1 fi # Define deactivate function deactivate() { # Deactivate conda environment if type conda &> /dev/null; then conda deactivate 2>/dev/null || true fi # Unset the deactivate function itself unset -f deactivate # Return success return 0 } # Check if conda is properly initialized by testing for the conda shell function # (not just the command existence) if ! type conda &> /dev/null || ! declare -F conda &> /dev/null; then # Add condabin to PATH if not already there if [[ "$PATH" != *"/opt/miniforge3/condabin"* ]]; then export PATH="/opt/miniforge3/condabin:$PATH" fi # Source the conda shell script to load shell functions if [[ -f /opt/miniforge3/etc/profile.d/conda.sh ]]; then source /opt/miniforge3/etc/profile.d/conda.sh fi fi # Activate the conda environment conda activate "$(realpath /venv/main)" CONDA_ACTIVATION_SCRIPT # buildkit

2026-06-05 14:15:08 UTC (buildkit.dockerfile.v0)

RUN |3 BASE_IMAGE=ubuntu:24.04 TARGETARCH=arm64 PYTHON_VERSION=3.12 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && . /venv/main/bin/activate && uv pip install wheel huggingface-hub[cli] ipykernel ipywidgets && python -m ipykernel install --name="main" --display-name="Python3 (main venv)" && python -m ipykernel install --name="python3" --display-name="Python3 (ipykernel)" && deactivate && /usr/bin/pip install conda-pack ipykernel && /usr/bin/python3 -m ipykernel install --name="system-python" --display-name="Python3 (System)" && apt-get clean && rm -rf /var/lib/apt/lists/* # buildkit

2026-06-05 14:15:08 UTC (buildkit.dockerfile.v0)

ENV PATH=/opt/instance-tools/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

2026-06-05 14:15:09 UTC (buildkit.dockerfile.v0)

RUN |3 BASE_IMAGE=ubuntu:24.04 TARGETARCH=arm64 PYTHON_VERSION=3.12 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && env-hash > /.env_hash # buildkit

2026-06-05 14:15:09 UTC (buildkit.dockerfile.v0)

ENTRYPOINT ["/opt/instance-tools/bin/entrypoint.sh"]

2026-06-05 14:15:09 UTC (buildkit.dockerfile.v0)

CMD []

2026-06-05 14:54:29 UTC (buildkit.dockerfile.v0)

ENV NVIDIA_DRIVER_CAPABILITIES=all

2026-06-05 14:54:29 UTC (buildkit.dockerfile.v0)

ARG CUDA_VERSIONS=12-9

2026-06-05 14:54:29 UTC (buildkit.dockerfile.v0)

RUN |1 CUDA_VERSIONS=12-9 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && [ -n "${CUDA_VERSIONS// }" ] || { echo "CUDA_VERSIONS must not be empty" >&2; exit 1; } && apt-get update && PACKAGES="" && lowest_dotver="" && for ver in ${CUDA_VERSIONS}; do dashver="${ver//./-}" && dotver="${ver//-/.}" && PACKAGES="$PACKAGES cuda-compat-${dashver} cuda-nvcc-${dashver} cuda-cccl-${dashver} cuda-nvrtc-${dashver} libnpp-${dashver} libnvjpeg-${dashver} libcufft-${dashver}" && if [ -z "$lowest_dotver" ] || [ "$(printf '%s\n%s\n' "$dotver" "$lowest_dotver" | sort -V | head -n1)" = "$dotver" ]; then lowest_dotver="$dotver"; fi; done && PACKAGES="$PACKAGES libnccl2=*+cuda${lowest_dotver}" && set -f && apt-get install -y --no-install-recommends $PACKAGES && set +f && apt-get clean && rm -rf /var/lib/apt/lists/* # buildkit

2026-06-05 14:54:30 UTC (buildkit.dockerfile.v0)

RUN |1 CUDA_VERSIONS=12-9 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && env-hash > /.env_hash # buildkit

2026-06-10 10:48:50 UTC (buildkit.dockerfile.v0)

COPY ./ROOT / # buildkit

2026-06-10 10:48:50 UTC (buildkit.dockerfile.v0)

COPY portal-aio /opt/portal-aio # buildkit

2026-06-10 10:48:50 UTC (buildkit.dockerfile.v0)

RUN /bin/bash -c umask 002 && /bin/bash -c "$@" - env-hash > /.env_hash # buildkit

2026-06-12 15:49:37 UTC (buildkit.dockerfile.v0)

COPY ./ROOT / # buildkit

2026-06-12 15:49:37 UTC (buildkit.dockerfile.v0)

COPY portal-aio /opt/portal-aio # buildkit

2026-06-12 15:49:38 UTC (buildkit.dockerfile.v0)

RUN /bin/bash -c umask 002 && /bin/bash -c "$@" - env-hash > /.env_hash # buildkit

2026-06-15 13:36:33 UTC (buildkit.dockerfile.v0)

COPY ./ROOT / # buildkit

2026-06-15 13:36:33 UTC (buildkit.dockerfile.v0)

COPY portal-aio /opt/portal-aio # buildkit

2026-06-15 13:36:33 UTC (buildkit.dockerfile.v0)

RUN /bin/bash -c umask 002 && /bin/bash -c "$@" - env-hash > /.env_hash # buildkit

2026-06-16 13:49:40 UTC (buildkit.dockerfile.v0)

LABEL org.opencontainers.image.source=https://github.com/vastai/

2026-06-16 13:49:40 UTC (buildkit.dockerfile.v0)

LABEL org.opencontainers.image.description=Linux desktop container image suitable for Vast.ai.

2026-06-16 13:49:40 UTC (buildkit.dockerfile.v0)

LABEL maintainer=Vast.ai Inc <contact@vast.ai>

2026-06-16 13:49:40 UTC (buildkit.dockerfile.v0)

COPY ./ROOT / # buildkit

2026-06-16 13:49:40 UTC (buildkit.dockerfile.v0)

ARG TARGETARCH=arm64

2026-06-16 13:51:27 UTC (buildkit.dockerfile.v0)

RUN |1 TARGETARCH=arm64 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && add-apt-repository ppa:pipewire-debian/pipewire-upstream -y && add-apt-repository ppa:pipewire-debian/wireplumber-upstream -y && apt-get update && BASE_PACKAGES=( alsa-base alsa-utils aom-tools bzip2 coturn dbus file fonts-hack fonts-liberation fonts-noto fonts-noto-cjk fonts-noto-cjk-extra fonts-noto-color-emoji fonts-noto-extra fonts-noto-hinted fonts-noto-mono fonts-noto-ui-extra fonts-noto-unhinted fonts-opensymbol fonts-symbola glib-networking gnupg gstreamer1.0-plugins-bad gzip inotify-tools kmod lame libavcodec-extra libdrm2 libegl1 libgcrypt20 libgirepository-1.0-1 libgl1 libgles1 libgles2 libglib2.0-0 libglu1 libglvnd0 libglx0 libgudev-1.0-0 mesa-vulkan-drivers libopengl0 libopus0 libpci3 libpulse0 libsm6 libspa-0.2-bluetooth libspa-0.2-jack libva2 libvdpau-va-gl1 libvdpau1 libwayland-egl1 libx11-6 libx11-xcb1 libxau6 libxcb-dri3-0 libxcb1 libxdamage1 libxdmcp6 libxext6 libxfixes3 libxtst6 libxv1 novnc pipewire pipewire-audio-client-libraries pipewire-pulse python3-gi python3-numpy python3-setuptools python3-wheel svt-av1 unar vainfo vdpauinfo websockify wireplumber wmctrl x11-apps x11-utils x11-xkb-utils x11-xserver-utils x11vnc x264 x265 xauth xbitmaps xcvt xdg-user-dirs xdg-utils xdotool xfonts-base xfonts-scalable xinit xkb-data xclip xsel xserver-xorg-core xserver-xorg-input-all xserver-xorg-input-wacom xserver-xorg-video-fbdev xsettingsd xvfb ) && I386_PACKAGES=( libc6:i386 libdrm2:i386 libegl1:i386 libgl1:i386 libgles1:i386 libgles2:i386 libglu1:i386 libglvnd0:i386 libglx0:i386 libopengl0:i386 libsm6:i386 libva2:i386 libvulkan-dev:i386 libx11-6:i386 libxau6:i386 libxcb1:i386 libxdmcp6:i386 libxext6:i386 libxtst6:i386 libxv1:i386 ) && AMD64_ONLY_PACKAGES=( rar unrar ) && if [[ $TARGETARCH == "amd64" ]]; then apt-get install --no-install-recommends -y "${BASE_PACKAGES[@]}" "${I386_PACKAGES[@]}" "${AMD64_ONLY_PACKAGES[@]}"; else apt-get install --no-install-recommends -y "${BASE_PACKAGES[@]}"; fi && ln -s /usr/share/novnc/vnc.html /usr/share/novnc/index.html # buildkit

2026-06-16 13:51:27 UTC (buildkit.dockerfile.v0)

RUN |1 TARGETARCH=arm64 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && VULKAN_API_VERSION=$(dpkg -s libvulkan1 | grep -oP 'Version: [0-9|\.]+' | grep -oP '[0-9]+(\.[0-9]+)(\.[0-9]+)') && mkdir -pm755 /etc/vulkan/icd.d/ && printf '{"file_format_version" : "1.0.0","ICD": {"library_path": "libGLX_nvidia.so.0","api_version" : "%s"}}' "$VULKAN_API_VERSION" > /etc/vulkan/icd.d/nvidia_icd.json && mkdir -pm755 /usr/share/glvnd/egl_vendor.d/ && printf '{"file_format_version" : "1.0.0","ICD": {"library_path": "libEGL_nvidia.so.0"}}' > /usr/share/glvnd/egl_vendor.d/10_nvidia.json # buildkit

2026-06-16 13:51:30 UTC (buildkit.dockerfile.v0)

RUN |1 TARGETARCH=arm64 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && VIRTUALGL_VERSION="$(curl -fsSL "https://api.github.com/repos/VirtualGL/virtualgl/releases/latest" | jq -r '.tag_name' | sed 's/[^0-9\.\-]*//g')" && cd /tmp && curl -fsSL -O "https://github.com/VirtualGL/virtualgl/releases/download/${VIRTUALGL_VERSION}/virtualgl_${VIRTUALGL_VERSION}_${TARGETARCH}.deb" && apt-get install -y ./virtualgl_${VIRTUALGL_VERSION}_${TARGETARCH}.deb && chmod -f u+s /usr/lib/libvglfaker.so /usr/lib/libvglfaker-nodl.so /usr/lib/libdlfaker.so /usr/lib/libgefaker.so && case "$(dpkg --print-architecture)" in amd64) MULTIARCH_DIR="x86_64-linux-gnu" ;; arm64) MULTIARCH_DIR="aarch64-linux-gnu" ;; *) echo "Unsupported arch for VirtualGL symlink: $(dpkg --print-architecture)"; exit 1 ;; esac && mkdir -p "/usr/lib/${MULTIARCH_DIR}" && ln -sf /usr/lib/libvglfaker.so "/usr/lib/${MULTIARCH_DIR}/libvglfaker.so" && if [[ $TARGETARCH == "amd64" ]]; then curl -fsSL -O "https://github.com/VirtualGL/virtualgl/releases/download/${VIRTUALGL_VERSION}/virtualgl32_${VIRTUALGL_VERSION}_${TARGETARCH}.deb" && apt-get install -y ./virtualgl32_${VIRTUALGL_VERSION}_${TARGETARCH}.deb && chmod -f u+s /usr/lib32/libvglfaker.so /usr/lib32/libvglfaker-nodl.so /usr/lib32/libvglfaker-opencl.so /usr/lib32/libdlfaker.so /usr/lib32/libgefaker.so && chmod -f u+s /usr/lib/i386-linux-gnu/libvglfaker.so /usr/lib/i386-linux-gnu/libvglfaker-nodl.so /usr/lib/i386-linux-gnu/libvglfaker-opencl.so /usr/lib/i386-linux-gnu/libdlfaker.so /usr/lib/i386-linux-gnu/libgefaker.so; fi && rm -f /tmp/virtualgl* # buildkit

2026-06-16 13:52:13 UTC (buildkit.dockerfile.v0)

RUN |1 TARGETARCH=arm64 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && apt-get update && apt-get install --no-install-recommends -y meson pkg-config libc6-dev libegl-dev libglvnd-dev libva-dev libopenh264-dev libvpx-dev libvulkan-dev libwayland-dev libxrandr-dev libgstreamer-plugins-bad1.0-dev libffmpeg-nvenc-dev wayland-protocols libelf-dev && NVIDIA_VAAPI_DRIVER_VERSION="$(curl -fsSL "https://api.github.com/repos/elFarto/nvidia-vaapi-driver/releases/latest" | jq -r '.tag_name' | sed 's/[^0-9\.\-]*//g')" && cd /tmp && curl -fsSL "https://github.com/elFarto/nvidia-vaapi-driver/archive/v${NVIDIA_VAAPI_DRIVER_VERSION}.tar.gz" | tar -xzf - && mv -f nvidia-vaapi-driver* nvidia-vaapi-driver && cd nvidia-vaapi-driver && meson setup build && meson install -C build && rm -rf /tmp/* && echo "/usr/local/nvidia/lib" >> /etc/ld.so.conf.d/nvidia.conf && echo "/usr/local/nvidia/lib64" >> /etc/ld.so.conf.d/nvidia.conf # buildkit

2026-06-16 13:52:13 UTC (buildkit.dockerfile.v0)

RUN |1 TARGETARCH=arm64 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && if [[ "$(dpkg --print-architecture)" == "amd64" ]]; then cd /opt && SELKIES_VERSION="$(curl -fsSL "https://api.github.com/repos/selkies-project/selkies-gstreamer/releases/latest" | jq -r '.tag_name' | sed 's/[^0-9\.\-]*//g')" && cd /opt && curl -fsSL "https://github.com/selkies-project/selkies-gstreamer/releases/download/v${SELKIES_VERSION}/gstreamer-selkies_gpl_v${SELKIES_VERSION}_ubuntu$(grep '^VERSION_ID=' /etc/os-release | cut -d= -f2 | tr -d '\"')_$(dpkg --print-architecture).tar.gz" | tar -xzf - && cd /tmp && curl -O -fsSL "https://github.com/selkies-project/selkies-gstreamer/releases/download/v${SELKIES_VERSION}/selkies_gstreamer-${SELKIES_VERSION}-py3-none-any.whl" && /usr/bin/pip3 install --no-cache-dir --force-reinstall "selkies_gstreamer-${SELKIES_VERSION}-py3-none-any.whl" "websockets<14.0" && rm -f "selkies_gstreamer-${SELKIES_VERSION}-py3-none-any.whl" && cd /opt && curl -fsSL "https://github.com/selkies-project/selkies-gstreamer/releases/download/v${SELKIES_VERSION}/selkies-gstreamer-web_v${SELKIES_VERSION}.tar.gz" | tar -xzf - && cd /tmp && curl -o selkies-js-interposer.deb -fsSL "https://github.com/selkies-project/selkies-gstreamer/releases/download/v${SELKIES_VERSION}/selkies-js-interposer_v${SELKIES_VERSION}_ubuntu$(grep '^VERSION_ID=' /etc/os-release | cut -d= -f2 | tr -d '\"')_$(dpkg --print-architecture).deb" && apt-get update && apt-get install --no-install-recommends -y ./selkies-js-interposer.deb && rm -f selkies-js-interposer.deb; else echo "Skipping Selkies install on $(dpkg --print-architecture); dropping supervisor program."; rm -f /etc/supervisor/conf.d/selkies.conf; fi # buildkit

2026-06-16 13:52:36 UTC (buildkit.dockerfile.v0)

RUN |1 TARGETARCH=arm64 /bin/bash -c umask 002 && /bin/bash -c "$@" - apt-get purge -y --auto-remove meson libegl-dev libglvnd-dev libva-dev libopenh264-dev libvpx-dev libvulkan-dev libwayland-dev libxrandr-dev libgstreamer-plugins-bad1.0-dev libffmpeg-nvenc-dev wayland-protocols libelf-dev && apt-get clean && rm -rf /var/lib/apt/lists/* # buildkit

2026-06-16 13:52:36 UTC (buildkit.dockerfile.v0)

ENV CATALINA_BASE=/opt/tomcat9

2026-06-16 13:52:36 UTC (buildkit.dockerfile.v0)

ENV CATALINA_HOME=/opt/tomcat9

2026-06-16 13:52:37 UTC (buildkit.dockerfile.v0)

RUN |1 TARGETARCH=arm64 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && TOMCAT_VERSION="$(curl -fsSL https://dlcdn.apache.org/tomcat/tomcat-9/ | grep -oP 'v\K[0-9]+\.[0-9]+\.[0-9]+' | sort -V | tail -n1)" && cd /opt && wget "https://dlcdn.apache.org/tomcat/tomcat-9/v${TOMCAT_VERSION}/bin/apache-tomcat-${TOMCAT_VERSION}.tar.gz" && tar xzf "apache-tomcat-${TOMCAT_VERSION}.tar.gz" && rm "apache-tomcat-${TOMCAT_VERSION}.tar.gz" && ln -s "/opt/apache-tomcat-${TOMCAT_VERSION}" /opt/tomcat9 && chmod +x /opt/tomcat9/bin/*.sh && useradd -r -m -U -d /opt/tomcat9 -s /bin/false tomcat && chown -R tomcat:tomcat "/opt/apache-tomcat-${TOMCAT_VERSION}" && chmod -R 755 "/opt/apache-tomcat-${TOMCAT_VERSION}" # buildkit

2026-06-16 13:52:37 UTC (buildkit.dockerfile.v0)

COPY /guacamole-install/ / # buildkit

2026-06-16 13:52:50 UTC (buildkit.dockerfile.v0)

RUN |1 TARGETARCH=arm64 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && ldconfig && apt-get update && apt-get install --no-install-recommends -y libcairo2 libjpeg-turbo8 libuuid1 libpango-1.0-0 libvncserver1 libpulse0 libvorbis0a libwebp7 && . /etc/os-release && case "$VERSION_ID" in 24.04) apt-get install --no-install-recommends -y libavcodec60 libavformat60 libavutil58 libswscale7 libpng16-16t64 libfreerdp-client2-2t64 libssl3t64 ;; *) apt-get install --no-install-recommends -y libavcodec58 libavformat58 libavutil56 libswscale5 libpng16-16 libfreerdp-client2-2 libssl3 ;; esac && sed -i 's/port="8080"/port="16200" address="127.0.0.1"/' /opt/tomcat9/conf/server.xml && wget -O /opt/tomcat9/webapps/guacamole.war https://downloads.apache.org/guacamole/1.5.5/binary/guacamole-1.5.5.war && chown tomcat:tomcat /opt/tomcat9/webapps/guacamole.war && mkdir -p /etc/guacamole/{extensions,lib} && wget -O /etc/guacamole/extensions/guacamole-auth-noauth-1.5.5.jar https://github.com/GauriSpears/guacamole-noauth/releases/download/1.5.5/guacamole-auth-noauth-1.5.5.jar && echo "guacd-hostname: localhost" > /etc/guacamole/guacamole.properties && echo "guacd-port: 4822" >> /etc/guacamole/guacamole.properties && echo "noauth-config: /etc/guacamole/noauth-config.xml" >> /etc/guacamole/guacamole.properties && touch /etc/guacamole/noauth-config.xml && chown -R tomcat:tomcat /etc/guacamole && chmod -R 755 /etc/guacamole # buildkit

2026-06-16 13:56:14 UTC (buildkit.dockerfile.v0)

RUN |1 TARGETARCH=arm64 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && apt-get update && apt-get install --install-recommends -y kde-baseapps plasma-desktop plasma-workspace adwaita-icon-theme-full appmenu-gtk3-module ark aspell aspell-en breeze breeze-cursor-theme breeze-gtk-theme breeze-icon-theme dbus-x11 debconf-kde-helper desktop-file-utils dolphin dolphin-plugins enchant-2 fcitx fcitx-frontend-gtk2 fcitx-frontend-gtk3 fcitx-frontend-qt5 fcitx-module-dbus fcitx-module-kimpanel fcitx-module-lua fcitx-module-x11 fcitx-tools fcitx-hangul fcitx-libpinyin fcitx-m17n fcitx-mozc fcitx-sayura fcitx-unikey filelight frameworkintegration gwenview hunspell im-config kwrite kcalc kcharselect kdeadmin kde-config-fcitx kde-config-gtk-style kde-config-gtk-style-preview kdeconnect kdegraphics-thumbnailers kde-spectacle kdf kdialog kfind kget khotkeys kimageformat-plugins kinfocenter kio kio-extras kmag kmenuedit kmix kmousetool kmouth ksshaskpass ktimer kwin-addons kwin-x11 libdbusmenu-glib4 libdbusmenu-gtk3-4 libgail-common libgdk-pixbuf2.0-bin libgtk2.0-bin libgtk-3-bin libkf5baloowidgets-bin libkf5dbusaddons-bin libkf5iconthemes-bin libkf5kdelibs4support5-bin libkf5khtml-bin libkf5parts-plugins libpam0g libpam-modules libqt5multimedia5-plugins libreoffice librsvg2-common media-player-info okular okular-extra-backends plasma-browser-integration plasma-calendar-addons plasma-dataengines-addons plasma-integration plasma-runners-addons plasma-widgets-addons qml-module-org-kde-runnermodel qml-module-org-kde-qqc2desktopstyle qml-module-qtgraphicaleffects qml-module-qt-labs-platform qml-module-qtquick-xmllistmodel qt5-gtk-platformtheme qt5-image-formats-plugins qt5-style-plugins qtspeech5-flite-plugin qtvirtualkeyboard-plugin software-properties-qt sonnet-plugins sweeper systemsettings ubuntu-drivers-common vlc vlc-plugin-access-extra vlc-plugin-notify vlc-plugin-samba vlc-plugin-skins2 vlc-plugin-video-splitter vlc-plugin-visualization # buildkit

2026-06-16 13:56:30 UTC (buildkit.dockerfile.v0)

RUN |1 TARGETARCH=arm64 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && install -d -m 0755 /etc/apt/keyrings && curl -fsSL https://packages.mozilla.org/apt/repo-signing-key.gpg -o /etc/apt/keyrings/packages.mozilla.org.asc && echo "deb [signed-by=/etc/apt/keyrings/packages.mozilla.org.asc] https://packages.mozilla.org/apt mozilla main" > /etc/apt/sources.list.d/mozilla.list && printf 'Package: *\nPin: origin packages.mozilla.org\nPin-Priority: 1000\n' > /etc/apt/preferences.d/mozilla && apt-get update && apt-get install --no-install-recommends -y firefox && apt-get clean && rm -rf /var/lib/apt/lists/* # buildkit

2026-06-16 13:56:30 UTC (buildkit.dockerfile.v0)

RUN |1 TARGETARCH=arm64 /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && if [[ "$(dpkg --print-architecture)" == "amd64" ]]; then cd /tmp && curl -o google-chrome-stable.deb -fsSL "https://dl.google.com/linux/direct/google-chrome-stable_current_$(dpkg --print-architecture).deb" && apt-get update && apt-get install -y ./google-chrome-stable.deb && rm -f google-chrome-stable.deb && apt-get clean && rm -rf /var/lib/apt/lists/* && update-alternatives --install /usr/bin/google-chrome-stable google-chrome-stable /usr/local/bin/google-chrome 100 && update-alternatives --set x-www-browser /usr/bin/google-chrome-stable; else echo "Skipping Google Chrome on $(dpkg --print-architecture); Firefox above is the default browser."; fi # buildkit

2026-06-16 13:56:30 UTC (buildkit.dockerfile.v0)

ARG BLENDER_VERSION=

2026-06-16 13:56:53 UTC (buildkit.dockerfile.v0)

RUN |2 TARGETARCH=arm64 BLENDER_VERSION= /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && if [[ "$(dpkg --print-architecture)" == "amd64" ]]; then if [ -z "$BLENDER_VERSION" ]; then MAJOR_MINOR=$(curl -fsSL "https://download.blender.org/release/" | grep -oP 'Blender\K\d+\.\d+' | sort -V | tail -1) && BLENDER_VERSION=$(curl -fsSL "https://download.blender.org/release/Blender${MAJOR_MINOR}/" | grep -oP "blender-\K${MAJOR_MINOR}\.\d+" | sort -V | tail -1); fi && echo "Installing Blender ${BLENDER_VERSION} (amd64 tarball)" && cd /opt && wget "https://download.blender.org/release/Blender${BLENDER_VERSION%.*}/blender-${BLENDER_VERSION}-linux-x64.tar.xz" && tar xvf "blender-${BLENDER_VERSION}-linux-x64.tar.xz" && rm "blender-${BLENDER_VERSION}-linux-x64.tar.xz" && ln -s "/opt/blender-${BLENDER_VERSION}-linux-x64/blender" /usr/bin/blender && cp "/opt/blender-${BLENDER_VERSION}-linux-x64/blender.desktop" /usr/share/applications && cp "/opt/blender-${BLENDER_VERSION}-linux-x64/blender.svg" /usr/share/icons/hicolor/scalable/apps/; else echo "Installing Blender from Ubuntu noble apt (arm64; no official Linux arm64 tarball exists)" && apt-get update && apt-get install --no-install-recommends -y blender && apt-get clean && rm -rf /var/lib/apt/lists/*; fi # buildkit

2026-06-16 13:57:02 UTC (buildkit.dockerfile.v0)

RUN |2 TARGETARCH=arm64 BLENDER_VERSION= /bin/bash -c umask 002 && /bin/bash -c "$@" - set -euo pipefail && apt-get update && apt-get install --no-install-recommends -y glmark2 # buildkit

2026-06-16 13:57:02 UTC (buildkit.dockerfile.v0)

ENV XDG_RUNTIME_DIR=/run/user/1001

2026-06-16 13:57:02 UTC (buildkit.dockerfile.v0)

ENV DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1001/dbus/session_bus_socket

2026-06-16 13:57:02 UTC (buildkit.dockerfile.v0)

USER user

2026-06-16 13:57:02 UTC (buildkit.dockerfile.v0)

RUN |2 TARGETARCH=arm64 BLENDER_VERSION= /bin/bash -c umask 002 && /bin/bash -c "$@" - mkdir -p "$XDG_RUNTIME_DIR/dbus" # buildkit

2026-06-16 13:57:02 UTC (buildkit.dockerfile.v0)

ENV DISPLAY=:20

2026-06-16 13:57:02 UTC (buildkit.dockerfile.v0)

ENV PIPEWIRE_LATENCY=128/48000

2026-06-16 13:57:02 UTC (buildkit.dockerfile.v0)

ENV PIPEWIRE_RUNTIME_DIR=/run/user/1001

2026-06-16 13:57:02 UTC (buildkit.dockerfile.v0)

ENV PULSE_SERVER=unix:/run/user/1001/pulse/native

2026-06-16 13:57:02 UTC (buildkit.dockerfile.v0)

ENV PULSE_RUNTIME_PATH=/run/user/1001/pulse

2026-06-16 13:57:02 UTC (buildkit.dockerfile.v0)

ENV __GL_SYNC_TO_VBLANK=0

2026-06-16 13:57:02 UTC (buildkit.dockerfile.v0)

ENV DISPLAY_SIZEW=1920

2026-06-16 13:57:02 UTC (buildkit.dockerfile.v0)

ENV DISPLAY_SIZEH=1080

2026-06-16 13:57:02 UTC (buildkit.dockerfile.v0)

ENV DISPLAY_REFRESH=60

2026-06-16 13:57:02 UTC (buildkit.dockerfile.v0)

ENV DISPLAY_DPI=96

2026-06-16 13:57:02 UTC (buildkit.dockerfile.v0)

ENV DISPLAY_CDEPTH=24

2026-06-16 13:57:02 UTC (buildkit.dockerfile.v0)

ENV VGL_DISPLAY=egl

2026-06-16 13:57:02 UTC (buildkit.dockerfile.v0)

ENV SELKIES_ENABLE_RESIZE=false

2026-06-16 13:57:02 UTC (buildkit.dockerfile.v0)

ENV SELKIES_ENABLE_BASIC_AUTH=false

2026-06-16 13:57:02 UTC (buildkit.dockerfile.v0)

ENV GSTREAMER_PATH=/opt/gstreamer

2026-06-16 13:57:02 UTC (buildkit.dockerfile.v0)

ENV DESKTOP_SESSION=plasma

2026-06-16 13:57:02 UTC (buildkit.dockerfile.v0)

ENV XDG_SESSION_DESKTOP=KDE

2026-06-16 13:57:02 UTC (buildkit.dockerfile.v0)

ENV XDG_CURRENT_DESKTOP=KDE

2026-06-16 13:57:02 UTC (buildkit.dockerfile.v0)

ENV XDG_SESSION_TYPE=x11

2026-06-16 13:57:02 UTC (buildkit.dockerfile.v0)

ENV KDE_FULL_SESSION=true

2026-06-16 13:57:02 UTC (buildkit.dockerfile.v0)

ENV KDE_SESSION_VERSION=5

2026-06-16 13:57:02 UTC (buildkit.dockerfile.v0)

ENV KDE_APPLICATIONS_AS_SCOPE=1

2026-06-16 13:57:02 UTC (buildkit.dockerfile.v0)

ENV KWIN_COMPOSE=N

2026-06-16 13:57:02 UTC (buildkit.dockerfile.v0)

ENV KWIN_EFFECTS_FORCE_ANIMATIONS=0

2026-06-16 13:57:02 UTC (buildkit.dockerfile.v0)

ENV KWIN_EXPLICIT_SYNC=0

2026-06-16 13:57:02 UTC (buildkit.dockerfile.v0)

ENV KWIN_X11_NO_SYNC_TO_VBLANK=1

2026-06-16 13:57:02 UTC (buildkit.dockerfile.v0)

ENV GTK_IM_MODULE=fcitx

2026-06-16 13:57:02 UTC (buildkit.dockerfile.v0)

ENV QT_IM_MODULE=fcitx

2026-06-16 13:57:02 UTC (buildkit.dockerfile.v0)

ENV XIM=fcitx

2026-06-16 13:57:02 UTC (buildkit.dockerfile.v0)

ENV XMODIFIERS=@im=fcitx

2026-06-16 13:57:02 UTC (buildkit.dockerfile.v0)

USER root

2026-06-16 13:57:02 UTC (buildkit.dockerfile.v0)

RUN |2 TARGETARCH=arm64 BLENDER_VERSION= /bin/bash -c umask 002 && /bin/bash -c "$@" - env-hash > /.env_hash # buildkit

Danger Zone
Delete Tag

Please be careful as this will not just delete the reference but also the actual content!

For example when you have latest and v1.2.3 both pointing to the same image
the deletion of latest will also permanently remove v1.2.3.

Delete