VS Code

The full Visual Studio Code desktop app, streamed straight to your browser.

  • lscr.io/linuxserver/vscode:1.142.0-ls30
  • port 6119
  • port 6120
  • Developer
VS Code screenshot 1

VS Code (HTTPS)

/
http://localhost:6119/

The real Visual Studio Code desktop app, running in a remote desktop session that streams to your browser. Your everyday code editor, with nothing to install locally.

Features

  • The genuine Visual Studio Code desktop app, not a limited web port
  • Runs inside a full Selkies remote desktop, with a real terminal, git and any extension you like
  • HTTPS out of the box with a self-signed certificate, plus a plain HTTP port for your own reverse proxy
  • Optional GPU passthrough for smoother rendering
  • Settings, extensions and projects survive restarts

How to use

  1. Open VS Code from your dashboard (it opens the HTTPS port, 6119).
  2. Accept the self-signed certificate warning the first time.
  3. Sign in as admin (or your CUSTOM_USER). The password is in /DATA/AppData/vscode/password.txt (open it with the Files app) and in the app log, unless you typed your own in PASSWORD.
  4. Open folders, install extensions and use the terminal as usual.
  5. Keep your projects in the home folder so they are saved.

Before you install

Leave PASSWORD blank and the app makes its own random password on first start, saved in password.txt in the app's folder and shown in the app log; or type your own. The username is admin unless you change CUSTOM_USER. The login screen keeps others on your network out of your editor. Your browser will warn about the self-signed certificate; click through it. Port 6120 is plain HTTP for use behind your own reverse proxy. This app gives full desktop access with root inside the container, so don't expose it to the internet without a proxy that adds real authentication.

The settings in the first table are already in the app settings. To use any other one, open the app settings, add the variable with your value, save, and the app restarts with it. A setting you leave out uses its default.

In the app settings

VariableDefault valueDescription
PUID$PUIDThe user ID that owns your files. ZimaOS fills this in for you.
PGID$PGIDThe group ID that owns your files. ZimaOS fills this in for you.
TZ$TZYour time zone. ZimaOS fills this in for you.
CUSTOM_USERadminThe username for the VS Code login screen. admin is fine, or pick your own.
PASSWORD—The password for the VS Code login screen. Leave it blank and the app makes a random one on first start. Find it in /DATA/AppData/vscode/password.txt (open it with the Files app) or in the app log. Or type your own here.

Desktop

VariableDefault valueDescription
TITLEVisual Studio CodeThe page title shown in your browser tab.
LC_ALL—The language of the desktop, like fr_FR.UTF-8 or de_DE.UTF-8.
NO_DECOR—Set to true to hide window borders, so VS Code fills the whole page.
NO_FULL—Set to true to stop VS Code opening full screen.

GPU

VariableDefault valueDescription
DRINODE—The GPU to use for rendering, like /dev/dri/renderD128. Add the device to the container too.

Network

VariableDefault valueDescription
DISABLE_IPV6—Set to true if your network has no IPv6 and the stream won't start.
docker-compose.yml
name: vscode

