From 74404318ddd007db5185b5b3ccd81960bcaca226 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Tue, 11 Feb 2025 13:59:20 +1300 Subject: [PATCH 01/17] KASM-3747 Deb: add systemd service file --- debian/kasmvnc@.service | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 debian/kasmvnc@.service diff --git a/debian/kasmvnc@.service b/debian/kasmvnc@.service new file mode 100644 index 0000000..6b45502 --- /dev/null +++ b/debian/kasmvnc@.service @@ -0,0 +1,14 @@ +[Unit] +Description=KasmVNC +After=network.target + +[Service] +Type=forking +Restart=always +RestartSec=5 +ExecStartPre=-/usr/bin/vncserver -kill %i +ExecStart=/usr/bin/vncserver %i +ExecStop=/usr/bin/vncserver -kill %i + +[Install] +WantedBy=default.target From c43cefd13ecf6d97a445f87771fe478d8d3be7a3 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Sun, 16 Feb 2025 14:38:09 +1300 Subject: [PATCH 02/17] KASM-3747 Deb: stop all user systemd sessions on upgrade --- debian/Makefile.to_fakebuild_tar_package | 1 + debian/prerm | 51 ++++++++++++++++--- release/maketarball.in | 2 + .../kasmvncserver@.service | 0 4 files changed, 46 insertions(+), 8 deletions(-) rename debian/kasmvnc@.service => unix/kasmvncserver@.service (100%) diff --git a/debian/Makefile.to_fakebuild_tar_package b/debian/Makefile.to_fakebuild_tar_package index a8f476c..e3ae3a7 100644 --- a/debian/Makefile.to_fakebuild_tar_package +++ b/debian/Makefile.to_fakebuild_tar_package @@ -21,6 +21,7 @@ install: unpack_tarball cp $(SRC_BIN)/kasmvncpasswd $(DESTDIR)/usr/bin/ cp $(SRC_BIN)/kasmxproxy $(DESTDIR)/usr/bin/ cp -r $(SRC)/lib/kasmvnc/ $(DESTDIR)/usr/lib/kasmvncserver + cp -r $(SRC)/lib/systemd/ $(DESTDIR)/usr/lib/ cp -r $(SRC)/share/doc/kasmvnc*/* $(DESTDIR)/usr/share/doc/kasmvncserver/ rsync -r --links --safe-links --exclude '.git*' --exclude po2js \ --exclude xgettext-html --exclude www/utils/ --exclude .eslintrc \ diff --git a/debian/prerm b/debian/prerm index d02176a..eb3abb4 100644 --- a/debian/prerm +++ b/debian/prerm @@ -16,20 +16,55 @@ set -e # for details, see https://www.debian.org/doc/debian-policy/ or # the debian-policy package +stop_vncserver_systemd_services_for_all_logged_in_users() { + for session in $(list_user_sessions); do + stop_user_services "$session" + done +} + +list_user_sessions() { + loginctl list-sessions --no-legend | awk '{print $1}' +} + +stop_user_services() { + local session="$1" + + for service in $(list_active_services); do + systemctl --user --machine=$(systemd_user_from_session "$session") stop "$service" || true + done +} + +systemd_user_from_session() { + local session="$1" + + echo $(loginctl show-session "$session" -p Name --value)@ +} + +list_active_services() { + systemctl --user --machine=$(systemd_user_from_session "$session") \ + list-units --type=service --state=active --plain --no-legend | \ + awk '{ print $1 }' | grep kasmvncserver +} + +remove_vncserver_and_other_alternatives_from_bin() { + bindir=/usr/bin + mandir=/usr/share/man + commands="kasmvncserver kasmvncpasswd kasmvncconfig Xkasmvnc kasmxproxy" + + for kasm_command in $commands; do + generic_command=`echo "$kasm_command" | sed -e 's/kasm//'`; + update-alternatives --remove "$generic_command" "$bindir/$kasm_command" + done +} case "$1" in remove) - bindir=/usr/bin - mandir=/usr/share/man - commands="kasmvncserver kasmvncpasswd kasmvncconfig Xkasmvnc kasmxproxy" - - for kasm_command in $commands; do - generic_command=`echo "$kasm_command" | sed -e 's/kasm//'`; - update-alternatives --remove "$generic_command" "$bindir/$kasm_command" - done + stop_vncserver_systemd_services_for_all_logged_in_users + remove_vncserver_and_other_alternatives_from_bin ;; remove|upgrade|deconfigure) + stop_vncserver_systemd_services_for_all_logged_in_users ;; failed-upgrade) diff --git a/release/maketarball.in b/release/maketarball.in index 79be58c..5cc0a16 100644 --- a/release/maketarball.in +++ b/release/maketarball.in @@ -53,6 +53,8 @@ if [ $SERVER = 1 ]; then install -m 755 ./xorg.build/lib/dri/swrast_dri.so $OUTDIR/lib/dri/ mkdir -p $OUTDIR/lib/kasmvnc install -m 755 $SRCDIR/builder/startup/deb/select-de.sh $OUTDIR/lib/kasmvnc + mkdir -p $OUTDIR/lib/systemd/user + install -m 644 ./unix/kasmvncserver@.service $OUTDIR/lib/systemd/user mkdir -p $OUTDIR/share/kasmvnc cp -r $SRCDIR/unix/KasmVNC/ $OUTDIR/bin/ diff --git a/debian/kasmvnc@.service b/unix/kasmvncserver@.service similarity index 100% rename from debian/kasmvnc@.service rename to unix/kasmvncserver@.service From 42d13d539d87e41b22b9a7629894432b3f485e46 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Sun, 16 Feb 2025 20:08:38 +1300 Subject: [PATCH 03/17] KASM-3747 Fix dnf reinstall removing pem cert --- fedora/kasmvncserver.spec | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/fedora/kasmvncserver.spec b/fedora/kasmvncserver.spec index 260d5ce..7e1d762 100644 --- a/fedora/kasmvncserver.spec +++ b/fedora/kasmvncserver.spec @@ -155,4 +155,11 @@ cd $DST_MAN && ln -s vncpasswd.1 kasmvncpasswd.1; make_self_signed_certificate %postun - rm -f /etc/pki/tls/private/kasmvnc.pem + local is_uninstall = 0; + + if [ "$1" == 0 ]; then + is_uninstall = 1; + fi + if [ "$is_uninstall" = 1 ]; then + rm -f /etc/pki/tls/private/kasmvnc.pem + fi From bcdef6b1bde95c774484abaf2c7cf055d931a0b9 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Sun, 16 Feb 2025 20:37:49 +1300 Subject: [PATCH 04/17] KASM-3747 Stop kasmvncserver on upgrade/removal --- fedora/kasmvncserver.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/fedora/kasmvncserver.spec b/fedora/kasmvncserver.spec index 7e1d762..6b0d72d 100644 --- a/fedora/kasmvncserver.spec +++ b/fedora/kasmvncserver.spec @@ -6,7 +6,7 @@ Summary: VNC server accessible from a web browser License: GPLv2+ URL: https://github.com/kasmtech/KasmVNC -BuildRequires: rsync +BuildRequires: rsync, systemd-rpm-macros Requires: xorg-x11-xauth, xkeyboard-config, xkbcomp, openssl, perl, perl-Switch, perl-YAML-Tiny, perl-Hash-Merge-Simple, perl-Scalar-List-Utils, perl-List-MoreUtils, perl-Try-Tiny, perl-DateTime-TimeZone, mesa-libgbm, libxshmfence Conflicts: tigervnc-server, tigervnc-server-minimal @@ -50,6 +50,7 @@ cp $SRC_BIN/vncconfig $DESTDIR/usr/bin; cp $SRC_BIN/kasmvncpasswd $DESTDIR/usr/bin; cp $SRC_BIN/kasmxproxy $DESTDIR/usr/bin; cp -r $SRC/lib/kasmvnc/ $DESTDIR/usr/lib/kasmvncserver +cp -r $SRC/lib/systemd/ $DESTDIR/usr/lib/ cd $DESTDIR/usr/bin && ln -s kasmvncpasswd vncpasswd; cp -r $SRC/share/doc/kasmvnc*/* $DESTDIR/usr/share/doc/kasmvncserver/ rsync -r --links --safe-links --exclude '.git*' --exclude po2js --exclude xgettext-html \ @@ -69,12 +70,15 @@ cp $SRC/share/man/man1/vncpasswd.1 $DST_MAN; cp $SRC/share/man/man1/kasmxproxy.1 $DST_MAN; cd $DST_MAN && ln -s vncpasswd.1 kasmvncpasswd.1; +%preun +%systemd_user_preun %{name}@.service %files %config(noreplace) /etc/kasmvnc /usr/bin/* /usr/lib/kasmvncserver +/usr/lib/systemd/user/kasmvncserver@.service /usr/share/man/man1/* /usr/share/perl5/KasmVNC /usr/share/kasmvnc From 7177719d78a4d46010948008c6661c2316e02618 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Wed, 19 Feb 2025 14:49:45 +1300 Subject: [PATCH 05/17] KASM-3747 Fix dnf reinstall removing pem cert --- opensuse/kasmvncserver.spec | 9 ++++++++- oracle/kasmvncserver.spec | 9 ++++++++- oracle/kasmvncserver9.spec | 9 ++++++++- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/opensuse/kasmvncserver.spec b/opensuse/kasmvncserver.spec index e7fdba1..39ed040 100644 --- a/opensuse/kasmvncserver.spec +++ b/opensuse/kasmvncserver.spec @@ -153,4 +153,11 @@ cd $DST_MAN && ln -s vncpasswd.1 kasmvncpasswd.1; make_self_signed_certificate %postun - rm -f /usr/share/pki/trust/anchors/kasmvnc.pem + local is_uninstall = 0; + + if [ "$1" == 0 ]; then + is_uninstall = 1; + fi + if [ "$is_uninstall" = 1 ]; then + rm -f /etc/pki/tls/private/kasmvnc.pem + fi diff --git a/oracle/kasmvncserver.spec b/oracle/kasmvncserver.spec index 5edd055..2467fa5 100644 --- a/oracle/kasmvncserver.spec +++ b/oracle/kasmvncserver.spec @@ -154,4 +154,11 @@ cd $DST_MAN && ln -s vncpasswd.1 kasmvncpasswd.1; make_self_signed_certificate %postun - rm -f /etc/pki/tls/private/kasmvnc.pem + local is_uninstall = 0; + + if [ "$1" == 0 ]; then + is_uninstall = 1; + fi + if [ "$is_uninstall" = 1 ]; then + rm -f /etc/pki/tls/private/kasmvnc.pem + fi diff --git a/oracle/kasmvncserver9.spec b/oracle/kasmvncserver9.spec index 482587c..e34a911 100644 --- a/oracle/kasmvncserver9.spec +++ b/oracle/kasmvncserver9.spec @@ -154,4 +154,11 @@ cd $DST_MAN && ln -s vncpasswd.1 kasmvncpasswd.1; make_self_signed_certificate %postun - rm -f /etc/pki/tls/private/kasmvnc.pem + local is_uninstall = 0; + + if [ "$1" == 0 ]; then + is_uninstall = 1; + fi + if [ "$is_uninstall" = 1 ]; then + rm -f /etc/pki/tls/private/kasmvnc.pem + fi From b847c23d7d374e754505638a1a6b556a2b55eedd Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 20 Feb 2025 15:40:36 +1300 Subject: [PATCH 06/17] KASM-3747 Fix Opensuse cert removal on uninstall --- opensuse/kasmvncserver.spec | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/opensuse/kasmvncserver.spec b/opensuse/kasmvncserver.spec index 39ed040..2979f43 100644 --- a/opensuse/kasmvncserver.spec +++ b/opensuse/kasmvncserver.spec @@ -153,11 +153,11 @@ cd $DST_MAN && ln -s vncpasswd.1 kasmvncpasswd.1; make_self_signed_certificate %postun - local is_uninstall = 0; + is_uninstall=0 if [ "$1" == 0 ]; then - is_uninstall = 1; + is_uninstall=1 fi if [ "$is_uninstall" = 1 ]; then - rm -f /etc/pki/tls/private/kasmvnc.pem + rm -f /usr/share/pki/trust/anchors/kasmvnc.pem fi From cbde1a214e0460dc6704bda95bfc309aa6fb47a0 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 20 Feb 2025 15:43:50 +1300 Subject: [PATCH 07/17] KASM-3747 Suse: add systemd support --- opensuse/kasmvncserver.spec | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/opensuse/kasmvncserver.spec b/opensuse/kasmvncserver.spec index 2979f43..054dcd7 100644 --- a/opensuse/kasmvncserver.spec +++ b/opensuse/kasmvncserver.spec @@ -48,6 +48,7 @@ cp $SRC_BIN/vncconfig $DESTDIR/usr/bin; cp $SRC_BIN/kasmvncpasswd $DESTDIR/usr/bin; cp $SRC_BIN/kasmxproxy $DESTDIR/usr/bin; cp -r $SRC/lib/kasmvnc/ $DESTDIR/usr/lib/kasmvncserver +cp -r $SRC/lib/systemd/ $DESTDIR/usr/lib/ cd $DESTDIR/usr/bin && ln -s kasmvncpasswd vncpasswd; cp -r $SRC/share/doc/kasmvnc*/* $DESTDIR/usr/share/doc/kasmvncserver/ rsync -r --links --safe-links --exclude '.git*' --exclude po2js --exclude xgettext-html \ @@ -67,12 +68,45 @@ cp $SRC/share/man/man1/vncpasswd.1 $DST_MAN; cp $SRC/share/man/man1/kasmxproxy.1 $DST_MAN; cd $DST_MAN && ln -s vncpasswd.1 kasmvncpasswd.1; +%preun +stop_vncserver_systemd_services_for_all_logged_in_users() { + for session in $(list_user_sessions); do + stop_user_services "$session" + done +} + +list_user_sessions() { + loginctl list-sessions --no-legend | awk '{print $1}' +} + +stop_user_services() { + local session="$1" + + for service in $(list_active_services); do + systemctl --user --machine=$(systemd_user_from_session "$session") stop "$service" || true + done +} + +systemd_user_from_session() { + local session="$1" + + echo $(loginctl show-session "$session" -p Name --value)@ +} + +list_active_services() { + systemctl --user --machine=$(systemd_user_from_session "$session") \ + list-units --type=service --state=active --plain --no-legend | \ + awk '{ print $1 }' | grep kasmvncserver +} + +stop_vncserver_systemd_services_for_all_logged_in_users %files %config(noreplace) /etc/kasmvnc /usr/bin/* /usr/lib/kasmvncserver +/usr/lib/systemd/user/kasmvncserver@.service /usr/share/man/man1/* %perl_vendorlib/KasmVNC /usr/share/kasmvnc From e509b49bf6400d1d0462f71ea68b54f6d839e7b9 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 20 Feb 2025 15:52:30 +1300 Subject: [PATCH 08/17] KASM-3747 Fix Fedora cert removal on uninstall --- fedora/kasmvncserver.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fedora/kasmvncserver.spec b/fedora/kasmvncserver.spec index 6b0d72d..9d04383 100644 --- a/fedora/kasmvncserver.spec +++ b/fedora/kasmvncserver.spec @@ -159,10 +159,10 @@ cd $DST_MAN && ln -s vncpasswd.1 kasmvncpasswd.1; make_self_signed_certificate %postun - local is_uninstall = 0; + is_uninstall=0 if [ "$1" == 0 ]; then - is_uninstall = 1; + is_uninstall=1 fi if [ "$is_uninstall" = 1 ]; then rm -f /etc/pki/tls/private/kasmvnc.pem From a03c192a200abdad7d7eef750c90279a9847229c Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 20 Feb 2025 15:53:44 +1300 Subject: [PATCH 09/17] KASM-3747 Fedora: stop all user systemd sessions on upgrade --- fedora/kasmvncserver.spec | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/fedora/kasmvncserver.spec b/fedora/kasmvncserver.spec index 9d04383..d706eaf 100644 --- a/fedora/kasmvncserver.spec +++ b/fedora/kasmvncserver.spec @@ -6,7 +6,7 @@ Summary: VNC server accessible from a web browser License: GPLv2+ URL: https://github.com/kasmtech/KasmVNC -BuildRequires: rsync, systemd-rpm-macros +BuildRequires: rsync Requires: xorg-x11-xauth, xkeyboard-config, xkbcomp, openssl, perl, perl-Switch, perl-YAML-Tiny, perl-Hash-Merge-Simple, perl-Scalar-List-Utils, perl-List-MoreUtils, perl-Try-Tiny, perl-DateTime-TimeZone, mesa-libgbm, libxshmfence Conflicts: tigervnc-server, tigervnc-server-minimal @@ -71,7 +71,37 @@ cp $SRC/share/man/man1/kasmxproxy.1 $DST_MAN; cd $DST_MAN && ln -s vncpasswd.1 kasmvncpasswd.1; %preun -%systemd_user_preun %{name}@.service +stop_vncserver_systemd_services_for_all_logged_in_users() { + for session in $(list_user_sessions); do + stop_user_services "$session" + done +} + +list_user_sessions() { + loginctl list-sessions --no-legend | awk '{print $1}' +} + +stop_user_services() { + local session="$1" + + for service in $(list_active_services); do + systemctl --user --machine=$(systemd_user_from_session "$session") stop "$service" || true + done +} + +systemd_user_from_session() { + local session="$1" + + echo $(loginctl show-session "$session" -p Name --value)@ +} + +list_active_services() { + systemctl --user --machine=$(systemd_user_from_session "$session") \ + list-units --type=service --state=active --plain --no-legend | \ + awk '{ print $1 }' | grep kasmvncserver +} + +stop_vncserver_systemd_services_for_all_logged_in_users %files %config(noreplace) /etc/kasmvnc From ad13a177396b3a0213f5ea59576bc7550fae8af3 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 20 Feb 2025 17:58:47 +1300 Subject: [PATCH 10/17] KASM-3747 Fix Oracle 8 cert removal on uninstall --- oracle/kasmvncserver.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/oracle/kasmvncserver.spec b/oracle/kasmvncserver.spec index 2467fa5..4772186 100644 --- a/oracle/kasmvncserver.spec +++ b/oracle/kasmvncserver.spec @@ -154,10 +154,10 @@ cd $DST_MAN && ln -s vncpasswd.1 kasmvncpasswd.1; make_self_signed_certificate %postun - local is_uninstall = 0; + is_uninstall=0 if [ "$1" == 0 ]; then - is_uninstall = 1; + is_uninstall=1 fi if [ "$is_uninstall" = 1 ]; then rm -f /etc/pki/tls/private/kasmvnc.pem From 1289674947cbc9a7c53eeadff48401ee8e5b6750 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 20 Feb 2025 18:40:04 +1300 Subject: [PATCH 11/17] KASM-3747 Fix Oracle 9 cert removal on uninstall --- oracle/kasmvncserver9.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/oracle/kasmvncserver9.spec b/oracle/kasmvncserver9.spec index e34a911..3de5bf7 100644 --- a/oracle/kasmvncserver9.spec +++ b/oracle/kasmvncserver9.spec @@ -154,10 +154,10 @@ cd $DST_MAN && ln -s vncpasswd.1 kasmvncpasswd.1; make_self_signed_certificate %postun - local is_uninstall = 0; + is_uninstall=0; if [ "$1" == 0 ]; then - is_uninstall = 1; + is_uninstall=1; fi if [ "$is_uninstall" = 1 ]; then rm -f /etc/pki/tls/private/kasmvnc.pem From 4d4ac3ac0a8d56cd7d1118a776b24bc02aeff2c1 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 20 Feb 2025 18:41:36 +1300 Subject: [PATCH 12/17] KASM-3747 Oracle 9: add systemd support --- oracle/kasmvncserver9.spec | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/oracle/kasmvncserver9.spec b/oracle/kasmvncserver9.spec index 3de5bf7..a8a8962 100644 --- a/oracle/kasmvncserver9.spec +++ b/oracle/kasmvncserver9.spec @@ -49,6 +49,7 @@ cp $SRC_BIN/vncconfig $DESTDIR/usr/bin; cp $SRC_BIN/kasmvncpasswd $DESTDIR/usr/bin; cp $SRC_BIN/kasmxproxy $DESTDIR/usr/bin; cp -r $SRC/lib/kasmvnc/ $DESTDIR/usr/lib/kasmvncserver +cp -r $SRC/lib/systemd/ $DESTDIR/usr/lib/ cd $DESTDIR/usr/bin && ln -s kasmvncpasswd vncpasswd; cp -r $SRC/share/doc/kasmvnc*/* $DESTDIR/usr/share/doc/kasmvncserver/ rsync -r --links --safe-links --exclude '.git*' --exclude po2js --exclude xgettext-html \ @@ -68,12 +69,45 @@ cp $SRC/share/man/man1/vncpasswd.1 $DST_MAN; cp $SRC/share/man/man1/kasmxproxy.1 $DST_MAN; cd $DST_MAN && ln -s vncpasswd.1 kasmvncpasswd.1; +%preun +stop_vncserver_systemd_services_for_all_logged_in_users() { + for session in $(list_user_sessions); do + stop_user_services "$session" + done +} + +list_user_sessions() { + loginctl list-sessions --no-legend | awk '{print $1}' +} + +stop_user_services() { + local session="$1" + + for service in $(list_active_services); do + systemctl --user --machine=$(systemd_user_from_session "$session") stop "$service" || true + done +} + +systemd_user_from_session() { + local session="$1" + + echo $(loginctl show-session "$session" -p Name --value)@ +} + +list_active_services() { + systemctl --user --machine=$(systemd_user_from_session "$session") \ + list-units --type=service --state=active --plain --no-legend | \ + awk '{ print $1 }' | grep kasmvncserver +} + +stop_vncserver_systemd_services_for_all_logged_in_users %files %config(noreplace) /etc/kasmvnc /usr/bin/* /usr/lib/kasmvncserver +/usr/lib/systemd/user/kasmvncserver@.service /usr/share/man/man1/* /usr/share/perl5/KasmVNC /usr/share/kasmvnc From 43be60fc5d4d448e62b31bdc1e8666cd6aa30cd4 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 20 Feb 2025 18:51:03 +1300 Subject: [PATCH 13/17] KASM-3747 Oracle 8: add systemd support --- oracle/kasmvncserver.spec | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/oracle/kasmvncserver.spec b/oracle/kasmvncserver.spec index 4772186..f622344 100644 --- a/oracle/kasmvncserver.spec +++ b/oracle/kasmvncserver.spec @@ -49,6 +49,7 @@ cp $SRC_BIN/vncconfig $DESTDIR/usr/bin; cp $SRC_BIN/kasmvncpasswd $DESTDIR/usr/bin; cp $SRC_BIN/kasmxproxy $DESTDIR/usr/bin; cp -r $SRC/lib/kasmvnc/ $DESTDIR/usr/lib/kasmvncserver +cp -r $SRC/lib/systemd/ $DESTDIR/usr/lib/ cd $DESTDIR/usr/bin && ln -s kasmvncpasswd vncpasswd; cp -r $SRC/share/doc/kasmvnc*/* $DESTDIR/usr/share/doc/kasmvncserver/ rsync -r --links --safe-links --exclude '.git*' --exclude po2js --exclude xgettext-html \ @@ -68,12 +69,12 @@ cp $SRC/share/man/man1/vncpasswd.1 $DST_MAN; cp $SRC/share/man/man1/kasmxproxy.1 $DST_MAN; cd $DST_MAN && ln -s vncpasswd.1 kasmvncpasswd.1; - %files %config(noreplace) /etc/kasmvnc /usr/bin/* /usr/lib/kasmvncserver +/usr/lib/systemd/user/kasmvncserver@.service /usr/share/man/man1/* /usr/share/perl5/KasmVNC /usr/share/kasmvnc From c09705442bc60550007de0cf18e88145c63d5131 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 20 Feb 2025 19:59:27 +1300 Subject: [PATCH 14/17] KASM-3747 Deb: systemd auto-stop fail doesn't prevent package removal --- debian/prerm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/prerm b/debian/prerm index eb3abb4..c0a8887 100644 --- a/debian/prerm +++ b/debian/prerm @@ -59,12 +59,12 @@ remove_vncserver_and_other_alternatives_from_bin() { case "$1" in remove) - stop_vncserver_systemd_services_for_all_logged_in_users + stop_vncserver_systemd_services_for_all_logged_in_users || true remove_vncserver_and_other_alternatives_from_bin ;; remove|upgrade|deconfigure) - stop_vncserver_systemd_services_for_all_logged_in_users + stop_vncserver_systemd_services_for_all_logged_in_users || true ;; failed-upgrade) From c38be7e7b37999d5d9d779d1749a2c765da55ebb Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Fri, 21 Feb 2025 15:39:34 +1300 Subject: [PATCH 15/17] KASM-3747 Trim whitespace --- .gitlab-ci.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6dd1bf6..3279217 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -198,7 +198,7 @@ build_ubuntu_noble: artifacts: paths: - output/ - + build_ubuntu_noble_arm: stage: build allow_failure: true @@ -209,7 +209,7 @@ build_ubuntu_noble_arm: - *prepare_www after_script: - *prepare_artfacts - script: + script: - bash builder/build-package ubuntu noble; only: variables: @@ -617,13 +617,13 @@ build_fedora_forty: artifacts: paths: - output/ - + build_fedora_forty_arm: stage: build allow_failure: true tags: - oci-fixed-arm - before_script: + before_script: - *prepare_build - *prepare_www after_script: @@ -655,18 +655,18 @@ build_fedora_fortyone: artifacts: paths: - output/ - + build_fedora_fortyone_arm: stage: build allow_failure: true tags: - oci-fixed-arm - before_script: + before_script: - *prepare_build - *prepare_www after_script: - *prepare_artfacts - script: + script: - bash builder/build-package fedora fortyone; only: variables: From 29edc87c024dea73549a126612c15558e83169dc Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Mon, 24 Feb 2025 19:44:29 +1300 Subject: [PATCH 16/17] KASM-3747 Deb: suggests systemd --- debian/control | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/control b/debian/control index bff5f2a..e2b8d3f 100644 --- a/debian/control +++ b/debian/control @@ -15,6 +15,7 @@ Depends: ${shlibs:Depends}, ${misc:Depends}, ${perl:Depends}, ssl-cert, xauth, x11-xkb-utils, xkb-data, procps, libswitch-perl, libyaml-tiny-perl, libhash-merge-simple-perl, libscalar-list-utils-perl, liblist-moreutils-perl, libtry-tiny-perl, libdatetime-timezone-perl, libgbm1 +Suggests: systemd Provides: vnc-server Description: KasmVNC provides remote web-based access to a Desktop or application. While VNC is in the name, KasmVNC differs from other VNC variants such From b516070da41507b3f80bdbb96aa0952ee3176f02 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 20 Mar 2025 19:29:10 +1300 Subject: [PATCH 17/17] KASM-3747 Document systemd auto-start in README --- README.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/README.md b/README.md index 4f89163..88239de 100644 --- a/README.md +++ b/README.md @@ -46,6 +46,7 @@ sudo dnf localinstall ./kasmvncserver_*.rpm sudo usermod -a -G kasmvnc-cert $USER ``` + ## Getting Started The following examples provide basic usage of KasmVNC with the tools provided. For full documentation on all the utilities and the runtime environment, see our [KasmVNC Documentation](https://www.kasmweb.com/kasmvnc/docs/latest/index.html) @@ -70,6 +71,21 @@ vncserver -list vncserver -kill :2 ``` +### Optional systemd auto-start on boot +```sh +# Optionally use systemd to start KasmVNC on boot. +sudo reboot # Needed for systemd to pick up $USER's ssl-cert or kasmvnc-cert group +systemctl --user enable kasmvncserver@:1 # :1 is Xorg DISPLAY number. +systemctl --user start kasmvncserver@:1 + +# You can run multiple KasmVNC instances via systemd by passing a different +# DISPLAY number: +# systemctl --user enable kasmvncserver@:2 +# systemctl --user start kasmvncserver@:2 +# systemctl --user enable kasmvncserver@:3 +# systemctl --user start kasmvncserver@:3 +``` + ## Configuration KasmVNC is configured via YAML based configurations. The server level configuration is at `/etc/kasmvnc/kasmvnc.yaml`. Edits to this file apply to all users. Individual users can override server global configurations by specifying them in their configuration file at `~/.vnc/kasmvnc.yaml`.