Compare commits

...

24 Commits

Author SHA1 Message Date
NickBland
0b1b2fa920 Re-Add in firefox no-snap
Some checks failed
Build Docker Image / build-and-push (push) Failing after 9m36s
2026-01-15 17:44:20 +10:00
NickBland
047b7ef152 Whoopsies!
Some checks failed
Build Docker Image / build-and-push (push) Failing after 31s
2026-01-15 17:42:05 +10:00
NickBland
45cfd2b622 Merge branch 'selkies'
Some checks failed
Build Docker Image / build-and-push (push) Failing after 1m28s
2026-01-15 17:39:08 +10:00
NickBland
2cba0913b0 Adjust CI/CD 2026-01-15 17:36:39 +10:00
NickBland
8248e7a3c6 Update to use new dockerfile format 2026-01-15 15:33:24 +10:00
NickBland
0ad56ed73c update build image
Some checks failed
Docker Push / build-and-push-image (push) Failing after 19m15s
2026-01-09 12:55:48 +10:00
NickBland
71b499318f Remove conditional logic from CI
Some checks failed
Docker Push / build-and-push-image (push) Failing after 22m55s
2026-01-09 10:51:15 +10:00
NickBland
bce07d46d2 Adjust CI/CD and Dockerfile
All checks were successful
Docker Push / build-and-push-image (push) Has been skipped
2026-01-09 10:49:58 +10:00
NickBland
68bfb16a99 Remove compose project
All checks were successful
Docker Push / build-and-push-image (push) Has been skipped
2026-01-09 10:44:13 +10:00
fc028854d0 [release]
Some checks failed
Docker Push / build-and-push-image (push) Failing after 5m41s
Remove sudo calls from dockerfile, adjust to ensure using amd64 platform for builds.
2026-01-09 09:44:36 +10:00
4527704660 [release]
Some checks failed
Docker Push / build-and-push-image (push) Failing after 26m11s
2026-01-08 19:34:54 +10:00
36d7b42c0e [release]
Some checks failed
Docker Push / build-and-push-image (push) Failing after 1m42s
2026-01-08 19:27:09 +10:00
08a24e44e3 Update .github/workflows/docker-push.yml
All checks were successful
Docker Push / build-and-push-image (push) Has been skipped
2026-01-08 19:22:25 +10:00
Super User
b970c39576 Update to use selkies
All checks were successful
Docker Push / build-and-push-image (push) Has been skipped
2026-01-08 19:16:09 +10:00
crschnick
5f4c92332a [release]
Some checks failed
Docker Push / build-and-push-image (push) Failing after 2m9s
2026-01-04 04:01:23 +00:00
crschnick
372c9da0c8 [release] 2025-12-31 20:04:46 +00:00
crschnick
5dc648b88d [release] 2025-12-29 21:04:48 +00:00
Christopher Schnick
3cada78ade Fix ssm [release] 2025-12-29 18:28:53 +01:00
crschnick
60ba0bf953 [release] 2025-12-29 17:00:43 +00:00
Christopher Schnick
ede34cf003 Add netbird and aws [stage] 2025-12-24 19:37:47 +01:00
crschnick
af93b35fe7 [release] 2025-12-06 10:01:48 +00:00
crschnick
8ea87ff5c7 [release] 2025-12-04 13:20:03 +00:00
crschnick
ea16ac613e [release] 2025-11-27 06:50:00 +00:00
crschnick
2112da76e7 [release] 2025-11-25 12:15:41 +00:00
18 changed files with 461 additions and 97 deletions

View File

