mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-12-17 20:53:28 +01:00
Compare commits
6 Commits
main
...
feat/gpu-a
| Author | SHA1 | Date | |
|---|---|---|---|
| 452b82e8a1 | |||
| 88104f3da6 | |||
| 81f5f586a1 | |||
| 61dd87c9e6 | |||
| b73b83d45d | |||
| 2578e365f4 |
27
CHANGELOG.md
27
CHANGELOG.md
@ -12,33 +12,6 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
## 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
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
@ -28,7 +28,7 @@ function update_script() {
|
||||
msg_error "No ${APP} installation found!"
|
||||
exit 1
|
||||
fi
|
||||
if check_for_gh_release "endurain" "endurain-project/endurain"; then
|
||||
if check_for_gh_release "endurain" "joaovitoriasilva/endurain"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop endurain
|
||||
msg_ok "Stopped Service"
|
||||
@ -38,7 +38,7 @@ function update_script() {
|
||||
cp /opt/endurain/frontend/app/dist/env.js /opt/endurain.env.js
|
||||
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"
|
||||
cd /opt/endurain
|
||||
|
||||
@ -23,23 +23,29 @@ function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -x /usr/local/bin/wings ]]; then
|
||||
if [[ ! -f /usr/local/bin/wings ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "wings" "pterodactyl/wings"; then
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/pterodactyl/wings/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop wings
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Updating ${APP} to v${RELEASE}"
|
||||
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"
|
||||
systemctl start wings
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated successfully!"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
@ -29,11 +29,16 @@ function update_script() {
|
||||
fi
|
||||
if grep -q "dl.cloudsmith.io" /etc/apt/sources.list.d/rabbitmq.list; then
|
||||
rm -f /etc/apt/sources.list.d/rabbitmq.list
|
||||
setup_deb822_repo \
|
||||
"rabbitmq" \
|
||||
"https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" \
|
||||
"https://deb1.rabbitmq.com/rabbitmq-server/debian/trixie" \
|
||||
"trixie"
|
||||
cat <<EOF >/etc/apt/sources.list.d/rabbitmq.list
|
||||
## Modern Erlang/OTP releases
|
||||
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-erlang/debian/trixie trixie main
|
||||
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-erlang/debian/trixie trixie main
|
||||
|
||||
## 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
|
||||
|
||||
msg_info "Stopping Service"
|
||||
|
||||
@ -41,7 +41,7 @@ function update_script() {
|
||||
cp -R /opt/rdtc-backup/appsettings.json /opt/rdtc/
|
||||
if dpkg-query -W dotnet-sdk-8.0 >/dev/null 2>&1; then
|
||||
$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
|
||||
rm -rf /opt/rdtc-backup
|
||||
|
||||
|
||||
@ -33,11 +33,12 @@ function update_script() {
|
||||
systemctl stop Reactive-Resume
|
||||
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"
|
||||
|
||||
msg_info "Updating Reactive-Resume"
|
||||
cd /opt/Reactive-Resume
|
||||
msg_info "Updating $APP"
|
||||
cd /opt/"$APP"
|
||||
export PUPPETEER_SKIP_DOWNLOAD="true"
|
||||
export NEXT_TELEMETRY_DISABLED=1
|
||||
export CI="true"
|
||||
@ -45,8 +46,8 @@ function update_script() {
|
||||
$STD pnpm install --frozen-lockfile
|
||||
$STD pnpm run build
|
||||
$STD pnpm run prisma:generate
|
||||
mv /opt/rxresume.env /opt/Reactive-Resume/.env
|
||||
msg_ok "Updated Reactive-Resume"
|
||||
mv /opt/rxresume.env /opt/"$APP"/.env
|
||||
msg_ok "Updated $APP"
|
||||
|
||||
msg_info "Updating Minio"
|
||||
systemctl stop minio
|
||||
|
||||
@ -27,10 +27,9 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
msg_info "Updating $APP LXC"
|
||||
$STD apt update
|
||||
$STD apt upgrade -y
|
||||
$STD apt -y upgrade
|
||||
msg_ok "Updated $APP LXC"
|
||||
msg_ok "Updated successfully!"
|
||||
exit
|
||||
|
||||
@ -27,9 +27,9 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Updating Resilio Sync"
|
||||
msg_info "Updating ${APP} LXC"
|
||||
$STD apt update
|
||||
$STD apt upgrade -y
|
||||
$STD apt -y upgrade
|
||||
msg_ok "Updated successfully!"
|
||||
exit
|
||||
}
|
||||
|
||||
@ -29,14 +29,16 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
|
||||
RELEASE=$(get_latest_github_release "saltstack/salt")
|
||||
if check_for_gh_release "salt" "saltstack/salt"; then
|
||||
msg_info "Updating Salt"
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/saltstack/salt/releases/latest | jq -r .tag_name | sed 's/^v//')
|
||||
if [[ ! -f /~.salt ]] || [[ "${RELEASE}" != "$(cat /~.salt)" ]]; then
|
||||
msg_info "Updating $APP to ${RELEASE}"
|
||||
sed -i "s/^\(Pin: version \).*/\1${RELEASE}/" /etc/apt/preferences.d/salt-pin-1001
|
||||
$STD apt update
|
||||
$STD apt upgrade -y
|
||||
echo "${RELEASE}" >/~.salt
|
||||
msg_ok "Updated successfully!"
|
||||
else
|
||||
msg_ok "${APP} is already up to date (${RELEASE})"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
@ -33,7 +33,7 @@ function update_script() {
|
||||
systemctl stop semaphore
|
||||
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"
|
||||
systemctl start semaphore
|
||||
|
||||
@ -34,7 +34,7 @@ function update_script() {
|
||||
|
||||
msg_info "Updating Telegraf"
|
||||
$STD apt update
|
||||
$STD apt upgrade -y telegraf
|
||||
$STD apt upgrade telegraf -y
|
||||
msg_ok "Updated Telegraf"
|
||||
|
||||
msg_info "Starting Service"
|
||||
|
||||
@ -34,39 +34,38 @@ function update_script() {
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
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
|
||||
mkdir -p /opt/tracktor-data/{uploads,logs}
|
||||
fi
|
||||
if ! grep -qxF 'BODY_SIZE_LIMIT=Infinity' /opt/tracktor.env; then
|
||||
rm /opt/tracktor.env
|
||||
cat <<EOF >/opt/tracktor.env
|
||||
EXISTING_AUTH_PIN=$(grep '^AUTH_PIN=' /opt/tracktor.env 2>/dev/null | cut -d'=' -f2)
|
||||
AUTH_PIN=${EXISTING_AUTH_PIN:-123456}
|
||||
cat <<EOF >/opt/tracktor.env
|
||||
NODE_ENV=production
|
||||
# Set this to the path of the database file. Default - ./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"
|
||||
# Set this to the path of the logs directory. Default - ./logs
|
||||
LOG_DIR="/opt/tracktor-data/logs"
|
||||
# Hostname to bind the server to. Default - 0.0.0.0
|
||||
#HOST="0.0.0.0"
|
||||
# Port to bind the server to. Default - 3000
|
||||
#PORT=3000
|
||||
# Set this to remove upload size limitations. Default - 512 Kb
|
||||
BODY_SIZE_LIMIT=Infinity
|
||||
# Enable request logging. Default - true
|
||||
#LOG_REQUESTS=true
|
||||
# Set the logging level. Options - error, warn, info, verbose, debug, silly. Default - info
|
||||
#LOG_LEVEL="info"
|
||||
# Enable demo mode. Default - false
|
||||
#TRACKTOR_DEMO_MODE=false
|
||||
# Force reseeding of data on every startup. Default - false
|
||||
# If server host is not set by default it will run on all interfaces - 0.0.0.0
|
||||
# SERVER_HOST=""
|
||||
SERVER_PORT=3000
|
||||
# Set this if you want to secure your endpoints otherwise default will be "*"
|
||||
CORS_ORIGINS="*"
|
||||
# Set this if you are using backend and frontend separately.
|
||||
# PUBLIC_API_BASE_URL=""
|
||||
LOG_REQUESTS=true
|
||||
LOG_LEVEL="info"
|
||||
AUTH_PIN=${AUTH_PIN}
|
||||
# PUBLIC_DEMO_MODE=false
|
||||
# FORCE_DATA_SEED=false
|
||||
EOF
|
||||
fi
|
||||
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"
|
||||
|
||||
msg_info "Updating tracktor"
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
"documentation": "https://pterodactyl.io/wings/1.0/installing.html",
|
||||
"website": "https://pterodactyl.io",
|
||||
"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.",
|
||||
"install_methods": [
|
||||
{
|
||||
|
||||
@ -1,109 +1,4 @@
|
||||
[
|
||||
{
|
||||
"name": "zabbix/zabbix",
|
||||
"version": "7.0.22",
|
||||
"date": "2025-12-17T10:10:49Z"
|
||||
},
|
||||
{
|
||||
"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": "bunkerity/bunkerweb",
|
||||
"version": "v1.6.7-rc1",
|
||||
"date": "2025-12-17T08:57:07Z"
|
||||
},
|
||||
{
|
||||
"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": "comfyanonymous/ComfyUI",
|
||||
"version": "v0.5.0",
|
||||
"date": "2025-12-17T08:46:11Z"
|
||||
},
|
||||
{
|
||||
"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": "BerriAI/litellm",
|
||||
"version": "v1.80.10.rc.3",
|
||||
"date": "2025-12-17T07:48:43Z"
|
||||
},
|
||||
{
|
||||
"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": "metabase/metabase",
|
||||
"version": "v0.58.0-beta",
|
||||
"date": "2025-12-17T03:57:33Z"
|
||||
},
|
||||
{
|
||||
"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",
|
||||
"version": "2025.12.0",
|
||||
@ -125,15 +20,20 @@
|
||||
"date": "2025-12-16T21:19:10Z"
|
||||
},
|
||||
{
|
||||
"name": "keycloak/keycloak",
|
||||
"version": "26.4.7",
|
||||
"date": "2025-12-01T08:14:11Z"
|
||||
"name": "metabase/metabase",
|
||||
"version": "v0.57.x",
|
||||
"date": "2025-12-16T19:20:02Z"
|
||||
},
|
||||
{
|
||||
"name": "prometheus-pve/prometheus-pve-exporter",
|
||||
"version": "v3.7.0",
|
||||
"date": "2025-12-16T19:01:35Z"
|
||||
},
|
||||
{
|
||||
"name": "Jackett/Jackett",
|
||||
"version": "v0.24.462",
|
||||
"date": "2025-12-16T19:01:01Z"
|
||||
},
|
||||
{
|
||||
"name": "netbox-community/netbox",
|
||||
"version": "v4.4.8",
|
||||
@ -159,6 +59,11 @@
|
||||
"version": "fumadocs-mdx@14.1.1",
|
||||
"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",
|
||||
@ -169,11 +74,26 @@
|
||||
"version": "jenkins-2.542",
|
||||
"date": "2025-12-16T13:49:44Z"
|
||||
},
|
||||
{
|
||||
"name": "TuroYT/snowshare",
|
||||
"version": "v1.2.1",
|
||||
"date": "2025-12-16T13:34:04Z"
|
||||
},
|
||||
{
|
||||
"name": "release-argus/Argus",
|
||||
"version": "0.28.2",
|
||||
"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",
|
||||
"version": "v3.8.1",
|
||||
@ -194,16 +114,41 @@
|
||||
"version": "4.5.5",
|
||||
"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",
|
||||
"version": "v1.5.3",
|
||||
"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",
|
||||
"version": "v2.1.4",
|
||||
@ -234,6 +179,11 @@
|
||||
"version": "v4.1.0",
|
||||
"date": "2025-12-15T18:53:25Z"
|
||||
},
|
||||
{
|
||||
"name": "keycloak/keycloak",
|
||||
"version": "26.4.7",
|
||||
"date": "2025-12-01T08:14:11Z"
|
||||
},
|
||||
{
|
||||
"name": "rabbitmq/rabbitmq-server",
|
||||
"version": "v4.2.2",
|
||||
@ -304,6 +254,21 @@
|
||||
"version": "v10.11.5",
|
||||
"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",
|
||||
"version": "v1.9.13",
|
||||
@ -464,6 +429,11 @@
|
||||
"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",
|
||||
"version": "v1.1.09",
|
||||
@ -474,6 +444,11 @@
|
||||
"version": "v2.2.0.102-2.2.0.102_canary_2025-12-12",
|
||||
"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",
|
||||
"version": "3.4.3",
|
||||
@ -504,6 +479,11 @@
|
||||
"version": "0.43.1",
|
||||
"date": "2025-12-11T22:45:52Z"
|
||||
},
|
||||
{
|
||||
"name": "coollabsio/coolify",
|
||||
"version": "v4.0.0-beta.454",
|
||||
"date": "2025-12-11T20:37:05Z"
|
||||
},
|
||||
{
|
||||
"name": "msgbyte/tianji",
|
||||
"version": "v1.30.22",
|
||||
@ -539,6 +519,11 @@
|
||||
"version": "v1.72.1",
|
||||
"date": "2025-12-10T14:55:44Z"
|
||||
},
|
||||
{
|
||||
"name": "nzbgetcom/nzbget",
|
||||
"version": "v25.4",
|
||||
"date": "2025-10-09T10:27:01Z"
|
||||
},
|
||||
{
|
||||
"name": "evcc-io/evcc",
|
||||
"version": "0.211.1",
|
||||
@ -554,6 +539,11 @@
|
||||
"version": "2.2.15",
|
||||
"date": "2025-12-10T01:52:14Z"
|
||||
},
|
||||
{
|
||||
"name": "comfyanonymous/ComfyUI",
|
||||
"version": "v0.4.0",
|
||||
"date": "2025-12-10T00:11:48Z"
|
||||
},
|
||||
{
|
||||
"name": "pelican-dev/panel",
|
||||
"version": "v1.0.0-beta29",
|
||||
@ -769,6 +759,11 @@
|
||||
"version": "6.2.10",
|
||||
"date": "2025-12-03T13:58:32Z"
|
||||
},
|
||||
{
|
||||
"name": "SigNoz/signoz",
|
||||
"version": "v0.104.0",
|
||||
"date": "2025-12-03T06:48:38Z"
|
||||
},
|
||||
{
|
||||
"name": "hyperion-project/hyperion.ng",
|
||||
"version": "2.1.1",
|
||||
@ -874,6 +869,11 @@
|
||||
"version": "v3.13",
|
||||
"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",
|
||||
"version": "v25.9.0",
|
||||
|
||||
@ -29,7 +29,19 @@ if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
|
||||
exit 10
|
||||
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)"
|
||||
cd /opt
|
||||
|
||||
@ -13,7 +13,16 @@ setting_up_container
|
||||
network_check
|
||||
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"
|
||||
|
||||
|
||||
@ -22,7 +22,7 @@ NODE_VERSION="24" setup_nodejs
|
||||
PG_VERSION="17" PG_MODULES="postgis" setup_postgresql
|
||||
PG_DB_NAME="enduraindb" PG_DB_USER="endurain" setup_postgresql_db
|
||||
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"
|
||||
cd /opt/endurain
|
||||
|
||||
@ -13,7 +13,38 @@ setting_up_container
|
||||
network_check
|
||||
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-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
|
||||
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"
|
||||
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
|
||||
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)"
|
||||
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/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
|
||||
chgrp video /dev/dri 2>/dev/null || true
|
||||
chmod 755 /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)" render 2>/dev/null || true
|
||||
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 "Dependencies Installed"
|
||||
|
||||
|
||||
@ -13,7 +13,25 @@ setting_up_container
|
||||
network_check
|
||||
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"
|
||||
VERSION="$(awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release)"
|
||||
|
||||
@ -41,11 +41,16 @@ EOF
|
||||
$STD apt update
|
||||
msg_ok "Set up Intel® Repositories"
|
||||
|
||||
setup_hwaccel
|
||||
|
||||
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 "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}
|
||||
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 Intel® oneAPI Base Toolkit (Patience)"
|
||||
$STD apt install -y --no-install-recommends intel-basekit-2024.1
|
||||
|
||||
@ -17,8 +17,6 @@ msg_info "Installing Dependencies"
|
||||
$STD apt install -y ffmpeg
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
setup_hwaccel
|
||||
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
|
||||
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
|
||||
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"
|
||||
curl -fsSLO -C - https://ollama.com/download/ollama-linux-amd64.tgz
|
||||
tar -C /usr -xzf ollama-linux-amd64.tgz
|
||||
|
||||
@ -13,7 +13,16 @@ setting_up_container
|
||||
network_check
|
||||
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"
|
||||
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
|
||||
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
|
||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
||||
msg_ok "Installed Pterodactyl Wings"
|
||||
|
||||
msg_info "Creating 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"
|
||||
|
||||
msg_info "Creating Qdrant Configuration"
|
||||
mkdir -p /var/lib/qdrant/storage
|
||||
mkdir -p /var/lib/qdrant/snapshots
|
||||
mkdir -p /etc/qdrant
|
||||
mkdir -p /var/lib/qdrant/{storage,snapshots}
|
||||
chown -R root:root /var/lib/qdrant
|
||||
chmod -R 755 /var/lib/qdrant
|
||||
|
||||
cat <<EOF >/etc/qdrant/config.yaml
|
||||
cat >/etc/qdrant/config.yaml <<EOF
|
||||
log_level: INFO
|
||||
|
||||
storage:
|
||||
@ -37,7 +38,7 @@ EOF
|
||||
msg_ok "Created Qdrant Configuration"
|
||||
|
||||
msg_info "Creating Qdrant Service"
|
||||
cat <<EOF >/etc/systemd/system/qdrant.service
|
||||
cat >/etc/systemd/system/qdrant.service <<EOF
|
||||
[Unit]
|
||||
Description=Qdrant Vector Search Engine
|
||||
After=network-online.target
|
||||
|
||||
@ -15,34 +15,51 @@ network_check
|
||||
update_os
|
||||
|
||||
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"
|
||||
|
||||
setup_deb822_repo \
|
||||
"rabbitmq" \
|
||||
"https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" \
|
||||
"https://deb1.rabbitmq.com/rabbitmq-server/debian/trixie" \
|
||||
"trixie"
|
||||
msg_info "Adding RabbitMQ signing key"
|
||||
curl -fsSL "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | gpg --dearmor >/usr/share/keyrings/com.rabbitmq.team.gpg
|
||||
msg_ok "Signing keys added"
|
||||
|
||||
msg_info "Setting up RabbitMQ"
|
||||
$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
|
||||
$STD apt install -y --fix-missing rabbitmq-server
|
||||
msg_ok "Setup RabbitMQ "
|
||||
msg_info "Adding RabbitMQ repository"
|
||||
cat <<EOF >/etc/apt/sources.list.d/rabbitmq.list
|
||||
## Modern Erlang/OTP releases
|
||||
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-erlang/debian/bookworm bookworm main
|
||||
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-erlang/debian/bookworm bookworm main
|
||||
|
||||
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
|
||||
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 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 set_user_tags proxmox administrator
|
||||
$STD rabbitmqctl set_permissions -p / proxmox ".*" ".*" ".*"
|
||||
|
||||
@ -13,21 +13,20 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
setup_deb822_repo \
|
||||
"microsoft" \
|
||||
"https://packages.microsoft.com/keys/microsoft-2025.asc" \
|
||||
"https://packages.microsoft.com/debian/13/prod/" \
|
||||
"trixie"
|
||||
$STD apt install -y aspnetcore-runtime-9.0
|
||||
msg_ok "Installed Dependencies"
|
||||
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
|
||||
$STD dpkg -i packages-microsoft-prod.deb
|
||||
$STD apt update
|
||||
$STD apt install -y dotnet-sdk-9.0
|
||||
msg_ok "Installed ASP.NET Core Runtime"
|
||||
|
||||
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
|
||||
mkdir -p data/{db,downloads}
|
||||
sed -i 's#/data/db/#/opt/rdtc&#g' /opt/rdtc/appsettings.json
|
||||
rm -f ~/packages-microsoft-prod.deb
|
||||
msg_ok "Configured rdtclient"
|
||||
|
||||
msg_info "Creating Service"
|
||||
@ -44,7 +43,7 @@ User=root
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now rdtc
|
||||
$STD systemctl enable -q --now rdtc
|
||||
msg_ok "Created Service"
|
||||
|
||||
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
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
import_local_ip
|
||||
PG_VERSION="16" setup_postgresql
|
||||
PG_DB_NAME="rxresume" PG_DB_USER="rxresume" PG_DB_GRANT_SUPERUSER="true" setup_postgresql_db
|
||||
NODE_VERSION="24" NODE_MODULE="pnpm@latest" setup_nodejs
|
||||
fetch_and_deploy_gh_release "Reactive-Resume" "lazy-media/Reactive-Resume"
|
||||
NODE_VERSION="22" NODE_MODULE="pnpm@latest" setup_nodejs
|
||||
|
||||
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)
|
||||
ACCESS_TOKEN=$(openssl rand -base64 48)
|
||||
REFRESH_TOKEN=$(openssl rand -base64 48)
|
||||
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) }')
|
||||
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 PUPPETEER_SKIP_DOWNLOAD="true"
|
||||
export NODE_ENV="production"
|
||||
@ -39,7 +50,7 @@ export NEXT_TELEMETRY_DISABLED=1
|
||||
$STD pnpm install --frozen-lockfile
|
||||
$STD pnpm run build
|
||||
$STD pnpm run prisma:generate
|
||||
msg_ok "Setup Reactive-Resume"
|
||||
msg_ok "Installed $APPLICATION"
|
||||
|
||||
msg_info "Installing Browserless (Patience)"
|
||||
cd /tmp
|
||||
@ -65,14 +76,13 @@ MINIO_ROOT_PASSWORD="${MINIO_PASS}"
|
||||
MINIO_VOLUMES=/opt/minio
|
||||
MINIO_OPTS="--address :9000 --console-address 127.0.0.1:9001"
|
||||
EOF
|
||||
|
||||
cat <<EOF >/opt/Reactive-Resume/.env
|
||||
cat <<EOF >/opt/"$APPLICATION"/.env
|
||||
NODE_ENV=production
|
||||
PORT=3000
|
||||
# for use behind a reverse proxy, use your FQDN for PUBLIC_URL and STORAGE_URL
|
||||
PUBLIC_URL=http://${LOCAL_IP}:3000
|
||||
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}
|
||||
REFRESH_TOKEN_SECRET=${REFRESH_TOKEN}
|
||||
CHROME_PORT=8080
|
||||
@ -100,13 +110,19 @@ STORAGE_SKIP_BUCKET_CHECK=false
|
||||
# GOOGLE_CLIENT_SECRET=
|
||||
# GOOGLE_CALLBACK_URL=http://localhost:5173/api/auth/google/callback
|
||||
EOF
|
||||
|
||||
cat <<EOF >/opt/browserless/.env
|
||||
DEBUG=browserless*,-**:verbose
|
||||
HOST=localhost
|
||||
PORT=8080
|
||||
TOKEN=${CHROME_TOKEN}
|
||||
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/minio.deb
|
||||
msg_ok "Configured applications"
|
||||
@ -121,15 +137,15 @@ WorkingDirectory=/usr/local/bin
|
||||
EnvironmentFile=/opt/minio/.env
|
||||
EOF
|
||||
|
||||
cat <<EOF >/etc/systemd/system/Reactive-Resume.service
|
||||
cat <<EOF >/etc/systemd/system/"$APPLICATION".service
|
||||
[Unit]
|
||||
Description=Reactive-Resume Service
|
||||
Description=${APPLICATION} Service
|
||||
After=network.target postgresql.service minio.service
|
||||
Wants=postgresql.service minio.service
|
||||
|
||||
[Service]
|
||||
WorkingDirectory=/opt/Reactive-Resume
|
||||
EnvironmentFile=/opt/Reactive-Resume/.env
|
||||
WorkingDirectory=/opt/${APPLICATION}
|
||||
EnvironmentFile=/opt/${APPLICATION}/.env
|
||||
ExecStart=/usr/bin/pnpm run start
|
||||
Restart=always
|
||||
|
||||
@ -140,7 +156,7 @@ EOF
|
||||
cat <<EOF >/etc/systemd/system/browserless.service
|
||||
[Unit]
|
||||
Description=Browserless service
|
||||
After=network.target Reactive-Resume.service
|
||||
After=network.target ${APPLICATION}.service
|
||||
|
||||
[Service]
|
||||
WorkingDirectory=/opt/browserless
|
||||
@ -152,7 +168,7 @@ Restart=unless-stopped
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
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"
|
||||
|
||||
motd_ssh
|
||||
|
||||
@ -14,22 +14,25 @@ network_check
|
||||
update_os
|
||||
|
||||
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_info "Setting up Redis Repository"
|
||||
setup_deb822_repo \
|
||||
"redis" \
|
||||
"https://packages.redis.io/gpg" \
|
||||
"https://packages.redis.io/deb" \
|
||||
"trixie"
|
||||
msg_ok "Setup Redis Repository"
|
||||
|
||||
msg_info "Setting up Redis"
|
||||
msg_info "Installing Redis"
|
||||
curl -fsSL "https://packages.redis.io/gpg" | gpg --dearmor >/usr/share/keyrings/redis-archive-keyring.gpg
|
||||
cat <<EOF >/etc/apt/sources.list.d/redis.sources
|
||||
Types: deb
|
||||
URIs: https://packages.redis.io/deb
|
||||
Suites: $(lsb_release -cs)
|
||||
Components: main
|
||||
Signed-By: /usr/share/keyrings/redis-archive-keyring.gpg
|
||||
EOF
|
||||
$STD apt update
|
||||
$STD apt install -y redis
|
||||
sed -i 's/^bind .*/bind 0.0.0.0/' /etc/redis/redis.conf
|
||||
systemctl enable -q --now redis-server
|
||||
msg_ok "Setup Redis"
|
||||
msg_ok "Installed Redis"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
@ -23,7 +23,25 @@ msg_ok "Installed Dependencies"
|
||||
|
||||
JAVA_VERSION="24" setup_java
|
||||
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"
|
||||
RABBIT_USER="reitti"
|
||||
@ -53,9 +71,9 @@ cat <<EOF >/opt/reitti/application.properties
|
||||
reitti.server.advertise-uri=http://127.0.0.1:8080
|
||||
|
||||
# PostgreSQL Database Connection
|
||||
spring.datasource.url=jdbc:postgresql://127.0.0.1:5432/$PG_DB_NAME
|
||||
spring.datasource.username=$PG_DB_USER
|
||||
spring.datasource.password=$PG_DB_PASS
|
||||
spring.datasource.url=jdbc:postgresql://127.0.0.1:5432/$DB_NAME
|
||||
spring.datasource.username=$DB_USER
|
||||
spring.datasource.password=$DB_PASS
|
||||
spring.datasource.driver-class-name=org.postgresql.Driver
|
||||
|
||||
# Flyway Database Migrations
|
||||
@ -114,7 +132,7 @@ Restart=on-failure
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
cat <<EOF >/etc/systemd/system/photon.service
|
||||
cat <<'EOF' >/etc/systemd/system/photon.service
|
||||
[Unit]
|
||||
Description=Photon Geocoding Service (Germany, OpenSearch)
|
||||
After=network.target
|
||||
|
||||
@ -14,13 +14,16 @@ network_check
|
||||
update_os
|
||||
|
||||
msg_info "Setting up Resilio Sync Repository"
|
||||
setup_deb822_repo \
|
||||
"resilio" \
|
||||
"https://linux-packages.resilio.com/resilio-sync/key.asc" \
|
||||
"http://linux-packages.resilio.com/resilio-sync/deb" \
|
||||
"resilio-sync" \
|
||||
"non-free"
|
||||
msg_ok "Setup Resilio Sync Repository"
|
||||
curl -fsSL "https://linux-packages.resilio.com/resilio-sync/key.asc" >/usr/share/keyrings/resilio-sync-archive-keyring.asc
|
||||
cat <<EOF >/etc/apt/sources.list.d/resilio-sync.sources
|
||||
Types: deb
|
||||
URIs: http://linux-packages.resilio.com/resilio-sync/deb
|
||||
Suites: resilio-sync
|
||||
Components: non-free
|
||||
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"
|
||||
$STD apt install -y resilio-sync
|
||||
|
||||
@ -13,16 +13,19 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Setting up Salt Repo"
|
||||
setup_deb822_repo \
|
||||
"salt" \
|
||||
"https://packages.broadcom.com/artifactory/api/security/keypair/SaltProjectKey/public" \
|
||||
"https://packages.broadcom.com/artifactory/saltproject-deb" \
|
||||
"stable"
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y jq
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Setup Salt Repo"
|
||||
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_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
|
||||
Package: salt-*
|
||||
Pin: version ${RELEASE}
|
||||
|
||||
@ -15,15 +15,22 @@ update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$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"
|
||||
|
||||
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"
|
||||
mkdir -p /opt/semaphore
|
||||
@ -63,6 +70,7 @@ RestartSec=10s
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
systemctl enable -q --now semaphore
|
||||
msg_ok "Created Service"
|
||||
|
||||
|
||||
@ -28,7 +28,32 @@ $STD ./Tdarr_Updater
|
||||
rm -rf /opt/tdarr/Tdarr_Updater.zip
|
||||
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"
|
||||
cat <<EOF >/etc/systemd/system/tdarr-server.service
|
||||
|
||||
@ -13,17 +13,27 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Setting up Telegraf repository"
|
||||
setup_deb822_repo \
|
||||
"telegraf" \
|
||||
"https://repos.influxdata.com/influxdata-archive.key" \
|
||||
"https://repos.influxdata.com/debian" \
|
||||
"stable"
|
||||
msg_ok "Setup Telegraf Repository"
|
||||
msg_info "Adding Telegraf key and repository"
|
||||
curl -fsSL -O https://repos.influxdata.com/influxdata-archive.key
|
||||
gpg --show-keys --with-fingerprint --with-colons ./influxdata-archive.key 2>&1 |
|
||||
grep -q '^fpr:\+24C975CBA61A024EE1B631787C3D57159FC2F927:$' &&
|
||||
cat influxdata-archive.key |
|
||||
gpg --dearmor |
|
||||
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"
|
||||
$STD apt install -y telegraf
|
||||
msg_ok "Setup Telegraf"
|
||||
msg_info "Installing Telegraf"
|
||||
$STD apt update
|
||||
$STD apt install telegraf -y
|
||||
rm /influxdata-archive.key
|
||||
msg_ok "Installed Telegraf"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
@ -13,7 +13,7 @@ setting_up_container
|
||||
network_check
|
||||
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"
|
||||
|
||||
msg_info "Configuring Tracktor"
|
||||
@ -23,25 +23,21 @@ $STD npm run build
|
||||
mkdir -p /opt/tracktor-data/{uploads,logs}
|
||||
cat <<EOF >/opt/tracktor.env
|
||||
NODE_ENV=production
|
||||
# Set this to the path of the database file. Default - ./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"
|
||||
# Set this to the path of the logs directory. Default - ./logs
|
||||
LOG_DIR="/opt/tracktor-data/logs"
|
||||
# Hostname to bind the server to. Default - 0.0.0.0
|
||||
#HOST="0.0.0.0"
|
||||
# Port to bind the server to. Default - 3000
|
||||
#PORT=3000
|
||||
# Set this to remove upload size limitations. Default - 512 Kb
|
||||
BODY_SIZE_LIMIT=Infinity
|
||||
# Enable request logging. Default - true
|
||||
#LOG_REQUESTS=true
|
||||
# Set the logging level. Options - error, warn, info, verbose, debug, silly. Default - info
|
||||
#LOG_LEVEL="info"
|
||||
# Enable demo mode. Default - false
|
||||
#TRACKTOR_DEMO_MODE=false
|
||||
# Force reseeding of data on every startup. Default - false
|
||||
# If server host is not set by default it will run on all interfaces - 0.0.0.0
|
||||
# SERVER_HOST=""
|
||||
SERVER_PORT=3000
|
||||
PORT=3000
|
||||
# Set this if you want to secure your endpoints otherwise default will be "*"
|
||||
# CORS_ORIGINS="*"
|
||||
# Set this if you are using backend and frontend separately. For lxc installation this is not needed
|
||||
# PUBLIC_API_BASE_URL=""
|
||||
LOG_REQUESTS=true
|
||||
LOG_LEVEL="info"
|
||||
AUTH_PIN=123456
|
||||
# PUBLIC_DEMO_MODE=false
|
||||
# FORCE_DATA_SEED=false
|
||||
EOF
|
||||
msg_ok "Configured Tracktor"
|
||||
|
||||
@ -13,7 +13,53 @@ setting_up_container
|
||||
network_check
|
||||
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"
|
||||
cd /opt/tunarr
|
||||
|
||||
@ -19,7 +19,32 @@ $STD apt install -y \
|
||||
python3-pip
|
||||
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"
|
||||
$STD pip3 install unmanic
|
||||
|
||||
173
misc/tools.func
173
misc/tools.func
@ -2585,116 +2585,40 @@ function setup_hwaccel() {
|
||||
fi
|
||||
|
||||
# Detect GPU vendor (Intel, AMD, NVIDIA)
|
||||
local gpu_vendor gpu_info
|
||||
gpu_info=$(lspci 2>/dev/null | grep -Ei 'vga|3d|display' || echo "")
|
||||
gpu_vendor=$(echo "$gpu_info" | grep -Eo 'Intel|AMD|NVIDIA' | head -n1 || echo "")
|
||||
local gpu_vendor
|
||||
gpu_vendor=$(lspci 2>/dev/null | grep -Ei 'vga|3d|display' | grep -Eo 'Intel|AMD|NVIDIA' | head -n1 || echo "")
|
||||
|
||||
# Detect CPU vendor (relevant for AMD APUs)
|
||||
local cpu_vendor
|
||||
cpu_vendor=$(lscpu 2>/dev/null | grep -i 'Vendor ID' | awk '{print $3}' || echo "")
|
||||
|
||||
if [[ -z "$gpu_vendor" && -z "$cpu_vendor" ]]; then
|
||||
msg_warn "No GPU or CPU vendor detected - skipping hardware acceleration setup"
|
||||
msg_ok "Setup Hardware Acceleration (skipped - no GPU detected)"
|
||||
return 0
|
||||
msg_error "No GPU or CPU vendor detected (missing lspci/lscpu output)"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Detect OS with fallbacks
|
||||
local os_id os_codename os_version
|
||||
os_id=$(grep -oP '(?<=^ID=).+' /etc/os-release 2>/dev/null | tr -d '"' || echo "debian")
|
||||
os_codename=$(grep -oP '(?<=^VERSION_CODENAME=).+' /etc/os-release 2>/dev/null | tr -d '"' || echo "unknown")
|
||||
os_version=$(grep -oP '(?<=^VERSION_ID=).+' /etc/os-release 2>/dev/null | tr -d '"' || echo "")
|
||||
local os_id os_codename
|
||||
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 '"' || grep '^VERSION_CODENAME=' /etc/os-release 2>/dev/null | cut -d'=' -f2 | tr -d '"' || echo "unknown")
|
||||
|
||||
[[ -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}"
|
||||
|
||||
case "$gpu_vendor" in
|
||||
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
|
||||
# Ubuntu: Use packages from Ubuntu repos
|
||||
$STD apt -y install \
|
||||
va-driver-all \
|
||||
ocl-icd-libopencl1 \
|
||||
intel-opencl-icd \
|
||||
vainfo \
|
||||
intel-gpu-tools || {
|
||||
msg_error "Failed to install Intel GPU dependencies"
|
||||
$STD apt -y install intel-opencl-icd || {
|
||||
msg_error "Failed to install intel-opencl-icd"
|
||||
return 1
|
||||
}
|
||||
# Try to install intel-media-va-driver for newer GPUs
|
||||
$STD apt -y install intel-media-va-driver 2>/dev/null || true
|
||||
|
||||
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
|
||||
else
|
||||
# For Debian: fetch Intel GPU drivers from GitHub
|
||||
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"
|
||||
}
|
||||
@ -2707,78 +2631,47 @@ EOF
|
||||
fetch_and_deploy_gh_release "" "intel/compute-runtime" "binary" "latest" "" "intel-opencl-icd_*_amd64.deb" || {
|
||||
msg_warn "Failed to deploy Intel OpenCL ICD"
|
||||
}
|
||||
fi
|
||||
|
||||
$STD apt -y install \
|
||||
va-driver-all \
|
||||
ocl-icd-libopencl1 \
|
||||
mesa-opencl-icd \
|
||||
mesa-va-drivers \
|
||||
vainfo \
|
||||
intel-gpu-tools || {
|
||||
$STD apt -y install va-driver-all ocl-icd-libopencl1 vainfo intel-gpu-tools || {
|
||||
msg_error "Failed to install Intel GPU dependencies"
|
||||
return 1
|
||||
}
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
|
||||
AMD)
|
||||
$STD apt -y install \
|
||||
mesa-va-drivers \
|
||||
mesa-vdpau-drivers \
|
||||
mesa-opencl-icd \
|
||||
ocl-icd-libopencl1 \
|
||||
vainfo \
|
||||
clinfo 2>/dev/null || {
|
||||
$STD apt -y install mesa-va-drivers mesa-vdpau-drivers mesa-opencl-icd vainfo clinfo || {
|
||||
msg_error "Failed to install AMD GPU dependencies"
|
||||
return 1
|
||||
}
|
||||
|
||||
# AMD firmware for better GPU support
|
||||
if [[ "$os_id" == "debian" ]]; then
|
||||
$STD apt -y install firmware-amd-graphics 2>/dev/null || true
|
||||
# For AMD CPUs without discrete GPU (APUs)
|
||||
if [[ "$cpu_vendor" == "AuthenticAMD" && -n "$gpu_vendor" ]]; then
|
||||
$STD apt -y install libdrm-amdgpu1 firmware-amd-graphics || true
|
||||
fi
|
||||
$STD apt -y install libdrm-amdgpu1 2>/dev/null || true
|
||||
;;
|
||||
|
||||
NVIDIA)
|
||||
# NVIDIA needs manual driver setup or passthrough from host
|
||||
msg_warn "NVIDIA GPU detected - driver must be installed manually or passed through from host"
|
||||
# Install basic VA-API support for potential hybrid setups
|
||||
$STD apt -y install va-driver-all vainfo 2>/dev/null || true
|
||||
# NVIDIA needs manual driver setup - skip for now
|
||||
msg_info "NVIDIA GPU detected - manual driver setup required"
|
||||
;;
|
||||
|
||||
*)
|
||||
# No discrete GPU detected - check for AMD APU
|
||||
# If no discrete GPU, but AMD CPU (e.g., Ryzen APU)
|
||||
if [[ "$cpu_vendor" == "AuthenticAMD" ]]; then
|
||||
$STD apt -y install \
|
||||
mesa-va-drivers \
|
||||
mesa-vdpau-drivers \
|
||||
mesa-opencl-icd \
|
||||
ocl-icd-libopencl1 \
|
||||
vainfo 2>/dev/null || true
|
||||
$STD apt -y install mesa-opencl-icd ocl-icd-libopencl1 clinfo || {
|
||||
msg_error "Failed to install Mesa OpenCL stack"
|
||||
return 1
|
||||
}
|
||||
else
|
||||
msg_warn "No supported GPU vendor detected - skipping GPU driver installation"
|
||||
msg_warn "No supported GPU vendor detected - skipping GPU acceleration"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
# Set permissions for /dev/dri (only in privileged containers and if /dev/dri exists)
|
||||
if [[ "$in_ct" == "0" && -d /dev/dri ]]; then
|
||||
if [[ "$in_ct" == "0" ]]; then
|
||||
chgrp video /dev/dri 2>/dev/null || true
|
||||
chmod 755 /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)" render 2>/dev/null || true
|
||||
|
||||
# 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
|
||||
$STD adduser "$(id -u -n)" video
|
||||
$STD adduser "$(id -u -n)" render
|
||||
fi
|
||||
|
||||
cache_installed_version "hwaccel" "1.0"
|
||||
|
||||
Reference in New Issue
Block a user