18 Commits

Author SHA1 Message Date
Chris Richardson
01e08053a2 asd
Some checks failed
Main / Build arm64v8 image (push) Successful in 1m29s
Main / Push arm64v8 image (push) Failing after 1m7s
Main / Push manifest (push) Has been skipped
Main / Publish GitHub release (push) Has been skipped
2025-07-10 21:49:19 -04:00
Chris Richardson
6fd275c24b asd
Some checks failed
Main / Build arm64v8 image (push) Failing after 1m1s
Main / Push arm64v8 image (push) Has been skipped
Main / Push manifest (push) Has been skipped
Main / Publish GitHub release (push) Has been skipped
2025-07-10 21:21:36 -04:00
Chris Richardson
f3294ccbdc asd
Some checks failed
Main / Build arm64v8 image (push) Successful in 8m59s
Main / Push arm64v8 image (push) Failing after 54s
2025-07-10 21:05:49 -04:00
Chris Richardson
5a9a1d969e asd
Some checks failed
Main / Build arm64v8 image (push) Failing after 57s
Main / Push arm64v8 image (push) Has been skipped
2025-07-10 19:56:23 -04:00
Chris Richardson
71b2f80c3a asd
All checks were successful
Main / Build arm64v8 image (push) Successful in 1m1s
Main / Push arm64v8 image (push) Has been skipped
2025-07-10 19:47:49 -04:00
Chris Richardson
00e50f9bb5 asd
All checks were successful
Main / Build arm64v8 image (push) Successful in 10m5s
Main / Push arm64v8 image (push) Has been skipped
2025-07-10 19:29:08 -04:00
Chris Richardson
9b5bffe885 asd
All checks were successful
Main / Build arm64v8 image (push) Successful in 10m17s
Main / Push arm64v8 image (push) Has been skipped
2025-07-10 19:09:13 -04:00
Chris Richardson
106fc86664 asd
Some checks failed
Main / Build arm64v8 image (push) Failing after 8m3s
Main / Push arm64v8 image (push) Has been skipped
2025-07-10 18:49:48 -04:00
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
8 changed files with 102 additions and 68 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"
@@ -32,7 +32,7 @@ jobs:
make IMAGE_BUILD_OPTS="--pull" "build-${{ matrix.arch }}-image" "save-${{ matrix.arch }}-image"
- name: "Upload artifacts"
if: "startsWith(github.ref, 'refs/tags/v') && matrix.arch != 'native'"
uses: "actions/upload-artifact@v4"
uses: "christopherhx/gitea-upload-artifact@v4"
with:
name: "dist-${{ matrix.arch }}"
path: "./dist/"
@@ -47,21 +47,19 @@ jobs:
contents: "read"
strategy:
matrix:
arch: ["amd64", "arm64v8"]
arch: ["arm64v8"]
steps:
- name: "Checkout project"
uses: "actions/checkout@v4"
- name: "Download artifacts"
uses: "actions/download-artifact@v4"
uses: "christopherhx/gitea-download-artifact@v4"
with:
name: "dist-${{ matrix.arch }}"
path: "./dist/"
- 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"
@@ -79,9 +77,7 @@ 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: "Push manifest"
run: |
make push-cross-manifest

View File

@@ -1,22 +1,22 @@
# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json
name: "Rebuild latest release"
#name: "Rebuild latest release"
on:
schedule:
- cron: "20 04 * * 1"
workflow_dispatch:
#on:
# schedule:
# - cron: "20 04 * * 1"
# workflow_dispatch:
permissions: {}
#permissions: {}
jobs:
trigger-rebuild:
name: "Trigger rebuild"
runs-on: "ubuntu-latest"
permissions:
actions: "write"
contents: "read"
steps:
- name: "Trigger rebuild"
uses: "hectorm/ghaction-trigger-workflow@04c79e7a4e0c0b94bbcff3829f38359e34f1ea9e"
with:
workflow-id: "main.yml"
#jobs:
# trigger-rebuild:
# name: "Trigger rebuild"
# runs-on: "ubuntu-latest"
# permissions:
# actions: "write"
# contents: "read"
# steps:
# - name: "Trigger rebuild"
# uses: "hectorm/ghaction-trigger-workflow@04c79e7a4e0c0b94bbcff3829f38359e34f1ea9e"
# with:
# workflow-id: "main.yml"

View File

@@ -4,13 +4,14 @@ 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"]
# Enable source repositories
RUN <<-EOF
sed -i '/^Types: deb$/s/$/ deb-src/' /etc/apt/sources.list.d/ubuntu.sources
sed -i '/^Types: deb$/s/$/ deb-src/' /etc/apt/sources.list.d/debian.sources
sed -i '/^Components: main$/s/$/ contrib non-free non-free-firmware/' /etc/apt/sources.list.d/debian.sources
EOF
# Install packages
@@ -26,11 +27,13 @@ RUN <<-EOF
cmake \
dbus-x11 \
devscripts \
doxygen \
dpkg-dev \
flex \
git \
intltool \
libbz2-dev \
libdrm-dev \
libegl-dev \
libegl1-mesa-dev \
libepoxy-dev \
@@ -73,6 +76,7 @@ RUN <<-EOF
x11-xkb-utils \
xauth \
xkb-data \
xserver-xorg-core \
xserver-xorg-dev \
xsltproc \
xutils-dev \
@@ -154,7 +158,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 +190,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 +209,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

@@ -10,8 +10,8 @@ M4 := $(shell command -v m4 2>/dev/null)
DISTDIR := ./dist
DOCKERFILE_TEMPLATE := ./Dockerfile.m4
IMAGE_REGISTRY := docker.io
IMAGE_NAMESPACE := hectorm
IMAGE_REGISTRY := d.lilpenguins.com
IMAGE_NAMESPACE := desktop
IMAGE_PROJECT := xubuntu
IMAGE_NAME := $(IMAGE_REGISTRY)/$(IMAGE_NAMESPACE)/$(IMAGE_PROJECT)
ifeq ($(shell '$(GIT)' status --porcelain 2>/dev/null),)

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