mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-12-18 05:03:30 +01:00
Compare commits
6 Commits
github-act
...
feat/gpu-a
| Author | SHA1 | Date | |
|---|---|---|---|
| 452b82e8a1 | |||
| 88104f3da6 | |||
| 81f5f586a1 | |||
| 61dd87c9e6 | |||
| b73b83d45d | |||
| 2578e365f4 |
35
CHANGELOG.md
35
CHANGELOG.md
@ -10,43 +10,8 @@
|
|||||||
> [!CAUTION]
|
> [!CAUTION]
|
||||||
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
|
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
|
||||||
|
|
||||||
## 2025-12-18
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- [HOTFIX] Fix Scanopy release check [@vhsdream](https://github.com/vhsdream) ([#10097](https://github.com/community-scripts/ProxmoxVE/pull/10097))
|
|
||||||
|
|
||||||
## 2025-12-17
|
## 2025-12-17
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- Tracktor: updated environment variables for latest release [@javedh-dev](https://github.com/javedh-dev) ([#10067](https://github.com/community-scripts/ProxmoxVE/pull/10067))
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- Semaphore: Fix release binary package fetching [@tremor021](https://github.com/tremor021) ([#10055](https://github.com/community-scripts/ProxmoxVE/pull/10055))
|
|
||||||
- update github repo for endurain [@johanngrobe](https://github.com/johanngrobe) ([#10074](https://github.com/community-scripts/ProxmoxVE/pull/10074))
|
|
||||||
|
|
||||||
- #### ✨ New Features
|
|
||||||
|
|
||||||
- use setup_hwaccel for robust hardware acceleration [@MickLesk](https://github.com/MickLesk) ([#10054](https://github.com/community-scripts/ProxmoxVE/pull/10054))
|
|
||||||
- add hardware acceleration support for 17 additional apps [@MickLesk](https://github.com/MickLesk) ([#10061](https://github.com/community-scripts/ProxmoxVE/pull/10061))
|
|
||||||
|
|
||||||
- #### 🔧 Refactor
|
|
||||||
|
|
||||||
- Telegraf: Small refactor [@tremor021](https://github.com/tremor021) ([#10056](https://github.com/community-scripts/ProxmoxVE/pull/10056))
|
|
||||||
- Refactor: Salt [@tremor021](https://github.com/tremor021) ([#10057](https://github.com/community-scripts/ProxmoxVE/pull/10057))
|
|
||||||
- Refactor: Resilio Sync [@tremor021](https://github.com/tremor021) ([#10058](https://github.com/community-scripts/ProxmoxVE/pull/10058))
|
|
||||||
- Refactor: Reitti [@tremor021](https://github.com/tremor021) ([#10059](https://github.com/community-scripts/ProxmoxVE/pull/10059))
|
|
||||||
- Refactor: Redis [@tremor021](https://github.com/tremor021) ([#10060](https://github.com/community-scripts/ProxmoxVE/pull/10060))
|
|
||||||
- Refactor: Reactive-Resume [@tremor021](https://github.com/tremor021) ([#10062](https://github.com/community-scripts/ProxmoxVE/pull/10062))
|
|
||||||
- Refactor: RDTClient [@tremor021](https://github.com/tremor021) ([#10064](https://github.com/community-scripts/ProxmoxVE/pull/10064))
|
|
||||||
- Refactor: RabbitMQ [@tremor021](https://github.com/tremor021) ([#10065](https://github.com/community-scripts/ProxmoxVE/pull/10065))
|
|
||||||
- Qdrant: Code cleanup [@tremor021](https://github.com/tremor021) ([#10066](https://github.com/community-scripts/ProxmoxVE/pull/10066))
|
|
||||||
- Refactor: Pterodactyl Wings [@tremor021](https://github.com/tremor021) ([#10069](https://github.com/community-scripts/ProxmoxVE/pull/10069))
|
|
||||||
|
|
||||||
## 2025-12-16
|
## 2025-12-16
|
||||||
|
|
||||||
### 🆕 New Scripts
|
### 🆕 New Scripts
|
||||||
|
|||||||
@ -28,7 +28,7 @@ function update_script() {
|
|||||||
msg_error "No ${APP} installation found!"
|
msg_error "No ${APP} installation found!"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
if check_for_gh_release "endurain" "endurain-project/endurain"; then
|
if check_for_gh_release "endurain" "joaovitoriasilva/endurain"; then
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
systemctl stop endurain
|
systemctl stop endurain
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
@ -38,7 +38,7 @@ function update_script() {
|
|||||||
cp /opt/endurain/frontend/app/dist/env.js /opt/endurain.env.js
|
cp /opt/endurain/frontend/app/dist/env.js /opt/endurain.env.js
|
||||||
msg_ok "Created Backup"
|
msg_ok "Created Backup"
|
||||||
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "endurain" "endurain-project/endurain" "tarball" "latest" "/opt/endurain"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "endurain" "joaovitoriasilva/endurain" "tarball" "latest" "/opt/endurain"
|
||||||
|
|
||||||
msg_info "Preparing Update"
|
msg_info "Preparing Update"
|
||||||
cd /opt/endurain
|
cd /opt/endurain
|
||||||
|
|||||||
@ -23,23 +23,29 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -x /usr/local/bin/wings ]]; then
|
if [[ ! -f /usr/local/bin/wings ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/pterodactyl/wings/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
if check_for_gh_release "wings" "pterodactyl/wings"; then
|
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
systemctl stop wings
|
systemctl stop wings
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
msg_info "Updating ${APP} to v${RELEASE}"
|
||||||
rm /usr/local/bin/wings
|
rm /usr/local/bin/wings
|
||||||
fetch_and_deploy_gh_release "wings" "pterodactyl/wings" "singlefile" "latest" "/usr/local/bin" "wings_linux_amd64"
|
curl -fsSL "https://github.com/pterodactyl/wings/releases/download/v${RELEASE}/wings_linux_amd64" -o "/usr/local/bin/wings"
|
||||||
|
chmod u+x /usr/local/bin/wings
|
||||||
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
|
msg_ok "Updated $APP to v${RELEASE}"
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start wings
|
systemctl start wings
|
||||||
msg_ok "Started Service"
|
msg_ok "Started Service"
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|||||||
@ -29,11 +29,16 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
if grep -q "dl.cloudsmith.io" /etc/apt/sources.list.d/rabbitmq.list; then
|
if grep -q "dl.cloudsmith.io" /etc/apt/sources.list.d/rabbitmq.list; then
|
||||||
rm -f /etc/apt/sources.list.d/rabbitmq.list
|
rm -f /etc/apt/sources.list.d/rabbitmq.list
|
||||||
setup_deb822_repo \
|
cat <<EOF >/etc/apt/sources.list.d/rabbitmq.list
|
||||||
"rabbitmq" \
|
## Modern Erlang/OTP releases
|
||||||
"https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" \
|
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-erlang/debian/trixie trixie main
|
||||||
"https://deb1.rabbitmq.com/rabbitmq-server/debian/trixie" \
|
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-erlang/debian/trixie trixie main
|
||||||
"trixie"
|
|
||||||
|
## Provides modern RabbitMQ releases
|
||||||
|
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-server/debian/trixie trixie main
|
||||||
|
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-server/debian/trixie trixie main
|
||||||
|
EOF
|
||||||
|
$STD apt update
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
|
|||||||
@ -41,7 +41,7 @@ function update_script() {
|
|||||||
cp -R /opt/rdtc-backup/appsettings.json /opt/rdtc/
|
cp -R /opt/rdtc-backup/appsettings.json /opt/rdtc/
|
||||||
if dpkg-query -W dotnet-sdk-8.0 >/dev/null 2>&1; then
|
if dpkg-query -W dotnet-sdk-8.0 >/dev/null 2>&1; then
|
||||||
$STD apt remove --purge -y dotnet-sdk-8.0
|
$STD apt remove --purge -y dotnet-sdk-8.0
|
||||||
$STD apt install -y aspnetcore-runtime-9.0
|
$STD apt install -y dotnet-sdk-9.0
|
||||||
fi
|
fi
|
||||||
rm -rf /opt/rdtc-backup
|
rm -rf /opt/rdtc-backup
|
||||||
|
|
||||||
|
|||||||
@ -33,11 +33,12 @@ function update_script() {
|
|||||||
systemctl stop Reactive-Resume
|
systemctl stop Reactive-Resume
|
||||||
msg_ok "Stopped services"
|
msg_ok "Stopped services"
|
||||||
|
|
||||||
cp /opt/Reactive-Resume/.env /opt/rxresume.env
|
cp /opt/"$APP"/.env /opt/rxresume.env
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "Reactive-Resume" "lazy-media/Reactive-Resume" "tarball" "latest" "/opt/Reactive-Resume"
|
fetch_and_deploy_gh_release "Reactive-Resume" "lazy-media/Reactive-Resume" "tarball" "latest" "/opt/Reactive-Resume"
|
||||||
|
|
||||||
msg_info "Updating Reactive-Resume"
|
msg_info "Updating $APP"
|
||||||
cd /opt/Reactive-Resume
|
cd /opt/"$APP"
|
||||||
export PUPPETEER_SKIP_DOWNLOAD="true"
|
export PUPPETEER_SKIP_DOWNLOAD="true"
|
||||||
export NEXT_TELEMETRY_DISABLED=1
|
export NEXT_TELEMETRY_DISABLED=1
|
||||||
export CI="true"
|
export CI="true"
|
||||||
@ -45,8 +46,8 @@ function update_script() {
|
|||||||
$STD pnpm install --frozen-lockfile
|
$STD pnpm install --frozen-lockfile
|
||||||
$STD pnpm run build
|
$STD pnpm run build
|
||||||
$STD pnpm run prisma:generate
|
$STD pnpm run prisma:generate
|
||||||
mv /opt/rxresume.env /opt/Reactive-Resume/.env
|
mv /opt/rxresume.env /opt/"$APP"/.env
|
||||||
msg_ok "Updated Reactive-Resume"
|
msg_ok "Updated $APP"
|
||||||
|
|
||||||
msg_info "Updating Minio"
|
msg_info "Updating Minio"
|
||||||
systemctl stop minio
|
systemctl stop minio
|
||||||
|
|||||||
@ -27,10 +27,9 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg_info "Updating $APP LXC"
|
msg_info "Updating $APP LXC"
|
||||||
$STD apt update
|
$STD apt update
|
||||||
$STD apt upgrade -y
|
$STD apt -y upgrade
|
||||||
msg_ok "Updated $APP LXC"
|
msg_ok "Updated $APP LXC"
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
exit
|
exit
|
||||||
|
|||||||
@ -27,9 +27,9 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
msg_info "Updating Resilio Sync"
|
msg_info "Updating ${APP} LXC"
|
||||||
$STD apt update
|
$STD apt update
|
||||||
$STD apt upgrade -y
|
$STD apt -y upgrade
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|||||||
@ -29,14 +29,16 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
RELEASE=$(get_latest_github_release "saltstack/salt")
|
RELEASE=$(curl -fsSL https://api.github.com/repos/saltstack/salt/releases/latest | jq -r .tag_name | sed 's/^v//')
|
||||||
if check_for_gh_release "salt" "saltstack/salt"; then
|
if [[ ! -f /~.salt ]] || [[ "${RELEASE}" != "$(cat /~.salt)" ]]; then
|
||||||
msg_info "Updating Salt"
|
msg_info "Updating $APP to ${RELEASE}"
|
||||||
sed -i "s/^\(Pin: version \).*/\1${RELEASE}/" /etc/apt/preferences.d/salt-pin-1001
|
sed -i "s/^\(Pin: version \).*/\1${RELEASE}/" /etc/apt/preferences.d/salt-pin-1001
|
||||||
$STD apt update
|
$STD apt update
|
||||||
$STD apt upgrade -y
|
$STD apt upgrade -y
|
||||||
echo "${RELEASE}" >/~.salt
|
echo "${RELEASE}" >/~.salt
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
|
else
|
||||||
|
msg_ok "${APP} is already up to date (${RELEASE})"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|||||||
@ -29,7 +29,7 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if check_for_gh_release "scanopy" "scanopy/scanopy"; then
|
if check_for_gh_release "scanopy" "scanopy-io/scanopy"; then
|
||||||
msg_info "Stopping services"
|
msg_info "Stopping services"
|
||||||
systemctl stop scanopy-daemon scanopy-server
|
systemctl stop scanopy-daemon scanopy-server
|
||||||
msg_ok "Stopped services"
|
msg_ok "Stopped services"
|
||||||
|
|||||||
@ -33,7 +33,7 @@ function update_script() {
|
|||||||
systemctl stop semaphore
|
systemctl stop semaphore
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "semaphore" "semaphoreui/semaphore" "binary" "latest" "/opt/semaphore" "semaphore_*_linux_amd64.deb"
|
fetch_and_deploy_gh_release "semaphore" "semaphoreui/semaphore" "binary"
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start semaphore
|
systemctl start semaphore
|
||||||
|
|||||||
@ -34,7 +34,7 @@ function update_script() {
|
|||||||
|
|
||||||
msg_info "Updating Telegraf"
|
msg_info "Updating Telegraf"
|
||||||
$STD apt update
|
$STD apt update
|
||||||
$STD apt upgrade -y telegraf
|
$STD apt upgrade telegraf -y
|
||||||
msg_ok "Updated Telegraf"
|
msg_ok "Updated Telegraf"
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
|
|||||||
@ -34,39 +34,38 @@ function update_script() {
|
|||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
msg_info "Correcting Services"
|
msg_info "Correcting Services"
|
||||||
|
if [ -f /opt/tracktor/app/backend/.env ]; then
|
||||||
|
mv /opt/tracktor/app/backend/.env /opt/tracktor.env
|
||||||
|
echo 'AUTH_PIN=123456' >>/opt/tracktor.env
|
||||||
|
sed -i 's|^EnvironmentFile=.*|EnvironmentFile=/opt/tracktor.env|' /etc/systemd/system/tracktor.service
|
||||||
|
systemctl daemon-reload
|
||||||
|
fi
|
||||||
if [ ! -d "/opt/tracktor-data/uploads" ]; then
|
if [ ! -d "/opt/tracktor-data/uploads" ]; then
|
||||||
mkdir -p /opt/tracktor-data/{uploads,logs}
|
mkdir -p /opt/tracktor-data/{uploads,logs}
|
||||||
fi
|
EXISTING_AUTH_PIN=$(grep '^AUTH_PIN=' /opt/tracktor.env 2>/dev/null | cut -d'=' -f2)
|
||||||
if ! grep -qxF 'BODY_SIZE_LIMIT=Infinity' /opt/tracktor.env; then
|
AUTH_PIN=${EXISTING_AUTH_PIN:-123456}
|
||||||
rm /opt/tracktor.env
|
|
||||||
cat <<EOF >/opt/tracktor.env
|
cat <<EOF >/opt/tracktor.env
|
||||||
cat <<EOF >/opt/tracktor.env
|
|
||||||
NODE_ENV=production
|
NODE_ENV=production
|
||||||
# Set this to the path of the database file. Default - ./tracktor.db
|
|
||||||
DB_PATH=/opt/tracktor-data/tracktor.db
|
DB_PATH=/opt/tracktor-data/tracktor.db
|
||||||
# Set this to the path of the uploads directory. Default - ./uploads
|
|
||||||
UPLOADS_DIR="/opt/tracktor-data/uploads"
|
UPLOADS_DIR="/opt/tracktor-data/uploads"
|
||||||
# Set this to the path of the logs directory. Default - ./logs
|
|
||||||
LOG_DIR="/opt/tracktor-data/logs"
|
LOG_DIR="/opt/tracktor-data/logs"
|
||||||
# Hostname to bind the server to. Default - 0.0.0.0
|
# If server host is not set by default it will run on all interfaces - 0.0.0.0
|
||||||
#HOST="0.0.0.0"
|
# SERVER_HOST=""
|
||||||
# Port to bind the server to. Default - 3000
|
SERVER_PORT=3000
|
||||||
#PORT=3000
|
# Set this if you want to secure your endpoints otherwise default will be "*"
|
||||||
# Set this to remove upload size limitations. Default - 512 Kb
|
CORS_ORIGINS="*"
|
||||||
BODY_SIZE_LIMIT=Infinity
|
# Set this if you are using backend and frontend separately.
|
||||||
# Enable request logging. Default - true
|
# PUBLIC_API_BASE_URL=""
|
||||||
#LOG_REQUESTS=true
|
LOG_REQUESTS=true
|
||||||
# Set the logging level. Options - error, warn, info, verbose, debug, silly. Default - info
|
LOG_LEVEL="info"
|
||||||
#LOG_LEVEL="info"
|
AUTH_PIN=${AUTH_PIN}
|
||||||
# Enable demo mode. Default - false
|
# PUBLIC_DEMO_MODE=false
|
||||||
#TRACKTOR_DEMO_MODE=false
|
# FORCE_DATA_SEED=false
|
||||||
# Force reseeding of data on every startup. Default - false
|
|
||||||
#FORCE_DATA_SEED=false
|
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
msg_ok "Corrected Services"
|
msg_ok "Corrected Services"
|
||||||
|
|
||||||
NODE_VERSION="24" setup_nodejs
|
NODE_VERSION="22" setup_nodejs
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "tracktor" "javedh-dev/tracktor" "tarball" "latest" "/opt/tracktor"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "tracktor" "javedh-dev/tracktor" "tarball" "latest" "/opt/tracktor"
|
||||||
|
|
||||||
msg_info "Updating tracktor"
|
msg_info "Updating tracktor"
|
||||||
|
|||||||
@ -12,7 +12,7 @@
|
|||||||
"documentation": "https://pterodactyl.io/wings/1.0/installing.html",
|
"documentation": "https://pterodactyl.io/wings/1.0/installing.html",
|
||||||
"website": "https://pterodactyl.io",
|
"website": "https://pterodactyl.io",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/pterodactyl.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/pterodactyl.webp",
|
||||||
"config_path": "/etc/pterodactyl/config.yml",
|
"config_path": "",
|
||||||
"description": "Pterodactyl Wings is Pterodactyl's server control plane, built for the rapidly changing gaming industry and designed to be highly performant and secure. Wings provides an HTTP API allowing you to interface directly with running server instances, fetch server logs, generate backups, and control all aspects of the server lifecycle.",
|
"description": "Pterodactyl Wings is Pterodactyl's server control plane, built for the rapidly changing gaming industry and designed to be highly performant and secure. Wings provides an HTTP API allowing you to interface directly with running server instances, fetch server logs, generate backups, and control all aspects of the server lifecycle.",
|
||||||
"install_methods": [
|
"install_methods": [
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1,189 +1,4 @@
|
|||||||
[
|
[
|
||||||
{
|
|
||||||
"name": "javedh-dev/tracktor",
|
|
||||||
"version": "1.0.1",
|
|
||||||
"date": "2025-12-17T23:14:39Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "goauthentik/authentik",
|
|
||||||
"version": "version/2025.12.0-rc2",
|
|
||||||
"date": "2025-12-17T22:03:04Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "ollama/ollama",
|
|
||||||
"version": "v0.13.5-rc0",
|
|
||||||
"date": "2025-12-17T21:13:55Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "fccview/jotty",
|
|
||||||
"version": "1.14.0",
|
|
||||||
"date": "2025-12-17T20:26:22Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "emqx/emqx",
|
|
||||||
"version": "6.1.0-alpha.2",
|
|
||||||
"date": "2025-12-17T20:15:23Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "influxdata/influxdb",
|
|
||||||
"version": "v2.8.0",
|
|
||||||
"date": "2025-12-12T20:25:00Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "HydroshieldMKII/Guardian",
|
|
||||||
"version": "v1.3.2",
|
|
||||||
"date": "2025-12-17T19:31:10Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "coder/code-server",
|
|
||||||
"version": "v4.107.0",
|
|
||||||
"date": "2025-12-17T18:59:21Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "metabase/metabase",
|
|
||||||
"version": "v0.57.7",
|
|
||||||
"date": "2025-12-17T18:16:59Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "immich-app/immich",
|
|
||||||
"version": "v2.4.0",
|
|
||||||
"date": "2025-12-17T17:44:24Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "BerriAI/litellm",
|
|
||||||
"version": "v1.80.10.rc.4",
|
|
||||||
"date": "2025-12-17T17:43:28Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "openobserve/openobserve",
|
|
||||||
"version": "v0.30.1",
|
|
||||||
"date": "2025-12-17T17:34:52Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "comfyanonymous/ComfyUI",
|
|
||||||
"version": "v0.5.0",
|
|
||||||
"date": "2025-12-17T16:48:33Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "scanopy/scanopy",
|
|
||||||
"version": "v0.12.2",
|
|
||||||
"date": "2025-12-17T16:01:43Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "semaphoreui/semaphore",
|
|
||||||
"version": "v2.16.47",
|
|
||||||
"date": "2025-12-17T15:36:28Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "NodeBB/NodeBB",
|
|
||||||
"version": "v4.7.1",
|
|
||||||
"date": "2025-12-17T15:18:55Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "n8n-io/n8n",
|
|
||||||
"version": "n8n@1.123.7",
|
|
||||||
"date": "2025-12-17T14:01:25Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "zabbix/zabbix",
|
|
||||||
"version": "7.2.15",
|
|
||||||
"date": "2025-12-17T13:25:42Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "chrisbenincasa/tunarr",
|
|
||||||
"version": "v1.0.5",
|
|
||||||
"date": "2025-12-17T12:48:30Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "bunkerity/bunkerweb",
|
|
||||||
"version": "testing",
|
|
||||||
"date": "2025-12-16T11:13:20Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "traefik/traefik",
|
|
||||||
"version": "v2.11.33",
|
|
||||||
"date": "2025-12-17T10:10:19Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "mattermost/mattermost",
|
|
||||||
"version": "v11.1.2",
|
|
||||||
"date": "2025-12-17T09:26:24Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "coollabsio/coolify",
|
|
||||||
"version": "v4.0.0-beta.455",
|
|
||||||
"date": "2025-12-17T09:24:10Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "TuroYT/snowshare",
|
|
||||||
"version": "v1.2.2",
|
|
||||||
"date": "2025-12-17T09:07:12Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "zitadel/zitadel",
|
|
||||||
"version": "v4.7.6",
|
|
||||||
"date": "2025-12-17T08:56:54Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "SigNoz/signoz",
|
|
||||||
"version": "v0.105.1",
|
|
||||||
"date": "2025-12-17T08:48:52Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "meilisearch/meilisearch",
|
|
||||||
"version": "prototype-v1.30.1-rebuild-hannoy-graph.0",
|
|
||||||
"date": "2025-12-17T08:38:38Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "passbolt/passbolt_api",
|
|
||||||
"version": "v5.8.0-test.3",
|
|
||||||
"date": "2025-12-17T08:38:11Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "jupyter/notebook",
|
|
||||||
"version": "@jupyter-notebook/ui-components@7.6.0-alpha.0",
|
|
||||||
"date": "2025-12-17T08:35:55Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "zwave-js/zwave-js-ui",
|
|
||||||
"version": "v11.9.0",
|
|
||||||
"date": "2025-12-17T08:26:50Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "firefly-iii/firefly-iii",
|
|
||||||
"version": "v6.4.14",
|
|
||||||
"date": "2025-12-16T05:42:34Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "nzbgetcom/nzbget",
|
|
||||||
"version": "v25.4",
|
|
||||||
"date": "2025-10-09T10:27:01Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Jackett/Jackett",
|
|
||||||
"version": "v0.24.468",
|
|
||||||
"date": "2025-12-17T05:55:30Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "nickheyer/discopanel",
|
|
||||||
"version": "v1.0.16",
|
|
||||||
"date": "2025-12-17T04:47:13Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "9001/copyparty",
|
|
||||||
"version": "v1.19.23",
|
|
||||||
"date": "2025-12-17T00:51:11Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "jeedom/core",
|
|
||||||
"version": "4.5",
|
|
||||||
"date": "2025-12-17T00:27:05Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "steveiliop56/tinyauth",
|
|
||||||
"version": "v4.1.0",
|
|
||||||
"date": "2025-11-23T12:13:34Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "esphome/esphome",
|
"name": "esphome/esphome",
|
||||||
"version": "2025.12.0",
|
"version": "2025.12.0",
|
||||||
@ -205,40 +20,80 @@
|
|||||||
"date": "2025-12-16T21:19:10Z"
|
"date": "2025-12-16T21:19:10Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "keycloak/keycloak",
|
"name": "metabase/metabase",
|
||||||
"version": "26.4.7",
|
"version": "v0.57.x",
|
||||||
"date": "2025-12-01T08:14:11Z"
|
"date": "2025-12-16T19:20:02Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "prometheus-pve/prometheus-pve-exporter",
|
"name": "prometheus-pve/prometheus-pve-exporter",
|
||||||
"version": "v3.7.0",
|
"version": "v3.7.0",
|
||||||
"date": "2025-12-16T19:01:35Z"
|
"date": "2025-12-16T19:01:35Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "Jackett/Jackett",
|
||||||
|
"version": "v0.24.462",
|
||||||
|
"date": "2025-12-16T19:01:01Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "netbox-community/netbox",
|
"name": "netbox-community/netbox",
|
||||||
"version": "v4.4.8",
|
"version": "v4.4.8",
|
||||||
"date": "2025-12-09T16:29:50Z"
|
"date": "2025-12-09T16:29:50Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "goauthentik/authentik",
|
||||||
|
"version": "version/2025.10.3",
|
||||||
|
"date": "2025-12-16T18:00:53Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "crafty-controller/crafty-4",
|
"name": "crafty-controller/crafty-4",
|
||||||
"version": "v4.6.2",
|
"version": "v4.6.2",
|
||||||
"date": "2025-12-16T17:54:19Z"
|
"date": "2025-12-16T17:54:19Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "chrisbenincasa/tunarr",
|
||||||
|
"version": "v1.0.4",
|
||||||
|
"date": "2025-12-16T17:31:11Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "fuma-nama/fumadocs",
|
"name": "fuma-nama/fumadocs",
|
||||||
"version": "fumadocs-mdx@14.1.1",
|
"version": "fumadocs-mdx@14.1.1",
|
||||||
"date": "2025-12-16T15:32:59Z"
|
"date": "2025-12-16T15:32:59Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "traefik/traefik",
|
||||||
|
"version": "v3.6.5",
|
||||||
|
"date": "2025-12-16T15:05:09Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "meilisearch/meilisearch",
|
||||||
|
"version": "prototype-v1.30.0-support-aws-irsa.2",
|
||||||
|
"date": "2025-12-16T14:35:14Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "jenkinsci/jenkins",
|
"name": "jenkinsci/jenkins",
|
||||||
"version": "jenkins-2.542",
|
"version": "jenkins-2.542",
|
||||||
"date": "2025-12-16T13:49:44Z"
|
"date": "2025-12-16T13:49:44Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "TuroYT/snowshare",
|
||||||
|
"version": "v1.2.1",
|
||||||
|
"date": "2025-12-16T13:34:04Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "release-argus/Argus",
|
"name": "release-argus/Argus",
|
||||||
"version": "0.28.2",
|
"version": "0.28.2",
|
||||||
"date": "2025-12-16T12:36:26Z"
|
"date": "2025-12-16T12:36:26Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "bunkerity/bunkerweb",
|
||||||
|
"version": "v1.6.6",
|
||||||
|
"date": "2025-11-24T15:30:21Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "zabbix/zabbix",
|
||||||
|
"version": "7.2.15rc2",
|
||||||
|
"date": "2025-12-16T10:23:14Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "prometheus/prometheus",
|
"name": "prometheus/prometheus",
|
||||||
"version": "v3.8.1",
|
"version": "v3.8.1",
|
||||||
@ -249,21 +104,66 @@
|
|||||||
"version": "v4.36.2",
|
"version": "v4.36.2",
|
||||||
"date": "2025-12-03T22:46:29Z"
|
"date": "2025-12-03T22:46:29Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "n8n-io/n8n",
|
||||||
|
"version": "n8n@1.123.6",
|
||||||
|
"date": "2025-12-15T14:22:59Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "sabnzbd/sabnzbd",
|
"name": "sabnzbd/sabnzbd",
|
||||||
"version": "4.5.5",
|
"version": "4.5.5",
|
||||||
"date": "2025-10-24T11:12:22Z"
|
"date": "2025-10-24T11:12:22Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "mattermost/mattermost",
|
||||||
|
"version": "v11.2.1",
|
||||||
|
"date": "2025-12-16T07:40:44Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "jupyter/notebook",
|
||||||
|
"version": "v7.5.1",
|
||||||
|
"date": "2025-12-16T07:39:08Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "morpheus65535/bazarr",
|
"name": "morpheus65535/bazarr",
|
||||||
"version": "v1.5.3",
|
"version": "v1.5.3",
|
||||||
"date": "2025-09-20T12:12:33Z"
|
"date": "2025-09-20T12:12:33Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "firefly-iii/firefly-iii",
|
||||||
|
"version": "v6.4.14",
|
||||||
|
"date": "2025-12-16T05:42:34Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ollama/ollama",
|
||||||
|
"version": "v0.13.4-rc2",
|
||||||
|
"date": "2025-12-16T02:57:20Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "jeedom/core",
|
||||||
|
"version": "4.5",
|
||||||
|
"date": "2025-12-16T00:27:09Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "steveiliop56/tinyauth",
|
||||||
|
"version": "v4.1.0",
|
||||||
|
"date": "2025-11-23T12:13:34Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "Stirling-Tools/Stirling-PDF",
|
"name": "Stirling-Tools/Stirling-PDF",
|
||||||
"version": "v2.1.4",
|
"version": "v2.1.4",
|
||||||
"date": "2025-12-16T00:02:18Z"
|
"date": "2025-12-16T00:02:18Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "scanopy/scanopy",
|
||||||
|
"version": "v0.12.1",
|
||||||
|
"date": "2025-12-15T22:21:36Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "semaphoreui/semaphore",
|
||||||
|
"version": "v2.16.46",
|
||||||
|
"date": "2025-12-15T22:07:08Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "azukaar/Cosmos-Server",
|
"name": "azukaar/Cosmos-Server",
|
||||||
"version": "v0.19.0",
|
"version": "v0.19.0",
|
||||||
@ -279,6 +179,11 @@
|
|||||||
"version": "v4.1.0",
|
"version": "v4.1.0",
|
||||||
"date": "2025-12-15T18:53:25Z"
|
"date": "2025-12-15T18:53:25Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "keycloak/keycloak",
|
||||||
|
"version": "26.4.7",
|
||||||
|
"date": "2025-12-01T08:14:11Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "rabbitmq/rabbitmq-server",
|
"name": "rabbitmq/rabbitmq-server",
|
||||||
"version": "v4.2.2",
|
"version": "v4.2.2",
|
||||||
@ -349,6 +254,21 @@
|
|||||||
"version": "v10.11.5",
|
"version": "v10.11.5",
|
||||||
"date": "2025-12-15T02:44:19Z"
|
"date": "2025-12-15T02:44:19Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "9001/copyparty",
|
||||||
|
"version": "v1.19.22",
|
||||||
|
"date": "2025-12-14T23:38:57Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "BerriAI/litellm",
|
||||||
|
"version": "v1.80.10.rc.2",
|
||||||
|
"date": "2025-12-14T22:47:12Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "nickheyer/discopanel",
|
||||||
|
"version": "v1.0.15",
|
||||||
|
"date": "2025-12-14T21:49:36Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "AlexxIT/go2rtc",
|
"name": "AlexxIT/go2rtc",
|
||||||
"version": "v1.9.13",
|
"version": "v1.9.13",
|
||||||
@ -462,18 +382,28 @@
|
|||||||
{
|
{
|
||||||
"name": "mealie-recipes/mealie",
|
"name": "mealie-recipes/mealie",
|
||||||
"version": "v3.7.0",
|
"version": "v3.7.0",
|
||||||
"date": "2025-12-13T01:21:07Z"
|
"date": "2025-12-13T01:20:58Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "paperless-ngx/paperless-ngx",
|
"name": "paperless-ngx/paperless-ngx",
|
||||||
"version": "v2.20.2",
|
"version": "v2.20.2",
|
||||||
"date": "2025-12-12T23:47:48Z"
|
"date": "2025-12-12T23:47:48Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "fccview/jotty",
|
||||||
|
"version": "1.13.1",
|
||||||
|
"date": "2025-12-12T21:34:22Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "mongodb/mongo",
|
"name": "mongodb/mongo",
|
||||||
"version": "r7.0.27",
|
"version": "r7.0.27",
|
||||||
"date": "2025-12-12T20:54:32Z"
|
"date": "2025-12-12T20:54:32Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "influxdata/influxdb",
|
||||||
|
"version": "v2.8.0",
|
||||||
|
"date": "2025-12-12T20:25:00Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "homarr-labs/homarr",
|
"name": "homarr-labs/homarr",
|
||||||
"version": "v1.46.0",
|
"version": "v1.46.0",
|
||||||
@ -494,6 +424,16 @@
|
|||||||
"version": "4.1.2",
|
"version": "4.1.2",
|
||||||
"date": "2025-12-03T16:12:05Z"
|
"date": "2025-12-03T16:12:05Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "openobserve/openobserve",
|
||||||
|
"version": "v0.30.0",
|
||||||
|
"date": "2025-12-12T14:03:52Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "zitadel/zitadel",
|
||||||
|
"version": "v4.7.5",
|
||||||
|
"date": "2025-12-12T13:54:02Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "ventoy/Ventoy",
|
"name": "ventoy/Ventoy",
|
||||||
"version": "v1.1.09",
|
"version": "v1.1.09",
|
||||||
@ -504,6 +444,11 @@
|
|||||||
"version": "v2.2.0.102-2.2.0.102_canary_2025-12-12",
|
"version": "v2.2.0.102-2.2.0.102_canary_2025-12-12",
|
||||||
"date": "2025-12-12T12:03:15Z"
|
"date": "2025-12-12T12:03:15Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "passbolt/passbolt_api",
|
||||||
|
"version": "v5.8.0-test.2",
|
||||||
|
"date": "2025-12-12T11:43:11Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "Luligu/matterbridge",
|
"name": "Luligu/matterbridge",
|
||||||
"version": "3.4.3",
|
"version": "3.4.3",
|
||||||
@ -514,6 +459,11 @@
|
|||||||
"version": "v8.3.7",
|
"version": "v8.3.7",
|
||||||
"date": "2025-12-12T09:13:40Z"
|
"date": "2025-12-12T09:13:40Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "coder/code-server",
|
||||||
|
"version": "v4.106.3",
|
||||||
|
"date": "2025-12-01T22:06:12Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "theonedev/onedev",
|
"name": "theonedev/onedev",
|
||||||
"version": "v13.1.5",
|
"version": "v13.1.5",
|
||||||
@ -529,6 +479,11 @@
|
|||||||
"version": "0.43.1",
|
"version": "0.43.1",
|
||||||
"date": "2025-12-11T22:45:52Z"
|
"date": "2025-12-11T22:45:52Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "coollabsio/coolify",
|
||||||
|
"version": "v4.0.0-beta.454",
|
||||||
|
"date": "2025-12-11T20:37:05Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "msgbyte/tianji",
|
"name": "msgbyte/tianji",
|
||||||
"version": "v1.30.22",
|
"version": "v1.30.22",
|
||||||
@ -564,6 +519,11 @@
|
|||||||
"version": "v1.72.1",
|
"version": "v1.72.1",
|
||||||
"date": "2025-12-10T14:55:44Z"
|
"date": "2025-12-10T14:55:44Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "nzbgetcom/nzbget",
|
||||||
|
"version": "v25.4",
|
||||||
|
"date": "2025-10-09T10:27:01Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "evcc-io/evcc",
|
"name": "evcc-io/evcc",
|
||||||
"version": "0.211.1",
|
"version": "0.211.1",
|
||||||
@ -579,6 +539,11 @@
|
|||||||
"version": "2.2.15",
|
"version": "2.2.15",
|
||||||
"date": "2025-12-10T01:52:14Z"
|
"date": "2025-12-10T01:52:14Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "comfyanonymous/ComfyUI",
|
||||||
|
"version": "v0.4.0",
|
||||||
|
"date": "2025-12-10T00:11:48Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "pelican-dev/panel",
|
"name": "pelican-dev/panel",
|
||||||
"version": "v1.0.0-beta29",
|
"version": "v1.0.0-beta29",
|
||||||
@ -729,6 +694,11 @@
|
|||||||
"version": "v3.3.0",
|
"version": "v3.3.0",
|
||||||
"date": "2025-12-06T06:18:23Z"
|
"date": "2025-12-06T06:18:23Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "HydroshieldMKII/Guardian",
|
||||||
|
"version": "v1.3.1",
|
||||||
|
"date": "2025-12-05T19:12:48Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "community-scripts/ProxmoxVE-Local",
|
"name": "community-scripts/ProxmoxVE-Local",
|
||||||
"version": "v0.5.2",
|
"version": "v0.5.2",
|
||||||
@ -739,6 +709,11 @@
|
|||||||
"version": "flowise@3.0.12",
|
"version": "flowise@3.0.12",
|
||||||
"date": "2025-12-05T15:02:01Z"
|
"date": "2025-12-05T15:02:01Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "emqx/emqx",
|
||||||
|
"version": "e6.1.0-streams.1",
|
||||||
|
"date": "2025-12-05T12:27:36Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "transmission/transmission",
|
"name": "transmission/transmission",
|
||||||
"version": "4.0.1-beta.1",
|
"version": "4.0.1-beta.1",
|
||||||
@ -784,6 +759,11 @@
|
|||||||
"version": "6.2.10",
|
"version": "6.2.10",
|
||||||
"date": "2025-12-03T13:58:32Z"
|
"date": "2025-12-03T13:58:32Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "SigNoz/signoz",
|
||||||
|
"version": "v0.104.0",
|
||||||
|
"date": "2025-12-03T06:48:38Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "hyperion-project/hyperion.ng",
|
"name": "hyperion-project/hyperion.ng",
|
||||||
"version": "2.1.1",
|
"version": "2.1.1",
|
||||||
@ -889,6 +869,11 @@
|
|||||||
"version": "v3.13",
|
"version": "v3.13",
|
||||||
"date": "2025-11-30T08:52:20Z"
|
"date": "2025-11-30T08:52:20Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "zwave-js/zwave-js-ui",
|
||||||
|
"version": "v11.8.2",
|
||||||
|
"date": "2025-11-30T08:39:28Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "ErsatzTV/ErsatzTV",
|
"name": "ErsatzTV/ErsatzTV",
|
||||||
"version": "v25.9.0",
|
"version": "v25.9.0",
|
||||||
@ -949,6 +934,11 @@
|
|||||||
"version": "v0.9.101",
|
"version": "v0.9.101",
|
||||||
"date": "2025-11-26T17:14:35Z"
|
"date": "2025-11-26T17:14:35Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "NodeBB/NodeBB",
|
||||||
|
"version": "v4.7.0",
|
||||||
|
"date": "2025-11-26T16:59:45Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "NLnetLabs/unbound",
|
"name": "NLnetLabs/unbound",
|
||||||
"version": "release-1.24.2",
|
"version": "release-1.24.2",
|
||||||
@ -1049,6 +1039,11 @@
|
|||||||
"version": "5.12.0",
|
"version": "5.12.0",
|
||||||
"date": "2025-11-20T06:18:58Z"
|
"date": "2025-11-20T06:18:58Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "immich-app/immich",
|
||||||
|
"version": "v2.3.1",
|
||||||
|
"date": "2025-11-20T03:10:27Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "nextcloud/nextcloudpi",
|
"name": "nextcloud/nextcloudpi",
|
||||||
"version": "v1.56.0",
|
"version": "v1.56.0",
|
||||||
@ -1184,6 +1179,11 @@
|
|||||||
"version": "v0.9.1",
|
"version": "v0.9.1",
|
||||||
"date": "2025-11-06T02:26:53Z"
|
"date": "2025-11-06T02:26:53Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "javedh-dev/tracktor",
|
||||||
|
"version": "0.5.1",
|
||||||
|
"date": "2025-11-05T16:14:37Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "getumbrel/umbrel",
|
"name": "getumbrel/umbrel",
|
||||||
"version": "1.5.0",
|
"version": "1.5.0",
|
||||||
|
|||||||
@ -29,7 +29,19 @@ if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
|
|||||||
exit 10
|
exit 10
|
||||||
fi
|
fi
|
||||||
|
|
||||||
setup_hwaccel
|
if [[ "$CTTYPE" == "0" ]]; then
|
||||||
|
msg_info "Setting Up Hardware Acceleration"
|
||||||
|
$STD apt-get -y install \
|
||||||
|
va-driver-all \
|
||||||
|
ocl-icd-libopencl1 \
|
||||||
|
intel-opencl-icd
|
||||||
|
chgrp video /dev/dri
|
||||||
|
chmod 755 /dev/dri
|
||||||
|
chmod 660 /dev/dri/*
|
||||||
|
$STD adduser $(id -u -n) video
|
||||||
|
$STD adduser $(id -u -n) render
|
||||||
|
msg_ok "Set Up Hardware Acceleration"
|
||||||
|
fi
|
||||||
|
|
||||||
msg_info "Installing Channels DVR Server (Patience)"
|
msg_info "Installing Channels DVR Server (Patience)"
|
||||||
cd /opt
|
cd /opt
|
||||||
|
|||||||
@ -13,7 +13,16 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
setup_hwaccel
|
msg_info "Setting Up Hardware Acceleration"
|
||||||
|
$STD apt-get -y install {va-driver-all,ocl-icd-libopencl1,intel-opencl-icd,vainfo,intel-gpu-tools}
|
||||||
|
if [[ "$CTTYPE" == "0" ]]; then
|
||||||
|
chgrp video /dev/dri
|
||||||
|
chmod 755 /dev/dri
|
||||||
|
chmod 660 /dev/dri/*
|
||||||
|
$STD adduser $(id -u -n) video
|
||||||
|
$STD adduser $(id -u -n) render
|
||||||
|
fi
|
||||||
|
msg_ok "Set Up Hardware Acceleration"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "emby" "MediaBrowser/Emby.Releases" "binary"
|
fetch_and_deploy_gh_release "emby" "MediaBrowser/Emby.Releases" "binary"
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@ NODE_VERSION="24" setup_nodejs
|
|||||||
PG_VERSION="17" PG_MODULES="postgis" setup_postgresql
|
PG_VERSION="17" PG_MODULES="postgis" setup_postgresql
|
||||||
PG_DB_NAME="enduraindb" PG_DB_USER="endurain" setup_postgresql_db
|
PG_DB_NAME="enduraindb" PG_DB_USER="endurain" setup_postgresql_db
|
||||||
import_local_ip
|
import_local_ip
|
||||||
fetch_and_deploy_gh_release "endurain" "endurain-project/endurain" "tarball" "latest" "/opt/endurain"
|
fetch_and_deploy_gh_release "endurain" "joaovitoriasilva/endurain" "tarball" "latest" "/opt/endurain"
|
||||||
|
|
||||||
msg_info "Setting up Endurain"
|
msg_info "Setting up Endurain"
|
||||||
cd /opt/endurain
|
cd /opt/endurain
|
||||||
|
|||||||
@ -13,7 +13,38 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
setup_hwaccel
|
msg_info "Setting Up Hardware Acceleration"
|
||||||
|
$STD apt-get -y install {va-driver-all,ocl-icd-libopencl1,intel-opencl-icd,vainfo,intel-gpu-tools}
|
||||||
|
if [[ "$CTTYPE" == "0" ]]; then
|
||||||
|
chgrp video /dev/dri
|
||||||
|
chmod 755 /dev/dri
|
||||||
|
chmod 660 /dev/dri/*
|
||||||
|
$STD adduser $(id -u -n) video
|
||||||
|
$STD adduser $(id -u -n) render
|
||||||
|
fi
|
||||||
|
msg_ok "Set Up Hardware Acceleration"
|
||||||
|
|
||||||
|
read -r -p "${TAB3}Do you need the intel-media-va-driver-non-free driver for HW encoding (Debian 12 only)? <y/N> " prompt
|
||||||
|
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||||
|
msg_info "Installing Intel Hardware Acceleration (non-free)"
|
||||||
|
cat <<EOF >/etc/apt/sources.list.d/non-free.list
|
||||||
|
|
||||||
|
deb http://deb.debian.org/debian bookworm non-free non-free-firmware
|
||||||
|
deb-src http://deb.debian.org/debian bookworm non-free non-free-firmware
|
||||||
|
|
||||||
|
deb http://deb.debian.org/debian-security bookworm-security non-free non-free-firmware
|
||||||
|
deb-src http://deb.debian.org/debian-security bookworm-security non-free non-free-firmware
|
||||||
|
|
||||||
|
deb http://deb.debian.org/debian bookworm-updates non-free non-free-firmware
|
||||||
|
deb-src http://deb.debian.org/debian bookworm-updates non-free non-free-firmware
|
||||||
|
EOF
|
||||||
|
$STD apt-get update
|
||||||
|
$STD apt-get -y install {intel-media-va-driver-non-free,ocl-icd-libopencl1,intel-opencl-icd,vainfo,intel-gpu-tools}
|
||||||
|
else
|
||||||
|
msg_info "Installing Intel Hardware Acceleration"
|
||||||
|
$STD apt-get -y install {va-driver-all,ocl-icd-libopencl1,intel-opencl-icd,vainfo,intel-gpu-tools}
|
||||||
|
fi
|
||||||
|
msg_ok "Installed and Set Up Intel Hardware Acceleration"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "ersatztv" "ErsatzTV/ErsatzTV" "prebuild" "latest" "/opt/ErsatzTV" "*linux-x64.tar.gz"
|
fetch_and_deploy_gh_release "ersatztv" "ErsatzTV/ErsatzTV" "prebuild" "latest" "/opt/ErsatzTV" "*linux-x64.tar.gz"
|
||||||
fetch_and_deploy_gh_release "ersatztv-ffmpeg" "ErsatzTV/ErsatzTV-ffmpeg" "prebuild" "latest" "/opt/ErsatzTV-ffmpeg" "*-linux64-gpl-7.1.tar.xz"
|
fetch_and_deploy_gh_release "ersatztv-ffmpeg" "ErsatzTV/ErsatzTV-ffmpeg" "prebuild" "latest" "/opt/ErsatzTV-ffmpeg" "*-linux64-gpl-7.1.tar.xz"
|
||||||
|
|||||||
@ -21,7 +21,27 @@ $STD apt-get install -y \
|
|||||||
imagemagick
|
imagemagick
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
setup_hwaccel
|
read -r -p "${TAB3}Do you need the intel-media-va-driver-non-free driver for HW encoding (Debian 12 only)? <y/N> " prompt
|
||||||
|
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||||
|
msg_info "Installing Intel Hardware Acceleration (non-free)"
|
||||||
|
cat <<EOF >/etc/apt/sources.list.d/non-free.list
|
||||||
|
|
||||||
|
deb http://deb.debian.org/debian bookworm non-free non-free-firmware
|
||||||
|
deb-src http://deb.debian.org/debian bookworm non-free non-free-firmware
|
||||||
|
|
||||||
|
deb http://deb.debian.org/debian-security bookworm-security non-free non-free-firmware
|
||||||
|
deb-src http://deb.debian.org/debian-security bookworm-security non-free non-free-firmware
|
||||||
|
|
||||||
|
deb http://deb.debian.org/debian bookworm-updates non-free non-free-firmware
|
||||||
|
deb-src http://deb.debian.org/debian bookworm-updates non-free non-free-firmware
|
||||||
|
EOF
|
||||||
|
$STD apt-get update
|
||||||
|
$STD apt-get -y install {intel-media-va-driver-non-free,ocl-icd-libopencl1,intel-opencl-icd,vainfo,intel-gpu-tools}
|
||||||
|
else
|
||||||
|
msg_info "Installing Intel Hardware Acceleration"
|
||||||
|
$STD apt-get -y install {va-driver-all,ocl-icd-libopencl1,intel-opencl-icd,vainfo,intel-gpu-tools}
|
||||||
|
fi
|
||||||
|
msg_ok "Installed and Set Up Intel Hardware Acceleration"
|
||||||
|
|
||||||
msg_info "Installing ASP.NET Core Runtime"
|
msg_info "Installing ASP.NET Core Runtime"
|
||||||
curl -fsSL https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb -o packages-microsoft-prod.deb
|
curl -fsSL https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb -o packages-microsoft-prod.deb
|
||||||
|
|||||||
@ -33,7 +33,14 @@ chmod +x go2rtc
|
|||||||
$STD ln -svf /usr/local/go2rtc/bin/go2rtc /usr/local/bin/go2rtc
|
$STD ln -svf /usr/local/go2rtc/bin/go2rtc /usr/local/bin/go2rtc
|
||||||
msg_ok "Installed go2rtc"
|
msg_ok "Installed go2rtc"
|
||||||
|
|
||||||
setup_hwaccel
|
msg_info "Setting Up Hardware Acceleration"
|
||||||
|
$STD apt-get -y install {va-driver-all,ocl-icd-libopencl1,intel-opencl-icd,vainfo,intel-gpu-tools}
|
||||||
|
if [[ "$CTTYPE" == "0" ]]; then
|
||||||
|
chgrp video /dev/dri
|
||||||
|
chmod 755 /dev/dri
|
||||||
|
chmod 660 /dev/dri/*
|
||||||
|
fi
|
||||||
|
msg_ok "Set Up Hardware Acceleration"
|
||||||
|
|
||||||
msg_info "Installing Frigate v0.14.1 (Perseverance)"
|
msg_info "Installing Frigate v0.14.1 (Perseverance)"
|
||||||
cd ~
|
cd ~
|
||||||
|
|||||||
@ -75,13 +75,12 @@ $STD apt install -y jellyfin-ffmpeg7
|
|||||||
ln -sf /usr/lib/jellyfin-ffmpeg/ffmpeg /usr/bin/ffmpeg
|
ln -sf /usr/lib/jellyfin-ffmpeg/ffmpeg /usr/bin/ffmpeg
|
||||||
ln -sf /usr/lib/jellyfin-ffmpeg/ffprobe /usr/bin/ffprobe
|
ln -sf /usr/lib/jellyfin-ffmpeg/ffprobe /usr/bin/ffprobe
|
||||||
|
|
||||||
# Set permissions for /dev/dri (only in privileged containers and if /dev/dri exists)
|
|
||||||
if [[ "$CTTYPE" == "0" && -d /dev/dri ]]; then
|
if [[ "$CTTYPE" == "0" && -d /dev/dri ]]; then
|
||||||
chgrp video /dev/dri 2>/dev/null || true
|
chgrp video /dev/dri
|
||||||
chmod 755 /dev/dri 2>/dev/null || true
|
chmod 755 /dev/dri
|
||||||
chmod 660 /dev/dri/* 2>/dev/null || true
|
chmod 660 /dev/dri/*
|
||||||
$STD adduser "$(id -u -n)" video 2>/dev/null || true
|
$STD adduser "$(id -u -n)" video
|
||||||
$STD adduser "$(id -u -n)" render 2>/dev/null || true
|
$STD adduser "$(id -u -n)" render
|
||||||
fi
|
fi
|
||||||
msg_ok "Dependencies Installed"
|
msg_ok "Dependencies Installed"
|
||||||
|
|
||||||
|
|||||||
@ -13,7 +13,25 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
setup_hwaccel
|
msg_info "Setting Up Hardware Acceleration"
|
||||||
|
if ! grep -qEi 'ubuntu' /etc/os-release; then
|
||||||
|
fetch_and_deploy_gh_release "intel-igc-core-2" "intel/intel-graphics-compiler" "binary" "latest" "" "intel-igc-core-2_*_amd64.deb"
|
||||||
|
fetch_and_deploy_gh_release "intel-igc-opencl-2" "intel/intel-graphics-compiler" "binary" "latest" "" "intel-igc-opencl-2_*_amd64.deb"
|
||||||
|
fetch_and_deploy_gh_release "intel-libgdgmm12" "intel/compute-runtime" "binary" "latest" "" "libigdgmm12_*_amd64.deb"
|
||||||
|
fetch_and_deploy_gh_release "intel-opencl-icd" "intel/compute-runtime" "binary" "latest" "" "intel-opencl-icd_*_amd64.deb"
|
||||||
|
else
|
||||||
|
$STD apt -y install intel-opencl-icd
|
||||||
|
fi
|
||||||
|
|
||||||
|
$STD apt -y install {va-driver-all,ocl-icd-libopencl1,vainfo,intel-gpu-tools}
|
||||||
|
if [[ "$CTTYPE" == "0" ]]; then
|
||||||
|
chgrp video /dev/dri
|
||||||
|
chmod 755 /dev/dri
|
||||||
|
chmod 660 /dev/dri/*
|
||||||
|
$STD adduser $(id -u -n) video
|
||||||
|
$STD adduser $(id -u -n) render
|
||||||
|
fi
|
||||||
|
msg_ok "Set Up Hardware Acceleration"
|
||||||
|
|
||||||
msg_info "Installing Jellyfin"
|
msg_info "Installing Jellyfin"
|
||||||
VERSION="$(awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release)"
|
VERSION="$(awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release)"
|
||||||
|
|||||||
@ -41,11 +41,16 @@ EOF
|
|||||||
$STD apt update
|
$STD apt update
|
||||||
msg_ok "Set up Intel® Repositories"
|
msg_ok "Set up Intel® Repositories"
|
||||||
|
|
||||||
setup_hwaccel
|
msg_info "Setting Up Hardware Acceleration"
|
||||||
|
$STD apt -y install {va-driver-all,ocl-icd-libopencl1,intel-opencl-icd,vainfo,intel-gpu-tools,intel-level-zero-gpu,level-zero,level-zero-dev}
|
||||||
msg_info "Installing Intel® Level Zero"
|
if [[ "$CTTYPE" == "0" ]]; then
|
||||||
$STD apt -y install intel-level-zero-gpu level-zero level-zero-dev 2>/dev/null || true
|
chgrp video /dev/dri
|
||||||
msg_ok "Installed Intel® Level Zero"
|
chmod 755 /dev/dri
|
||||||
|
chmod 660 /dev/dri/*
|
||||||
|
$STD adduser $(id -u -n) video
|
||||||
|
$STD adduser $(id -u -n) render
|
||||||
|
fi
|
||||||
|
msg_ok "Set Up Hardware Acceleration"
|
||||||
|
|
||||||
msg_info "Installing Intel® oneAPI Base Toolkit (Patience)"
|
msg_info "Installing Intel® oneAPI Base Toolkit (Patience)"
|
||||||
$STD apt install -y --no-install-recommends intel-basekit-2024.1
|
$STD apt install -y --no-install-recommends intel-basekit-2024.1
|
||||||
|
|||||||
@ -17,8 +17,6 @@ msg_info "Installing Dependencies"
|
|||||||
$STD apt install -y ffmpeg
|
$STD apt install -y ffmpeg
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
setup_hwaccel
|
|
||||||
|
|
||||||
PYTHON_VERSION="3.12" setup_uv
|
PYTHON_VERSION="3.12" setup_uv
|
||||||
|
|
||||||
msg_info "Installing Open WebUI"
|
msg_info "Installing Open WebUI"
|
||||||
@ -27,36 +25,6 @@ msg_ok "Installed Open WebUI"
|
|||||||
|
|
||||||
read -r -p "${TAB3}Would you like to add Ollama? <y/N> " prompt
|
read -r -p "${TAB3}Would you like to add Ollama? <y/N> " prompt
|
||||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||||
msg_info "Setting up Intel® Repositories"
|
|
||||||
mkdir -p /usr/share/keyrings
|
|
||||||
curl -fsSL https://repositories.intel.com/gpu/intel-graphics.key | gpg --dearmor -o /usr/share/keyrings/intel-graphics.gpg 2>/dev/null || true
|
|
||||||
cat <<EOF >/etc/apt/sources.list.d/intel-gpu.sources
|
|
||||||
Types: deb
|
|
||||||
URIs: https://repositories.intel.com/gpu/ubuntu
|
|
||||||
Suites: jammy
|
|
||||||
Components: client
|
|
||||||
Architectures: amd64 i386
|
|
||||||
Signed-By: /usr/share/keyrings/intel-graphics.gpg
|
|
||||||
EOF
|
|
||||||
curl -fsSL https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | gpg --dearmor -o /usr/share/keyrings/oneapi-archive-keyring.gpg 2>/dev/null || true
|
|
||||||
cat <<EOF >/etc/apt/sources.list.d/oneAPI.sources
|
|
||||||
Types: deb
|
|
||||||
URIs: https://apt.repos.intel.com/oneapi
|
|
||||||
Suites: all
|
|
||||||
Components: main
|
|
||||||
Signed-By: /usr/share/keyrings/oneapi-archive-keyring.gpg
|
|
||||||
EOF
|
|
||||||
$STD apt update
|
|
||||||
msg_ok "Set up Intel® Repositories"
|
|
||||||
|
|
||||||
msg_info "Installing Intel® Level Zero"
|
|
||||||
$STD apt -y install intel-level-zero-gpu level-zero level-zero-dev 2>/dev/null || true
|
|
||||||
msg_ok "Installed Intel® Level Zero"
|
|
||||||
|
|
||||||
msg_info "Installing Intel® oneAPI Base Toolkit (Patience)"
|
|
||||||
$STD apt install -y --no-install-recommends intel-basekit-2024.1 2>/dev/null || true
|
|
||||||
msg_ok "Installed Intel® oneAPI Base Toolkit"
|
|
||||||
|
|
||||||
msg_info "Installing Ollama"
|
msg_info "Installing Ollama"
|
||||||
curl -fsSLO -C - https://ollama.com/download/ollama-linux-amd64.tgz
|
curl -fsSLO -C - https://ollama.com/download/ollama-linux-amd64.tgz
|
||||||
tar -C /usr -xzf ollama-linux-amd64.tgz
|
tar -C /usr -xzf ollama-linux-amd64.tgz
|
||||||
|
|||||||
@ -13,7 +13,16 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
setup_hwaccel
|
msg_info "Setting Up Hardware Acceleration"
|
||||||
|
$STD apt -y install {va-driver-all,ocl-icd-libopencl1,intel-opencl-icd,vainfo,intel-gpu-tools}
|
||||||
|
if [[ "$CTTYPE" == "0" ]]; then
|
||||||
|
chgrp video /dev/dri
|
||||||
|
chmod 755 /dev/dri
|
||||||
|
chmod 660 /dev/dri/*
|
||||||
|
$STD adduser $(id -u -n) video
|
||||||
|
$STD adduser $(id -u -n) render
|
||||||
|
fi
|
||||||
|
msg_ok "Set Up Hardware Acceleration"
|
||||||
|
|
||||||
msg_info "Setting Up Plex Media Server Repository"
|
msg_info "Setting Up Plex Media Server Repository"
|
||||||
curl -fsSL https://downloads.plex.tv/plex-keys/PlexSign.key | tee /usr/share/keyrings/PlexSign.asc >/dev/null
|
curl -fsSL https://downloads.plex.tv/plex-keys/PlexSign.key | tee /usr/share/keyrings/PlexSign.asc >/dev/null
|
||||||
|
|||||||
@ -21,8 +21,13 @@ $STD sh <(curl -fsSL https://get.docker.com)
|
|||||||
systemctl enable -q --now docker
|
systemctl enable -q --now docker
|
||||||
msg_ok "Installed Docker"
|
msg_ok "Installed Docker"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "wings" "pterodactyl/wings" "singlefile" "latest" "/usr/local/bin" "wings_linux_amd64"
|
msg_info "Installing Pterodactyl Wings"
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/pterodactyl/wings/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
curl -fsSL "https://github.com/pterodactyl/wings/releases/download/v${RELEASE}/wings_linux_amd64" -o "/usr/local/bin/wings"
|
||||||
|
chmod u+x /usr/local/bin/wings
|
||||||
mkdir -p /etc/pterodactyl
|
mkdir -p /etc/pterodactyl
|
||||||
|
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
||||||
|
msg_ok "Installed Pterodactyl Wings"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
cat <<EOF >/etc/systemd/system/wings.service
|
cat <<EOF >/etc/systemd/system/wings.service
|
||||||
|
|||||||
@ -16,12 +16,13 @@ update_os
|
|||||||
fetch_and_deploy_gh_release "qdrant" "qdrant/qdrant" "binary" "latest" "/usr/bin/qdrant"
|
fetch_and_deploy_gh_release "qdrant" "qdrant/qdrant" "binary" "latest" "/usr/bin/qdrant"
|
||||||
|
|
||||||
msg_info "Creating Qdrant Configuration"
|
msg_info "Creating Qdrant Configuration"
|
||||||
|
mkdir -p /var/lib/qdrant/storage
|
||||||
|
mkdir -p /var/lib/qdrant/snapshots
|
||||||
mkdir -p /etc/qdrant
|
mkdir -p /etc/qdrant
|
||||||
mkdir -p /var/lib/qdrant/{storage,snapshots}
|
|
||||||
chown -R root:root /var/lib/qdrant
|
chown -R root:root /var/lib/qdrant
|
||||||
chmod -R 755 /var/lib/qdrant
|
chmod -R 755 /var/lib/qdrant
|
||||||
|
|
||||||
cat <<EOF >/etc/qdrant/config.yaml
|
cat >/etc/qdrant/config.yaml <<EOF
|
||||||
log_level: INFO
|
log_level: INFO
|
||||||
|
|
||||||
storage:
|
storage:
|
||||||
@ -37,7 +38,7 @@ EOF
|
|||||||
msg_ok "Created Qdrant Configuration"
|
msg_ok "Created Qdrant Configuration"
|
||||||
|
|
||||||
msg_info "Creating Qdrant Service"
|
msg_info "Creating Qdrant Service"
|
||||||
cat <<EOF >/etc/systemd/system/qdrant.service
|
cat >/etc/systemd/system/qdrant.service <<EOF
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Qdrant Vector Search Engine
|
Description=Qdrant Vector Search Engine
|
||||||
After=network-online.target
|
After=network-online.target
|
||||||
|
|||||||
@ -15,34 +15,51 @@ network_check
|
|||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt install -y apt-transport-https
|
$STD apt install -y \
|
||||||
|
lsb-release \
|
||||||
|
apt-transport-https \
|
||||||
|
make
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
setup_deb822_repo \
|
msg_info "Adding RabbitMQ signing key"
|
||||||
"rabbitmq" \
|
curl -fsSL "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | gpg --dearmor >/usr/share/keyrings/com.rabbitmq.team.gpg
|
||||||
"https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" \
|
msg_ok "Signing keys added"
|
||||||
"https://deb1.rabbitmq.com/rabbitmq-server/debian/trixie" \
|
|
||||||
"trixie"
|
|
||||||
|
|
||||||
msg_info "Setting up RabbitMQ"
|
msg_info "Adding RabbitMQ repository"
|
||||||
$STD apt install -y \
|
cat <<EOF >/etc/apt/sources.list.d/rabbitmq.list
|
||||||
erlang-base erlang-asn1 erlang-crypto erlang-eldap erlang-ftp \
|
## Modern Erlang/OTP releases
|
||||||
erlang-inets erlang-mnesia erlang-os-mon erlang-parsetools \
|
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-erlang/debian/bookworm bookworm main
|
||||||
erlang-public-key erlang-runtime-tools erlang-snmp erlang-ssl \
|
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-erlang/debian/bookworm bookworm main
|
||||||
erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl
|
|
||||||
$STD apt install -y --fix-missing rabbitmq-server
|
|
||||||
msg_ok "Setup RabbitMQ "
|
|
||||||
|
|
||||||
msg_info "Starting Service"
|
## Provides modern RabbitMQ releases
|
||||||
|
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-server/debian/bookworm bookworm main
|
||||||
|
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-server/debian/bookworm bookworm main
|
||||||
|
EOF
|
||||||
|
msg_ok "RabbitMQ repository added"
|
||||||
|
|
||||||
|
msg_info "Updating package list"
|
||||||
|
$STD apt update -y
|
||||||
|
msg_ok "Package list updated"
|
||||||
|
|
||||||
|
msg_info "Installing Erlang & RabbitMQ server"
|
||||||
|
$STD apt install -y erlang-base \
|
||||||
|
erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets \
|
||||||
|
erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \
|
||||||
|
erlang-runtime-tools erlang-snmp erlang-ssl \
|
||||||
|
erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl \
|
||||||
|
rabbitmq-server
|
||||||
|
msg_ok "RabbitMQ server installed"
|
||||||
|
|
||||||
|
msg_info "Starting RabbitMQ service"
|
||||||
systemctl enable -q --now rabbitmq-server
|
systemctl enable -q --now rabbitmq-server
|
||||||
msg_ok "Started Service"
|
msg_ok "RabbitMQ service started"
|
||||||
|
|
||||||
msg_info "Enabling RabbitMQ Management Plugin"
|
msg_info "Enabling RabbitMQ management plugin"
|
||||||
$STD rabbitmq-plugins enable rabbitmq_management
|
$STD rabbitmq-plugins enable rabbitmq_management
|
||||||
$STD rabbitmqctl enable_feature_flag all
|
$STD rabbitmqctl enable_feature_flag all
|
||||||
msg_ok "Enabled RabbitMQ Management Plugin"
|
msg_ok "RabbitMQ management plugin enabled"
|
||||||
|
|
||||||
msg_info "Creating User"
|
msg_info "Create User"
|
||||||
$STD rabbitmqctl add_user proxmox proxmox
|
$STD rabbitmqctl add_user proxmox proxmox
|
||||||
$STD rabbitmqctl set_user_tags proxmox administrator
|
$STD rabbitmqctl set_user_tags proxmox administrator
|
||||||
$STD rabbitmqctl set_permissions -p / proxmox ".*" ".*" ".*"
|
$STD rabbitmqctl set_permissions -p / proxmox ".*" ".*" ".*"
|
||||||
|
|||||||
@ -13,21 +13,20 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing ASP.NET Core Runtime"
|
||||||
setup_deb822_repo \
|
curl -fsSL "https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb" -o packages-microsoft-prod.deb
|
||||||
"microsoft" \
|
$STD dpkg -i packages-microsoft-prod.deb
|
||||||
"https://packages.microsoft.com/keys/microsoft-2025.asc" \
|
$STD apt update
|
||||||
"https://packages.microsoft.com/debian/13/prod/" \
|
$STD apt install -y dotnet-sdk-9.0
|
||||||
"trixie"
|
msg_ok "Installed ASP.NET Core Runtime"
|
||||||
$STD apt install -y aspnetcore-runtime-9.0
|
|
||||||
msg_ok "Installed Dependencies"
|
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "rdt-client" "rogerfar/rdt-client" "prebuild" "latest" "/opt/rdtc" "RealDebridClient.zip"
|
fetch_and_deploy_gh_release "rdt-client" "rogerfar/rdt-client" "prebuild" "latest" "/opt/rdtc" "RealDebridClient.zip"
|
||||||
|
|
||||||
msg_info "Setting up rdtclient"
|
msg_info "Configuring rdtclient"
|
||||||
cd /opt/rdtc
|
cd /opt/rdtc
|
||||||
mkdir -p data/{db,downloads}
|
mkdir -p data/{db,downloads}
|
||||||
sed -i 's#/data/db/#/opt/rdtc&#g' /opt/rdtc/appsettings.json
|
sed -i 's#/data/db/#/opt/rdtc&#g' /opt/rdtc/appsettings.json
|
||||||
|
rm -f ~/packages-microsoft-prod.deb
|
||||||
msg_ok "Configured rdtclient"
|
msg_ok "Configured rdtclient"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
@ -44,7 +43,7 @@ User=root
|
|||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
EOF
|
EOF
|
||||||
systemctl enable -q --now rdtc
|
$STD systemctl enable -q --now rdtc
|
||||||
msg_ok "Created Service"
|
msg_ok "Created Service"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@ -19,19 +19,30 @@ curl -fsSL https://dl.min.io/server/minio/release/linux-amd64/minio.deb -o minio
|
|||||||
$STD dpkg -i minio.deb
|
$STD dpkg -i minio.deb
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
import_local_ip
|
|
||||||
PG_VERSION="16" setup_postgresql
|
PG_VERSION="16" setup_postgresql
|
||||||
PG_DB_NAME="rxresume" PG_DB_USER="rxresume" PG_DB_GRANT_SUPERUSER="true" setup_postgresql_db
|
NODE_VERSION="22" NODE_MODULE="pnpm@latest" setup_nodejs
|
||||||
NODE_VERSION="24" NODE_MODULE="pnpm@latest" setup_nodejs
|
|
||||||
fetch_and_deploy_gh_release "Reactive-Resume" "lazy-media/Reactive-Resume"
|
msg_info "Setting up Database"
|
||||||
|
DB_USER="rxresume"
|
||||||
|
DB_NAME="rxresume"
|
||||||
|
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||||
|
$STD sudo -u postgres psql -c "CREATE USER $DB_USER WITH ENCRYPTED PASSWORD '$DB_PASS';"
|
||||||
|
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;"
|
||||||
|
$STD sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE $DB_NAME to $DB_USER;"
|
||||||
|
$STD sudo -u postgres psql -c "ALTER USER $DB_USER WITH SUPERUSER;"
|
||||||
|
msg_ok "Set up Database"
|
||||||
|
|
||||||
msg_info "Setting up Reactive-Resume"
|
|
||||||
MINIO_PASS=$(openssl rand -base64 48)
|
MINIO_PASS=$(openssl rand -base64 48)
|
||||||
ACCESS_TOKEN=$(openssl rand -base64 48)
|
ACCESS_TOKEN=$(openssl rand -base64 48)
|
||||||
REFRESH_TOKEN=$(openssl rand -base64 48)
|
REFRESH_TOKEN=$(openssl rand -base64 48)
|
||||||
CHROME_TOKEN=$(openssl rand -hex 32)
|
CHROME_TOKEN=$(openssl rand -hex 32)
|
||||||
|
LOCAL_IP=$(hostname -I | awk '{print $1}')
|
||||||
TAG=$(curl -fsSL https://api.github.com/repos/browserless/browserless/tags?per_page=1 | grep "name" | awk '{print substr($2, 3, length($2)-4) }')
|
TAG=$(curl -fsSL https://api.github.com/repos/browserless/browserless/tags?per_page=1 | grep "name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
cd /opt/Reactive-Resume
|
|
||||||
|
fetch_and_deploy_gh_release "Reactive-Resume" "lazy-media/Reactive-Resume"
|
||||||
|
|
||||||
|
msg_info "Installing $APPLICATION"
|
||||||
|
cd /opt/"$APPLICATION"
|
||||||
export CI="true"
|
export CI="true"
|
||||||
export PUPPETEER_SKIP_DOWNLOAD="true"
|
export PUPPETEER_SKIP_DOWNLOAD="true"
|
||||||
export NODE_ENV="production"
|
export NODE_ENV="production"
|
||||||
@ -39,7 +50,7 @@ export NEXT_TELEMETRY_DISABLED=1
|
|||||||
$STD pnpm install --frozen-lockfile
|
$STD pnpm install --frozen-lockfile
|
||||||
$STD pnpm run build
|
$STD pnpm run build
|
||||||
$STD pnpm run prisma:generate
|
$STD pnpm run prisma:generate
|
||||||
msg_ok "Setup Reactive-Resume"
|
msg_ok "Installed $APPLICATION"
|
||||||
|
|
||||||
msg_info "Installing Browserless (Patience)"
|
msg_info "Installing Browserless (Patience)"
|
||||||
cd /tmp
|
cd /tmp
|
||||||
@ -65,14 +76,13 @@ MINIO_ROOT_PASSWORD="${MINIO_PASS}"
|
|||||||
MINIO_VOLUMES=/opt/minio
|
MINIO_VOLUMES=/opt/minio
|
||||||
MINIO_OPTS="--address :9000 --console-address 127.0.0.1:9001"
|
MINIO_OPTS="--address :9000 --console-address 127.0.0.1:9001"
|
||||||
EOF
|
EOF
|
||||||
|
cat <<EOF >/opt/"$APPLICATION"/.env
|
||||||
cat <<EOF >/opt/Reactive-Resume/.env
|
|
||||||
NODE_ENV=production
|
NODE_ENV=production
|
||||||
PORT=3000
|
PORT=3000
|
||||||
# for use behind a reverse proxy, use your FQDN for PUBLIC_URL and STORAGE_URL
|
# for use behind a reverse proxy, use your FQDN for PUBLIC_URL and STORAGE_URL
|
||||||
PUBLIC_URL=http://${LOCAL_IP}:3000
|
PUBLIC_URL=http://${LOCAL_IP}:3000
|
||||||
STORAGE_URL=http://${LOCAL_IP}:9000/rxresume
|
STORAGE_URL=http://${LOCAL_IP}:9000/rxresume
|
||||||
DATABASE_URL=postgresql://${PG_DB_USER}:${PG_DB_PASS}@localhost:5432/${PG_DB_NAME}?schema=public
|
DATABASE_URL=postgresql://${DB_USER}:${DB_PASS}@localhost:5432/${DB_NAME}?schema=public
|
||||||
ACCESS_TOKEN_SECRET=${ACCESS_TOKEN}
|
ACCESS_TOKEN_SECRET=${ACCESS_TOKEN}
|
||||||
REFRESH_TOKEN_SECRET=${REFRESH_TOKEN}
|
REFRESH_TOKEN_SECRET=${REFRESH_TOKEN}
|
||||||
CHROME_PORT=8080
|
CHROME_PORT=8080
|
||||||
@ -100,13 +110,19 @@ STORAGE_SKIP_BUCKET_CHECK=false
|
|||||||
# GOOGLE_CLIENT_SECRET=
|
# GOOGLE_CLIENT_SECRET=
|
||||||
# GOOGLE_CALLBACK_URL=http://localhost:5173/api/auth/google/callback
|
# GOOGLE_CALLBACK_URL=http://localhost:5173/api/auth/google/callback
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
cat <<EOF >/opt/browserless/.env
|
cat <<EOF >/opt/browserless/.env
|
||||||
DEBUG=browserless*,-**:verbose
|
DEBUG=browserless*,-**:verbose
|
||||||
HOST=localhost
|
HOST=localhost
|
||||||
PORT=8080
|
PORT=8080
|
||||||
TOKEN=${CHROME_TOKEN}
|
TOKEN=${CHROME_TOKEN}
|
||||||
EOF
|
EOF
|
||||||
|
{
|
||||||
|
echo "${APPLICATION} Credentials"
|
||||||
|
echo "Database User: $DB_USER"
|
||||||
|
echo "Database Password: $DB_PASS"
|
||||||
|
echo "Database Name: $DB_NAME"
|
||||||
|
echo "Minio Root Password: ${MINIO_PASS}"
|
||||||
|
} >>~/"$APPLICATION".creds
|
||||||
rm -f /tmp/v"$TAG".zip
|
rm -f /tmp/v"$TAG".zip
|
||||||
rm -f /tmp/minio.deb
|
rm -f /tmp/minio.deb
|
||||||
msg_ok "Configured applications"
|
msg_ok "Configured applications"
|
||||||
@ -121,15 +137,15 @@ WorkingDirectory=/usr/local/bin
|
|||||||
EnvironmentFile=/opt/minio/.env
|
EnvironmentFile=/opt/minio/.env
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
cat <<EOF >/etc/systemd/system/Reactive-Resume.service
|
cat <<EOF >/etc/systemd/system/"$APPLICATION".service
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Reactive-Resume Service
|
Description=${APPLICATION} Service
|
||||||
After=network.target postgresql.service minio.service
|
After=network.target postgresql.service minio.service
|
||||||
Wants=postgresql.service minio.service
|
Wants=postgresql.service minio.service
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
WorkingDirectory=/opt/Reactive-Resume
|
WorkingDirectory=/opt/${APPLICATION}
|
||||||
EnvironmentFile=/opt/Reactive-Resume/.env
|
EnvironmentFile=/opt/${APPLICATION}/.env
|
||||||
ExecStart=/usr/bin/pnpm run start
|
ExecStart=/usr/bin/pnpm run start
|
||||||
Restart=always
|
Restart=always
|
||||||
|
|
||||||
@ -140,7 +156,7 @@ EOF
|
|||||||
cat <<EOF >/etc/systemd/system/browserless.service
|
cat <<EOF >/etc/systemd/system/browserless.service
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Browserless service
|
Description=Browserless service
|
||||||
After=network.target Reactive-Resume.service
|
After=network.target ${APPLICATION}.service
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
WorkingDirectory=/opt/browserless
|
WorkingDirectory=/opt/browserless
|
||||||
@ -152,7 +168,7 @@ Restart=unless-stopped
|
|||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
EOF
|
EOF
|
||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
systemctl enable -q --now minio.service Reactive-Resume.service browserless.service
|
systemctl enable -q --now minio.service "$APPLICATION".service browserless.service
|
||||||
msg_ok "Created Services"
|
msg_ok "Created Services"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@ -14,22 +14,25 @@ network_check
|
|||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt install -y apt-transport-https
|
$STD apt install -y \
|
||||||
|
apt-transport-https \
|
||||||
|
lsb-release
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Setting up Redis Repository"
|
msg_info "Installing Redis"
|
||||||
setup_deb822_repo \
|
curl -fsSL "https://packages.redis.io/gpg" | gpg --dearmor >/usr/share/keyrings/redis-archive-keyring.gpg
|
||||||
"redis" \
|
cat <<EOF >/etc/apt/sources.list.d/redis.sources
|
||||||
"https://packages.redis.io/gpg" \
|
Types: deb
|
||||||
"https://packages.redis.io/deb" \
|
URIs: https://packages.redis.io/deb
|
||||||
"trixie"
|
Suites: $(lsb_release -cs)
|
||||||
msg_ok "Setup Redis Repository"
|
Components: main
|
||||||
|
Signed-By: /usr/share/keyrings/redis-archive-keyring.gpg
|
||||||
msg_info "Setting up Redis"
|
EOF
|
||||||
|
$STD apt update
|
||||||
$STD apt install -y redis
|
$STD apt install -y redis
|
||||||
sed -i 's/^bind .*/bind 0.0.0.0/' /etc/redis/redis.conf
|
sed -i 's/^bind .*/bind 0.0.0.0/' /etc/redis/redis.conf
|
||||||
systemctl enable -q --now redis-server
|
systemctl enable -q --now redis-server
|
||||||
msg_ok "Setup Redis"
|
msg_ok "Installed Redis"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
|
|||||||
@ -23,7 +23,25 @@ msg_ok "Installed Dependencies"
|
|||||||
|
|
||||||
JAVA_VERSION="24" setup_java
|
JAVA_VERSION="24" setup_java
|
||||||
PG_VERSION="17" PG_MODULES="postgis" setup_postgresql
|
PG_VERSION="17" PG_MODULES="postgis" setup_postgresql
|
||||||
PG_DB_NAME="reitti_db" PG_DB_USER="reitti" setup_postgresql_db
|
|
||||||
|
msg_info "Setting up PostgreSQL"
|
||||||
|
DB_NAME="reitti_db"
|
||||||
|
DB_USER="reitti"
|
||||||
|
DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)"
|
||||||
|
$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
|
||||||
|
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;"
|
||||||
|
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
|
||||||
|
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';"
|
||||||
|
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC';"
|
||||||
|
$STD sudo -u postgres psql -d "$DB_NAME" -c "CREATE EXTENSION IF NOT EXISTS postgis;"
|
||||||
|
$STD sudo -u postgres psql -d "$DB_NAME" -c "CREATE EXTENSION IF NOT EXISTS postgis_topology;"
|
||||||
|
{
|
||||||
|
echo "Reitti Credentials"
|
||||||
|
echo "Database Name: $DB_NAME"
|
||||||
|
echo "Database User: $DB_USER"
|
||||||
|
echo "Database Password: $DB_PASS"
|
||||||
|
} >>~/reitti.creds
|
||||||
|
msg_ok "PostgreSQL Setup Completed"
|
||||||
|
|
||||||
msg_info "Configuring RabbitMQ"
|
msg_info "Configuring RabbitMQ"
|
||||||
RABBIT_USER="reitti"
|
RABBIT_USER="reitti"
|
||||||
@ -53,9 +71,9 @@ cat <<EOF >/opt/reitti/application.properties
|
|||||||
reitti.server.advertise-uri=http://127.0.0.1:8080
|
reitti.server.advertise-uri=http://127.0.0.1:8080
|
||||||
|
|
||||||
# PostgreSQL Database Connection
|
# PostgreSQL Database Connection
|
||||||
spring.datasource.url=jdbc:postgresql://127.0.0.1:5432/$PG_DB_NAME
|
spring.datasource.url=jdbc:postgresql://127.0.0.1:5432/$DB_NAME
|
||||||
spring.datasource.username=$PG_DB_USER
|
spring.datasource.username=$DB_USER
|
||||||
spring.datasource.password=$PG_DB_PASS
|
spring.datasource.password=$DB_PASS
|
||||||
spring.datasource.driver-class-name=org.postgresql.Driver
|
spring.datasource.driver-class-name=org.postgresql.Driver
|
||||||
|
|
||||||
# Flyway Database Migrations
|
# Flyway Database Migrations
|
||||||
@ -114,7 +132,7 @@ Restart=on-failure
|
|||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
cat <<EOF >/etc/systemd/system/photon.service
|
cat <<'EOF' >/etc/systemd/system/photon.service
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Photon Geocoding Service (Germany, OpenSearch)
|
Description=Photon Geocoding Service (Germany, OpenSearch)
|
||||||
After=network.target
|
After=network.target
|
||||||
|
|||||||
@ -14,13 +14,16 @@ network_check
|
|||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Setting up Resilio Sync Repository"
|
msg_info "Setting up Resilio Sync Repository"
|
||||||
setup_deb822_repo \
|
curl -fsSL "https://linux-packages.resilio.com/resilio-sync/key.asc" >/usr/share/keyrings/resilio-sync-archive-keyring.asc
|
||||||
"resilio" \
|
cat <<EOF >/etc/apt/sources.list.d/resilio-sync.sources
|
||||||
"https://linux-packages.resilio.com/resilio-sync/key.asc" \
|
Types: deb
|
||||||
"http://linux-packages.resilio.com/resilio-sync/deb" \
|
URIs: http://linux-packages.resilio.com/resilio-sync/deb
|
||||||
"resilio-sync" \
|
Suites: resilio-sync
|
||||||
"non-free"
|
Components: non-free
|
||||||
msg_ok "Setup Resilio Sync Repository"
|
Signed-By: /usr/share/keyrings/resilio-sync-archive-keyring.asc
|
||||||
|
EOF
|
||||||
|
$STD apt update
|
||||||
|
msg_ok "Resilio Sync Repository Setup"
|
||||||
|
|
||||||
msg_info "Installing Resilio Sync"
|
msg_info "Installing Resilio Sync"
|
||||||
$STD apt install -y resilio-sync
|
$STD apt install -y resilio-sync
|
||||||
|
|||||||
@ -13,16 +13,19 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Setting up Salt Repo"
|
msg_info "Installing Dependencies"
|
||||||
setup_deb822_repo \
|
$STD apt install -y jq
|
||||||
"salt" \
|
msg_ok "Installed Dependencies"
|
||||||
"https://packages.broadcom.com/artifactory/api/security/keypair/SaltProjectKey/public" \
|
|
||||||
"https://packages.broadcom.com/artifactory/saltproject-deb" \
|
msg_info "Setup Salt Repo"
|
||||||
"stable"
|
mkdir -p /etc/apt/keyrings
|
||||||
|
curl -fsSL https://packages.broadcom.com/artifactory/api/security/keypair/SaltProjectKey/public -o /etc/apt/keyrings/salt-archive-keyring.pgp
|
||||||
|
curl -fsSL https://github.com/saltstack/salt-install-guide/releases/latest/download/salt.sources -o /etc/apt/sources.list.d/salt.sources
|
||||||
|
$STD apt update
|
||||||
msg_ok "Setup Salt Repo"
|
msg_ok "Setup Salt Repo"
|
||||||
|
|
||||||
msg_info "Installing Salt"
|
msg_info "Installing Salt"
|
||||||
RELEASE=$(get_latest_github_release "saltstack/salt")
|
RELEASE=$(curl -fsSL https://api.github.com/repos/saltstack/salt/releases/latest | jq -r .tag_name | sed 's/^v//')
|
||||||
cat <<EOF >/etc/apt/preferences.d/salt-pin-1001
|
cat <<EOF >/etc/apt/preferences.d/salt-pin-1001
|
||||||
Package: salt-*
|
Package: salt-*
|
||||||
Pin: version ${RELEASE}
|
Pin: version ${RELEASE}
|
||||||
|
|||||||
@ -15,15 +15,22 @@ update_os
|
|||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt install -y git
|
$STD apt install -y git
|
||||||
setup_deb822_repo \
|
|
||||||
"ansible" \
|
|
||||||
"https://keyserver.ubuntu.com/pks/lookup?fingerprint=on&op=get&search=0x6125E2A8C77F2818FB7BD15B93C4A3FD7BB9C367" \
|
|
||||||
"http://ppa.launchpad.net/ansible/ansible/ubuntu" \
|
|
||||||
"jammy"
|
|
||||||
$STD apt install -y ansible
|
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "semaphore" "semaphoreui/semaphore" "binary" "latest" "/opt/semaphore" "semaphore_*_linux_amd64.deb"
|
msg_info "Setting up Ansible"
|
||||||
|
curl -fsSL "https://keyserver.ubuntu.com/pks/lookup?fingerprint=on&op=get&search=0x6125E2A8C77F2818FB7BD15B93C4A3FD7BB9C367" | gpg --dearmor -o /usr/share/keyrings/ansible-archive-keyring.gpg
|
||||||
|
cat <<EOF >/etc/apt/sources.list.d/ansible.sources
|
||||||
|
Types: deb
|
||||||
|
URIs: http://ppa.launchpad.net/ansible/ansible/ubuntu
|
||||||
|
Suites: jammy
|
||||||
|
Components: main
|
||||||
|
Signed-By: /usr/share/keyrings/ansible-archive-keyring.gpg
|
||||||
|
EOF
|
||||||
|
$STD apt update
|
||||||
|
$STD apt install -y ansible
|
||||||
|
msg_ok "Set up Ansible"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "semaphore" "semaphoreui/semaphore" "binary"
|
||||||
|
|
||||||
msg_info "Configuring Semaphore"
|
msg_info "Configuring Semaphore"
|
||||||
mkdir -p /opt/semaphore
|
mkdir -p /opt/semaphore
|
||||||
@ -63,6 +70,7 @@ RestartSec=10s
|
|||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
systemctl enable -q --now semaphore
|
systemctl enable -q --now semaphore
|
||||||
msg_ok "Created Service"
|
msg_ok "Created Service"
|
||||||
|
|
||||||
|
|||||||
@ -28,7 +28,32 @@ $STD ./Tdarr_Updater
|
|||||||
rm -rf /opt/tdarr/Tdarr_Updater.zip
|
rm -rf /opt/tdarr/Tdarr_Updater.zip
|
||||||
msg_ok "Installed Tdarr"
|
msg_ok "Installed Tdarr"
|
||||||
|
|
||||||
setup_hwaccel
|
msg_info "Setting Up Hardware Acceleration"
|
||||||
|
$STD apt -y install \
|
||||||
|
va-driver-all \
|
||||||
|
ocl-icd-libopencl1 \
|
||||||
|
vainfo \
|
||||||
|
intel-gpu-tools \
|
||||||
|
mesa-va-drivers \
|
||||||
|
mesa-vdpau-drivers \
|
||||||
|
intel-media-va-driver
|
||||||
|
if [[ "$CTTYPE" == "0" ]]; then
|
||||||
|
chgrp video /dev/dri
|
||||||
|
chmod 755 /dev/dri
|
||||||
|
chmod 660 /dev/dri/*
|
||||||
|
$STD adduser $(id -u -n) video
|
||||||
|
$STD adduser $(id -u -n) render
|
||||||
|
VIDEO_GID=$(getent group video | cut -d: -f3)
|
||||||
|
RENDER_GID=$(getent group render | cut -d: -f3)
|
||||||
|
if [[ -n "$VIDEO_GID" && -n "$RENDER_GID" ]]; then
|
||||||
|
sed -i "s/^video:x:[0-9]*:/video:x:$VIDEO_GID:/" /etc/group
|
||||||
|
sed -i "s/^render:x:[0-9]*:/render:x:$RENDER_GID:/" /etc/group
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
VIDEO_GID=$(getent group video | cut -d: -f3)
|
||||||
|
RENDER_GID=$(getent group render | cut -d: -f3)
|
||||||
|
fi
|
||||||
|
msg_ok "Set Up Hardware Acceleration"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
cat <<EOF >/etc/systemd/system/tdarr-server.service
|
cat <<EOF >/etc/systemd/system/tdarr-server.service
|
||||||
|
|||||||
@ -13,17 +13,27 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Setting up Telegraf repository"
|
msg_info "Adding Telegraf key and repository"
|
||||||
setup_deb822_repo \
|
curl -fsSL -O https://repos.influxdata.com/influxdata-archive.key
|
||||||
"telegraf" \
|
gpg --show-keys --with-fingerprint --with-colons ./influxdata-archive.key 2>&1 |
|
||||||
"https://repos.influxdata.com/influxdata-archive.key" \
|
grep -q '^fpr:\+24C975CBA61A024EE1B631787C3D57159FC2F927:$' &&
|
||||||
"https://repos.influxdata.com/debian" \
|
cat influxdata-archive.key |
|
||||||
"stable"
|
gpg --dearmor |
|
||||||
msg_ok "Setup Telegraf Repository"
|
tee /etc/apt/keyrings/influxdata-archive.gpg >/dev/null
|
||||||
|
cat <<EOF | sudo tee /etc/apt/sources.list.d/influxdata.sources >/dev/null
|
||||||
|
Types: deb
|
||||||
|
URIs: https://repos.influxdata.com/debian
|
||||||
|
Suites: stable
|
||||||
|
Components: main
|
||||||
|
Signed-By: /etc/apt/keyrings/influxdata-archive.gpg
|
||||||
|
EOF
|
||||||
|
msg_ok "Added Telegraf Repository"
|
||||||
|
|
||||||
msg_info "Setting up Telegraf"
|
msg_info "Installing Telegraf"
|
||||||
$STD apt install -y telegraf
|
$STD apt update
|
||||||
msg_ok "Setup Telegraf"
|
$STD apt install telegraf -y
|
||||||
|
rm /influxdata-archive.key
|
||||||
|
msg_ok "Installed Telegraf"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
|
|||||||
@ -13,7 +13,7 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
NODE_VERSION="24" setup_nodejs
|
NODE_VERSION="22" setup_nodejs
|
||||||
fetch_and_deploy_gh_release "tracktor" "javedh-dev/tracktor" "tarball" "latest" "/opt/tracktor"
|
fetch_and_deploy_gh_release "tracktor" "javedh-dev/tracktor" "tarball" "latest" "/opt/tracktor"
|
||||||
|
|
||||||
msg_info "Configuring Tracktor"
|
msg_info "Configuring Tracktor"
|
||||||
@ -23,26 +23,22 @@ $STD npm run build
|
|||||||
mkdir -p /opt/tracktor-data/{uploads,logs}
|
mkdir -p /opt/tracktor-data/{uploads,logs}
|
||||||
cat <<EOF >/opt/tracktor.env
|
cat <<EOF >/opt/tracktor.env
|
||||||
NODE_ENV=production
|
NODE_ENV=production
|
||||||
# Set this to the path of the database file. Default - ./tracktor.db
|
|
||||||
DB_PATH=/opt/tracktor-data/tracktor.db
|
DB_PATH=/opt/tracktor-data/tracktor.db
|
||||||
# Set this to the path of the uploads directory. Default - ./uploads
|
|
||||||
UPLOADS_DIR="/opt/tracktor-data/uploads"
|
UPLOADS_DIR="/opt/tracktor-data/uploads"
|
||||||
# Set this to the path of the logs directory. Default - ./logs
|
|
||||||
LOG_DIR="/opt/tracktor-data/logs"
|
LOG_DIR="/opt/tracktor-data/logs"
|
||||||
# Hostname to bind the server to. Default - 0.0.0.0
|
# If server host is not set by default it will run on all interfaces - 0.0.0.0
|
||||||
#HOST="0.0.0.0"
|
# SERVER_HOST=""
|
||||||
# Port to bind the server to. Default - 3000
|
SERVER_PORT=3000
|
||||||
#PORT=3000
|
PORT=3000
|
||||||
# Set this to remove upload size limitations. Default - 512 Kb
|
# Set this if you want to secure your endpoints otherwise default will be "*"
|
||||||
BODY_SIZE_LIMIT=Infinity
|
# CORS_ORIGINS="*"
|
||||||
# Enable request logging. Default - true
|
# Set this if you are using backend and frontend separately. For lxc installation this is not needed
|
||||||
#LOG_REQUESTS=true
|
# PUBLIC_API_BASE_URL=""
|
||||||
# Set the logging level. Options - error, warn, info, verbose, debug, silly. Default - info
|
LOG_REQUESTS=true
|
||||||
#LOG_LEVEL="info"
|
LOG_LEVEL="info"
|
||||||
# Enable demo mode. Default - false
|
AUTH_PIN=123456
|
||||||
#TRACKTOR_DEMO_MODE=false
|
# PUBLIC_DEMO_MODE=false
|
||||||
# Force reseeding of data on every startup. Default - false
|
# FORCE_DATA_SEED=false
|
||||||
#FORCE_DATA_SEED=false
|
|
||||||
EOF
|
EOF
|
||||||
msg_ok "Configured Tracktor"
|
msg_ok "Configured Tracktor"
|
||||||
|
|
||||||
|
|||||||
@ -13,7 +13,53 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
setup_hwaccel
|
msg_info "Setting Up Hardware Acceleration"
|
||||||
|
if [[ "$CTTYPE" == "0" ]]; then
|
||||||
|
$STD adduser "$(id -un)" video
|
||||||
|
$STD adduser "$(id -un)" render
|
||||||
|
fi
|
||||||
|
msg_ok "Base Hardware Acceleration Set Up"
|
||||||
|
|
||||||
|
read -r -p "${TAB3}Do you need the intel-media-va-driver-non-free driver for HW encoding (Debian 13 only)? <y/N> " prompt
|
||||||
|
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||||
|
msg_info "Installing Intel Hardware Acceleration (non-free)"
|
||||||
|
cat <<'EOF' >/etc/apt/sources.list.d/non-free.sources
|
||||||
|
Types: deb deb-src
|
||||||
|
URIs: http://deb.debian.org/debian
|
||||||
|
Suites: trixie
|
||||||
|
Components: non-free non-free-firmware
|
||||||
|
|
||||||
|
Types: deb deb-src
|
||||||
|
URIs: http://deb.debian.org/debian-security
|
||||||
|
Suites: trixie-security
|
||||||
|
Components: non-free non-free-firmware
|
||||||
|
|
||||||
|
Types: deb deb-src
|
||||||
|
URIs: http://deb.debian.org/debian
|
||||||
|
Suites: trixie-updates
|
||||||
|
Components: non-free non-free-firmware
|
||||||
|
EOF
|
||||||
|
|
||||||
|
$STD apt update
|
||||||
|
$STD apt -y install \
|
||||||
|
intel-media-va-driver-non-free \
|
||||||
|
ocl-icd-libopencl1 \
|
||||||
|
mesa-opencl-icd \
|
||||||
|
mesa-va-drivers \
|
||||||
|
libvpl2 \
|
||||||
|
vainfo \
|
||||||
|
intel-gpu-tools
|
||||||
|
else
|
||||||
|
msg_info "Installing Intel Hardware Acceleration (open packages)"
|
||||||
|
$STD apt -y install \
|
||||||
|
va-driver-all \
|
||||||
|
ocl-icd-libopencl1 \
|
||||||
|
mesa-opencl-icd \
|
||||||
|
mesa-va-drivers \
|
||||||
|
vainfo \
|
||||||
|
intel-gpu-tools
|
||||||
|
fi
|
||||||
|
msg_ok "Installed and Set Up Intel Hardware Acceleration"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "tunarr" "chrisbenincasa/tunarr" "prebuild" "latest" "/opt/tunarr" "*linux-x64.tar.gz"
|
fetch_and_deploy_gh_release "tunarr" "chrisbenincasa/tunarr" "prebuild" "latest" "/opt/tunarr" "*linux-x64.tar.gz"
|
||||||
cd /opt/tunarr
|
cd /opt/tunarr
|
||||||
|
|||||||
@ -19,7 +19,32 @@ $STD apt install -y \
|
|||||||
python3-pip
|
python3-pip
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
setup_hwaccel
|
msg_info "Setting Up Hardware Acceleration"
|
||||||
|
$STD apt -y install \
|
||||||
|
va-driver-all \
|
||||||
|
ocl-icd-libopencl1 \
|
||||||
|
vainfo \
|
||||||
|
intel-gpu-tools \
|
||||||
|
mesa-va-drivers \
|
||||||
|
mesa-vdpau-drivers \
|
||||||
|
intel-media-va-driver
|
||||||
|
if [[ "$CTTYPE" == "0" ]]; then
|
||||||
|
chgrp video /dev/dri
|
||||||
|
chmod 755 /dev/dri
|
||||||
|
chmod 660 /dev/dri/*
|
||||||
|
$STD adduser $(id -u -n) video
|
||||||
|
$STD adduser $(id -u -n) render
|
||||||
|
VIDEO_GID=$(getent group video | cut -d: -f3)
|
||||||
|
RENDER_GID=$(getent group render | cut -d: -f3)
|
||||||
|
if [[ -n "$VIDEO_GID" && -n "$RENDER_GID" ]]; then
|
||||||
|
sed -i "s/^video:x:[0-9]*:/video:x:$VIDEO_GID:/" /etc/group
|
||||||
|
sed -i "s/^render:x:[0-9]*:/render:x:$RENDER_GID:/" /etc/group
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
VIDEO_GID=$(getent group video | cut -d: -f3)
|
||||||
|
RENDER_GID=$(getent group render | cut -d: -f3)
|
||||||
|
fi
|
||||||
|
msg_ok "Set Up Hardware Acceleration"
|
||||||
|
|
||||||
msg_info "Installing Unmanic"
|
msg_info "Installing Unmanic"
|
||||||
$STD pip3 install unmanic
|
$STD pip3 install unmanic
|
||||||
|
|||||||
173
misc/tools.func
173
misc/tools.func
@ -2585,116 +2585,40 @@ function setup_hwaccel() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Detect GPU vendor (Intel, AMD, NVIDIA)
|
# Detect GPU vendor (Intel, AMD, NVIDIA)
|
||||||
local gpu_vendor gpu_info
|
local gpu_vendor
|
||||||
gpu_info=$(lspci 2>/dev/null | grep -Ei 'vga|3d|display' || echo "")
|
gpu_vendor=$(lspci 2>/dev/null | grep -Ei 'vga|3d|display' | grep -Eo 'Intel|AMD|NVIDIA' | head -n1 || echo "")
|
||||||
gpu_vendor=$(echo "$gpu_info" | grep -Eo 'Intel|AMD|NVIDIA' | head -n1 || echo "")
|
|
||||||
|
|
||||||
# Detect CPU vendor (relevant for AMD APUs)
|
# Detect CPU vendor (relevant for AMD APUs)
|
||||||
local cpu_vendor
|
local cpu_vendor
|
||||||
cpu_vendor=$(lscpu 2>/dev/null | grep -i 'Vendor ID' | awk '{print $3}' || echo "")
|
cpu_vendor=$(lscpu 2>/dev/null | grep -i 'Vendor ID' | awk '{print $3}' || echo "")
|
||||||
|
|
||||||
if [[ -z "$gpu_vendor" && -z "$cpu_vendor" ]]; then
|
if [[ -z "$gpu_vendor" && -z "$cpu_vendor" ]]; then
|
||||||
msg_warn "No GPU or CPU vendor detected - skipping hardware acceleration setup"
|
msg_error "No GPU or CPU vendor detected (missing lspci/lscpu output)"
|
||||||
msg_ok "Setup Hardware Acceleration (skipped - no GPU detected)"
|
return 1
|
||||||
return 0
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Detect OS with fallbacks
|
# Detect OS with fallbacks
|
||||||
local os_id os_codename os_version
|
local os_id os_codename
|
||||||
os_id=$(grep -oP '(?<=^ID=).+' /etc/os-release 2>/dev/null | tr -d '"' || echo "debian")
|
os_id=$(grep -oP '(?<=^ID=).+' /etc/os-release 2>/dev/null | tr -d '"' || grep '^ID=' /etc/os-release 2>/dev/null | cut -d'=' -f2 | tr -d '"' || echo "debian")
|
||||||
os_codename=$(grep -oP '(?<=^VERSION_CODENAME=).+' /etc/os-release 2>/dev/null | tr -d '"' || echo "unknown")
|
os_codename=$(grep -oP '(?<=^VERSION_CODENAME=).+' /etc/os-release 2>/dev/null | tr -d '"' || grep '^VERSION_CODENAME=' /etc/os-release 2>/dev/null | cut -d'=' -f2 | tr -d '"' || echo "unknown")
|
||||||
os_version=$(grep -oP '(?<=^VERSION_ID=).+' /etc/os-release 2>/dev/null | tr -d '"' || echo "")
|
|
||||||
|
|
||||||
[[ -z "$os_id" ]] && os_id="debian"
|
# Validate os_id
|
||||||
|
if [[ -z "$os_id" ]]; then
|
||||||
|
os_id="debian"
|
||||||
|
fi
|
||||||
|
|
||||||
# Determine if we are in a privileged LXC container
|
# Determine if we are on a VM or LXC
|
||||||
local in_ct="${CTTYPE:-0}"
|
local in_ct="${CTTYPE:-0}"
|
||||||
|
|
||||||
case "$gpu_vendor" in
|
case "$gpu_vendor" in
|
||||||
Intel)
|
Intel)
|
||||||
# Detect Intel GPU generation for driver selection
|
|
||||||
# Gen 9+ (Skylake and newer) benefit from non-free drivers
|
|
||||||
local intel_gen=""
|
|
||||||
local needs_nonfree=false
|
|
||||||
|
|
||||||
# Check for specific Intel GPU models that need non-free drivers
|
|
||||||
if echo "$gpu_info" | grep -Ei 'HD Graphics [56][0-9]{2}|UHD Graphics|Iris|Arc|DG[12]' &>/dev/null; then
|
|
||||||
needs_nonfree=true
|
|
||||||
intel_gen="gen9+"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "$os_id" == "ubuntu" ]]; then
|
if [[ "$os_id" == "ubuntu" ]]; then
|
||||||
# Ubuntu: Use packages from Ubuntu repos
|
$STD apt -y install intel-opencl-icd || {
|
||||||
$STD apt -y install \
|
msg_error "Failed to install intel-opencl-icd"
|
||||||
va-driver-all \
|
|
||||||
ocl-icd-libopencl1 \
|
|
||||||
intel-opencl-icd \
|
|
||||||
vainfo \
|
|
||||||
intel-gpu-tools || {
|
|
||||||
msg_error "Failed to install Intel GPU dependencies"
|
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
# Try to install intel-media-va-driver for newer GPUs
|
else
|
||||||
$STD apt -y install intel-media-va-driver 2>/dev/null || true
|
# For Debian: fetch Intel GPU drivers from GitHub
|
||||||
|
|
||||||
elif [[ "$os_id" == "debian" ]]; then
|
|
||||||
# Debian: Check version and install appropriate drivers
|
|
||||||
if [[ "$needs_nonfree" == true ]]; then
|
|
||||||
# Add non-free repo for intel-media-va-driver-non-free
|
|
||||||
if [[ "$os_codename" == "bookworm" ]]; then
|
|
||||||
# Debian 12 Bookworm
|
|
||||||
if [[ ! -f /etc/apt/sources.list.d/non-free.list && ! -f /etc/apt/sources.list.d/non-free.sources ]]; then
|
|
||||||
cat <<EOF >/etc/apt/sources.list.d/non-free.sources
|
|
||||||
Types: deb
|
|
||||||
URIs: http://deb.debian.org/debian
|
|
||||||
Suites: bookworm bookworm-updates
|
|
||||||
Components: non-free non-free-firmware
|
|
||||||
EOF
|
|
||||||
$STD apt update
|
|
||||||
fi
|
|
||||||
$STD apt -y install \
|
|
||||||
intel-media-va-driver-non-free \
|
|
||||||
ocl-icd-libopencl1 \
|
|
||||||
intel-opencl-icd \
|
|
||||||
vainfo \
|
|
||||||
intel-gpu-tools || {
|
|
||||||
msg_warn "Non-free driver install failed, falling back to open drivers"
|
|
||||||
needs_nonfree=false
|
|
||||||
}
|
|
||||||
|
|
||||||
elif [[ "$os_codename" == "trixie" || "$os_codename" == "sid" ]]; then
|
|
||||||
# Debian 13 Trixie / Sid
|
|
||||||
if [[ ! -f /etc/apt/sources.list.d/non-free.sources ]]; then
|
|
||||||
cat <<'EOF' >/etc/apt/sources.list.d/non-free.sources
|
|
||||||
Types: deb
|
|
||||||
URIs: http://deb.debian.org/debian
|
|
||||||
Suites: trixie trixie-updates
|
|
||||||
Components: non-free non-free-firmware
|
|
||||||
|
|
||||||
Types: deb
|
|
||||||
URIs: http://deb.debian.org/debian-security
|
|
||||||
Suites: trixie-security
|
|
||||||
Components: non-free non-free-firmware
|
|
||||||
EOF
|
|
||||||
$STD apt update
|
|
||||||
fi
|
|
||||||
$STD apt -y install \
|
|
||||||
intel-media-va-driver-non-free \
|
|
||||||
ocl-icd-libopencl1 \
|
|
||||||
mesa-opencl-icd \
|
|
||||||
mesa-va-drivers \
|
|
||||||
libvpl2 \
|
|
||||||
vainfo \
|
|
||||||
intel-gpu-tools 2>/dev/null || {
|
|
||||||
msg_warn "Non-free driver install failed, falling back to open drivers"
|
|
||||||
needs_nonfree=false
|
|
||||||
}
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Fallback to open drivers or older Intel GPUs
|
|
||||||
if [[ "$needs_nonfree" == false ]]; then
|
|
||||||
# Fetch latest Intel drivers from GitHub for Debian
|
|
||||||
fetch_and_deploy_gh_release "" "intel/intel-graphics-compiler" "binary" "latest" "" "intel-igc-core-2_*_amd64.deb" || {
|
fetch_and_deploy_gh_release "" "intel/intel-graphics-compiler" "binary" "latest" "" "intel-igc-core-2_*_amd64.deb" || {
|
||||||
msg_warn "Failed to deploy Intel IGC core 2"
|
msg_warn "Failed to deploy Intel IGC core 2"
|
||||||
}
|
}
|
||||||
@ -2707,78 +2631,47 @@ EOF
|
|||||||
fetch_and_deploy_gh_release "" "intel/compute-runtime" "binary" "latest" "" "intel-opencl-icd_*_amd64.deb" || {
|
fetch_and_deploy_gh_release "" "intel/compute-runtime" "binary" "latest" "" "intel-opencl-icd_*_amd64.deb" || {
|
||||||
msg_warn "Failed to deploy Intel OpenCL ICD"
|
msg_warn "Failed to deploy Intel OpenCL ICD"
|
||||||
}
|
}
|
||||||
|
fi
|
||||||
|
|
||||||
$STD apt -y install \
|
$STD apt -y install va-driver-all ocl-icd-libopencl1 vainfo intel-gpu-tools || {
|
||||||
va-driver-all \
|
|
||||||
ocl-icd-libopencl1 \
|
|
||||||
mesa-opencl-icd \
|
|
||||||
mesa-va-drivers \
|
|
||||||
vainfo \
|
|
||||||
intel-gpu-tools || {
|
|
||||||
msg_error "Failed to install Intel GPU dependencies"
|
msg_error "Failed to install Intel GPU dependencies"
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
fi
|
|
||||||
fi
|
|
||||||
;;
|
;;
|
||||||
|
|
||||||
AMD)
|
AMD)
|
||||||
$STD apt -y install \
|
$STD apt -y install mesa-va-drivers mesa-vdpau-drivers mesa-opencl-icd vainfo clinfo || {
|
||||||
mesa-va-drivers \
|
|
||||||
mesa-vdpau-drivers \
|
|
||||||
mesa-opencl-icd \
|
|
||||||
ocl-icd-libopencl1 \
|
|
||||||
vainfo \
|
|
||||||
clinfo 2>/dev/null || {
|
|
||||||
msg_error "Failed to install AMD GPU dependencies"
|
msg_error "Failed to install AMD GPU dependencies"
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
# AMD firmware for better GPU support
|
# For AMD CPUs without discrete GPU (APUs)
|
||||||
if [[ "$os_id" == "debian" ]]; then
|
if [[ "$cpu_vendor" == "AuthenticAMD" && -n "$gpu_vendor" ]]; then
|
||||||
$STD apt -y install firmware-amd-graphics 2>/dev/null || true
|
$STD apt -y install libdrm-amdgpu1 firmware-amd-graphics || true
|
||||||
fi
|
fi
|
||||||
$STD apt -y install libdrm-amdgpu1 2>/dev/null || true
|
|
||||||
;;
|
;;
|
||||||
|
|
||||||
NVIDIA)
|
NVIDIA)
|
||||||
# NVIDIA needs manual driver setup or passthrough from host
|
# NVIDIA needs manual driver setup - skip for now
|
||||||
msg_warn "NVIDIA GPU detected - driver must be installed manually or passed through from host"
|
msg_info "NVIDIA GPU detected - manual driver setup required"
|
||||||
# Install basic VA-API support for potential hybrid setups
|
|
||||||
$STD apt -y install va-driver-all vainfo 2>/dev/null || true
|
|
||||||
;;
|
;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
# No discrete GPU detected - check for AMD APU
|
# If no discrete GPU, but AMD CPU (e.g., Ryzen APU)
|
||||||
if [[ "$cpu_vendor" == "AuthenticAMD" ]]; then
|
if [[ "$cpu_vendor" == "AuthenticAMD" ]]; then
|
||||||
$STD apt -y install \
|
$STD apt -y install mesa-opencl-icd ocl-icd-libopencl1 clinfo || {
|
||||||
mesa-va-drivers \
|
msg_error "Failed to install Mesa OpenCL stack"
|
||||||
mesa-vdpau-drivers \
|
return 1
|
||||||
mesa-opencl-icd \
|
}
|
||||||
ocl-icd-libopencl1 \
|
|
||||||
vainfo 2>/dev/null || true
|
|
||||||
else
|
else
|
||||||
msg_warn "No supported GPU vendor detected - skipping GPU driver installation"
|
msg_warn "No supported GPU vendor detected - skipping GPU acceleration"
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Set permissions for /dev/dri (only in privileged containers and if /dev/dri exists)
|
if [[ "$in_ct" == "0" ]]; then
|
||||||
if [[ "$in_ct" == "0" && -d /dev/dri ]]; then
|
|
||||||
chgrp video /dev/dri 2>/dev/null || true
|
chgrp video /dev/dri 2>/dev/null || true
|
||||||
chmod 755 /dev/dri 2>/dev/null || true
|
chmod 755 /dev/dri 2>/dev/null || true
|
||||||
chmod 660 /dev/dri/* 2>/dev/null || true
|
chmod 660 /dev/dri/* 2>/dev/null || true
|
||||||
$STD adduser "$(id -u -n)" video 2>/dev/null || true
|
$STD adduser "$(id -u -n)" video
|
||||||
$STD adduser "$(id -u -n)" render 2>/dev/null || true
|
$STD adduser "$(id -u -n)" render
|
||||||
|
|
||||||
# Sync GID for video/render groups between host and container
|
|
||||||
local host_video_gid host_render_gid
|
|
||||||
host_video_gid=$(getent group video | cut -d: -f3)
|
|
||||||
host_render_gid=$(getent group render | cut -d: -f3)
|
|
||||||
if [[ -n "$host_video_gid" && -n "$host_render_gid" ]]; then
|
|
||||||
sed -i "s/^video:x:[0-9]*:/video:x:$host_video_gid:/" /etc/group 2>/dev/null || true
|
|
||||||
sed -i "s/^render:x:[0-9]*:/render:x:$host_render_gid:/" /etc/group 2>/dev/null || true
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cache_installed_version "hwaccel" "1.0"
|
cache_installed_version "hwaccel" "1.0"
|
||||||
|
|||||||
Reference in New Issue
Block a user