10 Commits

Author SHA1 Message Date
Chris Richardson
b11206ea40 asd
Some checks failed
Main / Build arm64v8 image (push) Failing after 1m12s
Main / Push arm64v8 image (push) Has been skipped
2025-07-10 18:26:50 -04:00
Héctor Molinero Fernández
208f30a208 v126 2025-06-21 13:50:39 +02:00
Héctor Molinero Fernández
933f557a3e Disable glx module if /dev/dri/ does not exist 2025-06-21 13:49:35 +02:00
Héctor Molinero Fernández
4a45adaa58 Use dummy driver in headless Xorg 2025-06-21 13:49:26 +02:00
Héctor Molinero Fernández
558f1ec368 Fix service enabling conditions for xrdp bootstrap and headless X server 2025-06-21 12:43:03 +02:00
Héctor Molinero Fernández
29799461a9 v125 2025-06-13 01:09:47 +02:00
Héctor Molinero Fernández
a0a0b44fdc Add wlfreerdp script 2025-06-13 01:09:39 +02:00
Héctor Molinero Fernández
cdbd8bdcec Update xrdp PulseAudio module to v0.8 2025-06-13 01:04:09 +02:00
Héctor Molinero Fernández
fad6c80479 Update xorgxrdp to v0.10.4 2025-06-13 01:01:58 +02:00
Héctor Molinero Fernández
bf90f2e2c9 Update xrdp to v0.10.3 2025-06-13 01:00:56 +02:00
6 changed files with 105 additions and 71 deletions

View File

@@ -19,7 +19,7 @@ jobs:
contents: "read"
strategy:
matrix:
arch: ["native", "amd64", "arm64v8"]
arch: ["arm64v8"]
steps:
- name: "Checkout project"
uses: "actions/checkout@v4"
@@ -47,7 +47,7 @@ jobs:
contents: "read"
strategy:
matrix:
arch: ["amd64", "arm64v8"]
arch: ["arm64v8"]
steps:
- name: "Checkout project"
uses: "actions/checkout@v4"
@@ -59,40 +59,38 @@ jobs:
- name: "Login to Docker Hub"
uses: "docker/login-action@v3"
with:
registry: "docker.io"
username: "${{ secrets.DOCKERHUB_USERNAME }}"
password: "${{ secrets.DOCKERHUB_TOKEN }}"
registry: "d.lilpenguins.com"
- name: "Load and push image"
run: |
make "load-${{ matrix.arch }}-image" "push-${{ matrix.arch }}-image"
push-manifest:
name: "Push manifest"
if: "startsWith(github.ref, 'refs/tags/v')"
needs: ["push"]
runs-on: "ubuntu-latest"
permissions:
contents: "read"
steps:
- name: "Checkout project"
uses: "actions/checkout@v4"
- name: "Login to Docker Hub"
uses: "docker/login-action@v3"
with:
registry: "docker.io"
username: "${{ secrets.DOCKERHUB_USERNAME }}"
password: "${{ secrets.DOCKERHUB_TOKEN }}"
- name: "Push manifest"
run: |
make push-cross-manifest
# push-manifest:
# name: "Push manifest"
# if: "startsWith(github.ref, 'refs/tags/v')"
# needs: ["push"]
# runs-on: "ubuntu-latest"
# permissions:
# contents: "read"
# steps:
# - name: "Checkout project"
# uses: "actions/checkout@v4"
# - name: "Login to Docker Hub"
# uses: "docker/login-action@v3"
# with:
# registry: "docker.io"
# username: "${{ secrets.DOCKERHUB_USERNAME }}"
# password: "${{ secrets.DOCKERHUB_TOKEN }}"
# - name: "Push manifest"
# run: |
# make push-cross-manifest
publish-github-release:
name: "Publish GitHub release"
if: "startsWith(github.ref, 'refs/tags/v')"
needs: ["push-manifest"]
runs-on: "ubuntu-latest"
permissions:
contents: "write"
steps:
- name: "Publish"
uses: "hectorm/ghaction-release@066200d04c3549852afa243d631ea3dc93390f68"
# publish-github-release:
# name: "Publish GitHub release"
# if: "startsWith(github.ref, 'refs/tags/v')"
# needs: ["push-manifest"]
# runs-on: "ubuntu-latest"
# permissions:
# contents: "write"
# steps:
# - name: "Publish"
# uses: "hectorm/ghaction-release@066200d04c3549852afa243d631ea3dc93390f68"

View File

@@ -4,7 +4,7 @@ m4_changequote([[, ]])
## "build" stage
##################################################
m4_ifdef([[CROSS_ARCH]], [[FROM docker.io/CROSS_ARCH/ubuntu:24.04]], [[FROM docker.io/ubuntu:24.04]]) AS build
m4_ifdef([[CROSS_ARCH]], [[FROM dtcooper/raspberrypi-os:latest]], [[FROM dtcooper/raspberrypi-os:latest]]) AS build
SHELL ["/bin/sh", "-euc"]
@@ -31,6 +31,7 @@ RUN <<-EOF
git \
intltool \
libbz2-dev \
libdrm-dev \
libegl-dev \
libegl1-mesa-dev \
libepoxy-dev \
@@ -73,6 +74,7 @@ RUN <<-EOF
x11-xkb-utils \
xauth \
xkb-data \
xserver-xorg-core \
xserver-xorg-dev \
xsltproc \
xutils-dev \
@@ -154,7 +156,7 @@ RUN <<-EOF
EOF
# Build xrdp
ARG XRDP_TREEISH=v0.10.2
ARG XRDP_TREEISH=v0.10.3
ARG XRDP_REMOTE=https://github.com/neutrinolabs/xrdp.git
WORKDIR /tmp/xrdp/
RUN <<-EOF
@@ -186,7 +188,7 @@ RUN <<-EOF
EOF
# Build xorgxrdp
ARG XORGXRDP_TREEISH=v0.10.3
ARG XORGXRDP_TREEISH=v0.10.4
ARG XORGXRDP_REMOTE=https://github.com/neutrinolabs/xorgxrdp.git
WORKDIR /tmp/xorgxrdp/
RUN <<-EOF
@@ -205,7 +207,7 @@ RUN <<-EOF
EOF
# Build xrdp PulseAudio module
ARG XRDP_PULSEAUDIO_TREEISH=v0.7
ARG XRDP_PULSEAUDIO_TREEISH=v0.8
ARG XRDP_PULSEAUDIO_REMOTE=https://github.com/neutrinolabs/pulseaudio-module-xrdp.git
WORKDIR /tmp/
RUN <<-EOF