@@ -1,77 +1,77 @@
name: Docker Push
name: Build Docker Image
on:
push:
branches: [ "main" ]
branches:
- main
tags:
- 'v*'
pull_request:
branches:
- main
workflow_dispatch:
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
REGISTRY: git.nickbland.dev
IMAGE_NAME: ${{ gitea.repository }}
jobs:
build-and-push-image:
build-and-push:
runs-on: ubuntu-latest
if: contains(github.event.head_commit.message, '[release]') || contains(github.event.head_commit.message, '[stage]')
permissions:
contents: read
packages: write
attestations: write
id-token: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set variables
run: |
XPIPE_VERSION=$(cat "${{ github.workspace }}/${{ contains(github.event.head_commit.message, '[release]') == true && 'version-main' || 'version-ptb' }}")
echo "XPIPE_VERSION=$XPIPE_VERSION" >> $GITHUB_ENV
XPIPE_REPOSITORY=${{ contains(github.event.head_commit.message, '[release]') == true && 'xpipe-io/xpipe' || 'xpipe-io/xpipe-ptb' }}
echo "XPIPE_REPOSITORY=$XPIPE_REPOSITORY" >> $GITHUB_ENV
XPIPE_PACKAGE=${{ contains(github.event.head_commit.message, '[release]') == true && 'xpipe' || 'xpipe-ptb' }}
echo "XPIPE_PACKAGE=$XPIPE_PACKAGE" >> $GITHUB_ENV
XPIPE_TAG=${{ contains(github.event.head_commit.message, '[release]') == true && 'main' || 'ptb' }}
echo "XPIPE_TAG=$XPIPE_TAG" >> $GITHUB_ENV
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to the Container registry
uses: docker/login-action@v3.3.0
- name: Log in to Gitea Container Registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata (tags, labels) for Docker
username: ${{ gitea.actor }}
password: ${{ secrets.CONTAINER_TOKEN }}
- name: Extract metadata
id: meta
uses: docker/metadata-action@v5.7.0
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
labels: |
org.opencontainers.image.vendor=xpipe.io
org.opencontainers.image.authors=xpipe.io
org.opencontainers.image.documentation=https://github.com/xpipe-io/xpipe-webtop
flavor: |
latest=${{ contains(github.event.head_commit.message, '[release]') == true }}
tags: |
type=raw,value=${{ env.XPIPE_TAG }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Setup buildx
uses: docker/setup-buildx-action@v1
type=ref,event=branch
type=ref,event=pr
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}
type=sha,prefix={{branch}}-
type=raw,value=latest,enable={{is_default_branch}}
- name: Set build arguments
id: build_args
run: |
echo "XPIPE_VERSION=20.3" >> $GITHUB_OUTPUT
echo "XPIPE_REPOSITORY=xpipe-io/xpipe" >> $GITHUB_OUTPUT
echo "XPIPE_PACKAGE=io.xpipe.xpipe_stage" >> $GITHUB_OUTPUT
- name: Build and push Docker image
id: push
uses: docker/build-push-action@v6.9.0
uses: docker/build-push-action@v5
with:
context: .
platforms: linux/amd64
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-args: |
"XPIPE_VERSION=${{ env.XPIPE_VERSION }}"
"XPIPE_REPOSITORY=${{ env.XPIPE_REPOSITORY }}"
"XPIPE_PACKAGE=${{ env.XPIPE_PACKAGE }}"
platforms: ${{ contains(github.event.head_commit.message, '[release]') && 'linux/amd64,linux/arm64' || 'linux/amd64' }}
- name: Generate artifact attestation
uses: actions/attest-build-provenance@v1
with:
subject-name: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME}}
subject-digest: ${{ steps.push.outputs.digest }}
push-to-registry: true
XPIPE_VERSION=${{ steps.build_args.outputs.XPIPE_VERSION }}
XPIPE_REPOSITORY=${{ steps.build_args.outputs.XPIPE_REPOSITORY }}
XPIPE_PACKAGE=${{ steps.build_args.outputs.XPIPE_PACKAGE }}
TARGETPLATFORM=linux/amd64
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Image digest
run: echo ${{ steps.build.outputs.digest }}

3
.gitignore vendored
View File

@@ -1 +1,2 @@
.idea
.idea
test/

View File

