mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-02-09 23:03:26 +01:00
Compare commits
3 Commits
github-act
...
feat/remov
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2f676df1cb | ||
|
|
d6f9cc7b59 | ||
|
|
6fa49fa3d1 |
33
CHANGELOG.md
33
CHANGELOG.md
@@ -407,39 +407,8 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- several scripts: add --clear to uv venv calls for uv 0.10 compatibility [@MickLesk](https://github.com/MickLesk) ([#11723](https://github.com/community-scripts/ProxmoxVE/pull/11723))
|
||||
- Koillection: ensure setup_composer is in update script [@MickLesk](https://github.com/MickLesk) ([#11734](https://github.com/community-scripts/ProxmoxVE/pull/11734))
|
||||
- PeaNUT: symlink server.js after update [@vhsdream](https://github.com/vhsdream) ([#11696](https://github.com/community-scripts/ProxmoxVE/pull/11696))
|
||||
- Umlautadaptarr: use release appsettings.json instead of hardcoded copy [@MickLesk](https://github.com/MickLesk) ([#11725](https://github.com/community-scripts/ProxmoxVE/pull/11725))
|
||||
- tracearr: prepare for next stable release [@durzo](https://github.com/durzo) ([#11673](https://github.com/community-scripts/ProxmoxVE/pull/11673))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- remove whiptail from update scripts for unattended update support [@MickLesk](https://github.com/MickLesk) ([#11712](https://github.com/community-scripts/ProxmoxVE/pull/11712))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Refactor: FileFlows [@tremor021](https://github.com/tremor021) ([#11108](https://github.com/community-scripts/ProxmoxVE/pull/11108))
|
||||
- Refactor: wger [@MickLesk](https://github.com/MickLesk) ([#11722](https://github.com/community-scripts/ProxmoxVE/pull/11722))
|
||||
- Nginx-UI: better User Handling | ACME [@MickLesk](https://github.com/MickLesk) ([#11715](https://github.com/community-scripts/ProxmoxVE/pull/11715))
|
||||
- NginxProxymanager: use better-sqlite3 [@MickLesk](https://github.com/MickLesk) ([#11708](https://github.com/community-scripts/ProxmoxVE/pull/11708))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- hwaccel: add libmfx-gen1.2 to Intel Arc setup for QSV support [@MickLesk](https://github.com/MickLesk) ([#11707](https://github.com/community-scripts/ProxmoxVE/pull/11707))
|
||||
|
||||
### 🧰 Tools
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- addons: ensure curl is installed before use [@MickLesk](https://github.com/MickLesk) ([#11718](https://github.com/community-scripts/ProxmoxVE/pull/11718))
|
||||
- Netbird (addon): add systemd ordering to start after Docker [@MickLesk](https://github.com/MickLesk) ([#11716](https://github.com/community-scripts/ProxmoxVE/pull/11716))
|
||||
|
||||
### ❔ Uncategorized
|
||||
|
||||
- Bichon: Update website [@tremor021](https://github.com/tremor021) ([#11711](https://github.com/community-scripts/ProxmoxVE/pull/11711))
|
||||
- PeaNUT: symlink server.js after update [@vhsdream](https://github.com/vhsdream) ([#11696](https://github.com/community-scripts/ProxmoxVE/pull/11696))
|
||||
|
||||
## 2026-02-08
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ function update_script() {
|
||||
cp -r /opt/adventurelog-backup/backend/server/media /opt/adventurelog/backend/server/media
|
||||
cd /opt/adventurelog/backend/server
|
||||
if [[ ! -x .venv/bin/python ]]; then
|
||||
$STD uv venv --clear .venv
|
||||
$STD uv venv .venv
|
||||
$STD .venv/bin/python -m ensurepip --upgrade
|
||||
fi
|
||||
$STD .venv/bin/python -m pip install --upgrade pip
|
||||
|
||||
@@ -44,7 +44,7 @@ function update_script() {
|
||||
msg_info "Updating Autocaliweb"
|
||||
cd "$INSTALL_DIR"
|
||||
if [[ ! -d "$VIRTUAL_ENV" ]]; then
|
||||
$STD uv venv --clear "$VIRTUAL_ENV"
|
||||
$STD uv venv "$VIRTUAL_ENV"
|
||||
fi
|
||||
$STD uv sync --all-extras --active
|
||||
cd "$INSTALL_DIR"/koreader/plugins
|
||||
|
||||
@@ -40,7 +40,7 @@ function update_script() {
|
||||
chmod 775 /opt/bazarr /var/lib/bazarr/
|
||||
# Always ensure venv exists
|
||||
if [[ ! -d /opt/bazarr/venv/ ]]; then
|
||||
$STD uv venv --clear /opt/bazarr/venv --python 3.12
|
||||
$STD uv venv /opt/bazarr/venv --python 3.12
|
||||
fi
|
||||
|
||||
# Always check and fix service file if needed
|
||||
|
||||
@@ -103,7 +103,7 @@ function update_script() {
|
||||
|
||||
cd /opt/dispatcharr
|
||||
rm -rf .venv
|
||||
$STD uv venv --clear
|
||||
$STD uv venv
|
||||
$STD uv pip install -r requirements.txt --index-strategy unsafe-best-match
|
||||
$STD uv pip install gunicorn gevent celery redis daphne
|
||||
msg_ok "Updated Dispatcharr Backend"
|
||||
|
||||
@@ -61,7 +61,7 @@ function update_script() {
|
||||
msg_info "Updating Backend"
|
||||
cd /opt/endurain/backend
|
||||
$STD poetry export -f requirements.txt --output requirements.txt --without-hashes
|
||||
$STD uv venv --clear
|
||||
$STD uv venv
|
||||
$STD uv pip install -r requirements.txt
|
||||
msg_ok "Backend Updated"
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ function update_script() {
|
||||
rm -rf "$VENV_PATH"
|
||||
mkdir -p /opt/esphome
|
||||
cd /opt/esphome
|
||||
$STD uv venv --clear "$VENV_PATH"
|
||||
$STD uv venv "$VENV_PATH"
|
||||
$STD "$VENV_PATH/bin/python" -m ensurepip --upgrade
|
||||
$STD "$VENV_PATH/bin/python" -m pip install --upgrade pip
|
||||
$STD "$VENV_PATH/bin/python" -m pip install esphome tornado esptool
|
||||
|
||||
@@ -37,12 +37,17 @@ function update_script() {
|
||||
msg_info "Stopped Service"
|
||||
|
||||
msg_info "Creating Backup"
|
||||
ls /opt/*.tar.gz &>/dev/null && rm -f /opt/*.tar.gz
|
||||
backup_filename="/opt/${APP}_backup_$(date +%F).tar.gz"
|
||||
tar -czf "$backup_filename" -C /opt/fileflows Data
|
||||
msg_ok "Backup Created"
|
||||
|
||||
fetch_and_deploy_from_url "https://fileflows.com/downloads/zip" "/opt/fileflows"
|
||||
msg_info "Updating $APP to latest version"
|
||||
temp_file=$(mktemp)
|
||||
curl -fsSL https://fileflows.com/downloads/zip -o "$temp_file"
|
||||
$STD unzip -o -d /opt/fileflows "$temp_file"
|
||||
rm -rf "$temp_file"
|
||||
rm -rf "$backup_filename"
|
||||
msg_ok "Updated $APP to latest version"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start fileflows
|
||||
|
||||
@@ -34,7 +34,7 @@ function update_script() {
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
mkdir -p "$INSTALL_DIR"
|
||||
cd "$INSTALL_DIR"
|
||||
$STD uv venv --clear .venv
|
||||
$STD uv venv .venv
|
||||
$STD "$VENV_PYTHON" -m ensurepip --upgrade
|
||||
$STD "$VENV_PYTHON" -m pip install --upgrade pip
|
||||
$STD "$VENV_PYTHON" -m pip install jupyter
|
||||
|
||||
@@ -33,8 +33,7 @@ function update_script() {
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
PHP_VERSION="8.5" PHP_APACHE="YES" setup_php
|
||||
setup_composer
|
||||
|
||||
|
||||
msg_info "Creating a backup"
|
||||
mv /opt/koillection/ /opt/koillection-backup
|
||||
msg_ok "Backup created"
|
||||
|
||||
@@ -28,6 +28,12 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
|
||||
msg_error "This script is currently disabled due to an external issue with the OpenResty APT repository."
|
||||
msg_error "The repository's GPG key uses SHA-1 signatures, which are no longer accepted by Debian as of February 1, 2026."
|
||||
msg_error "The issue is tracked in openresty/openresty#1097"
|
||||
msg_error "For more details, see: https://github.com/community-scripts/ProxmoxVE/issues/11406"
|
||||
exit 1
|
||||
|
||||
if [[ $(grep -E '^VERSION_ID=' /etc/os-release) == *"12"* ]]; then
|
||||
msg_error "Wrong Debian version detected!"
|
||||
msg_error "Please create a snapshot first. You must upgrade your LXC to Debian Trixie before updating. Visit: https://github.com/community-scripts/ProxmoxVE/discussions/7489"
|
||||
@@ -139,17 +145,15 @@ function update_script() {
|
||||
"database": {
|
||||
"engine": "knex-native",
|
||||
"knex": {
|
||||
"client": "better-sqlite3",
|
||||
"client": "sqlite3",
|
||||
"connection": {
|
||||
"filename": "/data/database.sqlite"
|
||||
},
|
||||
"useNullAsDefault": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
EOF
|
||||
fi
|
||||
sed -i 's/"client": "sqlite3"/"client": "better-sqlite3"/' /app/config/production.json
|
||||
cd /app
|
||||
$STD yarn install --network-timeout 600000
|
||||
msg_ok "Initialized Backend"
|
||||
|
||||
@@ -41,7 +41,7 @@ function update_script() {
|
||||
rm -rf "$PVE_VENV_PATH"
|
||||
mkdir -p /opt/prometheus-pve-exporter
|
||||
cd /opt/prometheus-pve-exporter
|
||||
$STD uv venv --clear "$PVE_VENV_PATH"
|
||||
$STD uv venv "$PVE_VENV_PATH"
|
||||
$STD "$PVE_VENV_PATH/bin/python" -m ensurepip --upgrade
|
||||
$STD "$PVE_VENV_PATH/bin/python" -m pip install --upgrade pip
|
||||
$STD "$PVE_VENV_PATH/bin/python" -m pip install prometheus-pve-exporter
|
||||
|
||||
@@ -41,7 +41,7 @@ function update_script() {
|
||||
# Always ensure venv exists
|
||||
if [[ ! -d /opt/sabnzbd/venv ]]; then
|
||||
msg_info "Migrating SABnzbd to uv virtual environment"
|
||||
$STD uv venv --clear /opt/sabnzbd/venv
|
||||
$STD uv venv /opt/sabnzbd/venv
|
||||
msg_ok "Created uv venv at /opt/sabnzbd/venv"
|
||||
fi
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ function update_script() {
|
||||
|
||||
msg_info "Updating Scraparr"
|
||||
cd /opt/scraparr
|
||||
$STD uv venv --clear /opt/scraparr/.venv
|
||||
$STD uv venv /opt/scraparr/.venv
|
||||
$STD /opt/scraparr/.venv/bin/python -m ensurepip --upgrade
|
||||
$STD /opt/scraparr/.venv/bin/python -m pip install --upgrade pip
|
||||
$STD /opt/scraparr/.venv/bin/python -m pip install -r /opt/scraparr/src/scraparr/requirements.txt
|
||||
|
||||
@@ -39,7 +39,7 @@ function update_script() {
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "streamlink-webui" "CrazyWolf13/streamlink-webui" "tarball"
|
||||
|
||||
msg_info "Updating streamlink-webui"
|
||||
$STD uv venv --clear /opt/streamlink-webui/backend/src/.venv
|
||||
$STD uv venv /opt/streamlink-webui/backend/src/.venv
|
||||
source /opt/streamlink-webui/backend/src/.venv/bin/activate
|
||||
$STD uv pip install -r /opt/streamlink-webui/backend/src/requirements.txt --python=/opt/streamlink-webui/backend/src/.venv
|
||||
cd /opt/streamlink-webui/frontend/src
|
||||
|
||||
@@ -50,7 +50,7 @@ function update_script() {
|
||||
cp -r /opt/tandoor.bak/{config,api,mediafiles,staticfiles} /opt/tandoor/
|
||||
mv /opt/tandoor.bak/.env /opt/tandoor/.env
|
||||
cd /opt/tandoor
|
||||
$STD uv venv --clear .venv --python=python3
|
||||
$STD uv venv .venv --python=python3
|
||||
$STD uv pip install -r requirements.txt --python .venv/bin/python
|
||||
cd /opt/tandoor/vue3
|
||||
$STD yarn install
|
||||
|
||||
@@ -33,9 +33,7 @@ function update_script() {
|
||||
systemctl stop umlautadaptarr
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
cp /opt/UmlautAdaptarr/appsettings.json /opt/UmlautAdaptarr/appsettings.json.bak
|
||||
fetch_and_deploy_gh_release "UmlautAdaptarr" "PCJones/Umlautadaptarr" "prebuild" "latest" "/opt/UmlautAdaptarr" "linux-x64.zip"
|
||||
cp /opt/UmlautAdaptarr/appsettings.json.bak /opt/UmlautAdaptarr/appsettings.json
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start umlautadaptarr
|
||||
|
||||
@@ -39,7 +39,7 @@ function update_script() {
|
||||
|
||||
msg_info "Updating Warracker"
|
||||
cd /opt/warracker/backend
|
||||
$STD uv venv --clear .venv
|
||||
$STD uv venv .venv
|
||||
$STD source .venv/bin/activate
|
||||
$STD uv pip install -r requirements.txt
|
||||
msg_ok "Updated Warracker"
|
||||
|
||||
64
ct/wger.sh
64
ct/wger.sh
@@ -7,9 +7,9 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
||||
|
||||
APP="wger"
|
||||
var_tags="${var_tags:-management;fitness}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-8}"
|
||||
var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-1024}"
|
||||
var_disk="${var_disk:-6}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
@@ -23,44 +23,38 @@ function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -d /opt/wger ]]; then
|
||||
if [[ ! -d /home/wger ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "wger" "wger-project/wger"; then
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/wger-project/wger/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3)}')
|
||||
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop redis-server nginx celery celery-beat wger
|
||||
systemctl stop wger
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Data"
|
||||
cp -r /opt/wger/media /opt/wger_media_backup
|
||||
cp /opt/wger/.env /opt/wger_env_backup
|
||||
msg_ok "Backed up Data"
|
||||
msg_info "Updating $APP to v${RELEASE}"
|
||||
temp_file=$(mktemp)
|
||||
curl -fsSL "https://github.com/wger-project/wger/archive/refs/tags/$RELEASE.tar.gz" -o "$temp_file"
|
||||
tar xzf "$temp_file"
|
||||
cp -rf wger-"$RELEASE"/* /home/wger/src
|
||||
cd /home/wger/src
|
||||
$STD pip install -r requirements_prod.txt --ignore-installed
|
||||
$STD pip install -e .
|
||||
$STD python3 manage.py migrate
|
||||
$STD python3 manage.py collectstatic --no-input
|
||||
$STD yarn install
|
||||
$STD yarn build:css:sass
|
||||
rm -rf "$temp_file"
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
msg_ok "Updated $APP to v${RELEASE}"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "wger" "wger-project/wger" "tarball"
|
||||
|
||||
msg_info "Restoring Data"
|
||||
cp -r /opt/wger_media_backup/. /opt/wger/media
|
||||
cp /opt/wger_env_backup /opt/wger/.env
|
||||
rm -rf /opt/wger_media_backup /opt/wger_env_backup
|
||||
|
||||
msg_ok "Restored Data"
|
||||
|
||||
msg_info "Updating wger"
|
||||
cd /opt/wger
|
||||
set -a && source /opt/wger/.env && set +a
|
||||
export DJANGO_SETTINGS_MODULE=settings.main
|
||||
$STD uv pip install .
|
||||
$STD uv run python manage.py migrate
|
||||
$STD uv run python manage.py collectstatic --no-input
|
||||
msg_ok "Updated wger"
|
||||
|
||||
msg_info "Starting Services"
|
||||
systemctl start redis-server nginx celery celery-beat wger
|
||||
msg_ok "Started Services"
|
||||
msg_ok "Updated Successfully"
|
||||
msg_info "Starting Service"
|
||||
systemctl start wger
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated successfully!"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
@@ -69,7 +63,7 @@ start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed Successfully!\n"
|
||||
msg_ok "Completed successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
||||
|
||||
@@ -35,10 +35,6 @@
|
||||
{
|
||||
"text": "The Disk space initially allocated by the script is only a placeholder, as we can't know how much space you will ever need. You should increase it to match your workload.",
|
||||
"type": "info"
|
||||
},
|
||||
{
|
||||
"text": "Please copy your `BICHON_ENCRYPT_PASSWORD` from `/opt/bichon/bichon.env` to a safe place.",
|
||||
"type": "warning"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"generated": "2026-02-09T12:16:55Z",
|
||||
"generated": "2026-02-09T06:27:10Z",
|
||||
"versions": [
|
||||
{
|
||||
"slug": "2fauth",
|
||||
@@ -109,9 +109,9 @@
|
||||
{
|
||||
"slug": "bentopdf",
|
||||
"repo": "alam00000/bentopdf",
|
||||
"version": "v2.2.0",
|
||||
"version": "v2.1.0",
|
||||
"pinned": false,
|
||||
"date": "2026-02-09T07:07:40Z"
|
||||
"date": "2026-02-02T14:30:55Z"
|
||||
},
|
||||
{
|
||||
"slug": "beszel",
|
||||
@@ -284,9 +284,9 @@
|
||||
{
|
||||
"slug": "domain-monitor",
|
||||
"repo": "Hosteroid/domain-monitor",
|
||||
"version": "v1.1.2",
|
||||
"version": "v1.1.1",
|
||||
"pinned": false,
|
||||
"date": "2026-02-09T06:29:34Z"
|
||||
"date": "2025-11-18T11:32:30Z"
|
||||
},
|
||||
{
|
||||
"slug": "donetick",
|
||||
@@ -1292,9 +1292,9 @@
|
||||
{
|
||||
"slug": "snowshare",
|
||||
"repo": "TuroYT/snowshare",
|
||||
"version": "v1.3.3",
|
||||
"version": "v1.2.12",
|
||||
"pinned": false,
|
||||
"date": "2026-02-09T10:52:12Z"
|
||||
"date": "2026-01-30T13:35:56Z"
|
||||
},
|
||||
{
|
||||
"slug": "sonarr",
|
||||
@@ -1523,9 +1523,9 @@
|
||||
{
|
||||
"slug": "vikunja",
|
||||
"repo": "go-vikunja/vikunja",
|
||||
"version": "v1.1.0",
|
||||
"version": "v1.0.0",
|
||||
"pinned": false,
|
||||
"date": "2026-02-09T10:34:29Z"
|
||||
"date": "2026-01-28T11:12:59Z"
|
||||
},
|
||||
{
|
||||
"slug": "wallabag",
|
||||
|
||||
@@ -28,14 +28,10 @@
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"username": "admin",
|
||||
"password": null
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "On first visit, the setup wizard will guide you to create an admin account and configure ACME email.",
|
||||
"type": "warning"
|
||||
},
|
||||
{
|
||||
"text": "Nginx runs on ports 80/443, Nginx UI management interface on port 9000.",
|
||||
"type": "info"
|
||||
@@ -43,6 +39,10 @@
|
||||
{
|
||||
"text": "SSL certificates can be managed automatically with Let's Encrypt integration.",
|
||||
"type": "info"
|
||||
},
|
||||
{
|
||||
"text": "Initial Login data: `cat ~/nginx-ui.creds`",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -30,14 +30,10 @@
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
"username": "admin@example.com",
|
||||
"password": "changeme"
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "On first launch, a setup wizard will guide you through creating an admin account. There are no default credentials.",
|
||||
"type": "info"
|
||||
},
|
||||
{
|
||||
"text": "You can install the specific one certbot you prefer, or you can Running /app/scripts/install-certbot-plugins within the Nginx Proxy Manager (NPM) LXC shell will install many common plugins. Important: This script does not install all Certbot plugins, as some require additional, external system dependencies (like specific packages for certain DNS providers). These external dependencies must be manually installed within the LXC container before you can successfully install and use the corresponding Certbot plugin. Consult the plugin's documentation for required packages.",
|
||||
"type": "info"
|
||||
|
||||
@@ -19,9 +19,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/wger.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 8,
|
||||
"cpu": 1,
|
||||
"ram": 1024,
|
||||
"hdd": 6,
|
||||
"os": "debian",
|
||||
"version": "13"
|
||||
}
|
||||
@@ -33,7 +33,7 @@
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "This LXC also runs Celery and Redis to synchronize workouts and ingredients",
|
||||
"text": "Enable proxy support by uncommenting this line in `/home/wger/src/settings.py` and pointing it to your URL: `# CSRF_TRUSTED_ORIGINS = ['http://127.0.0.1', 'https://my.domain.example.com']`, then restart the service `systemctl restart wger`.",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -58,7 +58,7 @@ DISABLE_REGISTRATION=False
|
||||
EOF
|
||||
cd /opt/adventurelog/backend/server
|
||||
mkdir -p /opt/adventurelog/backend/server/media
|
||||
$STD uv venv --clear /opt/adventurelog/backend/server/.venv
|
||||
$STD uv venv /opt/adventurelog/backend/server/.venv
|
||||
$STD /opt/adventurelog/backend/server/.venv/bin/python -m ensurepip --upgrade
|
||||
$STD /opt/adventurelog/backend/server/.venv/bin/python -m pip install --upgrade pip
|
||||
$STD /opt/adventurelog/backend/server/.venv/bin/python -m pip install -r requirements.txt
|
||||
|
||||
@@ -77,7 +77,7 @@ echo "${KEPUB_VERSION#v}" >"$INSTALL_DIR"/KEPUBIFY_RELEASE
|
||||
sed 's/^/v/' ~/.autocaliweb >"$INSTALL_DIR"/ACW_RELEASE
|
||||
|
||||
cd "$INSTALL_DIR"
|
||||
$STD uv venv --clear "$VIRTUAL_ENV"
|
||||
$STD uv venv "$VIRTUAL_ENV"
|
||||
$STD uv sync --all-extras --active
|
||||
cat <<EOF >./dirs.json
|
||||
{
|
||||
|
||||
@@ -29,7 +29,7 @@ fetch_and_deploy_gh_release "babybuddy" "babybuddy/babybuddy" "tarball"
|
||||
msg_info "Installing Babybuddy"
|
||||
mkdir -p /opt/data
|
||||
cd /opt/babybuddy
|
||||
$STD uv venv --clear .venv
|
||||
$STD uv venv .venv
|
||||
$STD source .venv/bin/activate
|
||||
$STD uv pip install -r requirements.txt
|
||||
cp babybuddy/settings/production.example.py babybuddy/settings/production.py
|
||||
|
||||
@@ -20,7 +20,7 @@ msg_info "Installing Bazarr"
|
||||
mkdir -p /var/lib/bazarr/
|
||||
chmod 775 /opt/bazarr /var/lib/bazarr/
|
||||
sed -i.bak 's/--only-binary=Pillow//g' /opt/bazarr/requirements.txt
|
||||
$STD uv venv --clear /opt/bazarr/venv --python 3.12
|
||||
$STD uv venv /opt/bazarr/venv --python 3.12
|
||||
$STD uv pip install -r /opt/bazarr/requirements.txt --python /opt/bazarr/venv/bin/python3
|
||||
msg_ok "Installed Bazarr"
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ PYTHON_VERSION="3.12" setup_uv
|
||||
fetch_and_deploy_gh_release "ComfyUI" "comfyanonymous/ComfyUI" "tarball" "latest" "/opt/ComfyUI"
|
||||
|
||||
msg_info "Python dependencies"
|
||||
$STD uv venv --clear "/opt/ComfyUI/venv"
|
||||
$STD uv venv "/opt/ComfyUI/venv"
|
||||
|
||||
if [[ "${comfyui_gpu_type,,}" == "nvidia" ]]; then
|
||||
pytorch_url="https://download.pytorch.org/whl/cu130"
|
||||
|
||||
@@ -36,7 +36,7 @@ fetch_and_deploy_gh_release "dispatcharr" "Dispatcharr/Dispatcharr" "tarball"
|
||||
|
||||
msg_info "Installing Python Dependencies with uv"
|
||||
cd /opt/dispatcharr
|
||||
$STD uv venv --clear
|
||||
$STD uv venv
|
||||
$STD uv pip install -r requirements.txt --index-strategy unsafe-best-match
|
||||
$STD uv pip install gunicorn gevent celery redis daphne
|
||||
msg_ok "Installed Python Dependencies"
|
||||
|
||||
@@ -86,7 +86,7 @@ $STD uv tool update-shell
|
||||
export PATH="/root/.local/bin:$PATH"
|
||||
$STD poetry self add poetry-plugin-export
|
||||
$STD poetry export -f requirements.txt --output requirements.txt --without-hashes
|
||||
$STD uv venv --clear
|
||||
$STD uv venv
|
||||
$STD uv pip install -r requirements.txt
|
||||
msg_ok "Setup Backend"
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ msg_info "Setting up Virtual Environment"
|
||||
mkdir -p /opt/esphome
|
||||
mkdir -p /root/config
|
||||
cd /opt/esphome
|
||||
$STD uv venv --clear /opt/esphome/.venv
|
||||
$STD uv venv /opt/esphome/.venv
|
||||
$STD /opt/esphome/.venv/bin/python -m ensurepip --upgrade
|
||||
$STD /opt/esphome/.venv/bin/python -m pip install --upgrade pip
|
||||
$STD /opt/esphome/.venv/bin/python -m pip install esphome tornado esptool
|
||||
|
||||
@@ -15,30 +15,31 @@ network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y \
|
||||
$STD apt-get install -y \
|
||||
ffmpeg \
|
||||
jq \
|
||||
imagemagick
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
setup_hwaccel
|
||||
|
||||
msg_info "Installing ASP.NET Core Runtime"
|
||||
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-8.0
|
||||
curl -fsSL https://packages.microsoft.com/config/debian/13/packages-microsoft-prod.deb -o packages-microsoft-prod.deb
|
||||
$STD dpkg -i packages-microsoft-prod.deb
|
||||
rm -rf packages-microsoft-prod.deb
|
||||
$STD apt-get update
|
||||
$STD apt-get install -y aspnetcore-runtime-8.0
|
||||
msg_ok "Installed ASP.NET Core Runtime"
|
||||
|
||||
fetch_and_deploy_from_url "https://fileflows.com/downloads/zip" "/opt/fileflows"
|
||||
|
||||
msg_info "Setup FileFlows"
|
||||
$STD ln -svf /usr/bin/ffmpeg /usr/local/bin/ffmpeg
|
||||
$STD ln -svf /usr/bin/ffprobe /usr/local/bin/ffprobe
|
||||
cd /opt/fileflows/Server
|
||||
dotnet FileFlows.Server.dll --systemd install --root true
|
||||
temp_file=$(mktemp)
|
||||
curl -fsSL https://fileflows.com/downloads/zip -o "$temp_file"
|
||||
$STD unzip -d /opt/fileflows "$temp_file"
|
||||
$STD bash -c "cd /opt/fileflows/Server && dotnet FileFlows.Server.dll --systemd install --root true"
|
||||
systemctl enable -q --now fileflows
|
||||
rm -f "$temp_file"
|
||||
msg_ok "Setup FileFlows"
|
||||
|
||||
motd_ssh
|
||||
|
||||
@@ -17,7 +17,7 @@ PYTHON_VERSION="3.12" setup_uv
|
||||
fetch_and_deploy_gh_release "huntarr" "plexguide/Huntarr.io" "tarball"
|
||||
|
||||
msg_info "Configure Huntarr"
|
||||
$STD uv venv --clear /opt/huntarr/.venv
|
||||
$STD uv venv /opt/huntarr/.venv
|
||||
$STD uv pip install --python /opt/huntarr/.venv/bin/python -r /opt/huntarr/requirements.txt
|
||||
msg_ok "Configured Huntrarr"
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ PYTHON_VERSION="3.12" setup_uv
|
||||
msg_info "Installing Jupyter"
|
||||
mkdir -p /opt/jupyter
|
||||
cd /opt/jupyter
|
||||
$STD uv venv --clear /opt/jupyter/.venv
|
||||
$STD uv venv /opt/jupyter/.venv
|
||||
$STD /opt/jupyter/.venv/bin/python -m ensurepip --upgrade
|
||||
$STD /opt/jupyter/.venv/bin/python -m pip install --upgrade pip
|
||||
$STD /opt/jupyter/.venv/bin/python -m pip install jupyter
|
||||
|
||||
@@ -22,7 +22,7 @@ fetch_and_deploy_gh_release "kapowarr" "Casvt/Kapowarr" "tarball"
|
||||
|
||||
msg_info "Setup Kapowarr"
|
||||
cd /opt/kapowarr
|
||||
$STD uv venv --clear .venv
|
||||
$STD uv venv .venv
|
||||
$STD source .venv/bin/activate
|
||||
$STD uv pip install --upgrade pip
|
||||
$STD uv pip install --no-cache-dir -r requirements.txt
|
||||
|
||||
@@ -50,7 +50,7 @@ $STD useradd librenms -d /opt/librenms -M -r -s "$(which bash)"
|
||||
mkdir -p /opt/librenms/{rrd,logs,bootstrap/cache,storage,html}
|
||||
cd /opt/librenms
|
||||
APP_KEY=$(openssl rand -base64 40 | tr -dc 'a-zA-Z0-9')
|
||||
$STD uv venv --clear .venv
|
||||
$STD uv venv .venv
|
||||
$STD source .venv/bin/activate
|
||||
$STD uv pip install -r requirements.txt
|
||||
cat <<EOF >/opt/librenms/.env
|
||||
|
||||
@@ -43,7 +43,7 @@ if [[ -z "$TORCH_VERSION" ]]; then
|
||||
TORCH_VERSION="2.5.0"
|
||||
fi
|
||||
cd /opt/libretranslate
|
||||
$STD uv venv --clear .venv --python 3.12
|
||||
$STD uv venv .venv --python 3.12
|
||||
$STD source .venv/bin/activate
|
||||
$STD uv pip install --upgrade pip setuptools
|
||||
$STD uv pip install Babel==2.12.1
|
||||
|
||||
@@ -42,7 +42,7 @@ msg_ok "Set up PostgreSQL"
|
||||
msg_info "Setting up Virtual Environment"
|
||||
mkdir -p /opt/litellm
|
||||
cd /opt/litellm
|
||||
$STD uv venv --clear /opt/litellm/.venv
|
||||
$STD uv venv /opt/litellm/.venv
|
||||
$STD /opt/litellm/.venv/bin/python -m ensurepip --upgrade
|
||||
$STD /opt/litellm/.venv/bin/python -m pip install --upgrade pip
|
||||
$STD /opt/litellm/.venv/bin/python -m pip install litellm[proxy] prisma
|
||||
|
||||
@@ -29,7 +29,7 @@ fetch_and_deploy_gh_release "mylar3" "mylar3/mylar3" "tarball"
|
||||
|
||||
msg_info "Installing ${APPLICATION}"
|
||||
mkdir -p /opt/mylar3-data
|
||||
$STD uv venv --clear /opt/mylar3/.venv
|
||||
$STD uv venv /opt/mylar3/.venv
|
||||
$STD /opt/mylar3/.venv/bin/python -m ensurepip --upgrade
|
||||
$STD /opt/mylar3/.venv/bin/python -m pip install --upgrade pip
|
||||
$STD /opt/mylar3/.venv/bin/python -m pip install --no-cache-dir -r /opt/mylar3/requirements.txt
|
||||
|
||||
@@ -30,19 +30,29 @@ msg_ok "Installed Nginx UI"
|
||||
msg_info "Configuring Nginx UI"
|
||||
mkdir -p /usr/local/etc/nginx-ui
|
||||
cat <<EOF >/usr/local/etc/nginx-ui/app.ini
|
||||
[server]
|
||||
HttpHost = 0.0.0.0
|
||||
HttpPort = 9000
|
||||
RunMode = release
|
||||
JwtSecret = $(openssl rand -hex 32)
|
||||
|
||||
[nginx]
|
||||
AccessLogPath = /var/log/nginx/access.log
|
||||
ErrorLogPath = /var/log/nginx/error.log
|
||||
ConfigDir = /etc/nginx
|
||||
PIDPath = /run/nginx.pid
|
||||
TestConfigCmd = nginx -t
|
||||
ReloadCmd = nginx -s reload
|
||||
RestartCmd = systemctl restart nginx
|
||||
|
||||
[app]
|
||||
PageSize = 10
|
||||
|
||||
[server]
|
||||
Host = 0.0.0.0
|
||||
Port = 9000
|
||||
RunMode = release
|
||||
|
||||
[cert]
|
||||
HTTPChallengePort = 9180
|
||||
|
||||
[terminal]
|
||||
StartCmd = login
|
||||
Email =
|
||||
CADir =
|
||||
RenewalInterval = 7
|
||||
RecursiveNameservers =
|
||||
EOF
|
||||
msg_ok "Configured Nginx UI"
|
||||
|
||||
@@ -68,6 +78,17 @@ EOF
|
||||
systemctl daemon-reload
|
||||
msg_ok "Created Service"
|
||||
|
||||
msg_info "Creating Initial Admin User"
|
||||
systemctl start nginx-ui
|
||||
sleep 3
|
||||
systemctl stop nginx-ui
|
||||
sleep 1
|
||||
/usr/local/bin/nginx-ui reset-password --config /usr/local/etc/nginx-ui/app.ini &>/tmp/nginx-ui-reset.log || true
|
||||
ADMIN_PASS=$(grep -oP 'Password: \K\S+' /tmp/nginx-ui-reset.log || echo "admin")
|
||||
echo -e "Nginx-UI Credentials\nUsername: admin\nPassword: $ADMIN_PASS" >~/nginx-ui.creds
|
||||
rm -f /tmp/nginx-ui-reset.log
|
||||
msg_ok "Created Initial Admin User"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl enable -q --now nginx-ui
|
||||
rm -rf /etc/nginx/sites-enabled/default
|
||||
|
||||
@@ -130,11 +130,10 @@ if [ ! -f /app/config/production.json ]; then
|
||||
"database": {
|
||||
"engine": "knex-native",
|
||||
"knex": {
|
||||
"client": "better-sqlite3",
|
||||
"client": "sqlite3",
|
||||
"connection": {
|
||||
"filename": "/data/database.sqlite"
|
||||
},
|
||||
"useNullAsDefault": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ msg_info "Installing Prometheus Proxmox VE Exporter"
|
||||
mkdir -p /opt/prometheus-pve-exporter
|
||||
cd /opt/prometheus-pve-exporter
|
||||
|
||||
$STD uv venv --clear /opt/prometheus-pve-exporter/.venv
|
||||
$STD uv venv /opt/prometheus-pve-exporter/.venv
|
||||
$STD /opt/prometheus-pve-exporter/.venv/bin/python -m ensurepip --upgrade
|
||||
$STD /opt/prometheus-pve-exporter/.venv/bin/python -m pip install --upgrade pip
|
||||
$STD /opt/prometheus-pve-exporter/.venv/bin/python -m pip install prometheus-pve-exporter
|
||||
|
||||
@@ -36,7 +36,7 @@ msg_ok "Setup Unrar"
|
||||
fetch_and_deploy_gh_release "sabnzbd-org" "sabnzbd/sabnzbd" "prebuild" "latest" "/opt/sabnzbd" "SABnzbd-*-src.tar.gz"
|
||||
|
||||
msg_info "Installing SABnzbd"
|
||||
$STD uv venv --clear /opt/sabnzbd/venv
|
||||
$STD uv venv /opt/sabnzbd/venv
|
||||
$STD uv pip install -r /opt/sabnzbd/requirements.txt --python=/opt/sabnzbd/venv/bin/python
|
||||
msg_ok "Installed SABnzbd"
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ fetch_and_deploy_gh_release "scrappar" "thecfu/scraparr" "tarball" "latest" "/op
|
||||
|
||||
msg_info "Installing Scraparr"
|
||||
cd /opt/scraparr
|
||||
$STD uv venv --clear /opt/scraparr/.venv
|
||||
$STD uv venv /opt/scraparr/.venv
|
||||
$STD /opt/scraparr/.venv/bin/python -m ensurepip --upgrade
|
||||
$STD /opt/scraparr/.venv/bin/python -m pip install --upgrade pip
|
||||
$STD /opt/scraparr/.venv/bin/python -m pip install -r /opt/scraparr/src/scraparr/requirements.txt
|
||||
|
||||
@@ -131,7 +131,7 @@ msg_ok "Built Shelfmark frontend"
|
||||
|
||||
msg_info "Configuring Shelfmark"
|
||||
cd /opt/shelfmark
|
||||
$STD uv venv --clear ./venv
|
||||
$STD uv venv ./venv
|
||||
$STD source ./venv/bin/activate
|
||||
$STD uv pip install -r ./requirements-base.txt
|
||||
[[ "$DEPLOYMENT_TYPE" == "1" ]] && $STD uv pip install -r ./requirements-shelfmark.txt
|
||||
|
||||
@@ -61,7 +61,7 @@ msg_ok "Installed LibreOffice Components"
|
||||
|
||||
msg_info "Installing Python Dependencies"
|
||||
mkdir -p /tmp/stirling-pdf
|
||||
$STD uv venv --clear /opt/.venv
|
||||
$STD uv venv /opt/.venv
|
||||
export PATH="/opt/.venv/bin:$PATH"
|
||||
source /opt/.venv/bin/activate
|
||||
$STD uv pip install --upgrade pip
|
||||
|
||||
@@ -22,7 +22,7 @@ fetch_and_deploy_gh_release "streamlink-webui" "CrazyWolf13/streamlink-webui" "t
|
||||
|
||||
msg_info "Setup ${APPLICATION}"
|
||||
mkdir -p "/opt/${APPLICATION}-download"
|
||||
$STD uv venv --clear /opt/"${APPLICATION}"/backend/src/.venv
|
||||
$STD uv venv /opt/"${APPLICATION}"/backend/src/.venv
|
||||
source /opt/"${APPLICATION}"/backend/src/.venv/bin/activate
|
||||
$STD uv pip install -r /opt/streamlink-webui/backend/src/requirements.txt --python=/opt/"${APPLICATION}"/backend/src/.venv
|
||||
cd /opt/"${APPLICATION}"/frontend/src
|
||||
|
||||
@@ -40,7 +40,7 @@ SECRET_KEY=$(openssl rand -base64 45 | sed 's/\//\\\//g')
|
||||
msg_info "Setup Tandoor"
|
||||
mkdir -p /opt/tandoor/{config,api,mediafiles,staticfiles}
|
||||
cd /opt/tandoor
|
||||
$STD uv venv --clear .venv --python=python3
|
||||
$STD uv venv .venv --python=python3
|
||||
$STD uv pip install -r requirements.txt --python .venv/bin/python
|
||||
cd /opt/tandoor/vue3
|
||||
$STD yarn install
|
||||
|
||||
@@ -25,7 +25,7 @@ cd /opt/Tautulli
|
||||
TAUTULLI_VERSION=$(get_latest_github_release "Tautulli/Tautulli" "false")
|
||||
echo "${TAUTULLI_VERSION}" >/opt/Tautulli/version.txt
|
||||
echo "master" >/opt/Tautulli/branch.txt
|
||||
$STD uv venv --clear
|
||||
$STD uv venv
|
||||
$STD source /opt/Tautulli/.venv/bin/activate
|
||||
$STD uv pip install -r requirements.txt
|
||||
$STD uv pip install pyopenssl
|
||||
|
||||
@@ -30,7 +30,7 @@ msg_ok "Built Frontend"
|
||||
|
||||
msg_info "Setting up Backend"
|
||||
cd /opt/trip/backend
|
||||
$STD uv venv --clear /opt/trip/.venv
|
||||
$STD uv venv /opt/trip/.venv
|
||||
$STD uv pip install --python /opt/trip/.venv/bin/python -r trip/requirements.txt
|
||||
msg_ok "Set up Backend"
|
||||
|
||||
|
||||
@@ -27,6 +27,68 @@ msg_ok "Installed Dependencies"
|
||||
|
||||
fetch_and_deploy_gh_release "UmlautAdaptarr" "PCJones/Umlautadaptarr" "prebuild" "latest" "/opt/UmlautAdaptarr" "linux-x64.zip"
|
||||
|
||||
msg_info "Setting up UmlautAdaptarr"
|
||||
cat <<EOF >/opt/UmlautAdaptarr/appsettings.json
|
||||
{
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
"Microsoft.AspNetCore": "Warning"
|
||||
},
|
||||
"Console": {
|
||||
"TimestampFormat": "yyyy-MM-dd HH:mm:ss::"
|
||||
}
|
||||
},
|
||||
"AllowedHosts": "*",
|
||||
"Kestrel": {
|
||||
"Endpoints": {
|
||||
"Http": {
|
||||
"Url": "http://[::]:5005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Settings": {
|
||||
"UserAgent": "UmlautAdaptarr/1.0",
|
||||
"UmlautAdaptarrApiHost": "https://umlautadaptarr.pcjones.de/api/v1",
|
||||
"IndexerRequestsCacheDurationInMinutes": 12
|
||||
},
|
||||
"Sonarr": [
|
||||
{
|
||||
"Enabled": false,
|
||||
"Name": "Sonarr",
|
||||
"Host": "http://192.168.1.100:8989",
|
||||
"ApiKey": "dein_sonarr_api_key"
|
||||
}
|
||||
],
|
||||
"Radarr": [
|
||||
{
|
||||
"Enabled": false,
|
||||
"Name": "Radarr",
|
||||
"Host": "http://192.168.1.101:7878",
|
||||
"ApiKey": "dein_radarr_api_key"
|
||||
}
|
||||
],
|
||||
"Lidarr": [
|
||||
{
|
||||
"Enabled": false,
|
||||
"Host": "http://192.168.1.102:8686",
|
||||
"ApiKey": "dein_lidarr_api_key"
|
||||
},
|
||||
],
|
||||
"Readarr": [
|
||||
{
|
||||
"Enabled": false,
|
||||
"Host": "http://192.168.1.103:8787",
|
||||
"ApiKey": "dein_readarr_api_key"
|
||||
},
|
||||
],
|
||||
"IpLeakTest": {
|
||||
"Enabled": false
|
||||
}
|
||||
}
|
||||
EOF
|
||||
msg_ok "Setup UmlautAdaptarr"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/umlautadaptarr.service
|
||||
[Unit]
|
||||
|
||||
@@ -49,7 +49,7 @@ fetch_and_deploy_gh_release "warracker" "sassanix/Warracker" "tarball" "latest"
|
||||
|
||||
msg_info "Installing Warracker"
|
||||
cd /opt/warracker/backend
|
||||
$STD uv venv --clear .venv
|
||||
$STD uv venv .venv
|
||||
$STD source .venv/bin/activate
|
||||
$STD uv pip install -r requirements.txt
|
||||
mv /opt/warracker/env.example /opt/.env
|
||||
|
||||
@@ -15,167 +15,92 @@ update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y \
|
||||
build-essential \
|
||||
nginx \
|
||||
redis-server \
|
||||
libpq-dev
|
||||
git \
|
||||
apache2 \
|
||||
libapache2-mod-wsgi-py3
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="sass" setup_nodejs
|
||||
setup_uv
|
||||
PG_VERSION="16" setup_postgresql
|
||||
PG_DB_NAME="wger" PG_DB_USER="wger" setup_postgresql_db
|
||||
fetch_and_deploy_gh_release "wger" "wger-project/wger" "tarball"
|
||||
msg_info "Installing Python"
|
||||
$STD apt install -y python3-pip
|
||||
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
||||
msg_ok "Installed Python"
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="yarn,sass" setup_nodejs
|
||||
|
||||
msg_info "Setting up wger"
|
||||
mkdir -p /opt/wger/{static,media}
|
||||
chmod o+w /opt/wger/media
|
||||
cd /opt/wger
|
||||
$STD corepack enable
|
||||
$STD npm install
|
||||
$STD npm run build:css:sass
|
||||
$STD uv venv
|
||||
$STD uv pip install . --group docker
|
||||
SECRET_KEY=$(openssl rand -base64 40)
|
||||
cat <<EOF >/opt/wger/.env
|
||||
DJANGO_SETTINGS_MODULE=settings.main
|
||||
PYTHONPATH=/opt/wger
|
||||
$STD adduser wger --disabled-password --gecos ""
|
||||
mkdir /home/wger/db
|
||||
touch /home/wger/db/database.sqlite
|
||||
chown :www-data -R /home/wger/db
|
||||
chmod g+w /home/wger/db /home/wger/db/database.sqlite
|
||||
mkdir /home/wger/{static,media}
|
||||
chmod o+w /home/wger/media
|
||||
temp_dir=$(mktemp -d)
|
||||
cd "$temp_dir"
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/wger-project/wger/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3)}')
|
||||
curl -fsSL "https://github.com/wger-project/wger/archive/refs/tags/$RELEASE.tar.gz" -o "$RELEASE.tar.gz"
|
||||
tar xzf "$RELEASE".tar.gz
|
||||
mv wger-"$RELEASE" /home/wger/src
|
||||
cd /home/wger/src
|
||||
$STD pip install -r requirements_prod.txt --ignore-installed
|
||||
$STD pip install -e .
|
||||
$STD wger create-settings --database-path /home/wger/db/database.sqlite
|
||||
sed -i "s#home/wger/src/media#home/wger/media#g" /home/wger/src/settings.py
|
||||
sed -i "/MEDIA_ROOT = '\/home\/wger\/media'/a STATIC_ROOT = '/home/wger/static'" /home/wger/src/settings.py
|
||||
$STD wger bootstrap
|
||||
$STD python3 manage.py collectstatic
|
||||
rm -rf "$temp_dir"
|
||||
echo "${RELEASE}" >/opt/wger_version.txt
|
||||
msg_ok "Finished setting up wger"
|
||||
|
||||
DJANGO_DB_ENGINE=django.db.backends.postgresql
|
||||
DJANGO_DB_DATABASE=${PG_DB_NAME}
|
||||
DJANGO_DB_USER=${PG_DB_USER}
|
||||
DJANGO_DB_PASSWORD=${PG_DB_PASS}
|
||||
DJANGO_DB_HOST=localhost
|
||||
DJANGO_DB_PORT=5432
|
||||
DATABASE_URL=postgresql://${PG_DB_USER}:${PG_DB_PASS}@localhost:5432/${PG_DB_NAME}
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/apache2/sites-available/wger.conf
|
||||
<Directory /home/wger/src>
|
||||
<Files wsgi.py>
|
||||
Require all granted
|
||||
</Files>
|
||||
</Directory>
|
||||
|
||||
DJANGO_MEDIA_ROOT=/opt/wger/media
|
||||
DJANGO_STATIC_ROOT=/opt/wger/static
|
||||
DJANGO_STATIC_URL=/static/
|
||||
<VirtualHost *:80>
|
||||
WSGIApplicationGroup %{GLOBAL}
|
||||
WSGIDaemonProcess wger python-path=/home/wger/src python-home=/home/wger
|
||||
WSGIProcessGroup wger
|
||||
WSGIScriptAlias / /home/wger/src/wger/wsgi.py
|
||||
WSGIPassAuthorization On
|
||||
|
||||
ALLOWED_HOSTS=${LOCAL_IP},localhost,127.0.0.1
|
||||
CSRF_TRUSTED_ORIGINS=http://${LOCAL_IP}:3000
|
||||
Alias /static/ /home/wger/static/
|
||||
<Directory /home/wger/static>
|
||||
Require all granted
|
||||
</Directory>
|
||||
|
||||
USE_X_FORWARDED_HOST=True
|
||||
SECURE_PROXY_SSL_HEADER=HTTP_X_FORWARDED_PROTO,http
|
||||
Alias /media/ /home/wger/media/
|
||||
<Directory /home/wger/media>
|
||||
Require all granted
|
||||
</Directory>
|
||||
|
||||
DJANGO_CACHE_BACKEND=django_redis.cache.RedisCache
|
||||
DJANGO_CACHE_LOCATION=redis://127.0.0.1:6379/1
|
||||
DJANGO_CACHE_TIMEOUT=300
|
||||
DJANGO_CACHE_CLIENT_CLASS=django_redis.client.DefaultClient
|
||||
AXES_CACHE_ALIAS=default
|
||||
|
||||
USE_CELERY=True
|
||||
CELERY_BROKER=redis://127.0.0.1:6379/2
|
||||
CELERY_BACKEND=redis://127.0.0.1:6379/2
|
||||
|
||||
SITE_URL=http://${LOCAL_IP}:3000
|
||||
SECRET_KEY=${SECRET_KEY}
|
||||
ErrorLog /var/log/apache2/wger-error.log
|
||||
CustomLog /var/log/apache2/wger-access.log combined
|
||||
</VirtualHost>
|
||||
EOF
|
||||
set -a && source /opt/wger/.env && set +a
|
||||
$STD uv run wger bootstrap
|
||||
$STD uv run python manage.py collectstatic --no-input
|
||||
cat <<EOF | uv run python manage.py shell
|
||||
from django.contrib.auth import get_user_model
|
||||
User = get_user_model()
|
||||
|
||||
user, created = User.objects.get_or_create(
|
||||
username="admin",
|
||||
defaults={"email": "admin@localhost"},
|
||||
)
|
||||
|
||||
if created:
|
||||
user.set_password("${PG_DB_PASS}")
|
||||
user.is_superuser = True
|
||||
user.is_staff = True
|
||||
user.save()
|
||||
EOF
|
||||
msg_ok "Set up wger"
|
||||
msg_info "Creating Config and Services"
|
||||
$STD a2dissite 000-default.conf
|
||||
$STD a2ensite wger
|
||||
systemctl restart apache2
|
||||
cat <<EOF >/etc/systemd/system/wger.service
|
||||
[Unit]
|
||||
Description=wger Gunicorn
|
||||
Description=wger Service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
WorkingDirectory=/opt/wger
|
||||
EnvironmentFile=/opt/wger/.env
|
||||
ExecStart=/opt/wger/.venv/bin/gunicorn \
|
||||
--bind 127.0.0.1:8000 \
|
||||
--workers 3 \
|
||||
--threads 2 \
|
||||
--timeout 120 \
|
||||
wger.wsgi:application
|
||||
ExecStart=/usr/local/bin/wger start -a 0.0.0.0 -p 3000
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
cat <<EOF >/etc/systemd/system/celery.service
|
||||
[Unit]
|
||||
Description=wger Celery Worker
|
||||
After=network.target redis-server.service
|
||||
Requires=redis-server.service
|
||||
|
||||
[Service]
|
||||
WorkingDirectory=/opt/wger
|
||||
EnvironmentFile=/opt/wger/.env
|
||||
ExecStart=/opt/wger/.venv/bin/celery -A wger worker -l info
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
mkdir -p /var/lib/wger/celery
|
||||
chmod 700 /var/lib/wger/celery
|
||||
cat <<EOF >/etc/systemd/system/celery-beat.service
|
||||
[Unit]
|
||||
Description=wger Celery Beat
|
||||
After=network.target redis-server.service
|
||||
Requires=redis-server.service
|
||||
|
||||
[Service]
|
||||
WorkingDirectory=/opt/wger
|
||||
EnvironmentFile=/opt/wger/.env
|
||||
ExecStart=/opt/wger/.venv/bin/celery -A wger beat -l info \
|
||||
--schedule /var/lib/wger/celery/celerybeat-schedule
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
cat <<'EOF' >/etc/nginx/sites-available/wger
|
||||
server {
|
||||
listen 3000;
|
||||
server_name _;
|
||||
|
||||
client_max_body_size 20M;
|
||||
|
||||
location /static/ {
|
||||
alias /opt/wger/static/;
|
||||
expires 30d;
|
||||
}
|
||||
|
||||
location /media/ {
|
||||
alias /opt/wger/media/;
|
||||
}
|
||||
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:8000;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_redirect off;
|
||||
}
|
||||
}
|
||||
EOF
|
||||
$STD rm -f /etc/nginx/sites-enabled/default
|
||||
$STD ln -sf /etc/nginx/sites-available/wger /etc/nginx/sites-enabled/wger
|
||||
systemctl enable -q --now redis-server nginx wger celery celery-beat
|
||||
systemctl restart nginx
|
||||
msg_ok "Created Config and Services"
|
||||
systemctl enable -q --now wger
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
@@ -3595,7 +3595,6 @@ _setup_intel_arc() {
|
||||
$STD apt -y install \
|
||||
intel-media-va-driver-non-free \
|
||||
intel-opencl-icd \
|
||||
libmfx-gen1.2 \
|
||||
vainfo \
|
||||
intel-gpu-tools 2>/dev/null || msg_warn "Some Intel Arc packages failed"
|
||||
|
||||
@@ -3622,7 +3621,6 @@ _setup_intel_arc() {
|
||||
intel-media-va-driver-non-free \
|
||||
ocl-icd-libopencl1 \
|
||||
libvpl2 \
|
||||
libmfx-gen1.2 \
|
||||
vainfo \
|
||||
intel-gpu-tools 2>/dev/null || msg_warn "Some Intel Arc packages failed"
|
||||
fi
|
||||
|
||||
@@ -79,24 +79,11 @@ EOF
|
||||
header_info
|
||||
msg "Installing NetBird..."
|
||||
pct exec "$CTID" -- bash -c '
|
||||
if ! command -v curl &>/dev/null; then
|
||||
apt-get update -qq
|
||||
apt-get install -y curl >/dev/null
|
||||
fi
|
||||
apt install -y ca-certificates gpg &>/dev/null
|
||||
curl -fsSL "https://pkgs.netbird.io/debian/public.key" | gpg --dearmor >/usr/share/keyrings/netbird-archive-keyring.gpg
|
||||
echo "deb [signed-by=/usr/share/keyrings/netbird-archive-keyring.gpg] https://pkgs.netbird.io/debian stable main" >/etc/apt/sources.list.d/netbird.list
|
||||
apt-get update &>/dev/null
|
||||
apt-get install -y netbird-ui &>/dev/null
|
||||
if systemctl list-unit-files docker.service &>/dev/null; then
|
||||
mkdir -p /etc/systemd/system/netbird.service.d
|
||||
cat <<OVERRIDE >/etc/systemd/system/netbird.service.d/after-docker.conf
|
||||
[Unit]
|
||||
After=docker.service
|
||||
Wants=docker.service
|
||||
OVERRIDE
|
||||
systemctl daemon-reload
|
||||
fi
|
||||
'
|
||||
msg "\e[1;32m ✔ Installed NetBird.\e[0m"
|
||||
sleep 2
|
||||
|
||||
@@ -89,12 +89,6 @@ if ! dig +short pkgs.tailscale.com | grep -qvE "^127\.|^0\.0\.0\.0$"; then
|
||||
echo "nameserver 1.1.1.1" >"$ORIG_RESOLV"
|
||||
fi
|
||||
|
||||
if ! command -v curl &>/dev/null; then
|
||||
echo "[INFO] curl not found, installing..."
|
||||
apt-get update -qq
|
||||
apt-get install -y curl >/dev/null
|
||||
fi
|
||||
|
||||
curl -fsSL https://pkgs.tailscale.com/stable/${ID}/${VER}.noarmor.gpg \
|
||||
| tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null
|
||||
|
||||
|
||||
@@ -5,11 +5,6 @@
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/bakito/adguardhome-sync
|
||||
|
||||
if ! command -v curl &>/dev/null; then
|
||||
printf "\r\e[2K%b" '\033[93m Setup Source \033[m' >&2
|
||||
apt-get update >/dev/null 2>&1
|
||||
apt-get install -y curl >/dev/null 2>&1
|
||||
fi
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/core.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/tools.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/error_handler.func)
|
||||
|
||||
@@ -5,11 +5,6 @@
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/9001/copyparty
|
||||
|
||||
if ! command -v curl &>/dev/null; then
|
||||
printf "\r\e[2K%b" '\033[93m Setup Source \033[m' >&2
|
||||
apt-get update >/dev/null 2>&1
|
||||
apt-get install -y curl >/dev/null 2>&1
|
||||
fi
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/core.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/tools.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/error_handler.func)
|
||||
|
||||
@@ -110,7 +110,6 @@ if [[ -f "$INSTALL_PATH" ]]; then
|
||||
read -r update_prompt
|
||||
if [[ "${update_prompt,,}" =~ ^(y|yes)$ ]]; then
|
||||
msg_info "Updating ${APP}"
|
||||
if ! command -v curl &>/dev/null; then $PKG_MANAGER curl &>/dev/null; fi
|
||||
curl -fsSL https://github.com/gtsteffaniak/filebrowser/releases/latest/download/linux-amd64-filebrowser -o "$TMP_BIN"
|
||||
chmod +x "$TMP_BIN"
|
||||
mv -f "$TMP_BIN" /usr/local/bin/filebrowser
|
||||
|
||||
@@ -88,7 +88,6 @@ if [ -f "$INSTALL_PATH" ]; then
|
||||
read -r -p "Would you like to update ${APP}? (y/N): " update_prompt
|
||||
if [[ "${update_prompt,,}" =~ ^(y|yes)$ ]]; then
|
||||
msg_info "Updating ${APP}"
|
||||
if ! command -v curl &>/dev/null; then $PKG_MANAGER curl &>/dev/null; fi
|
||||
curl -fsSL "https://github.com/filebrowser/filebrowser/releases/latest/download/linux-amd64-filebrowser.tar.gz" | tar -xzv -C /usr/local/bin &>/dev/null
|
||||
chmod +x "$INSTALL_PATH"
|
||||
msg_ok "Updated ${APP}"
|
||||
|
||||
@@ -44,7 +44,7 @@ IP=$(get_lxc_ip)
|
||||
install_glances_debian() {
|
||||
msg_info "Installing dependencies"
|
||||
apt-get update >/dev/null 2>&1
|
||||
apt-get install -y gcc lm-sensors wireless-tools curl >/dev/null 2>&1
|
||||
apt-get install -y gcc lm-sensors wireless-tools >/dev/null 2>&1
|
||||
msg_ok "Installed dependencies"
|
||||
|
||||
msg_info "Setting up Python + uv"
|
||||
@@ -56,7 +56,7 @@ install_glances_debian() {
|
||||
cd /opt
|
||||
mkdir -p glances
|
||||
cd glances
|
||||
uv venv --clear
|
||||
uv venv
|
||||
source .venv/bin/activate >/dev/null 2>&1
|
||||
uv pip install --upgrade pip wheel setuptools >/dev/null 2>&1
|
||||
uv pip install "glances[web]" >/dev/null 2>&1
|
||||
@@ -114,7 +114,7 @@ install_glances_alpine() {
|
||||
apk update >/dev/null 2>&1
|
||||
$STD apk add --no-cache \
|
||||
gcc musl-dev linux-headers python3-dev \
|
||||
python3 py3-pip py3-virtualenv lm-sensors wireless-tools curl >/dev/null 2>&1
|
||||
python3 py3-pip py3-virtualenv lm-sensors wireless-tools >/dev/null 2>&1
|
||||
msg_ok "Installed dependencies"
|
||||
|
||||
msg_info "Setting up Python + uv"
|
||||
@@ -126,7 +126,7 @@ install_glances_alpine() {
|
||||
cd /opt
|
||||
mkdir -p glances
|
||||
cd glances
|
||||
uv venv --clear
|
||||
uv venv
|
||||
source .venv/bin/activate
|
||||
uv pip install --upgrade pip wheel setuptools >/dev/null 2>&1
|
||||
uv pip install "glances[web]" >/dev/null 2>&1
|
||||
|
||||
@@ -5,11 +5,6 @@
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/alangrainger/immich-public-proxy
|
||||
|
||||
if ! command -v curl &>/dev/null; then
|
||||
printf "\r\e[2K%b" '\033[93m Setup Source \033[m' >&2
|
||||
apt-get update >/dev/null 2>&1
|
||||
apt-get install -y curl >/dev/null 2>&1
|
||||
fi
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/core.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/tools.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/error_handler.func)
|
||||
|
||||
@@ -5,11 +5,6 @@
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/CyferShepard/Jellystat
|
||||
|
||||
if ! command -v curl &>/dev/null; then
|
||||
printf "\r\e[2K%b" '\033[93m Setup Source \033[m' >&2
|
||||
apt-get update >/dev/null 2>&1
|
||||
apt-get install -y curl >/dev/null 2>&1
|
||||
fi
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/core.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/tools.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/error_handler.func)
|
||||
|
||||
@@ -5,11 +5,6 @@
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/xperimental/nextcloud-exporter
|
||||
|
||||
if ! command -v curl &>/dev/null; then
|
||||
printf "\r\e[2K%b" '\033[93m Setup Source \033[m' >&2
|
||||
apt-get update >/dev/null 2>&1
|
||||
apt-get install -y curl >/dev/null 2>&1
|
||||
fi
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/core.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/tools.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/error_handler.func)
|
||||
|
||||
@@ -51,10 +51,6 @@ function msg_ok() {
|
||||
}
|
||||
|
||||
msg_info "Installing ${APP}"
|
||||
if ! command -v curl &>/dev/null; then
|
||||
apt-get update >/dev/null 2>&1
|
||||
apt-get install -y curl >/dev/null 2>&1
|
||||
fi
|
||||
curl -fsSL "https://github.com/OliveTin/OliveTin/releases/latest/download/OliveTin_linux_amd64.deb" -o $(basename "https://github.com/OliveTin/OliveTin/releases/latest/download/OliveTin_linux_amd64.deb")
|
||||
dpkg -i OliveTin_linux_amd64.deb &>/dev/null
|
||||
systemctl enable --now OliveTin &>/dev/null
|
||||
|
||||
@@ -57,10 +57,6 @@ function msg_ok() { echo -e "${CM} ${GN}${1}${CL}"; }
|
||||
function msg_error() { echo -e "${CROSS} ${RD}${1}${CL}"; }
|
||||
|
||||
function check_internet() {
|
||||
if ! command -v curl &>/dev/null; then
|
||||
apt-get update >/dev/null 2>&1
|
||||
apt-get install -y curl >/dev/null 2>&1
|
||||
fi
|
||||
msg_info "Checking Internet connectivity to GitHub"
|
||||
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" https://github.com)
|
||||
if [[ "$HTTP_CODE" -ge 200 && "$HTTP_CODE" -lt 400 ]]; then
|
||||
|
||||
@@ -5,11 +5,6 @@
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/eko/pihole-exporter/
|
||||
|
||||
if ! command -v curl &>/dev/null; then
|
||||
printf "\r\e[2K%b" '\033[93m Setup Source \033[m' >&2
|
||||
apt-get update >/dev/null 2>&1
|
||||
apt-get install -y curl >/dev/null 2>&1
|
||||
fi
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/core.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/tools.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/error_handler.func)
|
||||
|
||||
@@ -5,11 +5,6 @@
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/martabal/qbittorrent-exporter
|
||||
|
||||
if ! command -v curl &>/dev/null; then
|
||||
printf "\r\e[2K%b" '\033[93m Setup Source \033[m' >&2
|
||||
apt-get update >/dev/null 2>&1
|
||||
apt-get install -y curl >/dev/null 2>&1
|
||||
fi
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/core.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/tools.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/error_handler.func)
|
||||
|
||||
@@ -42,7 +42,7 @@ whiptail --backtitle "Proxmox VE Helper Scripts" --title "Webmin Installer" --ye
|
||||
|
||||
msg_info "Installing Prerequisites"
|
||||
apt update &>/dev/null
|
||||
apt-get -y install libnet-ssleay-perl libauthen-pam-perl libio-pty-perl unzip shared-mime-info curl &>/dev/null
|
||||
apt-get -y install libnet-ssleay-perl libauthen-pam-perl libio-pty-perl unzip shared-mime-info &>/dev/null
|
||||
msg_ok "Installed Prerequisites"
|
||||
|
||||
LATEST=$(curl -fsSL https://api.github.com/repos/webmin/webmin/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
|
||||
|
||||
Reference in New Issue
Block a user