Compare commits

..

3 Commits

Author SHA1 Message Date
CanbiZ (MickLesk)
88310a8a1b remove old tar extraction and use fetch_and_deploy_gh_tag 2026-03-17 09:10:13 +01:00
CanbiZ (MickLesk)
ea2208e7f2 use fetch_and_deploy_gh_tag 2026-03-17 09:02:07 +01:00
CanbiZ (MickLesk)
debc871b01 Termix: add guacd build and systemd integration
Install and build Apache Guacamole Server (guacd) and integrate it with Termix.

- Added required native dependencies to install/termix-install.sh and build steps to download, compile and install guacd, recording its tag in ~/.guacd.
- Created /etc/guacamole/guacd.conf and a systemd unit for guacd; enabled and started guacd alongside termix, and made termix.service depend on guacd.
- Extended ct/termix.sh update flow to detect guacd GitHub tags, stop guacd, rebuild/install the specified release, add default config/unit files if missing, and enable/start the service.
- Minor messaging tweaks: use "Termix" in stop/start logs.

This ensures guacd is available and managed automatically when installing or updating Termix.
2026-03-17 08:55:52 +01:00
3 changed files with 143 additions and 10 deletions

View File

@@ -423,8 +423,6 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
</details>
## 2026-03-17
## 2026-03-16
### 🆕 New Scripts

View File

@@ -29,10 +29,87 @@ function update_script() {
exit
fi
if check_for_gh_tag "guacd" "apache/guacamole-server"; then
msg_info "Stopping guacd"
systemctl stop guacd 2>/dev/null || true
msg_ok "Stopped guacd"
ensure_dependencies \
libcairo2-dev \
libjpeg62-turbo-dev \
libpng-dev \
libtool-bin \
uuid-dev \
libvncserver-dev \
freerdp3-dev \
libssh2-1-dev \
libtelnet-dev \
libwebsockets-dev \
libpulse-dev \
libvorbis-dev \
libwebp-dev \
libssl-dev \
libpango1.0-dev \
libswscale-dev \
libavcodec-dev \
libavutil-dev \
libavformat-dev
msg_info "Updating Guacamole Server (guacd)"
fetch_and_deploy_gh_tag "guacd" "apache/guacamole-server" "${CHECK_UPDATE_RELEASE}" "/opt/guacamole-server"
cd /opt/guacamole-server
export CPPFLAGS="-Wno-error=deprecated-declarations"
$STD autoreconf -fi
$STD ./configure --with-init-dir=/etc/init.d --enable-allow-freerdp-snapshots
$STD make
$STD make install
$STD ldconfig
cd /opt
rm -rf /opt/guacamole-server
msg_ok "Updated Guacamole Server (guacd) to ${CHECK_UPDATE_RELEASE}"
if [[ ! -f /etc/guacamole/guacd.conf ]]; then
mkdir -p /etc/guacamole
cat <<EOF >/etc/guacamole/guacd.conf
[server]
bind_host = 127.0.0.1
bind_port = 4822
EOF
fi
if [[ ! -f /etc/systemd/system/guacd.service ]]; then
cat <<EOF >/etc/systemd/system/guacd.service
[Unit]
Description=Guacamole Proxy Daemon (guacd)
After=network.target
[Service]
Type=forking
ExecStart=/etc/init.d/guacd start
ExecStop=/etc/init.d/guacd stop
ExecReload=/etc/init.d/guacd restart
PIDFile=/var/run/guacd.pid
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
fi
if ! grep -q "guacd.service" /etc/systemd/system/termix.service 2>/dev/null; then
sed -i '/^After=network.target/s/$/ guacd.service/' /etc/systemd/system/termix.service
sed -i '/^\[Unit\]/a Wants=guacd.service' /etc/systemd/system/termix.service
fi
systemctl daemon-reload
systemctl enable -q --now guacd
fi
if check_for_gh_release "termix" "Termix-SSH/Termix"; then
msg_info "Stopping Service"
msg_info "Stopping Termix"
systemctl stop termix
msg_ok "Stopped Service"
msg_ok "Stopped Termix"
msg_info "Backing up Data"
cp -r /opt/termix/data /opt/termix_data_backup
@@ -95,16 +172,16 @@ function update_script() {
sed -i 's|/app/html|/opt/termix/html|g' /etc/nginx/nginx.conf
sed -i 's|/app/nginx|/opt/termix/nginx|g' /etc/nginx/nginx.conf
sed -i 's|listen ${PORT};|listen 80;|g' /etc/nginx/nginx.conf
nginx -t && systemctl reload nginx
msg_ok "Updated Nginx Configuration"
else
msg_warn "Nginx configuration not updated. If Termix doesn't work, restore from backup or update manually."
fi
msg_info "Starting Service"
msg_info "Starting Termix"
systemctl start termix
msg_ok "Started Service"
msg_ok "Started Termix"
msg_ok "Updated successfully!"
fi
exit

View File

@@ -19,9 +19,41 @@ $STD apt install -y \
python3 \
nginx \
openssl \
gettext-base
gettext-base \
libcairo2-dev \
libjpeg62-turbo-dev \
libpng-dev \
libtool-bin \
uuid-dev \
libvncserver-dev \
freerdp3-dev \
libssh2-1-dev \
libtelnet-dev \
libwebsockets-dev \
libpulse-dev \
libvorbis-dev \
libwebp-dev \
libssl-dev \
libpango1.0-dev \
libswscale-dev \
libavcodec-dev \
libavutil-dev \
libavformat-dev
msg_ok "Installed Dependencies"
msg_info "Building Guacamole Server (guacd)"
fetch_and_deploy_gh_tag "guacd" "apache/guacamole-server" "latest" "/opt/guacamole-server"
cd /opt/guacamole-server
export CPPFLAGS="-Wno-error=deprecated-declarations"
$STD autoreconf -fi
$STD ./configure --with-init-dir=/etc/init.d --enable-allow-freerdp-snapshots
$STD make
$STD make install
$STD ldconfig
cd /opt
rm -rf /opt/guacamole-server
msg_ok "Built Guacamole Server (guacd)"
NODE_VERSION="22" setup_nodejs
fetch_and_deploy_gh_release "termix" "Termix-SSH/Termix"
@@ -74,10 +106,36 @@ systemctl reload nginx
msg_ok "Configured Nginx"
msg_info "Creating Service"
mkdir -p /etc/guacamole
cat <<EOF >/etc/guacamole/guacd.conf
[server]
bind_host = 127.0.0.1
bind_port = 4822
EOF
cat <<EOF >/etc/systemd/system/guacd.service
[Unit]
Description=Guacamole Proxy Daemon (guacd)
After=network.target
[Service]
Type=forking
ExecStart=/etc/init.d/guacd start
ExecStop=/etc/init.d/guacd stop
ExecReload=/etc/init.d/guacd restart
PIDFile=/var/run/guacd.pid
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
cat <<EOF >/etc/systemd/system/termix.service
[Unit]
Description=Termix Backend
After=network.target
After=network.target guacd.service
Wants=guacd.service
[Service]
Type=simple
@@ -92,7 +150,7 @@ RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now termix
systemctl enable -q --now guacd termix
msg_ok "Created Service"
motd_ssh