{"id":21250934,"url":"https://github.com/natlee/dev-dock","last_synced_at":"2026-04-16T18:04:05.607Z","repository":{"id":203927112,"uuid":"636113795","full_name":"NatLee/dev-dock","owner":"NatLee","description":"Creating a common GUI image by using docker for developing.","archived":false,"fork":false,"pushed_at":"2024-01-16T15:29:57.000Z","size":74998,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-15T05:24:57.883Z","etag":null,"topics":["browser","conda-environment","development-environment","docker","docker-image","gui-application","gui-interface","novnc","ssh-server","vnc","vscode","xfce-desktop"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NatLee.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-05-04T06:47:38.000Z","updated_at":"2024-06-20T13:35:31.000Z","dependencies_parsed_at":null,"dependency_job_id":"6e0b6d8f-0c8d-4f14-9e97-2ecbe5910a18","html_url":"https://github.com/NatLee/dev-dock","commit_stats":null,"previous_names":["natlee/gui-container-using-xfce-with-vnc"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/NatLee/dev-dock","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NatLee%2Fdev-dock","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NatLee%2Fdev-dock/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NatLee%2Fdev-dock/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NatLee%2Fdev-dock/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NatLee","download_url":"https://codeload.github.com/NatLee/dev-dock/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NatLee%2Fdev-dock/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263828726,"owners_count":23516791,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["browser","conda-environment","development-environment","docker","docker-image","gui-application","gui-interface","novnc","ssh-server","vnc","vscode","xfce-desktop"],"created_at":"2024-11-21T03:39:48.054Z","updated_at":"2026-04-16T18:04:05.601Z","avatar_url":"https://github.com/NatLee.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dev Dock (GUI)\n\nDocker image that provides a remote desktop (Xfce + TigerVNC + noVNC + SSH) for development.\n\n\u003e Supports **x86_64** and **arm64** (aarch64). Build the image on the same architecture as the host so Firefox and VS Code run natively.\n\n![cover](./doc/cover.png)\n\n\u003e See also: [development-container-manager](https://github.com/NatLee/dev-dock-manager) for GUI management.\n\n## Included components\n\n* **Xfce** desktop (lightweight)\n* **TigerVNC** (port 5901) + **noVNC** (port 6901, browser access)\n* **OpenSSH** (port 22)\n* **VS Code** (launched with `--no-sandbox` for container compatibility)\n* **Firefox**\n* **AnyDesk**\n* **Miniconda**\n* **fcitx5** Chinese input (e.g. Pinyin); use `fcitx5-configtool` to add or switch input methods\n* Git, vim, and common dev tools\n\n## Build and run\n\nBuild on the **same architecture** as the host (e.g. on Apple Silicon, build there) to avoid \"Dynamic loader not found\" for Firefox/VS Code.\n\n```bash\ndocker compose build \u0026\u0026 docker compose up\n```\n\nOr run in background:\n\n```bash\ndocker compose up -d\n```\n\n## Pull from Docker Hub\n\nPre-built image: [natlee/gui-vnc](https://hub.docker.com/r/natlee/gui-vnc). Use the tag that matches your machine: **x86** (`-x86`) or **Apple Silicon / ARM** (`-arm64`).\n\nPull and run (replace `\u003cTAG\u003e` with e.g. `20250208-x86` or `20250208-arm64`):\n\n```bash\ndocker pull natlee/gui-vnc:\u003cTAG\u003e\n\ndocker run -d \\\n  -p 12345:5901 -p 13579:6901 -p 24680:22 \\\n  -v /etc/localtime:/etc/localtime:ro \\\n  -e VNC_PW=mypassword \\\n  -e DEFAULT_USER=dev -e DEFAULT_USER_PASSWORD=dev \\\n  -e ROOT_PASSWORD=root \\\n  --name gui natlee/gui-vnc:\u003cTAG\u003e\n```\n\nThen open noVNC in browser: `http://localhost:13579/?password=mypassword`. See [Parameters](#parameters-environment--run-options) for more options (`LANG`, `VNC_RESOLUTION`, etc.).\n\n## NVIDIA GPU\n\nInstall [NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html) on the host, then use the GPU compose file:\n\n```bash\ndocker compose -f docker-compose.nvidia.yml build \u0026\u0026 docker compose -f docker-compose.nvidia.yml up\n```\n\n## Connection\n\n| Service | Port (default) | How to connect |\n|--------|----------------|-----------------|\n| VNC    | 5901           | VNC client → `\u003cHOST_IP\u003e:\u003cPORT\u003e` |\n| noVNC  | 6901           | Browser → `http://\u003cHOST_IP\u003e:6901/?password=\u003cVNC_PW\u003e` |\n| SSH    | 22             | `ssh \u003cuser\u003e@\u003cHOST_IP\u003e -p \u003cPORT\u003e` (user: `root` or `DEFAULT_USER`) |\n\nWith the default `docker-compose.yml`, host ports are mapped to **12345** (VNC), **13579** (noVNC), **24680** (SSH).\n\n## Parameters (environment / run options)\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `VNC_PW` | vncpassword | VNC (and noVNC) password |\n| `VNC_RESOLUTION` | 1600x900 | Desktop resolution |\n| `VNC_VIEW_ONLY` | false | If true, noVNC is view-only |\n| `DEFAULT_USER` | user | Non-root user for desktop (e.g. AnyDesk) |\n| `DEFAULT_USER_PASSWORD` | user | Password for `DEFAULT_USER` |\n| `ROOT_PASSWORD` | root | Root password |\n| `LANG` | en_US.UTF-8 | Locale (e.g. `zh_TW.UTF-8` for Chinese) |\n\n### Example: docker run\n\n```bash\ndocker run -d \\\n  -p 12345:5901 -p 13579:6901 -p 24680:22 \\\n  -v /etc/localtime:/etc/localtime:ro \\\n  -v /path/on/host:/root/Desktop \\\n  -e VNC_PW=mypassword \\\n  -e VNC_RESOLUTION=1920x1080 \\\n  -e DEFAULT_USER=dev -e DEFAULT_USER_PASSWORD=dev \\\n  -e ROOT_PASSWORD=root \\\n  -e LANG=zh_TW.UTF-8 \\\n  --name gui gui-vnc\n```\n\nBuild the image first (from this directory): `docker compose build` → image name is `gui-vnc`.\n\n### Useful run options\n\n* Map ports: `-p 12345:5901 -p 13579:6901 -p 24680:22`\n* Timezone: `-v /etc/localtime:/etc/localtime:ro`\n* Mount folder: `-v \u003cHOST_PATH\u003e:\u003cCONTAINER_PATH\u003e`\n\n## License\n\n[MIT](./LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnatlee%2Fdev-dock","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnatlee%2Fdev-dock","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnatlee%2Fdev-dock/lists"}