mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-03-20 08:52:59 +01:00
Compare commits
4 Commits
refactor/p
...
CrazyWolf1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e1bc1e4fdb | ||
|
|
2fc9bd3e30 | ||
|
|
2fb5503959 | ||
|
|
062c3c07d3 |
@@ -427,7 +427,7 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
|||||||
|
|
||||||
### 🆕 New Scripts
|
### 🆕 New Scripts
|
||||||
|
|
||||||
- Split-Pro ([#12975](https://github.com/community-scripts/ProxmoxVE/pull/12975))
|
- split-pro ([#12975](https://github.com/community-scripts/ProxmoxVE/pull/12975))
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
@@ -436,14 +436,8 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
|||||||
- Paperless-NGX: increase default RAM to 3GB [@MickLesk](https://github.com/MickLesk) ([#13018](https://github.com/community-scripts/ProxmoxVE/pull/13018))
|
- Paperless-NGX: increase default RAM to 3GB [@MickLesk](https://github.com/MickLesk) ([#13018](https://github.com/community-scripts/ProxmoxVE/pull/13018))
|
||||||
- Plex: restart service after update to apply new version [@MickLesk](https://github.com/MickLesk) ([#13017](https://github.com/community-scripts/ProxmoxVE/pull/13017))
|
- Plex: restart service after update to apply new version [@MickLesk](https://github.com/MickLesk) ([#13017](https://github.com/community-scripts/ProxmoxVE/pull/13017))
|
||||||
|
|
||||||
- #### ✨ New Features
|
|
||||||
|
|
||||||
- tools: centralize GPU group setup via setup_hwaccel [@MickLesk](https://github.com/MickLesk) ([#13044](https://github.com/community-scripts/ProxmoxVE/pull/13044))
|
|
||||||
- Termix: add guacd build and systemd integration [@MickLesk](https://github.com/MickLesk) ([#12999](https://github.com/community-scripts/ProxmoxVE/pull/12999))
|
|
||||||
|
|
||||||
- #### 🔧 Refactor
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
- Refactor: Jellyfin repo, ffmpeg package and symlinks [@MickLesk](https://github.com/MickLesk) ([#13045](https://github.com/community-scripts/ProxmoxVE/pull/13045))
|
|
||||||
- pve-scripts-local: Increase default disk size from 4GB to 10GB [@MickLesk](https://github.com/MickLesk) ([#13009](https://github.com/community-scripts/ProxmoxVE/pull/13009))
|
- pve-scripts-local: Increase default disk size from 4GB to 10GB [@MickLesk](https://github.com/MickLesk) ([#13009](https://github.com/community-scripts/ProxmoxVE/pull/13009))
|
||||||
|
|
||||||
### 💾 Core
|
### 💾 Core
|
||||||
|
|||||||
@@ -39,23 +39,14 @@ function update_script() {
|
|||||||
msg_ok "Updated Intel Dependencies"
|
msg_ok "Updated Intel Dependencies"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg_info "Setting up Jellyfin Repository"
|
|
||||||
setup_deb822_repo \
|
|
||||||
"jellyfin" \
|
|
||||||
"https://repo.jellyfin.org/jellyfin_team.gpg.key" \
|
|
||||||
"https://repo.jellyfin.org/$(get_os_info id)" \
|
|
||||||
"$(get_os_info codename)"
|
|
||||||
msg_ok "Set up Jellyfin Repository"
|
|
||||||
|
|
||||||
msg_info "Updating Jellyfin"
|
msg_info "Updating Jellyfin"
|
||||||
ensure_dependencies libjemalloc2
|
ensure_dependencies libjemalloc2
|
||||||
if [[ ! -f /usr/lib/libjemalloc.so ]]; then
|
if [[ ! -f /usr/lib/libjemalloc.so ]]; then
|
||||||
ln -sf /usr/lib/x86_64-linux-gnu/libjemalloc.so.2 /usr/lib/libjemalloc.so
|
ln -sf /usr/lib/x86_64-linux-gnu/libjemalloc.so.2 /usr/lib/libjemalloc.so
|
||||||
fi
|
fi
|
||||||
|
$STD apt update
|
||||||
$STD apt -y upgrade
|
$STD apt -y upgrade
|
||||||
$STD apt -y --with-new-pkgs upgrade jellyfin jellyfin-server jellyfin-ffmpeg7
|
$STD apt -y --with-new-pkgs upgrade jellyfin jellyfin-server
|
||||||
ln -sf /usr/lib/jellyfin-ffmpeg/ffmpeg /usr/bin/ffmpeg
|
|
||||||
ln -sf /usr/lib/jellyfin-ffmpeg/ffprobe /usr/bin/ffprobe
|
|
||||||
msg_ok "Updated Jellyfin"
|
msg_ok "Updated Jellyfin"
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
exit
|
exit
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -f /etc/containers/systemd/homeassistant.container ]]; then
|
if [[ ! -f /etc/systemd/system/homeassistant.service ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|||||||
34
ct/reitti.sh
34
ct/reitti.sh
@@ -89,17 +89,49 @@ EOF
|
|||||||
msg_ok "Started Service"
|
msg_ok "Started Service"
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if check_for_gh_release "photon" "komoot/photon"; then
|
if check_for_gh_release "photon" "komoot/photon"; then
|
||||||
|
if [[ -f "$HOME/.photon" ]] && [[ "$(cat "$HOME/.photon")" == 0.7 ]]; then
|
||||||
|
CURRENT_VERSION="$(<"$HOME/.photon")"
|
||||||
|
echo
|
||||||
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||||
|
echo "Photon v1 upgrade detected (breaking change)"
|
||||||
|
echo
|
||||||
|
echo "Your current version: $CURRENT_VERSION"
|
||||||
|
echo
|
||||||
|
echo "Photon v1 requires a manual migration before updating."
|
||||||
|
echo
|
||||||
|
echo "You need to:"
|
||||||
|
echo " 1. Remove existing geocoding data (not actual reitti data):"
|
||||||
|
echo " rm -rf /opt/photon_data"
|
||||||
|
echo
|
||||||
|
echo " 2. Follow the inial setup guide again:"
|
||||||
|
echo " https://github.com/community-scripts/ProxmoxVE/discussions/8737"
|
||||||
|
echo
|
||||||
|
echo " 3. Re-download and import Photon data for v1"
|
||||||
|
echo
|
||||||
|
read -rp "Do you want to continue anyway? (y/N): " CONTINUE
|
||||||
|
echo
|
||||||
|
|
||||||
|
if [[ ! "$CONTINUE" =~ ^[Yy]$ ]]; then
|
||||||
|
msg_info "Migration required. Update cancelled."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
msg_warn "Continuing without migration may break Photon in the future!"
|
||||||
|
fi
|
||||||
|
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
systemctl stop photon
|
systemctl stop photon
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
rm -f /opt/photon/photon.jar
|
rm -f /opt/photon/photon.jar
|
||||||
USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "photon" "komoot/photon" "singlefile" "latest" "/opt/photon" "photon-0*.jar"
|
USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "photon" "komoot/photon" "singlefile" "latest" "/opt/photon" "photon-*.jar"
|
||||||
mv /opt/photon/photon-*.jar /opt/photon/photon.jar
|
mv /opt/photon/photon-*.jar /opt/photon/photon.jar
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start photon
|
systemctl start photon
|
||||||
|
systemctl restart nginx
|
||||||
msg_ok "Started Service"
|
msg_ok "Started Service"
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
fi
|
fi
|
||||||
|
|||||||
114
ct/termix.sh
114
ct/termix.sh
@@ -29,116 +29,10 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
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 ]] || grep -q "Type=forking" /etc/systemd/system/guacd.service 2>/dev/null; then
|
|
||||||
cat <<EOF >/etc/systemd/system/guacd.service
|
|
||||||
[Unit]
|
|
||||||
Description=Guacamole Proxy Daemon (guacd)
|
|
||||||
After=network.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=simple
|
|
||||||
ExecStart=/usr/local/sbin/guacd -f -b 127.0.0.1 -l 4822
|
|
||||||
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
|
if check_for_gh_release "termix" "Termix-SSH/Termix"; then
|
||||||
msg_info "Stopping Termix"
|
msg_info "Stopping Service"
|
||||||
systemctl stop termix
|
systemctl stop termix
|
||||||
msg_ok "Stopped Termix"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
msg_info "Migrating Configuration"
|
|
||||||
if [[ ! -f /opt/termix/.env ]]; then
|
|
||||||
cat <<EOF >/opt/termix/.env
|
|
||||||
NODE_ENV=production
|
|
||||||
DATA_DIR=/opt/termix/data
|
|
||||||
GUACD_HOST=127.0.0.1
|
|
||||||
GUACD_PORT=4822
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
if ! grep -q "EnvironmentFile" /etc/systemd/system/termix.service 2>/dev/null; then
|
|
||||||
cat <<EOF >/etc/systemd/system/termix.service
|
|
||||||
[Unit]
|
|
||||||
Description=Termix Backend
|
|
||||||
After=network.target guacd.service
|
|
||||||
Wants=guacd.service
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=simple
|
|
||||||
User=root
|
|
||||||
WorkingDirectory=/opt/termix
|
|
||||||
EnvironmentFile=/opt/termix/.env
|
|
||||||
ExecStart=/usr/bin/node /opt/termix/dist/backend/backend/starter.js
|
|
||||||
Restart=on-failure
|
|
||||||
RestartSec=5
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
EOF
|
|
||||||
systemctl daemon-reload
|
|
||||||
fi
|
|
||||||
msg_ok "Migrated Configuration"
|
|
||||||
|
|
||||||
msg_info "Backing up Data"
|
msg_info "Backing up Data"
|
||||||
cp -r /opt/termix/data /opt/termix_data_backup
|
cp -r /opt/termix/data /opt/termix_data_backup
|
||||||
@@ -208,9 +102,9 @@ EOF
|
|||||||
msg_warn "Nginx configuration not updated. If Termix doesn't work, restore from backup or update manually."
|
msg_warn "Nginx configuration not updated. If Termix doesn't work, restore from backup or update manually."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg_info "Starting Termix"
|
msg_info "Starting Service"
|
||||||
systemctl start termix
|
systemctl start termix
|
||||||
msg_ok "Started Termix"
|
msg_ok "Started Service"
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ setup_hwaccel
|
|||||||
msg_info "Installing Channels DVR Server (Patience)"
|
msg_info "Installing Channels DVR Server (Patience)"
|
||||||
cd /opt
|
cd /opt
|
||||||
$STD bash <(curl -fsSL https://getchannels.com/dvr/setup.sh)
|
$STD bash <(curl -fsSL https://getchannels.com/dvr/setup.sh)
|
||||||
|
sed -i -e 's/^sgx:x:104:$/render:x:104:root/' -e 's/^render:x:106:root$/sgx:x:106:/' /etc/group
|
||||||
msg_ok "Installed Channels DVR Server"
|
msg_ok "Installed Channels DVR Server"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@@ -13,10 +13,18 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
setup_hwaccel "emby"
|
setup_hwaccel
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "emby" "MediaBrowser/Emby.Releases" "binary"
|
fetch_and_deploy_gh_release "emby" "MediaBrowser/Emby.Releases" "binary"
|
||||||
|
|
||||||
|
msg_info "Configuring Emby"
|
||||||
|
if [[ "$CTTYPE" == "0" ]]; then
|
||||||
|
sed -i -e 's/^ssl-cert:x:104:$/render:x:104:root,emby/' -e 's/^render:x:108:root,emby$/ssl-cert:x:108:/' /etc/group
|
||||||
|
else
|
||||||
|
sed -i -e 's/^ssl-cert:x:104:$/render:x:104:emby/' -e 's/^render:x:108:emby$/ssl-cert:x:108:/' /etc/group
|
||||||
|
fi
|
||||||
|
msg_ok "Configured Emby"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
cleanup_lxc
|
cleanup_lxc
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# Copyright (c) 2021-2026 community-scripts ORG
|
# Copyright (c) 2021-2026 tteck
|
||||||
# Author: MickLesk (CanbiZ)
|
# Author: tteck (tteckster)
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
# Source: https://jellyfin.org/
|
# Source: https://jellyfin.org/
|
||||||
|
|
||||||
@@ -14,30 +14,31 @@ network_check
|
|||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_custom "ℹ️" "${GN}" "If NVIDIA GPU passthrough is detected, you'll be asked whether to install drivers in the container"
|
msg_custom "ℹ️" "${GN}" "If NVIDIA GPU passthrough is detected, you'll be asked whether to install drivers in the container"
|
||||||
setup_hwaccel "jellyfin"
|
setup_hwaccel
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Jellyfin"
|
||||||
ensure_dependencies libjemalloc2
|
VERSION="$(awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release)"
|
||||||
|
if ! dpkg -s libjemalloc2 >/dev/null 2>&1; then
|
||||||
|
$STD apt install -y libjemalloc2
|
||||||
|
fi
|
||||||
if [[ ! -f /usr/lib/libjemalloc.so ]]; then
|
if [[ ! -f /usr/lib/libjemalloc.so ]]; then
|
||||||
ln -sf /usr/lib/x86_64-linux-gnu/libjemalloc.so.2 /usr/lib/libjemalloc.so
|
ln -sf /usr/lib/x86_64-linux-gnu/libjemalloc.so.2 /usr/lib/libjemalloc.so
|
||||||
fi
|
fi
|
||||||
msg_ok "Installed Dependencies"
|
if [[ ! -d /etc/apt/keyrings ]]; then
|
||||||
|
mkdir -p /etc/apt/keyrings
|
||||||
|
fi
|
||||||
|
curl -fsSL https://repo.jellyfin.org/jellyfin_team.gpg.key | gpg --dearmor --yes --output /etc/apt/keyrings/jellyfin.gpg
|
||||||
|
cat <<EOF >/etc/apt/sources.list.d/jellyfin.sources
|
||||||
|
Types: deb
|
||||||
|
URIs: https://repo.jellyfin.org/${PCT_OSTYPE}
|
||||||
|
Suites: ${VERSION}
|
||||||
|
Components: main
|
||||||
|
Architectures: amd64
|
||||||
|
Signed-By: /etc/apt/keyrings/jellyfin.gpg
|
||||||
|
EOF
|
||||||
|
|
||||||
msg_info "Setting up Jellyfin Repository"
|
$STD apt update
|
||||||
setup_deb822_repo \
|
$STD apt install -y jellyfin
|
||||||
"jellyfin" \
|
|
||||||
"https://repo.jellyfin.org/jellyfin_team.gpg.key" \
|
|
||||||
"https://repo.jellyfin.org/$(get_os_info id)" \
|
|
||||||
"$(get_os_info codename)"
|
|
||||||
msg_ok "Set up Jellyfin Repository"
|
|
||||||
|
|
||||||
msg_info "Installing Jellyfin"
|
|
||||||
$STD apt install -y jellyfin jellyfin-ffmpeg7
|
|
||||||
ln -sf /usr/lib/jellyfin-ffmpeg/ffmpeg /usr/bin/ffmpeg
|
|
||||||
ln -sf /usr/lib/jellyfin-ffmpeg/ffprobe /usr/bin/ffprobe
|
|
||||||
msg_ok "Installed Jellyfin"
|
|
||||||
|
|
||||||
msg_info "Configuring Jellyfin"
|
|
||||||
# Configure log rotation to prevent disk fill (keeps fail2ban compatibility) (PR: #1690 / Issue: #11224)
|
# Configure log rotation to prevent disk fill (keeps fail2ban compatibility) (PR: #1690 / Issue: #11224)
|
||||||
cat <<EOF >/etc/logrotate.d/jellyfin
|
cat <<EOF >/etc/logrotate.d/jellyfin
|
||||||
/var/log/jellyfin/*.log {
|
/var/log/jellyfin/*.log {
|
||||||
@@ -54,7 +55,12 @@ EOF
|
|||||||
chown -R jellyfin:adm /etc/jellyfin
|
chown -R jellyfin:adm /etc/jellyfin
|
||||||
sleep 10
|
sleep 10
|
||||||
systemctl restart jellyfin
|
systemctl restart jellyfin
|
||||||
msg_ok "Configured Jellyfin"
|
if [[ "$CTTYPE" == "0" ]]; then
|
||||||
|
sed -i -e 's/^ssl-cert:x:104:$/render:x:104:root,jellyfin/' -e 's/^render:x:108:root,jellyfin$/ssl-cert:x:108:/' /etc/group
|
||||||
|
else
|
||||||
|
sed -i -e 's/^ssl-cert:x:104:$/render:x:104:jellyfin/' -e 's/^render:x:108:jellyfin$/ssl-cert:x:108:/' /etc/group
|
||||||
|
fi
|
||||||
|
msg_ok "Installed Jellyfin"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ EOF
|
|||||||
$STD apt update
|
$STD apt update
|
||||||
msg_ok "Set up Intel® Repositories"
|
msg_ok "Set up Intel® Repositories"
|
||||||
|
|
||||||
setup_hwaccel "ollama"
|
setup_hwaccel
|
||||||
|
|
||||||
msg_info "Installing Intel® Level Zero"
|
msg_info "Installing Intel® Level Zero"
|
||||||
# Debian 13+ has newer Level Zero packages in system repos that conflict with Intel repo packages
|
# Debian 13+ has newer Level Zero packages in system repos that conflict with Intel repo packages
|
||||||
@@ -89,6 +89,8 @@ msg_info "Creating ollama User and Group"
|
|||||||
if ! id ollama >/dev/null 2>&1; then
|
if ! id ollama >/dev/null 2>&1; then
|
||||||
useradd -r -s /usr/sbin/nologin -U -m -d /usr/share/ollama ollama
|
useradd -r -s /usr/sbin/nologin -U -m -d /usr/share/ollama ollama
|
||||||
fi
|
fi
|
||||||
|
$STD usermod -aG render ollama || true
|
||||||
|
$STD usermod -aG video ollama || true
|
||||||
$STD usermod -aG ollama $(id -u -n)
|
$STD usermod -aG ollama $(id -u -n)
|
||||||
msg_ok "Created ollama User and adjusted Groups"
|
msg_ok "Created ollama User and adjusted Groups"
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
setup_hwaccel "plex"
|
setup_hwaccel
|
||||||
|
|
||||||
msg_info "Setting Up Plex Media Server Repository"
|
msg_info "Setting Up Plex Media Server Repository"
|
||||||
setup_deb822_repo \
|
setup_deb822_repo \
|
||||||
@@ -26,6 +26,11 @@ msg_ok "Set Up Plex Media Server Repository"
|
|||||||
|
|
||||||
msg_info "Installing Plex Media Server"
|
msg_info "Installing Plex Media Server"
|
||||||
$STD apt install -y plexmediaserver
|
$STD apt install -y plexmediaserver
|
||||||
|
if [[ "$CTTYPE" == "0" ]]; then
|
||||||
|
sed -i -e 's/^ssl-cert:x:104:plex$/render:x:104:root,plex/' -e 's/^render:x:108:root$/ssl-cert:x:108:plex/' /etc/group
|
||||||
|
else
|
||||||
|
sed -i -e 's/^ssl-cert:x:104:plex$/render:x:104:plex/' -e 's/^render:x:108:$/ssl-cert:x:108:/' /etc/group
|
||||||
|
fi
|
||||||
msg_ok "Installed Plex Media Server"
|
msg_ok "Installed Plex Media Server"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@@ -45,58 +45,32 @@ systemctl enable -q --now podman.socket
|
|||||||
echo -e 'unqualified-search-registries=["docker.io"]' >>/etc/containers/registries.conf
|
echo -e 'unqualified-search-registries=["docker.io"]' >>/etc/containers/registries.conf
|
||||||
msg_ok "Installed Podman"
|
msg_ok "Installed Podman"
|
||||||
|
|
||||||
mkdir -p /etc/containers/systemd
|
|
||||||
|
|
||||||
read -r -p "${TAB3}Would you like to add Portainer? <y/N> " prompt
|
read -r -p "${TAB3}Would you like to add Portainer? <y/N> " prompt
|
||||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||||
msg_info "Installing Portainer $PORTAINER_LATEST_VERSION"
|
msg_info "Installing Portainer $PORTAINER_LATEST_VERSION"
|
||||||
podman volume create portainer_data >/dev/null
|
podman volume create portainer_data >/dev/null
|
||||||
cat <<EOF >/etc/containers/systemd/portainer.container
|
$STD podman run -d \
|
||||||
[Unit]
|
-p 8000:8000 \
|
||||||
Description=Portainer Container
|
-p 9443:9443 \
|
||||||
After=network-online.target
|
--name=portainer \
|
||||||
|
--restart=always \
|
||||||
[Container]
|
-v /run/podman/podman.sock:/var/run/docker.sock \
|
||||||
Image=docker.io/portainer/portainer-ce:latest
|
-v portainer_data:/data \
|
||||||
ContainerName=portainer
|
portainer/portainer-ce:latest
|
||||||
PublishPort=8000:8000
|
|
||||||
PublishPort=9443:9443
|
|
||||||
Volume=/run/podman/podman.sock:/var/run/docker.sock
|
|
||||||
Volume=portainer_data:/data
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Restart=always
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=default.target multi-user.target
|
|
||||||
EOF
|
|
||||||
systemctl daemon-reload
|
|
||||||
systemctl enable -q --now portainer
|
|
||||||
msg_ok "Installed Portainer $PORTAINER_LATEST_VERSION"
|
msg_ok "Installed Portainer $PORTAINER_LATEST_VERSION"
|
||||||
else
|
else
|
||||||
read -r -p "${TAB3}Would you like to add the Portainer Agent? <y/N> " prompt
|
read -r -p "${TAB3}Would you like to add the Portainer Agent? <y/N> " prompt
|
||||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||||
msg_info "Installing Portainer agent $PORTAINER_AGENT_LATEST_VERSION"
|
msg_info "Installing Portainer agent $PORTAINER_AGENT_LATEST_VERSION"
|
||||||
cat <<EOF >/etc/containers/systemd/portainer-agent.container
|
podman volume create temp >/dev/null
|
||||||
[Unit]
|
podman volume remove temp >/dev/null
|
||||||
Description=Portainer Agent Container
|
$STD podman run -d \
|
||||||
After=network-online.target
|
-p 9001:9001 \
|
||||||
|
--name portainer_agent \
|
||||||
[Container]
|
--restart=always \
|
||||||
Image=docker.io/portainer/agent:latest
|
-v /run/podman/podman.sock:/var/run/docker.sock \
|
||||||
ContainerName=portainer_agent
|
-v /var/lib/containers/storage/volumes:/var/lib/docker/volumes \
|
||||||
PublishPort=9001:9001
|
portainer/agent
|
||||||
Volume=/run/podman/podman.sock:/var/run/docker.sock
|
|
||||||
Volume=/var/lib/containers/storage/volumes:/var/lib/docker/volumes
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Restart=always
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=default.target multi-user.target
|
|
||||||
EOF
|
|
||||||
systemctl daemon-reload
|
|
||||||
systemctl enable -q --now portainer-agent
|
|
||||||
msg_ok "Installed Portainer Agent $PORTAINER_AGENT_LATEST_VERSION"
|
msg_ok "Installed Portainer Agent $PORTAINER_AGENT_LATEST_VERSION"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@@ -107,28 +81,18 @@ msg_ok "Pulled Home Assistant Image"
|
|||||||
|
|
||||||
msg_info "Installing Home Assistant"
|
msg_info "Installing Home Assistant"
|
||||||
$STD podman volume create hass_config
|
$STD podman volume create hass_config
|
||||||
cat <<EOF >/etc/containers/systemd/homeassistant.container
|
$STD podman run -d \
|
||||||
[Unit]
|
--name homeassistant \
|
||||||
Description=Home Assistant Container
|
--restart unless-stopped \
|
||||||
After=network-online.target
|
-v /dev:/dev \
|
||||||
|
-v hass_config:/config \
|
||||||
[Container]
|
-v /etc/localtime:/etc/localtime:ro \
|
||||||
Image=docker.io/homeassistant/home-assistant:stable
|
-v /etc/timezone:/etc/timezone:ro \
|
||||||
ContainerName=homeassistant
|
--net=host \
|
||||||
Volume=/dev:/dev
|
homeassistant/home-assistant:stable
|
||||||
Volume=hass_config:/config
|
podman generate systemd \
|
||||||
Volume=/etc/localtime:/etc/localtime:ro
|
--new --name homeassistant \
|
||||||
Volume=/etc/timezone:/etc/timezone:ro
|
>/etc/systemd/system/homeassistant.service
|
||||||
Network=host
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Restart=always
|
|
||||||
TimeoutStartSec=300
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=default.target multi-user.target
|
|
||||||
EOF
|
|
||||||
systemctl daemon-reload
|
|
||||||
systemctl enable -q --now homeassistant
|
systemctl enable -q --now homeassistant
|
||||||
msg_ok "Installed Home Assistant"
|
msg_ok "Installed Home Assistant"
|
||||||
|
|
||||||
|
|||||||
@@ -45,58 +45,32 @@ systemctl enable -q --now podman.socket
|
|||||||
echo -e 'unqualified-search-registries=["docker.io"]' >>/etc/containers/registries.conf
|
echo -e 'unqualified-search-registries=["docker.io"]' >>/etc/containers/registries.conf
|
||||||
msg_ok "Installed Podman"
|
msg_ok "Installed Podman"
|
||||||
|
|
||||||
mkdir -p /etc/containers/systemd
|
|
||||||
|
|
||||||
read -r -p "${TAB3}Would you like to add Portainer? <y/N> " prompt
|
read -r -p "${TAB3}Would you like to add Portainer? <y/N> " prompt
|
||||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||||
msg_info "Installing Portainer $PORTAINER_LATEST_VERSION"
|
msg_info "Installing Portainer $PORTAINER_LATEST_VERSION"
|
||||||
podman volume create portainer_data >/dev/null
|
podman volume create portainer_data >/dev/null
|
||||||
cat <<EOF >/etc/containers/systemd/portainer.container
|
$STD podman run -d \
|
||||||
[Unit]
|
-p 8000:8000 \
|
||||||
Description=Portainer Container
|
-p 9443:9443 \
|
||||||
After=network-online.target
|
--name=portainer \
|
||||||
|
--restart=always \
|
||||||
[Container]
|
-v /run/podman/podman.sock:/var/run/docker.sock \
|
||||||
Image=docker.io/portainer/portainer-ce:latest
|
-v portainer_data:/data \
|
||||||
ContainerName=portainer
|
portainer/portainer-ce:latest
|
||||||
PublishPort=8000:8000
|
|
||||||
PublishPort=9443:9443
|
|
||||||
Volume=/run/podman/podman.sock:/var/run/docker.sock
|
|
||||||
Volume=portainer_data:/data
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Restart=always
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=default.target multi-user.target
|
|
||||||
EOF
|
|
||||||
systemctl daemon-reload
|
|
||||||
systemctl enable -q --now portainer
|
|
||||||
msg_ok "Installed Portainer $PORTAINER_LATEST_VERSION"
|
msg_ok "Installed Portainer $PORTAINER_LATEST_VERSION"
|
||||||
else
|
else
|
||||||
read -r -p "${TAB3}Would you like to add the Portainer Agent? <y/N> " prompt
|
read -r -p "${TAB3}Would you like to add the Portainer Agent? <y/N> " prompt
|
||||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||||
msg_info "Installing Portainer agent $PORTAINER_AGENT_LATEST_VERSION"
|
msg_info "Installing Portainer agent $PORTAINER_AGENT_LATEST_VERSION"
|
||||||
cat <<EOF >/etc/containers/systemd/portainer-agent.container
|
podman volume create temp >/dev/null
|
||||||
[Unit]
|
podman volume remove temp >/dev/null
|
||||||
Description=Portainer Agent Container
|
$STD podman run -d \
|
||||||
After=network-online.target
|
-p 9001:9001 \
|
||||||
|
--name portainer_agent \
|
||||||
[Container]
|
--restart=always \
|
||||||
Image=docker.io/portainer/agent:latest
|
-v /run/podman/podman.sock:/var/run/docker.sock \
|
||||||
ContainerName=portainer_agent
|
-v /var/lib/containers/storage/volumes:/var/lib/docker/volumes \
|
||||||
PublishPort=9001:9001
|
portainer/agent
|
||||||
Volume=/run/podman/podman.sock:/var/run/docker.sock
|
|
||||||
Volume=/var/lib/containers/storage/volumes:/var/lib/docker/volumes
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Restart=always
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=default.target multi-user.target
|
|
||||||
EOF
|
|
||||||
systemctl daemon-reload
|
|
||||||
systemctl enable -q --now portainer-agent
|
|
||||||
msg_ok "Installed Portainer Agent $PORTAINER_AGENT_LATEST_VERSION"
|
msg_ok "Installed Portainer Agent $PORTAINER_AGENT_LATEST_VERSION"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ msg_ok "Configured RabbitMQ"
|
|||||||
|
|
||||||
USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "reitti" "dedicatedcode/reitti" "singlefile" "latest" "/opt/reitti" "reitti-app.jar"
|
USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "reitti" "dedicatedcode/reitti" "singlefile" "latest" "/opt/reitti" "reitti-app.jar"
|
||||||
mv /opt/reitti/reitti-*.jar /opt/reitti/reitti.jar
|
mv /opt/reitti/reitti-*.jar /opt/reitti/reitti.jar
|
||||||
USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "photon" "komoot/photon" "singlefile" "latest" "/opt/photon" "photon-0*.jar"
|
USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "photon" "komoot/photon" "singlefile" "latest" "/opt/photon" "photon-*.jar"
|
||||||
mv /opt/photon/photon-*.jar /opt/photon/photon.jar
|
mv /opt/photon/photon-*.jar /opt/photon/photon.jar
|
||||||
|
|
||||||
msg_info "Installing Nginx Tile Cache"
|
msg_info "Installing Nginx Tile Cache"
|
||||||
|
|||||||
@@ -19,41 +19,9 @@ $STD apt install -y \
|
|||||||
python3 \
|
python3 \
|
||||||
nginx \
|
nginx \
|
||||||
openssl \
|
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_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
|
NODE_VERSION="22" setup_nodejs
|
||||||
fetch_and_deploy_gh_release "termix" "Termix-SSH/Termix"
|
fetch_and_deploy_gh_release "termix" "Termix-SSH/Termix"
|
||||||
|
|
||||||
@@ -106,46 +74,17 @@ systemctl reload nginx
|
|||||||
msg_ok "Configured Nginx"
|
msg_ok "Configured Nginx"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
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 >/opt/termix/.env
|
|
||||||
NODE_ENV=production
|
|
||||||
DATA_DIR=/opt/termix/data
|
|
||||||
GUACD_HOST=127.0.0.1
|
|
||||||
GUACD_PORT=4822
|
|
||||||
EOF
|
|
||||||
|
|
||||||
cat <<EOF >/etc/systemd/system/guacd.service
|
|
||||||
[Unit]
|
|
||||||
Description=Guacamole Proxy Daemon (guacd)
|
|
||||||
After=network.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=simple
|
|
||||||
ExecStart=/usr/local/sbin/guacd -f -b 127.0.0.1 -l 4822
|
|
||||||
Restart=on-failure
|
|
||||||
RestartSec=5
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
EOF
|
|
||||||
|
|
||||||
cat <<EOF >/etc/systemd/system/termix.service
|
cat <<EOF >/etc/systemd/system/termix.service
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Termix Backend
|
Description=Termix Backend
|
||||||
After=network.target guacd.service
|
After=network.target
|
||||||
Wants=guacd.service
|
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
Type=simple
|
||||||
User=root
|
User=root
|
||||||
WorkingDirectory=/opt/termix
|
WorkingDirectory=/opt/termix
|
||||||
EnvironmentFile=/opt/termix/.env
|
Environment=NODE_ENV=production
|
||||||
|
Environment=DATA_DIR=/opt/termix/data
|
||||||
ExecStart=/usr/bin/node /opt/termix/dist/backend/backend/starter.js
|
ExecStart=/usr/bin/node /opt/termix/dist/backend/backend/starter.js
|
||||||
Restart=on-failure
|
Restart=on-failure
|
||||||
RestartSec=5
|
RestartSec=5
|
||||||
@@ -153,7 +92,7 @@ RestartSec=5
|
|||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
EOF
|
EOF
|
||||||
systemctl enable -q --now guacd termix
|
systemctl enable -q --now termix
|
||||||
msg_ok "Created Service"
|
msg_ok "Created Service"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@@ -1979,47 +1979,6 @@ extract_version_from_json() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
|
||||||
# Get latest GitHub tag (for repos that only publish tags, not releases).
|
|
||||||
#
|
|
||||||
# Usage:
|
|
||||||
# get_latest_gh_tag "owner/repo" [prefix]
|
|
||||||
#
|
|
||||||
# Arguments:
|
|
||||||
# $1 - GitHub repo (owner/repo)
|
|
||||||
# $2 - Optional prefix filter (e.g., "v" to only match tags starting with "v")
|
|
||||||
#
|
|
||||||
# Returns:
|
|
||||||
# Latest tag name (stdout), or returns 1 on failure
|
|
||||||
# ------------------------------------------------------------------------------
|
|
||||||
get_latest_gh_tag() {
|
|
||||||
local repo="$1"
|
|
||||||
local prefix="${2:-}"
|
|
||||||
local temp_file
|
|
||||||
temp_file=$(mktemp)
|
|
||||||
|
|
||||||
if ! github_api_call "https://api.github.com/repos/${repo}/tags?per_page=50" "$temp_file"; then
|
|
||||||
rm -f "$temp_file"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
local tag=""
|
|
||||||
if [[ -n "$prefix" ]]; then
|
|
||||||
tag=$(jq -r --arg p "$prefix" '[.[] | select(.name | startswith($p))][0].name // empty' "$temp_file")
|
|
||||||
else
|
|
||||||
tag=$(jq -r '.[0].name // empty' "$temp_file")
|
|
||||||
fi
|
|
||||||
|
|
||||||
rm -f "$temp_file"
|
|
||||||
|
|
||||||
if [[ -z "$tag" ]]; then
|
|
||||||
msg_error "No tags found for ${repo}"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "$tag"
|
|
||||||
}
|
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
# Get latest GitHub release version with fallback to tags
|
# Get latest GitHub release version with fallback to tags
|
||||||
# Usage: get_latest_github_release "owner/repo" [strip_v] [include_prerelease]
|
# Usage: get_latest_github_release "owner/repo" [strip_v] [include_prerelease]
|
||||||
@@ -4256,8 +4215,6 @@ function setup_gs() {
|
|||||||
# - NVIDIA requires matching host driver version
|
# - NVIDIA requires matching host driver version
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
function setup_hwaccel() {
|
function setup_hwaccel() {
|
||||||
local service_user="${1:-}"
|
|
||||||
|
|
||||||
# Check if user explicitly disabled GPU in advanced settings
|
# Check if user explicitly disabled GPU in advanced settings
|
||||||
# ENABLE_GPU is exported from build.func
|
# ENABLE_GPU is exported from build.func
|
||||||
if [[ "${ENABLE_GPU:-no}" == "no" ]]; then
|
if [[ "${ENABLE_GPU:-no}" == "no" ]]; then
|
||||||
@@ -4509,7 +4466,7 @@ function setup_hwaccel() {
|
|||||||
# ═══════════════════════════════════════════════════════════════════════════
|
# ═══════════════════════════════════════════════════════════════════════════
|
||||||
# Device Permissions
|
# Device Permissions
|
||||||
# ═══════════════════════════════════════════════════════════════════════════
|
# ═══════════════════════════════════════════════════════════════════════════
|
||||||
_setup_gpu_permissions "$in_ct" "$service_user"
|
_setup_gpu_permissions "$in_ct"
|
||||||
|
|
||||||
cache_installed_version "hwaccel" "1.0"
|
cache_installed_version "hwaccel" "1.0"
|
||||||
msg_ok "Setup Hardware Acceleration"
|
msg_ok "Setup Hardware Acceleration"
|
||||||
@@ -5143,7 +5100,6 @@ EOF
|
|||||||
# ══════════════════════════════════════════════════════════════════════════════
|
# ══════════════════════════════════════════════════════════════════════════════
|
||||||
_setup_gpu_permissions() {
|
_setup_gpu_permissions() {
|
||||||
local in_ct="$1"
|
local in_ct="$1"
|
||||||
local service_user="${2:-}"
|
|
||||||
|
|
||||||
# /dev/dri permissions (Intel/AMD)
|
# /dev/dri permissions (Intel/AMD)
|
||||||
if [[ "$in_ct" == "0" && -d /dev/dri ]]; then
|
if [[ "$in_ct" == "0" && -d /dev/dri ]]; then
|
||||||
@@ -5210,12 +5166,6 @@ _setup_gpu_permissions() {
|
|||||||
chmod 666 /dev/kfd 2>/dev/null || true
|
chmod 666 /dev/kfd 2>/dev/null || true
|
||||||
msg_info "AMD ROCm compute device configured"
|
msg_info "AMD ROCm compute device configured"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Add service user to render and video groups for GPU hardware acceleration
|
|
||||||
if [[ -n "$service_user" ]]; then
|
|
||||||
$STD usermod -aG render "$service_user" 2>/dev/null || true
|
|
||||||
$STD usermod -aG video "$service_user" 2>/dev/null || true
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
|
|||||||
Reference in New Issue
Block a user