View File

@@ -1,20 +1,15 @@
#!/bin/sh
if [ -z "${VGL_DISPLAY-}" ]; then
# Use the dummy X server if it is enabled
if [ "${SERVICE_XORG_HEADLESS_ENABLED:?}" = 'true' ]; then
export VGL_DISPLAY=:0.0
else
# Otherwise try to use the EGL backend
for card in /dev/dri/card*; do
if /opt/VirtualGL/bin/eglinfo -B "${card:?}" 2>/dev/null; then
export VGL_DISPLAY="${card:?}"
break
fi
done
# And fallback to DISPLAY if the EGL backend is not available
if [ -z "${VGL_DISPLAY-}" ] && [ -n "${DISPLAY-}" ]; then
export VGL_DISPLAY="${DISPLAY:?}"
# Try to use the EGL backend
for card in /dev/dri/card*; do
if /opt/VirtualGL/bin/eglinfo -B "${card:?}" 2>/dev/null; then
export VGL_DISPLAY="${card:?}"
break
fi
done
# And fallback to DISPLAY if the EGL backend is not available
if [ -z "${VGL_DISPLAY-}" ] && [ -n "${DISPLAY-}" ]; then
export VGL_DISPLAY="${DISPLAY:?}"
fi
fi

View File

@@ -1,30 +1,20 @@
Section "Module"
Load "xorgxrdp"
EndSection
Section "ServerLayout"
Identifier "ServerLayout0"
Screen "Screen0"
Disable "glx"
EndSection
Section "ServerFlags"
Option "DefaultServerLayout" "ServerLayout0"
Option "DontVTSwitch" "on"
Option "PciForceNone" "on"
Option "AutoAddDevices" "off"
Option "AutoAddGPU" "off"
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "Unknown"
ModelName "Unknown"
EndSection
Section "Device"
Identifier "Device0"
Driver "xrdpdev"
Option "DRMDevice" "/dev/dri/renderD128"
Option "DRI3" "1"
Section "ServerLayout"
Identifier "ServerLayout0"
Screen "Screen0"
InputDevice "Keyboard0"
InputDevice "Mouse0"
EndSection
Section "Screen"
@@ -35,3 +25,26 @@ Section "Screen"
Modes "800x600"
EndSubSection
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "Unknown"
ModelName "Unknown"
EndSection
Section "Device"
Identifier "Device0"
Driver "dummy"
EndSection
Section "InputDevice"
Identifier "Keyboard0"
Driver "void"
Option "CoreKeyboard" "true"
EndSection
Section "InputDevice"
Identifier "Mouse0"
Driver "void"
Option "CorePointer" "true"
EndSection

View File

@@ -67,13 +67,19 @@ if [ ! -d /run/user/"${UNPRIVILEGED_USER_UID:?}"/ ]; then
chown "${UNPRIVILEGED_USER_NAME:?}:" /run/user/"${UNPRIVILEGED_USER_UID:?}"/
fi
# Disable glx module if /dev/dri/ does not exist
if [ ! -d /dev/dri/ ]; then
printf '%s\n' '"/dev/dri/" does not exist, glx module will be disabled' 1>&2
sed -i 's|Load \("glx"\)|Disable \1|g' /opt/xrdp/etc/X11/xrdp/xorg.conf
fi
# Enable xrdp bootstrap service
if [ "${SERVICE_XRDP_BOOTSTRAP_ENABLED:?}" = 'true' ]; then
if [ "${SERVICE_XRDP_BOOTSTRAP_ENABLED:?}" = 'true' ] && [ ! -L "${SVDIR:?}"/xrdp-bootstrap ]; then
ln -s /etc/sv/xrdp-bootstrap "${SVDIR:?}"
fi
# Enable headless X server service
if [ "${SERVICE_XORG_HEADLESS_ENABLED:?}" = 'true' ]; then
if [ "${SERVICE_XORG_HEADLESS_ENABLED:?}" = 'true' ] && [ ! -L "${SVDIR:?}"/xorg-headless ]; then
ln -s /etc/sv/xorg-headless "${SVDIR:?}"
fi

20
wlfreerdp.sh Executable file
View File

@@ -0,0 +1,20 @@
#!/bin/sh
set -eu
export LC_ALL=C
RDP_HOST=127.0.0.1
RDP_PORT=3389
RDP_DOMAIN=Xorg
RDP_USER=user
RDP_PASSWORD=password
exec wlfreerdp3 \
/v:"${RDP_HOST:?}":"${RDP_PORT:?}" \
/u:"${RDP_DOMAIN:?}"\\"${RDP_USER:?}" /p:"${RDP_PASSWORD:?}" \
/log-level:INFO /cert:ignore \
/gfx:AVC444v2 /bpp:32 /dynamic-resolution \
/audio-mode:0 /sound:sys:pulse,rate:44100 \
/microphone:sys:pulse,rate:44100 \
+clipboard +home-drive \
-compression -encryption