mirror of
https://github.com/linuxserver/docker-rdesktop.git
synced 2026-02-20 06:16:43 +08:00
Compare commits
No commits in common. "master" and "2da97a87-ls209" have entirely different histories.
master
...
2da97a87-l
0
.editorconfig
Normal file → Executable file
0
.editorconfig
Normal file → Executable file
8
.github/CONTRIBUTING.md
vendored
Normal file → Executable file
8
.github/CONTRIBUTING.md
vendored
Normal file → Executable file
@ -6,7 +6,7 @@
|
|||||||
* Read, and fill the Pull Request template
|
* Read, and fill the Pull Request template
|
||||||
* If this is a fix for a typo (in code, documentation, or the README) please file an issue and let us sort it out. We do not need a PR
|
* If this is a fix for a typo (in code, documentation, or the README) please file an issue and let us sort it out. We do not need a PR
|
||||||
* If the PR is addressing an existing issue include, closes #\<issue number>, in the body of the PR commit message
|
* If the PR is addressing an existing issue include, closes #\<issue number>, in the body of the PR commit message
|
||||||
* If you want to discuss changes, you can also bring it up in [#dev-talk](https://discordapp.com/channels/354974912613449730/757585807061155840) in our [Discord server](https://linuxserver.io/discord)
|
* If you want to discuss changes, you can also bring it up in [#dev-talk](https://discordapp.com/channels/354974912613449730/757585807061155840) in our [Discord server](https://discord.gg/YWrKVTn)
|
||||||
|
|
||||||
## Common files
|
## Common files
|
||||||
|
|
||||||
@ -27,7 +27,7 @@ If you would like to change our readme, please __**do not**__ directly edit the
|
|||||||
Instead edit the [readme-vars.yml](https://github.com/linuxserver/docker-rdesktop/edit/master/readme-vars.yml).
|
Instead edit the [readme-vars.yml](https://github.com/linuxserver/docker-rdesktop/edit/master/readme-vars.yml).
|
||||||
|
|
||||||
These variables are used in a template for our [Jenkins Builder](https://github.com/linuxserver/docker-jenkins-builder) as part of an ansible play.
|
These variables are used in a template for our [Jenkins Builder](https://github.com/linuxserver/docker-jenkins-builder) as part of an ansible play.
|
||||||
Most of these variables are also carried over to [docs.linuxserver.io](https://docs.linuxserver.io)
|
Most of these variables are also carried over to [docs.linuxserver.io](https://docs.linuxserver.io/images/docker-rdesktop)
|
||||||
|
|
||||||
### Fixing typos or clarify the text in the readme
|
### Fixing typos or clarify the text in the readme
|
||||||
|
|
||||||
@ -105,10 +105,10 @@ docker build \
|
|||||||
-t linuxserver/rdesktop:latest .
|
-t linuxserver/rdesktop:latest .
|
||||||
```
|
```
|
||||||
|
|
||||||
The ARM variants can be built on x86_64 hardware and vice versa using `lscr.io/linuxserver/qemu-static`
|
The ARM variants can be built on x86_64 hardware using `multiarch/qemu-user-static`
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker run --rm --privileged lscr.io/linuxserver/qemu-static --reset
|
docker run --rm --privileged multiarch/qemu-user-static:register --reset
|
||||||
```
|
```
|
||||||
|
|
||||||
Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64`.
|
Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64`.
|
||||||
|
|||||||
4
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file → Executable file
4
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file → Executable file
@ -1,7 +1,7 @@
|
|||||||
blank_issues_enabled: false
|
blank_issues_enabled: false
|
||||||
contact_links:
|
contact_links:
|
||||||
- name: Discord chat support
|
- name: Discord chat support
|
||||||
url: https://linuxserver.io/discord
|
url: https://discord.gg/YWrKVTn
|
||||||
about: Realtime support / chat with the community and the team.
|
about: Realtime support / chat with the community and the team.
|
||||||
|
|
||||||
- name: Discourse discussion forum
|
- name: Discourse discussion forum
|
||||||
@ -9,5 +9,5 @@ contact_links:
|
|||||||
about: Post on our community forum.
|
about: Post on our community forum.
|
||||||
|
|
||||||
- name: Documentation
|
- name: Documentation
|
||||||
url: https://docs.linuxserver.io
|
url: https://docs.linuxserver.io/images/docker-rdesktop
|
||||||
about: Documentation - information about all of our containers.
|
about: Documentation - information about all of our containers.
|
||||||
|
|||||||
76
.github/ISSUE_TEMPLATE/issue.bug.yml
vendored
Normal file → Executable file
76
.github/ISSUE_TEMPLATE/issue.bug.yml
vendored
Normal file → Executable file
@ -4,13 +4,73 @@ description: Create a report to help us improve
|
|||||||
title: "[BUG] <title>"
|
title: "[BUG] <title>"
|
||||||
labels: [Bug]
|
labels: [Bug]
|
||||||
body:
|
body:
|
||||||
- type: markdown
|
- type: checkboxes
|
||||||
attributes:
|
attributes:
|
||||||
|
label: Is there an existing issue for this?
|
||||||
|
description: Please search to see if an issue already exists for the bug you encountered.
|
||||||
|
options:
|
||||||
|
- label: I have searched the existing issues
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Current Behavior
|
||||||
|
description: Tell us what happens instead of the expected behavior.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Expected Behavior
|
||||||
|
description: Tell us what should happen.
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Steps To Reproduce
|
||||||
|
description: Steps to reproduce the behavior.
|
||||||
|
placeholder: |
|
||||||
|
1. In this environment...
|
||||||
|
2. With this config...
|
||||||
|
3. Run '...'
|
||||||
|
4. See error...
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Environment
|
||||||
|
description: |
|
||||||
|
examples:
|
||||||
|
- **OS**: Ubuntu 20.04
|
||||||
|
- **How docker service was installed**: distro's packagemanager
|
||||||
value: |
|
value: |
|
||||||
# DEPRECATION NOTICE
|
- OS:
|
||||||
This image is deprecated. We will not offer support for this image and it will not be updated.
|
- How docker service was installed:
|
||||||
|
render: markdown
|
||||||
|
validations:
|
||||||
Please migrate to an Ubuntu-based tag. For more info, see
|
required: false
|
||||||
https://info.linuxserver.io/issues/2025-08-23-rdesktop/
|
- type: dropdown
|
||||||
|
attributes:
|
||||||
|
label: CPU architecture
|
||||||
|
options:
|
||||||
|
- x86-64
|
||||||
|
- arm64
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Docker creation
|
||||||
|
description: |
|
||||||
|
Command used to create docker container
|
||||||
|
Provide your docker create/run command or compose yaml snippet, or a screenshot of settings if using a gui to create the container
|
||||||
|
render: bash
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
description: |
|
||||||
|
Provide a full docker log, output of "docker logs rdesktop"
|
||||||
|
label: Container logs
|
||||||
|
placeholder: |
|
||||||
|
Output of `docker logs rdesktop`
|
||||||
|
render: bash
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|||||||
33
.github/ISSUE_TEMPLATE/issue.feature.yml
vendored
Normal file → Executable file
33
.github/ISSUE_TEMPLATE/issue.feature.yml
vendored
Normal file → Executable file
@ -4,13 +4,28 @@ description: Suggest an idea for this project
|
|||||||
title: "[FEAT] <title>"
|
title: "[FEAT] <title>"
|
||||||
labels: [enhancement]
|
labels: [enhancement]
|
||||||
body:
|
body:
|
||||||
- type: markdown
|
- type: checkboxes
|
||||||
attributes:
|
attributes:
|
||||||
value: |
|
label: Is this a new feature request?
|
||||||
# DEPRECATION NOTICE
|
description: Please search to see if a feature request already exists.
|
||||||
This image is deprecated. We will not offer support for this image and it will not be updated.
|
options:
|
||||||
|
- label: I have searched the existing issues
|
||||||
|
required: true
|
||||||
Please migrate to an Ubuntu-based tag. For more info, see
|
- type: textarea
|
||||||
https://info.linuxserver.io/issues/2025-08-23-rdesktop/
|
attributes:
|
||||||
|
label: Wanted change
|
||||||
|
description: Tell us what you want to happen.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Reason for change
|
||||||
|
description: Justify your request, why do you want it, what is the benefit.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Proposed code change
|
||||||
|
description: Do you have a potential code change in mind?
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
|||||||
7
.github/PULL_REQUEST_TEMPLATE.md
vendored
7
.github/PULL_REQUEST_TEMPLATE.md
vendored
@ -1,10 +1,3 @@
|
|||||||
# DEPRECATION NOTICE
|
|
||||||
This image is deprecated. We will not offer support for this image and it will not be updated.
|
|
||||||
|
|
||||||
|
|
||||||
Please migrate to an Ubuntu-based tag. For more info, see
|
|
||||||
https://info.linuxserver.io/issues/2025-08-23-rdesktop/
|
|
||||||
|
|
||||||
<!--- Provide a general summary of your changes in the Title above -->
|
<!--- Provide a general summary of your changes in the Title above -->
|
||||||
|
|
||||||
[linuxserverurl]: https://linuxserver.io
|
[linuxserverurl]: https://linuxserver.io
|
||||||
|
|||||||
16
.github/workflows/call_issue_pr_tracker.yml
vendored
Executable file
16
.github/workflows/call_issue_pr_tracker.yml
vendored
Executable file
@ -0,0 +1,16 @@
|
|||||||
|
name: Issue & PR Tracker
|
||||||
|
|
||||||
|
on:
|
||||||
|
issues:
|
||||||
|
types: [opened,reopened,labeled,unlabeled,closed]
|
||||||
|
pull_request_target:
|
||||||
|
types: [opened,reopened,review_requested,review_request_removed,labeled,unlabeled,closed]
|
||||||
|
pull_request_review:
|
||||||
|
types: [submitted,edited,dismissed]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
manage-project:
|
||||||
|
permissions:
|
||||||
|
issues: write
|
||||||
|
uses: linuxserver/github-workflows/.github/workflows/issue-pr-tracker.yml@v1
|
||||||
|
secrets: inherit
|
||||||
13
.github/workflows/call_issues_cron.yml
vendored
Executable file
13
.github/workflows/call_issues_cron.yml
vendored
Executable file
@ -0,0 +1,13 @@
|
|||||||
|
name: Mark stale issues and pull requests
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: '10 17 * * *'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
stale:
|
||||||
|
permissions:
|
||||||
|
issues: write
|
||||||
|
pull-requests: write
|
||||||
|
uses: linuxserver/github-workflows/.github/workflows/issues-cron.yml@v1
|
||||||
|
secrets: inherit
|
||||||
17
.github/workflows/external_trigger.yml
vendored
Executable file
17
.github/workflows/external_trigger.yml
vendored
Executable file
@ -0,0 +1,17 @@
|
|||||||
|
name: External Trigger Main
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
external-trigger-master:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4.1.1
|
||||||
|
|
||||||
|
- name: External Trigger
|
||||||
|
if: github.ref == 'refs/heads/master'
|
||||||
|
run: |
|
||||||
|
echo "**** No external release, exiting ****"
|
||||||
|
echo "No external release, exiting" >> $GITHUB_STEP_SUMMARY
|
||||||
|
exit 0
|
||||||
45
.github/workflows/external_trigger_scheduler.yml
vendored
Executable file
45
.github/workflows/external_trigger_scheduler.yml
vendored
Executable file
@ -0,0 +1,45 @@
|
|||||||
|
name: External Trigger Scheduler
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: '58 * * * *'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
external-trigger-scheduler:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4.1.1
|
||||||
|
with:
|
||||||
|
fetch-depth: '0'
|
||||||
|
|
||||||
|
- name: External Trigger Scheduler
|
||||||
|
run: |
|
||||||
|
echo "**** Branches found: ****"
|
||||||
|
git for-each-ref --format='%(refname:short)' refs/remotes
|
||||||
|
for br in $(git for-each-ref --format='%(refname:short)' refs/remotes)
|
||||||
|
do
|
||||||
|
br=$(echo "$br" | sed 's|origin/||g')
|
||||||
|
echo "**** Evaluating branch ${br} ****"
|
||||||
|
ls_jenkins_vars=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-rdesktop/${br}/jenkins-vars.yml)
|
||||||
|
ls_branch=$(echo "${ls_jenkins_vars}" | yq -r '.ls_branch')
|
||||||
|
ls_trigger=$(echo "${ls_jenkins_vars}" | yq -r '.external_type')
|
||||||
|
if [[ "${br}" == "${ls_branch}" ]] && [[ "${ls_trigger}" != "os" ]]; then
|
||||||
|
echo "**** Branch ${br} appears to be live and trigger is not os; checking workflow. ****"
|
||||||
|
if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-rdesktop/${br}/.github/workflows/external_trigger.yml > /dev/null 2>&1; then
|
||||||
|
echo "**** Workflow exists. Triggering external trigger workflow for branch ${br} ****."
|
||||||
|
echo "Triggering external trigger workflow for branch ${br}" >> $GITHUB_STEP_SUMMARY
|
||||||
|
curl -iX POST \
|
||||||
|
-H "Authorization: token ${{ secrets.CR_PAT }}" \
|
||||||
|
-H "Accept: application/vnd.github.v3+json" \
|
||||||
|
-d "{\"ref\":\"refs/heads/${br}\"}" \
|
||||||
|
https://api.github.com/repos/linuxserver/docker-rdesktop/actions/workflows/external_trigger.yml/dispatches
|
||||||
|
else
|
||||||
|
echo "**** Workflow doesn't exist; skipping trigger. ****"
|
||||||
|
echo "Skipping branch ${br} due to no external trigger workflow present." >> $GITHUB_STEP_SUMMARY
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "**** ${br} is either a dev branch, or has no external version; skipping trigger. ****"
|
||||||
|
echo "Skipping branch ${br} due to being detected as dev branch or having no external version." >> $GITHUB_STEP_SUMMARY
|
||||||
|
fi
|
||||||
|
done
|
||||||
6
.github/workflows/greetings.yml
vendored
Normal file → Executable file
6
.github/workflows/greetings.yml
vendored
Normal file → Executable file
@ -2,14 +2,8 @@ name: Greetings
|
|||||||
|
|
||||||
on: [pull_request_target, issues]
|
on: [pull_request_target, issues]
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
greeting:
|
greeting:
|
||||||
permissions:
|
|
||||||
issues: write
|
|
||||||
pull-requests: write
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/first-interaction@v1
|
- uses: actions/first-interaction@v1
|
||||||
|
|||||||
42
.github/workflows/package_trigger.yml
vendored
Executable file
42
.github/workflows/package_trigger.yml
vendored
Executable file
@ -0,0 +1,42 @@
|
|||||||
|
name: Package Trigger Main
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
package-trigger-master:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4.1.1
|
||||||
|
|
||||||
|
- name: Package Trigger
|
||||||
|
if: github.ref == 'refs/heads/master'
|
||||||
|
run: |
|
||||||
|
if [ -n "${{ secrets.PAUSE_PACKAGE_TRIGGER_RDESKTOP_MASTER }}" ]; then
|
||||||
|
echo "**** Github secret PAUSE_PACKAGE_TRIGGER_RDESKTOP_MASTER is set; skipping trigger. ****"
|
||||||
|
echo "Github secret \`PAUSE_PACKAGE_TRIGGER_RDESKTOP_MASTER\` is set; skipping trigger." >> $GITHUB_STEP_SUMMARY
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
if [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-rdesktop/job/master/lastBuild/api/json | jq -r '.building') == "true" ]; then
|
||||||
|
echo "**** There already seems to be an active build on Jenkins; skipping package trigger ****"
|
||||||
|
echo "There already seems to be an active build on Jenkins; skipping package trigger" >> $GITHUB_STEP_SUMMARY
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
echo "**** Package trigger running off of master branch. To disable, set a Github secret named \"PAUSE_PACKAGE_TRIGGER_RDESKTOP_MASTER\". ****"
|
||||||
|
echo "Package trigger running off of master branch. To disable, set a Github secret named \`PAUSE_PACKAGE_TRIGGER_RDESKTOP_MASTER\`" >> $GITHUB_STEP_SUMMARY
|
||||||
|
response=$(curl -iX POST \
|
||||||
|
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-rdesktop/job/master/buildWithParameters?PACKAGE_CHECK=true \
|
||||||
|
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
|
||||||
|
echo "**** Jenkins job queue url: ${response%$'\r'} ****"
|
||||||
|
echo "**** Sleeping 10 seconds until job starts ****"
|
||||||
|
sleep 10
|
||||||
|
buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url')
|
||||||
|
buildurl="${buildurl%$'\r'}"
|
||||||
|
echo "**** Jenkins job build url: ${buildurl} ****"
|
||||||
|
echo "Jenkins job build url: ${buildurl}" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "**** Attempting to change the Jenkins job description ****"
|
||||||
|
curl -iX POST \
|
||||||
|
"${buildurl}submitDescription" \
|
||||||
|
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \
|
||||||
|
--data-urlencode "description=GHA package trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
|
||||||
|
--data-urlencode "Submit=Submit"
|
||||||
50
.github/workflows/package_trigger_scheduler.yml
vendored
Executable file
50
.github/workflows/package_trigger_scheduler.yml
vendored
Executable file
@ -0,0 +1,50 @@
|
|||||||
|
name: Package Trigger Scheduler
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: '9 23 * * 0'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
package-trigger-scheduler:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4.1.1
|
||||||
|
with:
|
||||||
|
fetch-depth: '0'
|
||||||
|
|
||||||
|
- name: Package Trigger Scheduler
|
||||||
|
run: |
|
||||||
|
echo "**** Branches found: ****"
|
||||||
|
git for-each-ref --format='%(refname:short)' refs/remotes
|
||||||
|
for br in $(git for-each-ref --format='%(refname:short)' refs/remotes)
|
||||||
|
do
|
||||||
|
br=$(echo "$br" | sed 's|origin/||g')
|
||||||
|
echo "**** Evaluating branch ${br} ****"
|
||||||
|
ls_branch=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-rdesktop/${br}/jenkins-vars.yml | yq -r '.ls_branch')
|
||||||
|
if [ "${br}" == "${ls_branch}" ]; then
|
||||||
|
echo "**** Branch ${br} appears to be live; checking workflow. ****"
|
||||||
|
if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-rdesktop/${br}/.github/workflows/package_trigger.yml > /dev/null 2>&1; then
|
||||||
|
echo "**** Workflow exists. Triggering package trigger workflow for branch ${br}. ****"
|
||||||
|
echo "Triggering package trigger workflow for branch ${br}" >> $GITHUB_STEP_SUMMARY
|
||||||
|
triggered_branches="${triggered_branches}${br} "
|
||||||
|
curl -iX POST \
|
||||||
|
-H "Authorization: token ${{ secrets.CR_PAT }}" \
|
||||||
|
-H "Accept: application/vnd.github.v3+json" \
|
||||||
|
-d "{\"ref\":\"refs/heads/${br}\"}" \
|
||||||
|
https://api.github.com/repos/linuxserver/docker-rdesktop/actions/workflows/package_trigger.yml/dispatches
|
||||||
|
sleep 30
|
||||||
|
else
|
||||||
|
echo "**** Workflow doesn't exist; skipping trigger. ****"
|
||||||
|
echo "Skipping branch ${br} due to no package trigger workflow present." >> $GITHUB_STEP_SUMMARY
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "**** ${br} appears to be a dev branch; skipping trigger. ****"
|
||||||
|
echo "Skipping branch ${br} due to being detected as dev branch." >> $GITHUB_STEP_SUMMARY
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
echo "**** Package check build(s) triggered for branch(es): ${triggered_branches} ****"
|
||||||
|
echo "**** Notifying Discord ****"
|
||||||
|
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
|
||||||
|
"description": "**Package Check Build(s) Triggered for rdesktop** \n**Branch(es):** '"${triggered_branches}"' \n**Build URL:** '"https://ci.linuxserver.io/blue/organizations/jenkins/Docker-Pipeline-Builders%2Fdocker-rdesktop/activity/"' \n"}],
|
||||||
|
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
|
||||||
2
.github/workflows/permissions.yml
vendored
Normal file → Executable file
2
.github/workflows/permissions.yml
vendored
Normal file → Executable file
@ -5,8 +5,6 @@ on:
|
|||||||
- '**/run'
|
- '**/run'
|
||||||
- '**/finish'
|
- '**/finish'
|
||||||
- '**/check'
|
- '**/check'
|
||||||
- 'root/migrations/*'
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
permission_check:
|
permission_check:
|
||||||
uses: linuxserver/github-workflows/.github/workflows/init-svc-executable-permissions.yml@v1
|
uses: linuxserver/github-workflows/.github/workflows/init-svc-executable-permissions.yml@v1
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
FROM ghcr.io/linuxserver/baseimage-rdesktop:alpine320
|
FROM ghcr.io/linuxserver/baseimage-rdesktop:3.19
|
||||||
|
|
||||||
# set version label
|
# set version label
|
||||||
ARG BUILD_DATE
|
ARG BUILD_DATE
|
||||||
@ -22,7 +22,6 @@ RUN \
|
|||||||
xfce4 \
|
xfce4 \
|
||||||
xfce4-pulseaudio-plugin \
|
xfce4-pulseaudio-plugin \
|
||||||
xfce4-terminal && \
|
xfce4-terminal && \
|
||||||
printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \
|
|
||||||
echo "**** cleanup ****" && \
|
echo "**** cleanup ****" && \
|
||||||
rm -f \
|
rm -f \
|
||||||
/etc/xdg/autostart/xfce4-power-manager.desktop \
|
/etc/xdg/autostart/xfce4-power-manager.desktop \
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
FROM ghcr.io/linuxserver/baseimage-rdesktop:arm64v8-alpine320
|
FROM ghcr.io/linuxserver/baseimage-rdesktop:arm64v8-3.19
|
||||||
|
|
||||||
# set version label
|
# set version label
|
||||||
ARG BUILD_DATE
|
ARG BUILD_DATE
|
||||||
@ -22,7 +22,6 @@ RUN \
|
|||||||
xfce4 \
|
xfce4 \
|
||||||
xfce4-pulseaudio-plugin \
|
xfce4-pulseaudio-plugin \
|
||||||
xfce4-terminal && \
|
xfce4-terminal && \
|
||||||
printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \
|
|
||||||
echo "**** cleanup ****" && \
|
echo "**** cleanup ****" && \
|
||||||
rm -f \
|
rm -f \
|
||||||
/etc/xdg/autostart/xfce4-power-manager.desktop \
|
/etc/xdg/autostart/xfce4-power-manager.desktop \
|
||||||
|
|||||||
1029
Jenkinsfile
vendored
Normal file
1029
Jenkinsfile
vendored
Normal file
File diff suppressed because it is too large
Load Diff
363
README.md
363
README.md
@ -1,10 +1,363 @@
|
|||||||
<!-- DO NOT EDIT THIS FILE MANUALLY -->
|
<!-- DO NOT EDIT THIS FILE MANUALLY -->
|
||||||
<!-- Please read https://github.com/linuxserver/docker-rdesktop/blob/master/.github/CONTRIBUTING.md -->
|
<!-- Please read https://github.com/linuxserver/docker-rdesktop/blob/master/.github/CONTRIBUTING.md -->
|
||||||
# DEPRECATION NOTICE
|
[](https://linuxserver.io)
|
||||||
This image is deprecated. We will not offer support for this image and it will not be updated.
|
|
||||||
|
|
||||||
|
[](https://blog.linuxserver.io "all the things you can do with our containers including How-To guides, opinions and much more!")
|
||||||
|
[](https://discord.gg/YWrKVTn "realtime support / chat with the community and the team.")
|
||||||
|
[](https://discourse.linuxserver.io "post on our community forum.")
|
||||||
|
[](https://fleet.linuxserver.io "an online web interface which displays all of our maintained images.")
|
||||||
|
[](https://github.com/linuxserver "view the source for all of our repositories.")
|
||||||
|
[](https://opencollective.com/linuxserver "please consider helping us by either donating or contributing to our budget")
|
||||||
|
|
||||||
Please migrate to an Ubuntu-based tag. For more info, see
|
The [LinuxServer.io](https://linuxserver.io) team brings you another container release featuring:
|
||||||
https://info.linuxserver.io/issues/2025-08-23-rdesktop/
|
|
||||||
|
|
||||||
Up to date documentation is available [here](https://github.com/linuxserver/docker-rdesktop/blob/ubuntu-xfce/README.md).
|
* regular and timely application updates
|
||||||
|
* easy user mappings (PGID, PUID)
|
||||||
|
* custom base image with s6 overlay
|
||||||
|
* weekly base OS updates with common layers across the entire LinuxServer.io ecosystem to minimise space usage, down time and bandwidth
|
||||||
|
* regular security updates
|
||||||
|
|
||||||
|
Find us at:
|
||||||
|
|
||||||
|
* [Blog](https://blog.linuxserver.io) - all the things you can do with our containers including How-To guides, opinions and much more!
|
||||||
|
* [Discord](https://discord.gg/YWrKVTn) - realtime support / chat with the community and the team.
|
||||||
|
* [Discourse](https://discourse.linuxserver.io) - post on our community forum.
|
||||||
|
* [Fleet](https://fleet.linuxserver.io) - an online web interface which displays all of our maintained images.
|
||||||
|
* [GitHub](https://github.com/linuxserver) - view the source for all of our repositories.
|
||||||
|
* [Open Collective](https://opencollective.com/linuxserver) - please consider helping us by either donating or contributing to our budget
|
||||||
|
|
||||||
|
# [linuxserver/rdesktop](https://github.com/linuxserver/docker-rdesktop)
|
||||||
|
|
||||||
|
[](https://scarf.sh/gateway/linuxserver-ci/docker/linuxserver%2Frdesktop)
|
||||||
|
[](https://github.com/linuxserver/docker-rdesktop)
|
||||||
|
[](https://github.com/linuxserver/docker-rdesktop/releases)
|
||||||
|
[](https://github.com/linuxserver/docker-rdesktop/packages)
|
||||||
|
[](https://gitlab.com/linuxserver.io/docker-rdesktop/container_registry)
|
||||||
|
[](https://quay.io/repository/linuxserver.io/rdesktop)
|
||||||
|
[](https://hub.docker.com/r/linuxserver/rdesktop)
|
||||||
|
[](https://hub.docker.com/r/linuxserver/rdesktop)
|
||||||
|
[](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-rdesktop/job/master/)
|
||||||
|
[](https://ci-tests.linuxserver.io/linuxserver/rdesktop/latest/index.html)
|
||||||
|
|
||||||
|
[Rdesktop](http://xrdp.org/) - Containers containing full desktop environments in many popular flavors for Alpine, Ubuntu, Arch, and Fedora accessible via RDP.
|
||||||
|
|
||||||
|
[](http://xrdp.org/)
|
||||||
|
|
||||||
|
## Supported Architectures
|
||||||
|
|
||||||
|
We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://distribution.github.io/distribution/spec/manifest-v2-2/#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/).
|
||||||
|
|
||||||
|
Simply pulling `lscr.io/linuxserver/rdesktop:latest` should retrieve the correct image for your arch, but you can also pull specific arch images via tags.
|
||||||
|
|
||||||
|
The architectures supported by this image are:
|
||||||
|
|
||||||
|
| Architecture | Available | Tag |
|
||||||
|
| :----: | :----: | ---- |
|
||||||
|
| x86-64 | ✅ | amd64-\<version tag\> |
|
||||||
|
| arm64 | ✅ | arm64v8-\<version tag\> |
|
||||||
|
| armhf | ❌ | |
|
||||||
|
|
||||||
|
## Version Tags
|
||||||
|
|
||||||
|
This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.
|
||||||
|
|
||||||
|
| Tag | Available | Description |
|
||||||
|
| :----: | :----: |--- |
|
||||||
|
| latest | ✅ | XFCE Alpine |
|
||||||
|
| ubuntu-xfce | ✅ | XFCE Ubuntu |
|
||||||
|
| fedora-xfce | ✅ | XFCE Fedora |
|
||||||
|
| arch-xfce | ✅ | XFCE Arch |
|
||||||
|
| alpine-kde | ✅ | KDE Alpine |
|
||||||
|
| ubuntu-kde | ✅ | KDE Ubuntu |
|
||||||
|
| fedora-kde | ✅ | KDE Fedora |
|
||||||
|
| arch-kde | ✅ | KDE Arch |
|
||||||
|
| alpine-mate | ✅ | MATE Alpine |
|
||||||
|
| ubuntu-mate | ✅ | MATE Ubuntu |
|
||||||
|
| fedora-mate | ✅ | MATE Fedora |
|
||||||
|
| arch-mate | ✅ | MATE Arch |
|
||||||
|
| alpine-i3 | ✅ | i3 Alpine |
|
||||||
|
| ubuntu-i3 | ✅ | i3 Ubuntu |
|
||||||
|
| fedora-i3 | ✅ | i3 Fedora |
|
||||||
|
| arch-i3 | ✅ | i3 Arch |
|
||||||
|
| alpine-openbox | ✅ | Openbox Alpine |
|
||||||
|
| ubuntu-openbox | ✅ | Openbox Ubuntu |
|
||||||
|
| fedora-openbox | ✅ | Openbox Fedora |
|
||||||
|
| arch-openbox | ✅ | Openbox Arch |
|
||||||
|
| alpine-icewm | ✅ | IceWM Alpine |
|
||||||
|
| ubuntu-icewm | ✅ | IceWM Ubuntu |
|
||||||
|
| fedora-icewm | ✅ | IceWM Fedora |
|
||||||
|
| arch-icewm | ✅ | IceWM Arch |
|
||||||
|
|
||||||
|
## Application Setup
|
||||||
|
|
||||||
|
**The Default USERNAME and PASSWORD is: abc/abc**
|
||||||
|
|
||||||
|
**Unlike our other containers these Desktops are not designed to be upgraded by Docker, you will keep your home directoy but anything you installed system level will be lost if you upgrade an existing container. To keep packages up to date instead use Ubuntu's own apt, Alpine's apk, Fedora's dnf, or Arch's pacman program**
|
||||||
|
|
||||||
|
You will need a Remote Desktop client to access this container [Wikipedia List](https://en.wikipedia.org/wiki/Comparison_of_remote_desktop_software), by default it listens on 3389, but you can change that port to whatever you wish on the host side IE `3390:3389`.
|
||||||
|
The first thing you should do when you login to the container is to change the abc users password by issuing the `passwd` command.
|
||||||
|
|
||||||
|
**Modern GUI desktop apps (including some flavors terminals) have issues with the latest Docker and syscall compatibility, you can use Docker with the `--security-opt seccomp=unconfined` setting to allow these syscalls or try [podman](https://podman.io/) as they have updated their codebase to support them**
|
||||||
|
|
||||||
|
If you ever lose your password you can always reset it by execing into the container as root:
|
||||||
|
```
|
||||||
|
docker exec -it rdesktop passwd abc
|
||||||
|
```
|
||||||
|
By default we perform all logic for the abc user and we reccomend using that user only in the container, but new users can be added as long as there is a `startwm.sh` executable script in their home directory.
|
||||||
|
All of these containers are configured with passwordless sudo, we make no efforts to secure or harden these containers and we do not reccomend ever publishing their ports to the public Internet.
|
||||||
|
|
||||||
|
## Hardware Acceleration (Ubuntu Container Only)
|
||||||
|
|
||||||
|
Many desktop application will need access to a GPU to function properly and even some Desktop Environments have compisitor effects that will not function without a GPU. This is not a hard requirement and all base images will function without a video device mounted into the container.
|
||||||
|
|
||||||
|
### Intel/ATI/AMD
|
||||||
|
|
||||||
|
To leverage hardware acceleration you will need to mount /dev/dri video device inside of the conainer.
|
||||||
|
```
|
||||||
|
--device=/dev/dri:/dev/dri
|
||||||
|
```
|
||||||
|
We will automatically ensure the abc user inside of the container has the proper permissions to access this device.
|
||||||
|
### Nvidia
|
||||||
|
|
||||||
|
Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here:
|
||||||
|
https://github.com/NVIDIA/nvidia-docker
|
||||||
|
|
||||||
|
We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime `--runtime=nvidia` and add an environment variable `-e NVIDIA_VISIBLE_DEVICES=all` (can also be set to a specific gpu's UUID, this can be discovered by running `nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv` ). NVIDIA automatically mounts the GPU and drivers from your host into the container.
|
||||||
|
|
||||||
|
### Arm Devices
|
||||||
|
|
||||||
|
Best effort is made to install tools to allow mounting in /dev/dri on Arm devices. In most cases if /dev/dri exists on the host it should just work. If running a Raspberry Pi 4 be sure to enable `dtoverlay=vc4-fkms-v3d` in your usercfg.txt.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
To help you get started creating a container from this image you can either use docker-compose or the docker cli.
|
||||||
|
|
||||||
|
### docker-compose (recommended, [click here for more info](https://docs.linuxserver.io/general/docker-compose))
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
---
|
||||||
|
services:
|
||||||
|
rdesktop:
|
||||||
|
image: lscr.io/linuxserver/rdesktop:latest
|
||||||
|
container_name: rdesktop
|
||||||
|
security_opt:
|
||||||
|
- seccomp:unconfined #optional
|
||||||
|
environment:
|
||||||
|
- PUID=1000
|
||||||
|
- PGID=1000
|
||||||
|
- TZ=Etc/UTC
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock #optional
|
||||||
|
- /path/to/data:/config #optional
|
||||||
|
ports:
|
||||||
|
- 3389:3389
|
||||||
|
devices:
|
||||||
|
- /dev/dri:/dev/dri #optional
|
||||||
|
shm_size: "1gb" #optional
|
||||||
|
restart: unless-stopped
|
||||||
|
```
|
||||||
|
|
||||||
|
### docker cli ([click here for more info](https://docs.docker.com/engine/reference/commandline/cli/))
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -d \
|
||||||
|
--name=rdesktop \
|
||||||
|
--security-opt seccomp=unconfined `#optional` \
|
||||||
|
-e PUID=1000 \
|
||||||
|
-e PGID=1000 \
|
||||||
|
-e TZ=Etc/UTC \
|
||||||
|
-p 3389:3389 \
|
||||||
|
-v /var/run/docker.sock:/var/run/docker.sock `#optional` \
|
||||||
|
-v /path/to/data:/config `#optional` \
|
||||||
|
--device /dev/dri:/dev/dri `#optional` \
|
||||||
|
--shm-size="1gb" `#optional` \
|
||||||
|
--restart unless-stopped \
|
||||||
|
lscr.io/linuxserver/rdesktop:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
## Parameters
|
||||||
|
|
||||||
|
Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate `<external>:<internal>` respectively. For example, `-p 8080:80` would expose port `80` from inside the container to be accessible from the host's IP on port `8080` outside the container.
|
||||||
|
|
||||||
|
| Parameter | Function |
|
||||||
|
| :----: | --- |
|
||||||
|
| `-p 3389` | RDP access port |
|
||||||
|
| `-e PUID=1000` | for UserID - see below for explanation |
|
||||||
|
| `-e PGID=1000` | for GroupID - see below for explanation |
|
||||||
|
| `-e TZ=Etc/UTC` | specify a timezone to use, see this [list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List). |
|
||||||
|
| `-v /var/run/docker.sock` | Docker Socket on the system, if you want to use Docker in the container |
|
||||||
|
| `-v /config` | abc users home directory |
|
||||||
|
| `--device /dev/dri` | Add this for GL support (Linux hosts only) |
|
||||||
|
| `--shm-size=` | We set this to 1 gig to prevent modern web browsers from crashing |
|
||||||
|
| `--security-opt seccomp=unconfined` | For Docker Engine only, many modern gui apps need this to function as syscalls are unkown to Docker |
|
||||||
|
|
||||||
|
## Environment variables from files (Docker secrets)
|
||||||
|
|
||||||
|
You can set any environment variable from a file by using a special prepend `FILE__`.
|
||||||
|
|
||||||
|
As an example:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
-e FILE__MYVAR=/run/secrets/mysecretvariable
|
||||||
|
```
|
||||||
|
|
||||||
|
Will set the environment variable `MYVAR` based on the contents of the `/run/secrets/mysecretvariable` file.
|
||||||
|
|
||||||
|
## Umask for running applications
|
||||||
|
|
||||||
|
For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional `-e UMASK=022` setting.
|
||||||
|
Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up [here](https://en.wikipedia.org/wiki/Umask) before asking for support.
|
||||||
|
|
||||||
|
## User / Group Identifiers
|
||||||
|
|
||||||
|
When using volumes (`-v` flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user `PUID` and group `PGID`.
|
||||||
|
|
||||||
|
Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.
|
||||||
|
|
||||||
|
In this instance `PUID=1000` and `PGID=1000`, to find yours use `id your_user` as below:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
id your_user
|
||||||
|
```
|
||||||
|
|
||||||
|
Example output:
|
||||||
|
|
||||||
|
```text
|
||||||
|
uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Docker Mods
|
||||||
|
|
||||||
|
[](https://mods.linuxserver.io/?mod=rdesktop "view available mods for this container.") [](https://mods.linuxserver.io/?mod=universal "view available universal mods.")
|
||||||
|
|
||||||
|
We publish various [Docker Mods](https://github.com/linuxserver/docker-mods) to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.
|
||||||
|
|
||||||
|
## Support Info
|
||||||
|
|
||||||
|
* Shell access whilst the container is running:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker exec -it rdesktop /bin/bash
|
||||||
|
```
|
||||||
|
|
||||||
|
* To monitor the logs of the container in realtime:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker logs -f rdesktop
|
||||||
|
```
|
||||||
|
|
||||||
|
* Container version number:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker inspect -f '{{ index .Config.Labels "build_version" }}' rdesktop
|
||||||
|
```
|
||||||
|
|
||||||
|
* Image version number:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/rdesktop:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
## Updating Info
|
||||||
|
|
||||||
|
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the [Application Setup](#application-setup) section above to see if it is recommended for the image.
|
||||||
|
|
||||||
|
Below are the instructions for updating containers:
|
||||||
|
|
||||||
|
### Via Docker Compose
|
||||||
|
|
||||||
|
* Update images:
|
||||||
|
* All images:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker-compose pull
|
||||||
|
```
|
||||||
|
|
||||||
|
* Single image:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker-compose pull rdesktop
|
||||||
|
```
|
||||||
|
|
||||||
|
* Update containers:
|
||||||
|
* All containers:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
* Single container:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker-compose up -d rdesktop
|
||||||
|
```
|
||||||
|
|
||||||
|
* You can also remove the old dangling images:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker image prune
|
||||||
|
```
|
||||||
|
|
||||||
|
### Via Docker Run
|
||||||
|
|
||||||
|
* Update the image:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker pull lscr.io/linuxserver/rdesktop:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
* Stop the running container:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker stop rdesktop
|
||||||
|
```
|
||||||
|
|
||||||
|
* Delete the container:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker rm rdesktop
|
||||||
|
```
|
||||||
|
|
||||||
|
* Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your `/config` folder and settings will be preserved)
|
||||||
|
* You can also remove the old dangling images:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker image prune
|
||||||
|
```
|
||||||
|
|
||||||
|
### Image Update Notifications - Diun (Docker Image Update Notifier)
|
||||||
|
|
||||||
|
**tip**: We recommend [Diun](https://crazymax.dev/diun/) for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
|
||||||
|
|
||||||
|
## Building locally
|
||||||
|
|
||||||
|
If you want to make local modifications to these images for development purposes or just to customize the logic:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/linuxserver/docker-rdesktop.git
|
||||||
|
cd docker-rdesktop
|
||||||
|
docker build \
|
||||||
|
--no-cache \
|
||||||
|
--pull \
|
||||||
|
-t lscr.io/linuxserver/rdesktop:latest .
|
||||||
|
```
|
||||||
|
|
||||||
|
The ARM variants can be built on x86_64 hardware using `multiarch/qemu-user-static`
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run --rm --privileged multiarch/qemu-user-static:register --reset
|
||||||
|
```
|
||||||
|
|
||||||
|
Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64`.
|
||||||
|
|
||||||
|
## Versions
|
||||||
|
|
||||||
|
* **17.01.24:** - Sync webtop logic changes rebase to Alpine 3.19 and Fedora 39.
|
||||||
|
* **18.05.23:** - Rebase all Alpine images to 3.18, deprecate armhf.
|
||||||
|
* **27.10.22:** - Rebase all Ubuntu images to Jammy 22.04.
|
||||||
|
* **26.10.22:** - Rebase Alpine xfce to 3.16, migrate to s6v3.
|
||||||
|
* **05.03.22:** - Organize tags differently to run Ubuntu at latest LTS, make Alpine latest, add docs about GPU accel.
|
||||||
|
* **05.05.21:** - Reduce default packages to their flavor specific basics.
|
||||||
|
* **05.04.21:** - Add Alpine flavor.
|
||||||
|
* **06.04.20:** - Start PulseAudio in images to support audio
|
||||||
|
* **28.02.20:** - Initial Releases
|
||||||
|
|||||||
@ -3,9 +3,10 @@
|
|||||||
# jenkins variables
|
# jenkins variables
|
||||||
project_name: docker-rdesktop
|
project_name: docker-rdesktop
|
||||||
external_type: os
|
external_type: os
|
||||||
release_type: prerelease
|
release_type: stable
|
||||||
release_tag: latest
|
release_tag: latest
|
||||||
ls_branch: master
|
ls_branch: master
|
||||||
|
build_armhf: false
|
||||||
repo_vars:
|
repo_vars:
|
||||||
- BUILD_VERSION_ARG = 'OS_VERSION'
|
- BUILD_VERSION_ARG = 'OS_VERSION'
|
||||||
- LS_USER = 'linuxserver'
|
- LS_USER = 'linuxserver'
|
||||||
@ -21,6 +22,6 @@ repo_vars:
|
|||||||
- CI_PORT = '3000'
|
- CI_PORT = '3000'
|
||||||
- CI_SSL = 'false'
|
- CI_SSL = 'false'
|
||||||
- CI_DELAY = '30'
|
- CI_DELAY = '30'
|
||||||
- CI_DOCKERENV = ''
|
- CI_DOCKERENV = 'TZ=US/Pacific'
|
||||||
- CI_AUTH = ''
|
- CI_AUTH = 'user:password'
|
||||||
- CI_WEBPATH = ''
|
- CI_WEBPATH = ''
|
||||||
|
|||||||
1737
package_versions.txt
1737
package_versions.txt
File diff suppressed because it is too large
Load Diff
123
readme-vars.yml
123
readme-vars.yml
@ -1,11 +1,118 @@
|
|||||||
|
---
|
||||||
|
|
||||||
# project information
|
# project information
|
||||||
project_name: rdesktop
|
project_name: rdesktop
|
||||||
|
project_url: "http://xrdp.org/"
|
||||||
|
project_logo: "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/rdesktop.png"
|
||||||
|
project_blurb: |
|
||||||
|
[{{ project_name|capitalize }}]({{ project_url }}) - Containers containing full desktop environments in many popular flavors for Alpine, Ubuntu, Arch, and Fedora accessible via RDP.
|
||||||
project_lsio_github_repo_url: "https://github.com/linuxserver/docker-{{ project_name }}"
|
project_lsio_github_repo_url: "https://github.com/linuxserver/docker-{{ project_name }}"
|
||||||
project_deprecation_status: true
|
|
||||||
project_deprecation_message: |
|
# supported architectures
|
||||||
Please migrate to an Ubuntu-based tag. For more info, see
|
available_architectures:
|
||||||
https://info.linuxserver.io/issues/2025-08-23-rdesktop/
|
- { arch: "{{ arch_x86_64 }}", tag: "amd64-latest"}
|
||||||
full_custom_readme: |
|
- { arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"}
|
||||||
{% raw -%}
|
|
||||||
Up to date documentation is available [here](https://github.com/linuxserver/docker-rdesktop/blob/ubuntu-xfce/README.md).
|
# development version
|
||||||
{%- endraw %}
|
development_versions: true
|
||||||
|
development_versions_items:
|
||||||
|
- { tag: "latest", desc: "XFCE Alpine" }
|
||||||
|
- { tag: "ubuntu-xfce", desc: "XFCE Ubuntu" }
|
||||||
|
- { tag: "fedora-xfce", desc: "XFCE Fedora" }
|
||||||
|
- { tag: "arch-xfce", desc: "XFCE Arch" }
|
||||||
|
- { tag: "alpine-kde", desc: "KDE Alpine" }
|
||||||
|
- { tag: "ubuntu-kde", desc: "KDE Ubuntu" }
|
||||||
|
- { tag: "fedora-kde", desc: "KDE Fedora" }
|
||||||
|
- { tag: "arch-kde", desc: "KDE Arch" }
|
||||||
|
- { tag: "alpine-mate", desc: "MATE Alpine" }
|
||||||
|
- { tag: "ubuntu-mate", desc: "MATE Ubuntu" }
|
||||||
|
- { tag: "fedora-mate", desc: "MATE Fedora" }
|
||||||
|
- { tag: "arch-mate", desc: "MATE Arch" }
|
||||||
|
- { tag: "alpine-i3", desc: "i3 Alpine" }
|
||||||
|
- { tag: "ubuntu-i3", desc: "i3 Ubuntu" }
|
||||||
|
- { tag: "fedora-i3", desc: "i3 Fedora" }
|
||||||
|
- { tag: "arch-i3", desc: "i3 Arch" }
|
||||||
|
- { tag: "alpine-openbox", desc: "Openbox Alpine" }
|
||||||
|
- { tag: "ubuntu-openbox", desc: "Openbox Ubuntu" }
|
||||||
|
- { tag: "fedora-openbox", desc: "Openbox Fedora" }
|
||||||
|
- { tag: "arch-openbox", desc: "Openbox Arch" }
|
||||||
|
- { tag: "alpine-icewm", desc: "IceWM Alpine" }
|
||||||
|
- { tag: "ubuntu-icewm", desc: "IceWM Ubuntu" }
|
||||||
|
- { tag: "fedora-icewm", desc: "IceWM Fedora" }
|
||||||
|
- { tag: "arch-icewm", desc: "IceWM Arch" }
|
||||||
|
|
||||||
|
# container parameters
|
||||||
|
param_container_name: "{{ project_name }}"
|
||||||
|
param_usage_include_vols: false
|
||||||
|
param_usage_include_ports: true
|
||||||
|
param_ports:
|
||||||
|
- { external_port: "3389", internal_port: "3389", port_desc: "RDP access port" }
|
||||||
|
param_usage_include_env: true
|
||||||
|
param_env_vars:
|
||||||
|
- { env_var: "TZ", env_value: "Europe/London", desc: "Specify a timezone to use EG Europe/London"}
|
||||||
|
# optional variables
|
||||||
|
opt_param_usage_include_vols: true
|
||||||
|
opt_param_volumes:
|
||||||
|
- { vol_path: "/var/run/docker.sock", vol_host_path: "/var/run/docker.sock", desc: "Docker Socket on the system, if you want to use Docker in the container" }
|
||||||
|
- { vol_path: "/config", vol_host_path: "/path/to/data", desc: "abc users home directory" }
|
||||||
|
opt_custom_params:
|
||||||
|
- { name: "shm-size", name_compose: "shm_size", value: "1gb",desc: "We set this to 1 gig to prevent modern web browsers from crashing" }
|
||||||
|
opt_security_opt_param: true
|
||||||
|
opt_security_opt_param_vars:
|
||||||
|
- { run_var: "seccomp=unconfined", compose_var: "seccomp:unconfined", desc: "For Docker Engine only, many modern gui apps need this to function as syscalls are unkown to Docker" }
|
||||||
|
opt_param_device_map: true
|
||||||
|
opt_param_devices:
|
||||||
|
- { device_path: "/dev/dri", device_host_path: "/dev/dri", desc: "Add this for GL support (Linux hosts only)" }
|
||||||
|
|
||||||
|
# application setup block
|
||||||
|
app_setup_block_enabled: true
|
||||||
|
app_setup_block: |
|
||||||
|
**The Default USERNAME and PASSWORD is: abc/abc**
|
||||||
|
|
||||||
|
**Unlike our other containers these Desktops are not designed to be upgraded by Docker, you will keep your home directoy but anything you installed system level will be lost if you upgrade an existing container. To keep packages up to date instead use Ubuntu's own apt, Alpine's apk, Fedora's dnf, or Arch's pacman program**
|
||||||
|
|
||||||
|
You will need a Remote Desktop client to access this container [Wikipedia List](https://en.wikipedia.org/wiki/Comparison_of_remote_desktop_software), by default it listens on 3389, but you can change that port to whatever you wish on the host side IE `3390:3389`.
|
||||||
|
The first thing you should do when you login to the container is to change the abc users password by issuing the `passwd` command.
|
||||||
|
|
||||||
|
**Modern GUI desktop apps (including some flavors terminals) have issues with the latest Docker and syscall compatibility, you can use Docker with the `--security-opt seccomp=unconfined` setting to allow these syscalls or try [podman](https://podman.io/) as they have updated their codebase to support them**
|
||||||
|
|
||||||
|
If you ever lose your password you can always reset it by execing into the container as root:
|
||||||
|
```
|
||||||
|
docker exec -it rdesktop passwd abc
|
||||||
|
```
|
||||||
|
By default we perform all logic for the abc user and we reccomend using that user only in the container, but new users can be added as long as there is a `startwm.sh` executable script in their home directory.
|
||||||
|
All of these containers are configured with passwordless sudo, we make no efforts to secure or harden these containers and we do not reccomend ever publishing their ports to the public Internet.
|
||||||
|
|
||||||
|
## Hardware Acceleration (Ubuntu Container Only)
|
||||||
|
|
||||||
|
Many desktop application will need access to a GPU to function properly and even some Desktop Environments have compisitor effects that will not function without a GPU. This is not a hard requirement and all base images will function without a video device mounted into the container.
|
||||||
|
|
||||||
|
### Intel/ATI/AMD
|
||||||
|
|
||||||
|
To leverage hardware acceleration you will need to mount /dev/dri video device inside of the conainer.
|
||||||
|
```
|
||||||
|
--device=/dev/dri:/dev/dri
|
||||||
|
```
|
||||||
|
We will automatically ensure the abc user inside of the container has the proper permissions to access this device.
|
||||||
|
### Nvidia
|
||||||
|
|
||||||
|
Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here:
|
||||||
|
https://github.com/NVIDIA/nvidia-docker
|
||||||
|
|
||||||
|
We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime `--runtime=nvidia` and add an environment variable `-e NVIDIA_VISIBLE_DEVICES=all` (can also be set to a specific gpu's UUID, this can be discovered by running `nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv` ). NVIDIA automatically mounts the GPU and drivers from your host into the container.
|
||||||
|
|
||||||
|
### Arm Devices
|
||||||
|
|
||||||
|
Best effort is made to install tools to allow mounting in /dev/dri on Arm devices. In most cases if /dev/dri exists on the host it should just work. If running a Raspberry Pi 4 be sure to enable `dtoverlay=vc4-fkms-v3d` in your usercfg.txt.
|
||||||
|
|
||||||
|
# changelog
|
||||||
|
changelogs:
|
||||||
|
- { date: "17.01.24:", desc: "Sync webtop logic changes rebase to Alpine 3.19 and Fedora 39." }
|
||||||
|
- { date: "18.05.23:", desc: "Rebase all Alpine images to 3.18, deprecate armhf." }
|
||||||
|
- { date: "27.10.22:", desc: "Rebase all Ubuntu images to Jammy 22.04." }
|
||||||
|
- { date: "26.10.22:", desc: "Rebase Alpine xfce to 3.16, migrate to s6v3." }
|
||||||
|
- { date: "05.03.22:", desc: "Organize tags differently to run Ubuntu at latest LTS, make Alpine latest, add docs about GPU accel." }
|
||||||
|
- { date: "05.05.21:", desc: "Reduce default packages to their flavor specific basics." }
|
||||||
|
- { date: "05.04.21:", desc: "Add Alpine flavor." }
|
||||||
|
- { date: "06.04.20:", desc: "Start PulseAudio in images to support audio" }
|
||||||
|
- { date: "28.02.20:", desc: "Initial Releases" }
|
||||||
|
|||||||
@ -1,34 +1,8 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Combine env
|
|
||||||
/usr/bin/with-contenv /usr/bin/env | sed 's/^/export /g' > /defaults/env.sh
|
|
||||||
source /defaults/env.sh
|
|
||||||
rm /defaults/env.sh
|
|
||||||
|
|
||||||
# Enable Nvidia GPU support if detected
|
|
||||||
if which nvidia-smi; then
|
|
||||||
export LIBGL_KOPPER_DRI2=1
|
|
||||||
export MESA_LOADER_DRIVER_OVERRIDE=zink
|
|
||||||
export GALLIUM_DRIVER=zink
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Start Pulseaudio
|
|
||||||
/startpulse.sh &
|
/startpulse.sh &
|
||||||
|
if [ -f "${HOME}"/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml ]; then
|
||||||
# Disable compositing
|
sed -i \
|
||||||
setterm blank 0
|
'/use_compositing/c <property name="use_compositing" type="bool" value="false"/>' \
|
||||||
setterm powerdown 0
|
"${HOME}"/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml
|
||||||
if [ ! -f "${HOME}"/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml ]; then
|
|
||||||
mkdir -p "${HOME}"/.config/xfce4/xfconf/xfce-perchannel-xml/
|
|
||||||
cat <<EOT >> "${HOME}"/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml
|
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<channel name="xfwm4" version="1.0">
|
|
||||||
<property name="general" type="empty">
|
|
||||||
<property name="use_compositing" type="bool" value="false"/>
|
|
||||||
</property>
|
|
||||||
</channel>
|
|
||||||
EOT
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Launch DE
|
|
||||||
/usr/bin/xfce4-session > /dev/null 2>&1
|
/usr/bin/xfce4-session > /dev/null 2>&1
|
||||||
|
|||||||
@ -1,19 +0,0 @@
|
|||||||
#!/usr/bin/with-contenv bash
|
|
||||||
# shellcheck shell=bash
|
|
||||||
|
|
||||||
echo '
|
|
||||||
╔════════════════════════════════════════════════════╗
|
|
||||||
╠════════════════════════════════════════════════════╣
|
|
||||||
║ ║
|
|
||||||
║ This image is deprecated. ║
|
|
||||||
║ We will not offer support for this image ║
|
|
||||||
║ and it will not be updated. ║
|
|
||||||
║ ║
|
|
||||||
╠════════════════════════════════════════════════════╣
|
|
||||||
╚════════════════════════════════════════════════════╝
|
|
||||||
|
|
||||||
Please migrate to an Ubuntu-based tag. For more info, see
|
|
||||||
https://info.linuxserver.io/issues/2025-08-23-rdesktop/
|
|
||||||
|
|
||||||
|
|
||||||
══════════════════════════════════════════════════════'
|
|
||||||
@ -1 +0,0 @@
|
|||||||
oneshot
|
|
||||||
Loading…
x
Reference in New Issue
Block a user