{"id":14155254,"url":"https://github.com/infrastlabs/docker-headless","last_synced_at":"2025-08-06T01:30:47.047Z","repository":{"id":58552098,"uuid":"385603620","full_name":"infrastlabs/docker-headless","owner":"infrastlabs","description":"Remote Desktop with Docker: XRDP/NOVNC/PulseAudio. (Xfce, Mate, Cinnamon, Gnome, Plasma) MultiScreen Support!","archived":false,"fork":false,"pushed_at":"2024-10-28T06:27:07.000Z","size":15637,"stargazers_count":56,"open_issues_count":1,"forks_count":19,"subscribers_count":2,"default_branch":"dev","last_synced_at":"2024-10-28T07:13:35.712Z","etag":null,"topics":["desktop","devtool","docker","firefox","fluxbox","linux","openssh","rdp","vnc","wps"],"latest_commit_sha":null,"homepage":"https://gitee.com/infrastlabs/docker-headless","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/infrastlabs.png","metadata":{"files":{"readme":"README.md","changelog":"Changelog.md","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":"2021-07-13T12:54:36.000Z","updated_at":"2024-10-28T06:27:11.000Z","dependencies_parsed_at":"2023-09-25T01:51:20.701Z","dependency_job_id":"8d54dde5-afc9-48d5-b15c-0bf4f3ef0b37","html_url":"https://github.com/infrastlabs/docker-headless","commit_stats":{"total_commits":385,"total_committers":6,"mean_commits":64.16666666666667,"dds":0.6311688311688312,"last_synced_commit":"9aeb0a313c289536ec2760f2705000febb622154"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/infrastlabs%2Fdocker-headless","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/infrastlabs%2Fdocker-headless/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/infrastlabs%2Fdocker-headless/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/infrastlabs%2Fdocker-headless/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/infrastlabs","download_url":"https://codeload.github.com/infrastlabs/docker-headless/tar.gz/refs/heads/dev","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228821400,"owners_count":17977165,"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":["desktop","devtool","docker","firefox","fluxbox","linux","openssh","rdp","vnc","wps"],"created_at":"2024-08-17T08:02:35.782Z","updated_at":"2024-12-09T02:31:12.665Z","avatar_url":"https://github.com/infrastlabs.png","language":"Shell","readme":"# docker-headless\n\nMulti-Desktop with `XRDP/NOVNC/PulseAudio` based on `Ubuntu20.04`, Formatting a HeadlessBox/Cloud Desktop. [[Detail]](./Detail.md)\n\n[![Docker Image Size](https://img.shields.io/docker/image-size/infrastlabs/docker-headless/latest)](https://hub.docker.com/r/infrastlabs/docker-headless/tags)\n[![Docker Pulls](https://img.shields.io/docker/pulls/infrastlabs/docker-headless.svg)](https://hub.docker.com/r/infrastlabs/docker-headless)\n[![Last commit](https://img.shields.io/github/last-commit/infrastlabs/docker-headless.svg)](https://www.github.com/infrastlabs/docker-headless)\n[![GitHub issues](https://img.shields.io/github/issues/infrastlabs/docker-headless.svg)](https://www.github.com/infrastlabs/docker-headless/issues)\n\n## step1: QuickStart\n\n`docker run -it --rm --shm-size 1g --net=host infrastlabs/docker-headless:latest`\n\n -- | Conn | PASS | ReadOnly \n--- | ---  | ---  | ---\nnoVnc | https://192.168.0.x:10081 | `headless` | `View123` \nRDP   | 192.168.0.x:10089         | `headless` | - \nSSH   | ssh -p 10022 headless@192.168.0.x | `headless` | - \n\n![](https://gitee.com/infrastlabs/docker-headless/raw/dev/_doc/res/01rdp-double-screen.png)\n\n## step2: Design\n\n- Screen shared with both RDP/noVnc. (ReadWrite/ReadOnly)\n- Multi Desktop: Xfce, Mate, Cinnamon, Gnome, Plasma\n- Slim Image: `core: 170.53 MB`, `latest: 277.48 MB`, `sogou: 354.15 MB`\n- Feats\n  - MultiScreen support. (mstsc+xrdp+tigervnc)\n  - Audio support. (xrdp+pulseaudio/noVNC+broadcast)\n  - Locale/TZ support. Apps `ibus-rime/fcitx-sogou`, `flameshot`, `PAC`.\n\n![](https://gitee.com/infrastlabs/docker-headless/raw/dev/_doc/res/design/RDesktop.png)\n\n## step3: UseCase\n\nQuick start with Locale: `docker run -it --rm --shm-size 1g -e VNC_OFFSET=20 -e L=zh_CN --net=host infrastlabs/docker-headless:latest`, Prefer [docker-compose.yml](./docker-compose.yml)\n\n**(1)Development** (java, golang, nodejs)\n\n```bash\n# JAVA\nsudo apt -y install openjdk-8-jdk openjdk-8-source \u0026\u0026 sudo apt -y install maven \n# GO\ngoVer=go1.17.8 #go1.16.15 #go1.13.15\nwget https://studygolang.com/dl/golang/$goVer.linux-amd64.tar.gz\ntar -zxf $goVer.linux-amd64.tar.gz; mv go $goVer.linux-amd64\nrm -f godev; ln -s $goVer.linux-amd64 godev #link godev\n# NODE\nwget https://npm.taobao.org/mirrors/node/v14.20.0/node-v14.20.0-linux-x64.tar.xz\nxz -d node-v14.20.0-linux-x64.tar.xz #tar.xz消失\ntar -xvf node-v14.20.0-linux-x64.tar\n\n# cat \u003e\u003e /etc/profile \u003c\u003cEOF\ncat \u003c\u003cEOF |sudo tee -a /etc/profile\n# NODE\nNODE_HOME=/_ext/down/node-v14.20.0-linux-x64\nPATH=\\$NODE_HOME/bin:\\$PATH\nexport NODE_HOME PATH\n# GO\nGO_HOME=/_ext/down/godev\nGOPATH=/_ext/gopath\nPATH=\\$GO_HOME/bin:\\$GOPATH/bin:\\$PATH\nexport GO_HOME GOPATH PATH\nexport GO111MODULE=on\nexport GOPROXY=https://goproxy.cn\nEOF\n\n#IDE: vscode, ideaIC\nwget https://vscode.cdn.azure.cn/stable/6cba118ac49a1b88332f312a8f67186f7f3c1643/code_1.61.2-1634656828_amd64.deb\nwget https://download.jetbrains.com.cn/idea/ideaIC-2016.3.8-no-jdk.tar.gz\n```\n\n![](_doc/res/02/ide2-vscode.png)\n\n**(2)Office**\n\nwps, chrome/firefox\n\n```bash\n# firefox, chromium\nsudo apt -y install firefox-esr chromium #chromium-driver\n# WPS Office\n# https://blog.csdn.net/u012939880/article/details/89439647 #wps_symbol_fonts.zip\nwget https://wdl1.cache.wps.cn/wps/download/ep/Linux2019/10161/wps-office_11.1.0.10161_amd64.deb\n# ibus support with wps\nsudo sed -i \"1a export XMODIFIERS=@im=ibus\" /usr/bin/{wps,wpp,et}\nsudo sed -i \"2a export QT_IM_MODULE=ibus\" /usr/bin/{wps,wpp,et}\n```\n\n![](_doc/res/02/apps-office-wps.jpg)\n\n\n**(3)Docker Dind**\n\n![](_doc/res/02/dind2-headlessLinks.png)\n\n```bash\n# exec@host: docker,dcp\nimg=docker:18.09.8 #18.09.3\ndocker run -v /_ext:/mnt $img sh -c \"cp /usr/local/bin/docker /mnt; ls -lh /mnt |grep docker\"\nimg=registry.cn-shenzhen.aliyuncs.com/k-bin/sync-kube:kube-att\ndocker run --rm -v /_ext:/mnt $img sh -c 'cp -a /down/docker-compose /mnt/; ls -lh /mnt |grep docker'\n\n# links@HeadlessBox: docker, socket\nsudo bash -c \"ln -s /_ext/docker /bin/; ln -s /_ext/docker-compose /usr/bin/dcp\"\nsudo bash -c \"ln -s /mnt/var/run/docker.sock /var/run/; chmod 777 /var/run/docker.sock\"\n```\n","funding_links":[],"categories":["linux"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finfrastlabs%2Fdocker-headless","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finfrastlabs%2Fdocker-headless","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finfrastlabs%2Fdocker-headless/lists"}