services:
  vscode:
    image: lscr.io/linuxserver/vscode:1.142.0-ls30
    container_name: vscode
    restart: unless-stopped
    stop_grace_period: 30s
    network_mode: bridge
    cap_add:
      - IPC_LOCK
    shm_size: "1gb"
    entrypoint:
      - /bin/sh
      - -c
      - |
        f=/config/password.txt
        if [ -z "$$PASSWORD" ]; then
          if [ ! -s "$$f" ]; then
            head -c 18 /dev/urandom | od -An -tx1 | tr -d ' \n' > "$$f" || { echo "[icestore] cannot write $$f"; exit 1; }
            chmod 600 "$$f"
            echo "[icestore] first start: sign in as $${CUSTOM_USER:-abc} with the password $$(cat "$$f")"
          fi
          PASSWORD=$$(cat "$$f")
          export PASSWORD
          echo "[icestore] login password: see /DATA/AppData/vscode/password.txt"
        fi
        exec /init
    environment:
      - PUID=$PUID
      - PGID=$PGID
      - TZ=$TZ
      - CUSTOM_USER=admin
      - PASSWORD=
    ports:
      - target: 3001
        published: "6119"
        protocol: tcp
      - target: 3000
        published: "6120"
        protocol: tcp
    volumes:
      - type: bind
        source: /DATA/AppData/$AppID
        target: /config
        bind:
          create_host_path: true
    deploy:
      resources:
        limits:
          cpus: "2.00"
          memory: 4096M
        reservations:
          cpus: "0.00"
          memory: 512M
    labels:
      icon: https://cdn.jsdelivr.net/gh/HSinghHira/IceStore@main/Apps/vscode/icon.png
    x-casaos:
      id: com.icestore.vscode
      envs:
        - container: PUID
          description:
            en_US: The user ID that owns your files. ZimaOS fills this in for you.
        - container: PGID
          description:
            en_US: The group ID that owns your files. ZimaOS fills this in for you.
        - container: TZ
          description:
            en_US: Your time zone. ZimaOS fills this in for you.
        - container: CUSTOM_USER
          description:
            en_US: The username for the VS Code login screen. admin is fine, or pick your own.
        - container: PASSWORD
          description:
            en_US: >-
              The password for the VS Code login screen. Leave it blank and the
              app makes a random one on first start. Find it in
              /DATA/AppData/vscode/password.txt (open it with the Files app) or
              in the app log. Or type your own here.
      ports:
        - container: "3001"
          description:
            en_US: HTTPS web interface with a self-signed certificate. Open this one in your browser. Published on host as 6119.
        - container: "3000"
          description:
            en_US: Plain HTTP web interface, meant to sit behind a reverse proxy. Published on host as 6120.
      volumes:
        - container: /config
          description:
            en_US: Your VS Code home folder, with your login session, editor settings, extensions and project files.

x-casaos:
  id: com.icestore.vscode
  architectures:
    - amd64
    - arm64
  main: vscode
  author: HSinghHira
  category: Developer
  developer: linuxserver.io
  icon: https://cdn.jsdelivr.net/gh/HSinghHira/IceStore@main/Apps/vscode/icon.png
  thumbnail: https://cdn.jsdelivr.net/gh/HSinghHira/IceStore@main/Apps/vscode/screenshot-1.png
  screenshot_link:
    - https://cdn.jsdelivr.net/gh/HSinghHira/IceStore@main/Apps/vscode/screenshot-1.png
  title:
    en_US: VS Code
  tagline:
    en_US: The full Visual Studio Code desktop app, streamed straight to your browser.
  description:
    en_US: >-
      Visit: [https://icestore.hsinghhira.me/app/vscode/](https://icestore.hsinghhira.me/app/vscode/) for full details


      The real Visual Studio Code desktop app, running in a remote desktop
      session that streams to your browser. Your everyday code editor, with
      nothing to install locally.


      **Features**


      - The genuine Visual Studio Code desktop app, not a limited web port

      - Runs inside a full Selkies remote desktop, with a real terminal, git
        and any extension you like

      - HTTPS out of the box with a self-signed certificate, plus a plain
        HTTP port for your own reverse proxy

      - Optional GPU passthrough for smoother rendering

      - Settings, extensions and projects survive restarts


      **How to use?**


      1. Open VS Code from the Zima OS dashboard.


      2. Accept the self-signed certificate warning the first time.


      3. Sign in as admin (or your CUSTOM_USER). The password is in
         /DATA/AppData/vscode/password.txt, unless you typed your own in
         PASSWORD.


      4. Open folders, install extensions and use the terminal as usual.


      5. Keep your projects in the home folder so they are saved.
  tips:
    before_install:
      en_US: >-
        Visit: [https://icestore.hsinghhira.me/app/vscode/](https://icestore.hsinghhira.me/app/vscode/) for full details
  index: /
  port_map: "6119"
  scheme: https
  is_uncontrolled: false
  version: "1.142.0"
  update_at: "2026-10-21"
  release_notes:
    en_US: |-
      - Pinned to lscr.io/linuxserver/vscode:1.142.0-ls30 instead of latest.
      - PASSWORD is now blank by default, and each install makes its own random password on first start (saved in password.txt in the app folder and shown in the log) instead of CHANGEME_PASSWORD. The username is now admin.
      - Moved to IceStore. Ports changed from 8450/8449 to 6119 (HTTPS) and 6120 (HTTP).
      - PUID, PGID and TZ now come from ZimaOS instead of fixed values.
      - Optional settings are listed in the Variables tab on the IceStore website.
  repo: "https://github.com/linuxserver/docker-vscode"
  support: "https://github.com/linuxserver/docker-vscode/issues"
  docs: "https://docs.linuxserver.io/images/docker-vscode/"