{"id":15663024,"url":"https://github.com/melroy89/xfcevdi","last_synced_at":"2025-10-18T22:19:45.587Z","repository":{"id":48936455,"uuid":"265999919","full_name":"melroy89/xfcevdi","owner":"melroy89","description":"Debian Docker image with XFCE (+more!) leveraging X2Go protocol. (Mirror of: https://gitlab.melroy.org/melroy/xfcevdi)","archived":false,"fork":false,"pushed_at":"2024-04-30T18:53:33.000Z","size":827,"stargazers_count":20,"open_issues_count":0,"forks_count":10,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-01T05:01:39.947Z","etag":null,"topics":["debian","docker","docker-image","firefox","libreoffice","linux","remote","vdi","virtual-machine","vm","x2go","xfce"],"latest_commit_sha":null,"homepage":"https://hub.docker.com/r/danger89/xfcevdi_x2go","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/melroy89.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"melroy89","patreon":"Melroy","buy_me_a_coffee":"melroy","ko_fi":"melroy","liberapay":"melroy","custom":["https://melroy.org/thanks.html"]}},"created_at":"2020-05-22T02:29:29.000Z","updated_at":"2025-03-19T23:06:28.000Z","dependencies_parsed_at":"2024-04-30T20:07:06.008Z","dependency_job_id":null,"html_url":"https://github.com/melroy89/xfcevdi","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/melroy89%2Fxfcevdi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/melroy89%2Fxfcevdi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/melroy89%2Fxfcevdi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/melroy89%2Fxfcevdi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/melroy89","download_url":"https://codeload.github.com/melroy89/xfcevdi/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253843216,"owners_count":21972874,"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":["debian","docker","docker-image","firefox","libreoffice","linux","remote","vdi","virtual-machine","vm","x2go","xfce"],"created_at":"2024-10-03T13:35:15.463Z","updated_at":"2025-10-18T22:19:45.512Z","avatar_url":"https://github.com/melroy89.png","language":"Shell","funding_links":["https://github.com/sponsors/melroy89","https://patreon.com/Melroy","https://buymeacoffee.com/melroy","https://ko-fi.com/melroy","https://liberapay.com/melroy","https://melroy.org/thanks.html"],"categories":[],"sub_categories":[],"readme":"# XFCE VDI (using X2Go)\n\nDocker image for running [Debian](https://hub.docker.com/_/debian) and [XFCE](https://www.xfce.org/) by leveraging the [X2Go protocol](https://wiki.x2go.org/doku.php/download:start).\n\n## Purpose\n\nThis docker image enables you to start one or more instances of a Virtual Desktop Infrastructure (VDI). Without the need of VM's!\n\n- By utilizing [Docker containers](https://www.docker.com/resources/what-container), there will be **NO** boot of whole operating system (like VMs do), instead docker will use the OS kernel resources and shares them with the docker container. Resulting in much faster start-up times than VMs can every do.\n\n- By using the [X2Go protocol](https://wiki.x2go.org/) it's easy to connect/share sessions between the client and the server. Which allows remote working or any other task you might want do remotely in a windowing system.\n\n- The image contains a [docker GNU/Linux Debian](https://hub.docker.com/_/debian) (Bookworm) operating system, together with XFCE4 desktop environment. The required X2Goserver/X2Gosession are already pre-installed.\n\n- In fact, this Docker image has a lot of packages pre-installed you probably want anyway, including but not limited to: `Firefox`, `LibreOffice`, `qalculate`, `archiver`, `file manager`, `text editor`, `image viewer`, `htop`, `clipboard manager` and much more.\n\n- Last but not least, the image is preconfigured with a nice dark-theme (Breeze-Dark), window theme (Mint-Y-Dark) as well as a nice looking icon set (Mint-Y-Dark-Aqua) and uses Ubuntu fonts by default. See below an preview:\n\n![Preview 1](preview.png)\n\nOr an example with Papirus icons:\n\n![Preview 2](preview_papirus.png)\n\n_Note 1:_ You can always remove/install additional packages. By using the Docker container and apt command line (this won't be permanent). Or ideally, by changing [Dockerfile](Dockerfile) or extending the Docker image instead via: `FROM danger89/xfcevdi_x2go` in your own Dockerfile.\n\n_Note 2:_ Optionally adapt the [XFCE settings script](xfce_settings.sh) to your needs. Eg. when you installed the Papirus icon theme and you want to use use the Papirus icons instead Mint-Y-Dark-Aqua icons.\n\n## Usage\n\nYou could use the `docker` CLI or Docker Compose (`docker compose`).\n\n_Note:_ The Docker image will be retrieved automatically from [DockerHub](https://hub.docker.com/r/danger89/xfcevdi_x2go).\n\n_Note 2:_ Since Docker tag v3.0 it's based on Debian Bookworm (Debian 12).\n\n### Docker\n\nStart the docker container using (with default username: `user`, password: _is auto-generated_, port: `2222`):\n\n```sh\ndocker run --shm-size 2g -it --rm -p 2222:22 danger89/xfcevdi_x2go:latest\n```\n\nOr with the username `melroy` with password `abc` on port: `2222`:\n\n```sh\ndocker run --shm-size 2g -it --rm -p 2222:22 -e USERNAME=melroy -e PASS=abc danger89/xfcevdi_x2go:latest\n```\n\nOr make home mount persistent between restarts:\n\n```sh\ndocker run --shm-size 2g -it --rm -v $(pwd)/vdi_home:/home -p 2222:22 danger89/xfcevdi_x2go:latest\n```\n\nSee \"X2Go Clients\" section below how to connect.\n\n## Docker Compose\n\nYou can also use of [Docker Compose](https://docs.docker.com/compose/)!\n\n**Adapt** the [compose.yaml](compose.yaml) file to your needs, and start the Docker container using: `docker compose up`\n\nSee \"X2Go Clients\" section below how to connect.\n\n_Note:_ If you installed Docker Compose manually using the script, then the script name is: `docker-compose` iso `docker compose`.\n\n## Environment variables\n\n_Important:_ By default the user can install new software using APT (eg. `sudo apt install`) and without providing it's password. You can set `ALLOW_APT` to `no` to disable the use of APT all together.\n\nYou can either change the environment variables using `-e` flag during `docker run` _or_ by changing just the `environment` section in the `compose.yaml` file.\n\nDocker run example with `-e` flag which disables APT for the default user: `docker run --shm-size 2g -it -e ALLOW_APT=no -p 2222:22 danger89/xfcevdi_x2go:latest`\n\nAvailable environment variables::\n\n| Env. variable | Type   | Description                                         | Default value         |\n| ------------- | ------ | --------------------------------------------------- | --------------------- |\n| `USERNAME`    | string | New username                                        | `user`                |\n| `USER_ID`     | string | New User/Group ID                                   | `1000`                |\n| `PASS`        | string | Change password for user                            | _auto-generated pass_ |\n| `ALLOW_APT`   | string | User is allowed to use APT commands                 | `yes`                 |\n| `ENTER_PASS`  | string | Require to enter password for specific APT commands | `no`                  |\n\n**NOTE 1:** Since [XFCE VDI v2.0](https://hub.docker.com/r/danger89/xfcevdi_x2go/tags), the new user is _only allowed_ to execute `apt` commands as root user. What can be changed on line 54 \u0026 56 in [setup.sh script](scripts/setup.sh#L54) and build your own Docker image.\n\n**NOTE 2:** Since [XFCE VDI v2.0](https://hub.docker.com/r/danger89/xfcevdi_x2go/tags) we disabled the root user completely for safety reasons. Again, you can _only_ use `sudo apt` command as the default user (called: `user`), other sudo commands are disallowed. Since v2.0 booleans are also converted to 'yes' or 'no' strings to avoid YAML syntax confusion.\n\n## Update Docker Image\n\nLeveraging Docker Compose, use:\n\n1. Stop: `docker compose down`\n2. Update: `docker compose pull xfcevdi`\n3. Start again: `docker compose up -d` (runs in detached mode)\n\n_Note:_ If you installed Docker Compose manually using the script, then the script name is: `docker-compose` iso `docker compose`.\n\nUsing Docker CLI:\n\n1. Stop docker container: `docker stop \u003ccontainer_id\u003e`\n2. Update: `docker pull danger89/xfcevdi_x2go`\n3. Start again: `docker run`\n\n## X2Go Clients\n\nX2Go has two clients available to choose from:\n\n- X2Go Client (recommended)\n- PyHoca-GUI\n\nWhich can both be [downloaded from their site](https://wiki.x2go.org/doku.php/download:start). Clients are available for Windows/Mac and/or GNU/Linux operating systems.\n\nOnce you open the client, create a new session by providing the following settings (default settings):\n\n- Host: host IP address (or domain name or `localhost`)\n- Login: `user` (default username)\n- SSH port: `2222` (default port)\n- Session type: `XFCE` (select from drop-down menu)\n\nOnce you try to connect, accept the new SSH host key and you'll require to enter a password (by default the **passwords are auto-generated**!).\n\n## Build\n\nYou do _not_ need to build the image yourself, instead try to use the pre-build [Docker image](https://hub.docker.com/r/danger89/xfcevdi_x2go). See also \"Usage\" above.\n\nIf you want, you could build the image locally, using the command:\n\n```sh\ndocker build --tag danger89/xfcevdi_x2go .\n```\n\n### Apt-Cacher (OPTIONAL!)\n\nWhen you have [apt-cacher](http://manpages.ubuntu.com/manpages/jammy/man8/apt-cacher.8.html) or [apt-cacher-ng](http://manpages.ubuntu.com/manpages/jammy/en/man8/apt-cacher-ng.8.html) proxy installed, use `APT_PROXY` parameter to set the proxy URL; where `melroy-pc` is _your_ hostname:\n\n**Important:** Be sure you configured `apt-cacher` correctly to accept incoming connections from Docker. Set: `allowed_hosts = *` in `/etc/apt-cacher/apt-cacher.conf` file.\n\n```sh\ndocker build --build-arg APT_PROXY=http://melroy-pc:3142 --tag danger89/xfcevdi_x2go .\n```\n\n## Common issues\n\n### Host key verification failed\n\nThis error means that you are using an old SSH host key.\n\n**Solution:** Try not to terminate the session and when X2Go client ask you to update the host key, choose 'yes'. This will replace the old host key with the new key.\n\n**Root-cause:** Each time you setup a new VDI Docker container, a new SSH host key is generated for you.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmelroy89%2Fxfcevdi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmelroy89%2Fxfcevdi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmelroy89%2Fxfcevdi/lists"}