@@ -1,8 +1,11 @@
FROM ghcr.io/linuxserver/baseimage-kasmvnc:ubuntunoble AS build
FROM ghcr.io/linuxserver/baseimage-selkies:ubuntunoble
ARG DEBIAN_FRONTEND="noninteractive"
ENV TITLE="XPipe Webtop"
# Title and Selkies specific envs
ENV TITLE="XPipe Webtop" \
NO_GAMEPAD=true
ARG XPIPE_VERSION
ARG XPIPE_REPOSITORY
ARG XPIPE_PACKAGE
@@ -13,6 +16,7 @@ COPY /root/etc/apt/preferences.d/firefox-no-snap /etc/apt/preferences.d/firefox-
RUN echo "**** install base packages ****" && \
add-apt-repository -y ppa:mozillateam/ppa && \
add-apt-repository -y ppa:xtradeb/apps && \
apt-get update && \
DEBIAN_FRONTEND=noninteractive \
apt-get install --no-install-recommends -y \
@@ -21,8 +25,15 @@ RUN echo "**** install base packages ****" && \
gwenview \
kde-config-gtk-style \
kdialog \
kfind \
khotkeys \
kio-extras \
knewstuff-dialog \
ksystemstats \
kubuntu-settings-desktop \
kubuntu-wallpapers \
kubuntu-web-shortcuts \
kwin-addons \
kwin-x11 \
kwrite \
wget \
@@ -40,14 +51,14 @@ RUN echo "**** install base packages ****" && \
fonts-noto \
fonts-noto-cjk \
systemsettings && \
apt-get remove -y plasma-welcome && \
apt-get autoclean && \
rm -rf \
/config/.cache \
/config/.launchpadlib \
/var/lib/apt/lists/* \
/var/tmp/* \
/tmp/*
apt-get remove -y plasma-welcome && \
apt-get autoclean && \
rm -rf \
/config/.cache \
/config/.launchpadlib \
/var/lib/apt/lists/* \
/var/tmp/* \
/tmp/*
RUN echo "**** nerdfonts ****" && \
curl -LO "https://github.com/ryanoasis/nerd-fonts/releases/latest/download/UbuntuMono.zip" && \
@@ -61,13 +72,12 @@ COPY /root /
# ports and volumes
EXPOSE 3000
EXPOSE 3001
VOLUME /config
RUN \
echo "**** add icon ****" && \
curl -L -o \
/kclient/public/icon.png \
/usr/share/selkies/www/icon.png \
"https://rawcdn.githack.com/xpipe-io/xpipe/a097ae7a41131fa358b5343345557ad00a45c309/dist/logo/logo.png"
RUN echo "**** VsCode **** ($TARGETPLATFORM)" && \
@@ -96,25 +106,54 @@ RUN echo "**** install tool packages ****" && \
tmux \
screen \
remmina-plugin-rdp && \
apt-get autoclean
apt-get autoclean
RUN echo "**** tailscale ****" && curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/noble.noarmor.gpg | sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null && \
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/noble.tailscale-keyring.list | sudo tee /etc/apt/sources.list.d/tailscale.list && \
sudo apt-get update && \
DEBIAN_FRONTEND=noninteractive sudo apt-get install -y tailscale
RUN echo "**** tailscale ****" && curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/noble.noarmor.gpg | tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null && \
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/noble.tailscale-keyring.list | tee /etc/apt/sources.list.d/tailscale.list && \
apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get install -y tailscale
RUN echo "**** teleport ****" && sudo curl https://apt.releases.teleport.dev/gpg -o /etc/apt/keyrings/teleport-archive-keyring.asc && \
RUN echo "**** netbird ****" && \
apt-get update && \
apt-get install ca-certificates curl gnupg -y && \
curl -sSL https://pkgs.netbird.io/debian/public.key | gpg --dearmor --output /usr/share/keyrings/netbird-archive-keyring.gpg && \
echo 'deb [signed-by=/usr/share/keyrings/netbird-archive-keyring.gpg] https://pkgs.netbird.io/debian stable main' | tee /etc/apt/sources.list.d/netbird.list && \
apt-get update && \
apt-get install netbird
RUN echo "**** teleport ****" && curl https://apt.releases.teleport.dev/gpg -o /etc/apt/keyrings/teleport-archive-keyring.asc && \
. /etc/os-release && \
echo "deb [signed-by=/etc/apt/keyrings/teleport-archive-keyring.asc] https://apt.releases.teleport.dev/${ID?} ${VERSION_CODENAME?} stable/v17" | sudo tee /etc/apt/sources.list.d/teleport.list > /dev/null && \
sudo apt-get update && \
DEBIAN_FRONTEND=noninteractive sudo apt-get -y install teleport
echo "deb [signed-by=/etc/apt/keyrings/teleport-archive-keyring.asc] https://apt.releases.teleport.dev/${ID?} ${VERSION_CODENAME?} stable/v17" | tee /etc/apt/sources.list.d/teleport.list > /dev/null && \
apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get -y install teleport
RUN echo "**** kubectl **** ($TARGETPLATFORM)" && \
if [ "$TARGETPLATFORM" = "linux/amd64" ]; then KUBECTL_LINK="https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"; else KUBECTL_LINK="https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/arm64/kubectl"; fi && \
curl -LO "${KUBECTL_LINK}" && \
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl && \
install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl && \
rm kubectl
RUN echo "**** aws ****" && curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "/tmp/awscliv2.zip" && \
unzip "/tmp/awscliv2.zip" -d "/tmp" && \
"/tmp/aws/install" && \
rm -rf "/tmp/aws" "/tmp/awscliv2.zip"
RUN echo "**** aws ssm **** ($TARGETPLATFORM)" && \
if [ "$TARGETPLATFORM" = "linux/amd64" ]; then SSM_LINK="https://s3.amazonaws.com/session-manager-downloads/plugin/latest/ubuntu_64bit/session-manager-plugin.deb"; else SSM_LINK="https://s3.amazonaws.com/session-manager-downloads/plugin/latest/ubuntu_arm64/session-manager-plugin.deb"; fi && \
curl "${SSM_LINK}" -o "/tmp/session-manager-plugin.deb" && \
dpkg -i "/tmp/session-manager-plugin.deb" && \
rm -rf "/tmp/aws" "/tmp/session-manager-plugin.deb"
RUN echo "**** zellij **** ($TARGETPLATFORM)" && \
if [ "$TARGETPLATFORM" = "linux/amd64" ]; then ZELLIJ_LINK="https://github.com/zellij-org/zellij/releases/latest/download/zellij-x86_64-unknown-linux-musl.tar.gz"; else ZELLIJ_LINK="https://github.com/zellij-org/zellij/releases/latest/download/zellij-aarch64-unknown-linux-musl.tar.gz"; fi && \
curl -LO "${ZELLIJ_LINK}" && \
tar -xvf zellij*.tar.gz && \
install -o root -g root -m 0755 zellij /usr/local/bin/zellij && \
rm zellij && \
rm zellij*.tar.gz
RUN echo "**** dolphin tweaks ****" && printf "x-scheme-handler/file=org.kde.dolphin.desktop\n" >> /usr/share/applications/kde-mimeapps.list
RUN echo "**** XPipe **** ($TARGETPLATFORM)" && \
if [ "$TARGETPLATFORM" = "linux/amd64" ]; then XPIPE_ARTIFACT="xpipe-installer-linux-x86_64.deb"; else XPIPE_ARTIFACT="xpipe-installer-linux-arm64.deb"; fi && \
wget "https://github.com/$XPIPE_REPOSITORY/releases/download/$XPIPE_VERSION/${XPIPE_ARTIFACT}" && \
@@ -123,14 +162,6 @@ RUN echo "**** XPipe **** ($TARGETPLATFORM)" && \
apt-get install --no-install-recommends -y "./${XPIPE_ARTIFACT}" && \
rm "./${XPIPE_ARTIFACT}"
RUN echo "**** zellij **** ($TARGETPLATFORM)" && \
if [ "$TARGETPLATFORM" = "linux/amd64" ]; then ZELLIJ_LINK="https://github.com/zellij-org/zellij/releases/latest/download/zellij-x86_64-unknown-linux-musl.tar.gz"; else ZELLIJ_LINK="https://github.com/zellij-org/zellij/releases/latest/download/zellij-aarch64-unknown-linux-musl.tar.gz"; fi && \
curl -LO "${ZELLIJ_LINK}" && \
tar -xvf zellij*.tar.gz && \
sudo install -o root -g root -m 0755 zellij /usr/local/bin/zellij && \
rm zellij && \
rm zellij*.tar.gz
RUN mkdir -p "/etc/xdg/autostart/" && ln -s "/usr/share/applications/$XPIPE_PACKAGE.desktop" "/etc/xdg/autostart/$XPIPE_PACKAGE.desktop"
RUN echo "**** kde tweaks ****" && \
@@ -139,6 +170,4 @@ RUN echo "**** kde tweaks ****" && \
/usr/share/plasma/plasmoids/org.kde.plasma.taskmanager/contents/config/main.xml && \
sed -i \
"s#preferred://browser#applications:firefox.desktop,applications:org.kde.konsole.desktop,applications:code.desktop,applications:org.remmina.Remmina.desktop,applications:$XPIPE_PACKAGE.desktop#g" \
/usr/share/plasma/plasmoids/org.kde.plasma.taskmanager/contents/config/main.xml
RUN echo "**** dolphin tweaks ****" && printf "x-scheme-handler/file=org.kde.dolphin.desktop\n" >> /usr/share/applications/kde-mimeapps.list
/usr/share/plasma/plasmoids/org.kde.plasma.taskmanager/contents/config/main.xml

171
Dockerfile.bak Normal file
View File

@@ -0,0 +1,171 @@
FROM ghcr.io/linuxserver/baseimage-selkies:ubuntunoble AS build
ARG DEBIAN_FRONTEND="noninteractive"
ENV TITLE="XPipe Webtop"
ARG XPIPE_VERSION=20.2
ARG XPIPE_REPOSITORY=xpipe-io/xpipe
ARG XPIPE_PACKAGE=xpipe
ARG TARGETPLATFORM=linux/amd64
# prevent Ubuntu's firefox stub from being installed
COPY /root/etc/apt/preferences.d/firefox-no-snap /etc/apt/preferences.d/firefox-no-snap
RUN echo "**** install base packages ****" && \
add-apt-repository -y ppa:mozillateam/ppa && \
apt-get update && \
DEBIAN_FRONTEND=noninteractive \
apt-get install --no-install-recommends -y \
dolphin \
firefox \
gwenview \
# kde-config-gtk-style \
# kdialog \
# kio-extras \
# kubuntu-settings-desktop \
# kwin-x11 \
# kwrite \
wget \
git \
zip \
unzip \
# kmod \
nano \
mousepad \
vim \
# plasma-desktop \
# plasma-workspace \
plymouth-theme-kubuntu-logo \
qml-module-qt-labs-platform \
fonts-noto \
fonts-noto-cjk \
systemsettings && \
#apt-get remove -y plasma-welcome && \
apt-get autoclean && \
rm -rf \
/config/.cache \
/config/.launchpadlib \
/var/lib/apt/lists/* \
/var/tmp/* \
/tmp/*
RUN echo "**** nerdfonts ****" && \
curl -LO "https://github.com/ryanoasis/nerd-fonts/releases/latest/download/UbuntuMono.zip" && \
mkdir -p "/usr/share/fonts/ubuntu-mono-nerd" && \
unzip "UbuntuMono.zip" -d "/usr/share/fonts/ubuntu-mono-nerd" && \
rm "UbuntuMono.zip" && \
fc-cache -fv
# add local files
#COPY /root /
# ports and volumes
EXPOSE 3000
EXPOSE 3001
VOLUME /config
# RUN \
# echo "**** add icon ****" && \
# curl -L -o \
# /kclient/public/icon.png \
# "https://rawcdn.githack.com/xpipe-io/xpipe/a097ae7a41131fa358b5343345557ad00a45c309/dist/logo/logo.png"
# RUN echo "**** Wezterm ****" && \
# curl -fsSL https://apt.fury.io/wez/gpg.key | sudo gpg --yes --dearmor -o /usr/share/keyrings/wezterm-fury.gpg && \
# echo 'deb [signed-by=/usr/share/keyrings/wezterm-fury.gpg] https://apt.fury.io/wez/ * *' | sudo tee /etc/apt/sources.list.d/wezterm.list && \
# chmod 644 /usr/share/keyrings/wezterm-fury.gpg && \
# apt-get update && \
# apt-get install --no-install-recommends -y wezterm
#
# RUN echo "**** VsCode **** ($TARGETPLATFORM)" && \
# if [ "$TARGETPLATFORM" = "linux/amd64" ]; then VSCODE_LINK="https://code.visualstudio.com/sha/download?build=stable&os=linux-deb-x64"; else VSCODE_LINK="https://code.visualstudio.com/sha/download?build=stable&os=linux-deb-arm64"; fi && \
# wget -O vscode.deb "${VSCODE_LINK}" && \
# DEBIAN_FRONTEND=noninteractive \
# apt-get update && \
# apt-get install --no-install-recommends -y "./vscode.deb" && \
# rm "./vscode.deb"
# RUN echo "**** install tool packages ****" && \
# DEBIAN_FRONTEND=noninteractive \
# apt-get install --no-install-recommends -y \
# konsole \
# gnome-console \
# gnome-terminal \
# xfce4-terminal \
# alacritty \
# kitty \
# tilix \
# kate \
# gedit \
# terminator \
# freerdp2-x11 \
# remmina \
# tmux \
# screen \
# remmina-plugin-rdp && \
# apt-get autoclean
# RUN echo "**** tailscale ****" && curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/noble.noarmor.gpg | sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null && \
# curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/noble.tailscale-keyring.list | sudo tee /etc/apt/sources.list.d/tailscale.list && \
# sudo apt-get update && \
# DEBIAN_FRONTEND=noninteractive sudo apt-get install -y tailscale
#
# RUN echo "**** netbird ****" && \
# sudo apt-get update && \
# sudo apt-get install ca-certificates curl gnupg -y && \
# curl -sSL https://pkgs.netbird.io/debian/public.key | sudo gpg --dearmor --output /usr/share/keyrings/netbird-archive-keyring.gpg && \
# echo 'deb [signed-by=/usr/share/keyrings/netbird-archive-keyring.gpg] https://pkgs.netbird.io/debian stable main' | sudo tee /etc/apt/sources.list.d/netbird.list && \
# sudo apt-get update && \
# sudo apt-get install netbird
#
# RUN echo "**** teleport ****" && sudo curl https://apt.releases.teleport.dev/gpg -o /etc/apt/keyrings/teleport-archive-keyring.asc && \
# . /etc/os-release && \
# echo "deb [signed-by=/etc/apt/keyrings/teleport-archive-keyring.asc] https://apt.releases.teleport.dev/${ID?} ${VERSION_CODENAME?} stable/v17" | sudo tee /etc/apt/sources.list.d/teleport.list > /dev/null && \
# sudo apt-get update && \
# DEBIAN_FRONTEND=noninteractive sudo apt-get -y install teleport
#
# RUN echo "**** kubectl **** ($TARGETPLATFORM)" && \
# if [ "$TARGETPLATFORM" = "linux/amd64" ]; then KUBECTL_LINK="https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"; else KUBECTL_LINK="https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/arm64/kubectl"; fi && \
# curl -LO "${KUBECTL_LINK}" && \
# sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl && \
# rm kubectl
# RUN echo "**** aws ****" && curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "/tmp/awscliv2.zip" && \
# unzip "/tmp/awscliv2.zip" -d "/tmp" && \
# sudo "/tmp/aws/install" && \
# rm -rf "/tmp/aws" "/tmp/awscliv2.zip"
#
# RUN echo "**** aws ssm **** ($TARGETPLATFORM)" && \
# if [ "$TARGETPLATFORM" = "linux/amd64" ]; then SSM_LINK="https://s3.amazonaws.com/session-manager-downloads/plugin/latest/ubuntu_64bit/session-manager-plugin.deb"; else SSM_LINK="https://s3.amazonaws.com/session-manager-downloads/plugin/latest/ubuntu_arm64/session-manager-plugin.deb"; fi && \
# curl "${SSM_LINK}" -o "/tmp/session-manager-plugin.deb" && \
# sudo dpkg -i "/tmp/session-manager-plugin.deb" && \
# rm -rf "/tmp/aws" "/tmp/session-manager-plugin.deb"
#
# RUN echo "**** zellij **** ($TARGETPLATFORM)" && \
# if [ "$TARGETPLATFORM" = "linux/amd64" ]; then ZELLIJ_LINK="https://github.com/zellij-org/zellij/releases/latest/download/zellij-x86_64-unknown-linux-musl.tar.gz"; else ZELLIJ_LINK="https://github.com/zellij-org/zellij/releases/latest/download/zellij-aarch64-unknown-linux-musl.tar.gz"; fi && \
# curl -LO "${ZELLIJ_LINK}" && \
# tar -xvf zellij*.tar.gz && \
# sudo install -o root -g root -m 0755 zellij /usr/local/bin/zellij && \
# rm zellij && \
# rm zellij*.tar.gz
# RUN echo "**** dolphin tweaks ****" && printf "x-scheme-handler/file=org.kde.dolphin.desktop\n" >> /usr/share/applications/kde-mimeapps.list
RUN echo "**** XPipe **** ($TARGETPLATFORM)" && \
if [ "$TARGETPLATFORM" = "linux/amd64" ]; then XPIPE_ARTIFACT="xpipe-installer-linux-x86_64.deb"; else XPIPE_ARTIFACT="xpipe-installer-linux-arm64.deb"; fi && \
wget "https://github.com/$XPIPE_REPOSITORY/releases/download/$XPIPE_VERSION/${XPIPE_ARTIFACT}" && \
DEBIAN_FRONTEND=noninteractive \
apt-get update && \
apt-get install --no-install-recommends -y "./${XPIPE_ARTIFACT}" && \
rm "./${XPIPE_ARTIFACT}"
# RUN mkdir -p "/etc/xdg/autostart/" && ln -s "/usr/share/applications/$XPIPE_PACKAGE.desktop" "/etc/xdg/autostart/$XPIPE_PACKAGE.desktop"
# RUN echo "**** kde tweaks ****" && \
# sed -i \
# "s/applications:org.kde.discover.desktop,/,/g" \
# /usr/share/plasma/plasmoids/org.kde.plasma.taskmanager/contents/config/main.xml && \
# sed -i \
# "s#preferred://browser#applications:firefox.desktop,applications:org.kde.konsole.desktop,applications:code.desktop,applications:org.remmina.Remmina.desktop,applications:$XPIPE_PACKAGE.desktop#g" \
# /usr/share/plasma/plasmoids/org.kde.plasma.taskmanager/contents/config/main.xml

View File

@@ -5,4 +5,6 @@
XPipe Webtop is a web-based desktop environment that can be run in a container and accessed from a browser via KasmVNC.
The desktop environment comes with XPipe and various terminals and editors preinstalled and configured.
You can find the documentation at [https://docs.xpipe.io/guide/webtop](https://docs.xpipe.io/guide/webtop).
You can find the documentation at [https://docs.xpipe.io/guide/webtop](https://docs.xpipe.io/guide/webtop).
Uses [Selkies](https://github.com/linuxserver/docker-baseimage-selkies)

70
root.bak/defaults/startwm.sh Executable file
View File

@@ -0,0 +1,70 @@
#!/bin/bash
# Disable compositing and screen lock
if [ ! -f $HOME/.config/kwinrc ]; then
kwriteconfig5 --file $HOME/.config/kwinrc --group Compositing --key Enabled false
fi
if [ ! -f $HOME/.config/kscreenlockerrc ]; then
kwriteconfig5 --file $HOME/.config/kscreenlockerrc --group Daemon --key Autolock false
fi
# Power related
setterm blank 0
setterm powerdown 0
# Directories
sudo rm -f /usr/share/dbus-1/system-services/org.freedesktop.UDisks2.service
mkdir -p "${HOME}/.config/autostart" "${HOME}/.XDG" "${HOME}/.local/share/"
chmod 700 "${HOME}/.XDG"
touch "${HOME}/.local/share/user-places.xbel"
# Background perm loop
if [ ! -d $HOME/.config/kde.org ]; then
(
loop_end_time=$((SECONDS + 30))
while [ $SECONDS -lt $loop_end_time ]; do
find "$HOME/.cache" "$HOME/.config" "$HOME/.local" -type f -perm 000 -exec chmod 644 {} + 2>/dev/null
sleep .1
done
) &
fi
# Create startup script if it does not exist (keep in sync with openbox)
STARTUP_FILE="${HOME}/.config/autostart/autostart.desktop"
if [ ! -f "${STARTUP_FILE}" ]; then
echo "[Desktop Entry]" > $STARTUP_FILE
echo "Exec=bash /config/.config/openbox/autostart" >> $STARTUP_FILE
echo "Icon=dialog-scripts" >> $STARTUP_FILE
echo "Name=autostart" >> $STARTUP_FILE
echo "Path=" >> $STARTUP_FILE
echo "Type=Application" >> $STARTUP_FILE
echo "X-KDE-AutostartScript=true" >> $STARTUP_FILE
chmod +x $STARTUP_FILE
fi
# Enable Nvidia GPU support if detected
if which nvidia-smi > /dev/null 2>&1 && ls -A /dev/dri 2>/dev/null && [ "${DISABLE_ZINK}" == "false" ]; then
export LIBGL_KOPPER_DRI2=1
export MESA_LOADER_DRIVER_OVERRIDE=zink
export GALLIUM_DRIVER=zink
fi
# --- X11 ICE (must be root-owned) ---
sudo mkdir -p /tmp/.ICE-unix
sudo chown root:root /tmp/.ICE-unix
sudo chmod 1777 /tmp/.ICE-unix
# --- Runtime dir ---
export XDG_RUNTIME_DIR="/tmp/runtime-$UID"
mkdir -p "$XDG_RUNTIME_DIR"
chmod 700 "$XDG_RUNTIME_DIR"
# --- Avoid systemd / Wayland ---
export QT_QPA_PLATFORM=xcb
export KDE_NO_WAYLAND=1
export KDE_NO_SYSTEMD=1
export KDE_SKIP_LOGIND=1
export KDE_SKIP_SESSION_MANAGEMENT=1
# --- Start Plasma ---
exec dbus-run-session /usr/bin/startplasma-x11 --no-lockscreen --no-restore

View File

@@ -0,0 +1,3 @@
Package: firefox*
Pin: release o=Ubuntu*
Pin-Priority: -1

View File

Before

Width:  |  Height:  |  Size: 115 KiB

After

Width:  |  Height:  |  Size: 115 KiB

1
root/defaults/autostart Normal file
View File

@@ -0,0 +1 @@
exit 0

Binary file not shown.

50
root/defaults/startwm.sh Executable file → Normal file
View File

@@ -1,12 +1,5 @@
#!/bin/bash
# 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
# Disable compositing and screen lock
if [ ! -f $HOME/.config/kwinrc ]; then
kwriteconfig5 --file $HOME/.config/kwinrc --group Compositing --key Enabled false
@@ -14,16 +7,47 @@ fi
if [ ! -f $HOME/.config/kscreenlockerrc ]; then
kwriteconfig5 --file $HOME/.config/kscreenlockerrc --group Daemon --key Autolock false
fi
# Power related
setterm blank 0
setterm powerdown 0
if [ ! -f "$HOME/.config/konsolerc" ]; then
printf "[General]\nConfigVersion=1\n\n[KonsoleWindow]\nUseSingleInstance=true\n\n[Notification Messages]\nCloseAllTabs=true\nCloseSingleTab=true\n" > "$HOME/.config/konsolerc"
# Directories
sudo rm -f /usr/share/dbus-1/system-services/org.freedesktop.UDisks2.service
mkdir -p "${HOME}/.config/autostart" "${HOME}/.XDG" "${HOME}/.local/share/"
chmod 700 "${HOME}/.XDG"
touch "${HOME}/.local/share/user-places.xbel"
# Background perm loop
if [ ! -d $HOME/.config/kde.org ]; then
(
loop_end_time=$((SECONDS + 30))
while [ $SECONDS -lt $loop_end_time ]; do
find "$HOME/.cache" "$HOME/.config" "$HOME/.local" -type f -perm 000 -exec chmod 644 {} + 2>/dev/null
sleep .1
done
) &
fi
if [ ! -f "$HOME/.config/kwalletrc" ]; then
printf "[Wallet]\nEnabled=false\n" > "$HOME/.config/kwalletrc"
# Create startup script if it does not exist (keep in sync with openbox)
STARTUP_FILE="${HOME}/.config/autostart/autostart.desktop"
if [ ! -f "${STARTUP_FILE}" ]; then
echo "[Desktop Entry]" > $STARTUP_FILE
echo "Exec=bash /config/.config/openbox/autostart" >> $STARTUP_FILE
echo "Icon=dialog-scripts" >> $STARTUP_FILE
echo "Name=autostart" >> $STARTUP_FILE
echo "Path=" >> $STARTUP_FILE
echo "Type=Application" >> $STARTUP_FILE
echo "X-KDE-AutostartScript=true" >> $STARTUP_FILE
chmod +x $STARTUP_FILE
fi
# Launch DE
/usr/bin/dbus-launch /usr/bin/startplasma-x11 > /dev/null 2>&1
# Enable Nvidia GPU support if detected
if which nvidia-smi > /dev/null 2>&1 && ls -A /dev/dri 2>/dev/null && [ "${DISABLE_ZINK}" == "false" ]; then
export LIBGL_KOPPER_DRI2=1
export MESA_LOADER_DRIVER_OVERRIDE=zink
export GALLIUM_DRIVER=zink
fi
# Start DE
exec dbus-launch --exit-with-session /usr/bin/startplasma-x11 > /dev/null 2>&1

Binary file not shown.

View File

@@ -0,0 +1,48 @@
#!/bin/bash
# Disable compositing and screen lock
if [ ! -f $HOME/.config/kwinrc ]; then
kwriteconfig5 --file $HOME/.config/kwinrc --group Compositing --key Enabled false
fi
if [ ! -f $HOME/.config/kscreenlockerrc ]; then
kwriteconfig5 --file $HOME/.config/kscreenlockerrc --group Daemon --key Autolock false
fi
# Power related
setterm blank 0
setterm powerdown 0
# Directories
sudo rm -f /usr/share/dbus-1/system-services/org.freedesktop.UDisks2.service
mkdir -p "${HOME}/.config/autostart" "${HOME}/.XDG" "${HOME}/.local/share/"
chmod 700 "${HOME}/.XDG"
touch "${HOME}/.local/share/user-places.xbel"
# Background perm loop
if [ ! -d $HOME/.config/kde.org ]; then
(
loop_end_time=$((SECONDS + 30))
while [ $SECONDS -lt $loop_end_time ]; do
find "$HOME/.cache" "$HOME/.config" "$HOME/.local" -type f -perm 000 -exec chmod 644 {} + 2>/dev/null
sleep .1
done
) &
fi
# Create startup script if it does not exist (keep in sync with openbox)
STARTUP_FILE="${HOME}/.config/autostart/autostart.desktop"
if [ ! -f "${STARTUP_FILE}" ]; then
echo "[Desktop Entry]" > $STARTUP_FILE
echo "Exec=bash /config/.config/openbox/autostart" >> $STARTUP_FILE
echo "Icon=dialog-scripts" >> $STARTUP_FILE
echo "Name=autostart" >> $STARTUP_FILE
echo "Path=" >> $STARTUP_FILE
echo "Type=Application" >> $STARTUP_FILE
echo "X-KDE-AutostartScript=true" >> $STARTUP_FILE
chmod +x $STARTUP_FILE
fi
# Start DE
WAYLAND_DISPLAY=wayland-1 Xwayland :1 &
sleep 2
exec dbus-launch --exit-with-session /usr/bin/startplasma-x11 > /dev/null 2>&1

Binary file not shown.

View File

@@ -0,0 +1,15 @@
#! /bin/bash
BIN=/usr/bin/chromium
# Cleanup
if ! pgrep chromium > /dev/null;then
rm -f $HOME/.config/chromium/Singleton*
fi
# Run normally on privved containers or modified un non priv
if grep -q 'Seccomp:.0' /proc/1/status; then
${BIN} --password-store=basic "$@"
else
${BIN} --password-store=basic --no-sandbox --test-type "$@"
fi

Binary file not shown.

View File

@@ -1 +1 @@
19.3
20.2

View File

@@ -1 +1 @@
18.2-3
20.0-12