selkies-project / selkies-vdi Goto Github PK
View Code? Open in Web Editor NEWWebRTC & Xpra desktops on Selkies
Home Page: https://selkies.io
License: Apache License 2.0
WebRTC & Xpra desktops on Selkies
Home Page: https://selkies.io
License: Apache License 2.0
kubectl -n pod-broker-system logs -f pod-broker-0 -c pod-broker
error templating file: /var/run/buildsrc/apps/xfce-desktop/jsonpatch-service-selectors.yaml.tmpl: template: jsonpatch-service-selectors.yaml.tmpl:15:18: executing "jsonpatch-service-selectors.yaml.tmpl" at <.AppSpec.Type>: can't evaluate field Type in type pod_broker.AppConfigSpec
After the selkies-gstreamer integration is done (#14), build a workflow to build all of the images and push them to GHCR with versions.
Follow the same build philosophy as the selkies-gstreamer repo:
https://github.com/selkies-project/selkies-gstreamer/tree/master/.github/workflows
Preserve the cloudbuild image building to allow folks to build and self-host images.
Strategy:
I think it's time for a 1.5 release, since it's been 1.5 (lol) years since v1.4 came out. Are there any other short-term issues that we want to do before this release?
The webrtc components have been externalized to a separate repository: selkies-gstreamer
Re-integrate the components to this repo to preserve webrtc functionality with minimal disruption.
While trying to run selkies-vdi I got stuck in this step: gcloud builds submit --substitutions=_REGION=${REGION}
So far I have deployed Selkies to google cloud.
gcloud container node-pools list --cluster broker-${REGION?} --region ${REGION?} --filter name~gpu-cos
)Step #0 - "build-images": Step #37 - "squid-proxy": /bin/bash ../../libtool --tag=CXX --mode=link g++ -Wall -Wpointer-arith -Wwrite-strings -Wcomments -Wshadow -Woverloaded-virtual -Werror -Wno-deprecated-register -pipe -D_REENTRANT -g -O2 -march=native -std=c++11 -g -o libmgr.la Action.lo ActionParams.lo ActionPasswordList.lo ActionWriter.lo BasicActions.lo Command.lo CountersAction.lo Filler.lo Forwarder.lo FunAction.lo InfoAction.lo Inquirer.lo IntervalAction.lo IoAction.lo Registration.lo Request.lo Response.lo ServiceTimesAction.lo StoreIoAction.lo StoreToCommWriter.lo QueryParams.lo IntParam.lo StringParam.lo
Step #0 - "build-images": Step #32 - "app-streaming-focal-cuda": Removing intermediate container 6e82746abf28
Step #0 - "build-images": Step #32 - "app-streaming-focal-cuda": ac6f0f266d16
Step #0 - "build-images": Step #32 - "app-streaming-focal-cuda": Step 14/16 : COPY entrypoint.sh /entrypoint.sh
Step #0 - "build-images": Step #37 - "squid-proxy": libtool: link: /usr/bin/ar cru .libs/libmgr.a .libs/Action.o .libs/ActionParams.o .libs/ActionPasswordList.o .libs/ActionWriter.o .libs/BasicActions.o .libs/Command.o .libs/CountersAction.o .libs/Filler.o .libs/Forwarder.o .libs/FunAction.o .libs/InfoAction.o .libs/Inquirer.o .libs/IntervalAction.o .libs/IoAction.o .libs/Registration.o .libs/Request.o .libs/Response.o .libs/ServiceTimesAction.o .libs/StoreIoAction.o .libs/StoreToCommWriter.o .libs/QueryParams.o .libs/IntParam.o .libs/StringParam.o
Step #0 - "build-images": Step #37 - "squid-proxy": libtool: link: ranlib .libs/libmgr.a
Step #0 - "build-images": Step #37 - "squid-proxy": libtool: link: ( cd ".libs" && rm -f "libmgr.la" && ln -s "../libmgr.la" "libmgr.la" )
Step #0 - "build-images": Step #37 - "squid-proxy": make[3]: Leaving directory '/apps/squid-peer-ssl-bump/src/mgr'
Step #0 - "build-images": Step #37 - "squid-proxy": Making all in ssl
Step #0 - "build-images": Step #37 - "squid-proxy": make[3]: Entering directory '/apps/squid-peer-ssl-bump/src/ssl'
Step #0 - "build-images": Step #37 - "squid-proxy": depbase=`echo bio.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\
Step #0 - "build-images": Step #37 - "squid-proxy": /bin/bash ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -DDEFAULT_CONFIG_FILE=\"/apps/squid/etc/squid.conf\" -DDEFAULT_SQUID_DATA_DIR=\"/apps/squid/share\" -DDEFAULT_SQUID_CONFIG_DIR=\"/apps/squid/etc\" -I../.. -I../../include -I../../lib -I../../src -I../../include -Wall -Wpointer-arith -Wwrite-strings -Wcomments -Wshadow -Woverloaded-virtual -Werror -Wno-deprecated-register -pipe -D_REENTRANT -g -O2 -march=native -std=c++11 -MT bio.lo -MD -MP -MF $depbase.Tpo -c -o bio.lo bio.cc &&\
Step #0 - "build-images": Step #37 - "squid-proxy": mv -f $depbase.Tpo $depbase.Plo
Step #0 - "build-images": Step #37 - "squid-proxy": depbase=`echo cert_validate_message.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\
Step #0 - "build-images": Step #37 - "squid-proxy": /bin/bash ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -DDEFAULT_CONFIG_FILE=\"/apps/squid/etc/squid.conf\" -DDEFAULT_SQUID_DATA_DIR=\"/apps/squid/share\" -DDEFAULT_SQUID_CONFIG_DIR=\"/apps/squid/etc\" -I../.. -I../../include -I../../lib -I../../src -I../../include -Wall -Wpointer-arith -Wwrite-strings -Wcomments -Wshadow -Woverloaded-virtual -Werror -Wno-deprecated-register -pipe -D_REENTRANT -g -O2 -march=native -std=c++11 -MT cert_validate_message.lo -MD -MP -MF $depbase.Tpo -c -o cert_validate_message.lo cert_validate_message.cc &&\
Step #0 - "build-images": Step #37 - "squid-proxy": mv -f $depbase.Tpo $depbase.Plo
Step #0 - "build-images": Finished Step #34 - "xpra"
Step #0 - "build-images": ERROR
Step #0 - "build-images": ERROR: build step 34 "gcr.io/cloud-builders/docker" failed: step exited with non-zero status: 1
Step #0 - "build-images": Step #37 - "squid-proxy": depbase=`echo context_storage.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\
Step #0 - "build-images": Step #37 - "squid-proxy": /bin/bash ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -DDEFAULT_CONFIG_FILE=\"/apps/squid/etc/squid.conf\" -DDEFAULT_SQUID_DATA_DIR=\"/apps/squid/share\" -DDEFAULT_SQUID_CONFIG_DIR=\"/apps/squid/etc\" -I../.. -I../../include -I../../lib -I../../src -I../../include -Wall -Wpointer-arith -Wwrite-strings -Wcomments -Wshadow -Woverloaded-virtual -Werror -Wno-deprecated-register -pipe -D_REENTRANT -g -O2 -march=native -std=c++11 -MT context_storage.lo -MD -MP -MF $depbase.Tpo -c -o context_storage.lo context_storage.cc &&\
Step #0 - "build-images": Step #37 - "squid-proxy": mv -f $depbase.Tpo $depbase.Plo
Step #0 - "build-images": Step #37 - "squid-proxy": depbase=`echo Config.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\
Step #0 - "build-images": Step #37 - "squid-proxy": /bin/bash ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -DDEFAULT_CONFIG_FILE=\"/apps/squid/etc/squid.conf\" -DDEFAULT_SQUID_DATA_DIR=\"/apps/squid/share\" -DDEFAULT_SQUID_CONFIG_DIR=\"/apps/squid/etc\" -I../.. -I../../include -I../../lib -I../../src -I../../include -Wall -Wpointer-arith -Wwrite-strings -Wcomments -Wshadow -Woverloaded-virtual -Werror -Wno-deprecated-register -pipe -D_REENTRANT -g -O2 -march=native -std=c++11 -MT Config.lo -MD -MP -MF $depbase.Tpo -c -o Config.lo Config.cc &&\
Step #0 - "build-images": Step #37 - "squid-proxy": mv -f $depbase.Tpo $depbase.Plo
Step #0 - "build-images": Step #37 - "squid-proxy": depbase=`echo ErrorDetail.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\
Step #0 - "build-images": Step #37 - "squid-proxy": /bin/bash ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -DDEFAULT_CONFIG_FILE=\"/apps/squid/etc/squid.conf\" -DDEFAULT_SQUID_DATA_DIR=\"/apps/squid/share\" -DDEFAULT_SQUID_CONFIG_DIR=\"/apps/squid/etc\" -I../.. -I../../include -I../../lib -I../../src -I../../include -Wall -Wpointer-arith -Wwrite-strings -Wcomments -Wshadow -Woverloaded-virtual -Werror -Wno-deprecated-register -pipe -D_REENTRANT -g -O2 -march=native -std=c++11 -MT ErrorDetail.lo -MD -MP -MF $depbase.Tpo -c -o ErrorDetail.lo ErrorDetail.cc &&\
Step #0 - "build-images": Step #37 - "squid-proxy": mv -f $depbase.Tpo $depbase.Plo
Step #0 - "build-images": Step #37 - "squid-proxy": depbase=`echo ErrorDetailManager.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\
Step #0 - "build-images": Step #37 - "squid-proxy": /bin/bash ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -DDEFAULT_CONFIG_FILE=\"/apps/squid/etc/squid.conf\" -DDEFAULT_SQUID_DATA_DIR=\"/apps/squid/share\" -DDEFAULT_SQUID_CONFIG_DIR=\"/apps/squid/etc\" -I../.. -I../../include -I../../lib -I../../src -I../../include -Wall -Wpointer-arith -Wwrite-strings -Wcomments -Wshadow -Woverloaded-virtual -Werror -Wno-deprecated-register -pipe -D_REENTRANT -g -O2 -march=native -std=c++11 -MT ErrorDetailManager.lo -MD -MP -MF $depbase.Tpo -c -o ErrorDetailManager.lo ErrorDetailManager.cc &&\
Step #0 - "build-images": Step #37 - "squid-proxy": mv -f $depbase.Tpo $depbase.Plo
Step #0 - "build-images": Step #37 - "squid-proxy": depbase=`echo PeekingPeerConnector.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\
Step #0 - "build-images": Step #37 - "squid-proxy": /bin/bash ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -DDEFAULT_CONFIG_FILE=\"/apps/squid/etc/squid.conf\" -DDEFAULT_SQUID_DATA_DIR=\"/apps/squid/share\" -DDEFAULT_SQUID_CONFIG_DIR=\"/apps/squid/etc\" -I../.. -I../../include -I../../lib -I../../src -I../../include -Wall -Wpointer-arith -Wwrite-strings -Wcomments -Wshadow -Woverloaded-virtual -Werror -Wno-deprecated-register -pipe -D_REENTRANT -g -O2 -march=native -std=c++11 -MT PeekingPeerConnector.lo -MD -MP -MF $depbase.Tpo -c -o PeekingPeerConnector.lo PeekingPeerConnector.cc &&\
Step #0 - "build-images": Step #37 - "squid-proxy": mv -f $depbase.Tpo $depbase.Plo
Step #0 - "build-images": Step #37 - "squid-proxy": depbase=`echo ServerBump.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\
Step #0 - "build-images": Step #37 - "squid-proxy": /bin/bash ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -DDEFAULT_CONFIG_FILE=\"/apps/squid/etc/squid.conf\" -DDEFAULT_SQUID_DATA_DIR=\"/apps/squid/share\" -DDEFAULT_SQUID_CONFIG_DIR=\"/apps/squid/etc\" -I../.. -I../../include -I../../lib -I../../src -I../../include -Wall -Wpointer-arith -Wwrite-strings -Wcomments -Wshadow -Woverloaded-virtual -Werror -Wno-deprecated-register -pipe -D_REENTRANT -g -O2 -march=native -std=c++11 -MT ServerBump.lo -MD -MP -MF $depbase.Tpo -c -o ServerBump.lo ServerBump.cc &&\
Step #0 - "build-images": Step #37 - "squid-proxy": mv -f $depbase.Tpo $depbase.Plo
Step #0 - "build-images": Step #37 - "squid-proxy": depbase=`echo support.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\
Step #0 - "build-images": Step #37 - "squid-proxy": /bin/bash ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -DDEFAULT_CONFIG_FILE=\"/apps/squid/etc/squid.conf\" -DDEFAULT_SQUID_DATA_DIR=\"/apps/squid/share\" -DDEFAULT_SQUID_CONFIG_DIR=\"/apps/squid/etc\" -I../.. -I../../include -I../../lib -I../../src -I../../include -Wall -Wpointer-arith -Wwrite-strings -Wcomments -Wshadow -Woverloaded-virtual -Werror -Wno-deprecated-register -pipe -D_REENTRANT -g -O2 -march=native -std=c++11 -MT support.lo -MD -MP -MF $depbase.Tpo -c -o support.lo support.cc &&\
Step #0 - "build-images": Step #37 - "squid-proxy": mv -f $depbase.Tpo $depbase.Plo
Step #0 - "build-images": Step #37 - "squid-proxy": depbase=`echo helper.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\
Step #0 - "build-images": Step #37 - "squid-proxy": /bin/bash ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -DDEFAULT_CONFIG_FILE=\"/apps/squid/etc/squid.conf\" -DDEFAULT_SQUID_DATA_DIR=\"/apps/squid/share\" -DDEFAULT_SQUID_CONFIG_DIR=\"/apps/squid/etc\" -I../.. -I../../include -I../../lib -I../../src -I../../include -Wall -Wpointer-arith -Wwrite-strings -Wcomments -Wshadow -Woverloaded-virtual -Werror -Wno-deprecated-register -pipe -D_REENTRANT -g -O2 -march=native -std=c++11 -MT helper.lo -MD -MP -MF $depbase.Tpo -c -o helper.lo helper.cc &&\
Step #0 - "build-images": Step #37 - "squid-proxy": mv -f $depbase.Tpo $depbase.Plo
Step #0 - "build-images": Step #37 - "squid-proxy": depbase=`echo gadgets.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\
Step #0 - "build-images": Step #37 - "squid-proxy": /bin/bash ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -DDEFAULT_CONFIG_FILE=\"/apps/squid/etc/squid.conf\" -DDEFAULT_SQUID_DATA_DIR=\"/apps/squid/share\" -DDEFAULT_SQUID_CONFIG_DIR=\"/apps/squid/etc\" -I../.. -I../../include -I../../lib -I../../src -I../../include -Wall -Wpointer-arith -Wwrite-strings -Wcomments -Wshadow -Woverloaded-virtual -Werror -Wno-deprecated-register -pipe -D_REENTRANT -g -O2 -march=native -std=c++11 -MT gadgets.lo -MD -MP -MF $depbase.Tpo -c -o gadgets.lo gadgets.cc &&\
Step #0 - "build-images": Step #37 - "squid-proxy": mv -f $depbase.Tpo $depbase.Plo
Step #0 - "build-images": Step #37 - "squid-proxy": depbase=`echo crtd_message.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\
Step #0 - "build-images": Step #37 - "squid-proxy": /bin/bash ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -DDEFAULT_CONFIG_FILE=\"/apps/squid/etc/squid.conf\" -DDEFAULT_SQUID_DATA_DIR=\"/apps/squid/share\" -DDEFAULT_SQUID_CONFIG_DIR=\"/apps/squid/etc\" -I../.. -I../../include -I../../lib -I../../src -I../../include -Wall -Wpointer-arith -Wwrite-strings -Wcomments -Wshadow -Woverloaded-virtual -Werror -Wno-deprecated-register -pipe -D_REENTRANT -g -O2 -march=native -std=c++11 -MT crtd_message.lo -MD -MP -MF $depbase.Tpo -c -o crtd_message.lo crtd_message.cc &&\
Step #0 - "build-images": Step #37 - "squid-proxy": mv -f $depbase.Tpo $depbase.Plo
Step #0 - "build-images": Step #32 - "app-streaming-focal-cuda": 768572396cf1
Step #0 - "build-images": Step #32 - "app-streaming-focal-cuda": Step 15/16 : RUN chmod +x /entrypoint.sh
Reading state information... 99%16 - "desktop":
Step #0 - "build-images":
Step #0 - "build-images": BUILD FAILURE: Build step failure: build step 34 "gcr.io/cloud-builders/docker" failed: step exited with non-zero status: 1
Step #0 - "build-images": --------------------------------------------------------------------------------
Step #0 - "build-images": ERROR: (gcloud.builds.submit) build 9c46a1d6-ec4a-4c33-915b-3b42b6af26e1 completed with status "FAILURE"
Finished Step #0 - "build-images"
ERROR
ERROR: build step 0 "gcr.io/cloud-builders/gcloud" failed: step exited with non-zero status: 1
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
BUILD FAILURE: Build step failure: build step 0 "gcr.io/cloud-builders/gcloud" failed: step exited with non-zero status: 1
ERROR: (gcloud.builds.submit) build 0d034876-40fe-471a-a9d4-05c4a52fda23 completed with status "FAILURE"
Looks like it fails on step 34 xpra image building.
I would really appreciate it if someone could help me figure out what this problem is caused by.
This is similar to selkies-project/selkies-operator#21
I'm planning to delete every branch other than master
(and dev
, though it's currently unused), since they all seem abandoned (chc-docs
, istio-sidecar
, xpra-4.4-r30771-html5-4.5.2
), or are replaced by a tag (v1.4.0
). I've renamed those 4 branches to add a delete-me/
prefix, in anticipation of their deletion. Do we know of any production/live environments that depend on those branches?
I am trying to run X11 server in the container with this command:
/usr/bin/Xorg -verbose 3 -novtswitch -keeptty -verbose -allowMouseOpenFail
But i am getting this error:
(II) Loading /usr/local/nvidia/lib64/xorg/modules/drivers/nvidia_drv.so
(II) Module nvidia: vendor="NVIDIA Corporation"
compiled for 1.6.99.901, module version = 1.0.0
Module class: X.Org Video Driver
(II) NVIDIA dlloader X Driver 450.80.02 Wed Sep 23 00:53:01 UTC 2020
(II) NVIDIA Unified Driver for all Supported NVIDIA GPUs
(EE)
Fatal server error:
(EE) parse_vt_settings: Cannot open /dev/tty0 (No such file or directory)
I see that there is no tty0 device in the node or the container.
# ls /dev/tty* /dev/tty /dev/ttyS0 /dev/ttyS1 /dev/ttyS2 /dev/ttyS3
The daemonset gpu-driver-cos.yaml was applied to the node before running this container and it completed successfully.
If the client device is using resolution scaling or hidpi modes, the server resolution and DPI will not match.
On Xpra, desktop icons and text may appear blurry because the client device is applying local scaling on the DOM elements to make them appear larger.
On WebRTC with remote resizing, the desktop resolution is resized larger than the client viewport, so elements like the task tray are not visible.
Hi, looking to try out your project, but when I get to deploying the xfce desktop I see two daemonsets stuck:
I followed your readme to for setting up the prerequisites, and jupyterhub example app is deployed. I then cloned in this project in the same workspace, verified I have a gpu node pool, and ran the infrastructure build.
Thanks!
This is the time to do this. Selkies has diverged from a GCP-centric affiliate project to a much wider audience.
Other Kubernetes providers including Vast.ai, RunPod, and CoreWeave are watching and incorporating our projects.
This job failed: https://github.com/selkies-project/selkies-vdi/runs/4974449398?check_suite_focus=true
@danisla Any idea what's wrong here?
The gst-web interface is currently using the non-standard legacy stats API. Migrate to the new promise-based API to increase browser compatibility.
The latest version of COS (85.13310.1041.24) has updated the fixed driver installer image cos-driver-installer:fixed
to use a binary instead of a bash script for driver installation. Also it looks like the location it installs the drivers has changed, which leads to xserver not starting anymore:
[ 1372.688] (**) ModulePath set to "/usr/local/nvidia/lib64,/usr/lib/xorg/modules"
...
[ 1372.708] (II) LoadModule: "nvidia"
[ 1372.709] (WW) Warning, couldn't open module nvidia
we hacked around this using the original cos-config configmap and forcing the driver installer to run the custom entrypoint script, and merging some of the volumes and paths from the upstream installer daemonset: https://github.com/GoogleCloudPlatform/container-engine-accelerators/blob/master/nvidia-driver-installer/cos/daemonset-preloaded.yaml
at some point, should selkies use the same install method as upstream?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.