{"id":30043303,"url":"https://github.com/ergolyam/xrdp-docker","last_synced_at":"2026-04-05T01:32:20.908Z","repository":{"id":288443573,"uuid":"968121616","full_name":"ergolyam/xrdp-docker","owner":"ergolyam","description":"Tiny Docker image that boots straight into an XRDP + IceWM session and instantly runs any GUI app you include, exposing it over native RDP.","archived":false,"fork":false,"pushed_at":"2026-03-30T23:09:00.000Z","size":59,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-31T00:33:13.641Z","etag":null,"topics":["alpine","debian","docker","icewm","podman","rdp","xrdp"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ergolyam.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-04-17T14:42:46.000Z","updated_at":"2026-03-30T23:09:04.000Z","dependencies_parsed_at":"2025-04-18T05:26:26.389Z","dependency_job_id":"9dffe538-a681-494b-a2d5-c5f14d8b2b6b","html_url":"https://github.com/ergolyam/xrdp-docker","commit_stats":null,"previous_names":["grisha765/xrdp-docker","ergolyam/xrdp-docker"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ergolyam/xrdp-docker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ergolyam%2Fxrdp-docker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ergolyam%2Fxrdp-docker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ergolyam%2Fxrdp-docker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ergolyam%2Fxrdp-docker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ergolyam","download_url":"https://codeload.github.com/ergolyam/xrdp-docker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ergolyam%2Fxrdp-docker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31421869,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T00:25:07.052Z","status":"ssl_error","status_checked_at":"2026-04-05T00:25:05.923Z","response_time":60,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["alpine","debian","docker","icewm","podman","rdp","xrdp"],"created_at":"2025-08-07T04:58:06.543Z","updated_at":"2026-04-05T01:32:20.896Z","avatar_url":"https://github.com/ergolyam.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# xrdp-docker\nThis project provides a **tiny image that boots straight into an XRDP + IceWM session** and then immediately runs whatever GUI program you supply.  \nTreat it like an appliance you can build on: add your application, copy `/startapp.sh`, and you are done.\n\n\u003e **Why a “base image”?**  \n\u003e There are many GUI apps, but only one piece of XRDP plumbing is needed for all of them.  By pulling this image as a parent you keep your own image slim (most of the weight is fonts and XRDP itself) and you can focus on shipping **your** program.\n\n## Create your own image\n\n- Below is the **minimal pattern** you will use over and over:\n    ```dockerfile\n    FROM ghcr.io/ergolyam/xrdp-docker:latest  # \u003c‑‑ the base image\n\n    RUN apk add --no-cache xterm # pull in the GUI program(s) you need\n\n    COPY startapp.sh /startapp.sh # launcher that XRDP will run\n\n    RUN chmod +x /startapp.sh # permission to run\n    ```\n    - Example `startapp.sh`:\n        ```bash\n        #!/usr/bin/env sh\n        exec xterm # start your GUI; exit -\u003e session ends\n        ```\n    - `/startapp.sh` is required and must be executable. If it is missing, the container exits immediately.\n    - You can also provide an optional `/entrypoint.sh`; it runs after the RDP user is created and before `xrdp` starts.\n\n- Build \u0026 run:\n    ```bash\n    docker build -t xrdp-xterm .\n    docker run -p 3389:3389 \\\n                -e USER=demo -e PASSWD=secret \\\n                xrdp-xterm\n    ```\n\n- Run with ssl keys:\n    ```bash\n    openssl req -x509 -newkey rsa:2048 -nodes -keyout /path/to/key.pem -out /path/to/cert.pem -days 365\n    ```\n    ```bash\n    docker run -p 3389:3389 \\\n                -e USER=demo -e PASSWD=secret \\\n                -v /path/to/key.pem:/key.pem:ro \\\n                -v /path/to/cert.pem:/cert.pem:ro \\\n                xrdp-xterm\n    ```\n\n- Connect to **`localhost:3389`** with any RDP client (username **demo**, password **secret**) you will land in a maximised `xterm`.\n\n## Environment Variables\n\nThe container is controlled via the following environment variables:\n\n| Variable     | Description |\n|--------------|-------------|\n| `USER`       | Username for the RDP session. The specified user will be created automatically if it does not already exist. |\n| `PASSWD`     | Password for the RDP session user. It is applied on every container start. |\n| `TZ`         | (Optional) Time zone for the container (for example `Europe/Moscow`). Applied only when the corresponding zoneinfo file exists. |\n| `DARK_MODE`  | (Optional) If set to `true`, exports dark-theme variables for GTK and Qt applications. |\n| `PORT`       | (Optional) Port that XRDP will listen on (default is `3389`). Remember to publish the same port with Docker. |\n| `DISPLAY`    | (Optional) X display offset used by XRDP/Xorg (default is `10`). Useful when running multiple containers side by side. |\n| `LOGOUT_TIMEOUT` | (Optional) Inactivity timeout in minutes before `xautolock` logs the session out. |\n| `XKBMAP_LAYOUT` | (Optional) Enables keyboard layout switching between `us` and the specified XKB layout (for example `ru`). |\n| `XKBMAP_OPTION` | (Optional) XKB option string used for layout switching (default: `grp:win_space_toggle`). |\n\n## Hooks you can use\n\n* **`/entrypoint.sh`** – Optional. Runs before starting xrdp, after creating a user, suitable for creating base directories and granting permissions to the user.\n* **`/startapp.sh`** – Required. It is launched by IceWM after login. It should be executable; when it exits, the session logs out and the container shuts down.\n\n## Features\n\n- **No VNC hop**: uses `xrdp` + `xorgxrdp`; clients see a native RDP server on port 3389.\n- **IceWM kiosk mode**: no task‑bar, no start menu your app opens maximised and owns the screen.\n- **Environment‑driven**: just supply `USER`, `PASSWD`, `/startapp.sh`.\n- **Optional keyboard layout switcher**: set `XKBMAP_LAYOUT=ru` to toggle between `us` and `ru`.\n\n## Published tags\n\nThe GitHub workflow currently publishes these tags:\n\n- `latest` (alias for `alpine-latest`)\n- `alpine-3.19`, `alpine-3.20`, `alpine-3.21`, `alpine-3.22`, `alpine-latest`, `alpine-edge`\n- `debian-12-slim`, `debian-13-slim`\n\n## Projects Using This Image\n\nHere are some example projects built on top of `xrdp-docker`:\n\n- [**xrdp-firefox**](https://github.com/ergolyam/xrdp-firefox) – A minimal container that launches Firefox in a remote desktop session via XRDP.\n\n\u003e Have you built something with `xrdp-docker`? Feel free to open a PR and add your project here!\n\n## License\n\nThis program is free software: you can redistribute it and/or modify it under the terms of the **GNU General Public License, version 3 or (at your option) any later version** published by the Free Software Foundation.\n\nCopyright © 2025 ergolyam\n\nSee the full license text in the [LICENSE](license) file or online at \u003chttps://www.gnu.org/licenses/gpl-3.0.txt\u003e.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fergolyam%2Fxrdp-docker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fergolyam%2Fxrdp-docker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fergolyam%2Fxrdp-docker/lists"}