Compare commits

..

1 Commits

Author SHA1 Message Date
CanbiZ
8984dbf601 Asterisk: add interactive version selection to installer
The install script now fetches available Asterisk versions (Standard, LTS, Certified) from the official website and prompts the user to select which version to install. The download and installation process adapts based on the user's choice. Also updated package management commands from 'apt-get' to 'apt' for consistency.
2025-10-29 16:27:28 +01:00
22 changed files with 184 additions and 801 deletions

View File

@@ -10,28 +10,15 @@
> [!CAUTION]
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
## 2025-10-30
### 🆕 New Scripts
- Livebook ([#8739](https://github.com/community-scripts/ProxmoxVE/pull/8739))
- Reitti ([#8736](https://github.com/community-scripts/ProxmoxVE/pull/8736))
- BentoPDF ([#8735](https://github.com/community-scripts/ProxmoxVE/pull/8735))
## 2025-10-29
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Docker-VM: add workaround for libguestfs issue on Proxmox VE 9+ [@MickLesk](https://github.com/MickLesk) ([#8722](https://github.com/community-scripts/ProxmoxVE/pull/8722))
- Dispatcharr: add folders in installer / add more build ressources [@MickLesk](https://github.com/MickLesk) ([#8708](https://github.com/community-scripts/ProxmoxVE/pull/8708))
- LibreTranslate: bump torch version [@MickLesk](https://github.com/MickLesk) ([#8710](https://github.com/community-scripts/ProxmoxVE/pull/8710))
- #### ✨ New Features
- Archivebox: add Chromium and Node modules [@MickLesk](https://github.com/MickLesk) ([#8725](https://github.com/community-scripts/ProxmoxVE/pull/8725))
- #### 🔧 Refactor
- tracktor: refactor envfile [@CrazyWolf13](https://github.com/CrazyWolf13) ([#8711](https://github.com/community-scripts/ProxmoxVE/pull/8711))

View File

@@ -32,7 +32,6 @@ function update_script() {
msg_info "Restarting Gitea"
rc-service gitea restart
msg_ok "Restarted Gitea"
exit
}
start

View File

@@ -28,18 +28,12 @@ function update_script() {
exit
fi
NODE_VERSION="22" NODE_MODULE="@postlight/parser@latest,single-file-cli@latest" setup_nodejs
NODE_VERSION="22" setup_nodejs
PYTHON_VERSION="3.13" setup_uv
if ! dpkg -l | grep -q "^ii chromium "; then
msg_info "Installing System Dependencies"
$STD apt-get install -y chromium
msg_ok "Installed System Dependencies"
fi
msg_info "Stopping Service"
msg_info "Stopping ArchiveBox"
systemctl stop archivebox
msg_ok "Stopped Service"
msg_ok "Stopped ArchiveBox"
msg_info "Upgrading Playwright"
$STD uv pip install playwright --system
@@ -52,10 +46,11 @@ function update_script() {
sudo -u archivebox archivebox init
msg_ok "Updated ArchiveBox"
msg_info "Starting Service"
msg_info "Starting ArchiveBox"
systemctl start archivebox
msg_ok "Started Service"
msg_ok "Updated Successfully!"
msg_ok "Started ArchiveBox"
msg_ok "Updated Successfully"
exit
}

View File

@@ -1,62 +0,0 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: vhsdream
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/alam00000/bentopdf
APP="BentoPDF"
var_tags="${var_tags:-pdf-editor}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-4}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/bentopdf ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
NODE_VERSION="24" setup_nodejs
if check_for_gh_release "bentopdf" "alam00000/bentopdf"; then
msg_info "Stopping Service"
systemctl stop bentopdf
msg_ok "Stopped Service"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "bentopdf" "alam00000/bentopdf" "tarball" "latest" "/opt/bentopdf"
msg_info "Updating BentoPDF"
cd /opt/bentopdf
$STD npm ci --no-audit --no-fund
export SIMPLE_MODE=true
$STD npm run build -- --mode production
msg_ok "Updated BentoPDF"
msg_info "Starting Service"
systemctl start bentopdf
msg_ok "Started Service"
msg_ok "Updated Successfully!"
fi
exit
}
start
build_container
description
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}:8080${CL}"

View File

@@ -1,6 +0,0 @@
____ __ ____ ____ ______
/ __ )___ ____ / /_____ / __ \/ __ \/ ____/
/ __ / _ \/ __ \/ __/ __ \/ /_/ / / / / /_
/ /_/ / __/ / / / /_/ /_/ / ____/ /_/ / __/
/_____/\___/_/ /_/\__/\____/_/ /_____/_/

View File

@@ -1,6 +0,0 @@
__ _ __ __
/ / (_) _____ / /_ ____ ____ / /__
/ / / / | / / _ \/ __ \/ __ \/ __ \/ //_/
/ /___/ /| |/ / __/ /_/ / /_/ / /_/ / ,<
/_____/_/ |___/\___/_.___/\____/\____/_/|_|

View File

@@ -1,6 +0,0 @@
____ _ __ __ _
/ __ \___ (_) /_/ /_(_)
/ /_/ / _ \/ / __/ __/ /
/ _, _/ __/ / /_/ /_/ /
/_/ |_|\___/_/\__/\__/_/

View File

@@ -35,7 +35,7 @@ function update_script() {
msg_ok "Migrated PHP $CURRENT_PHP to 8.4"
fi
if check_for_gh_release "kimai" "kimai/kimai"; then
if check_for_gh_release "Kimai" "kimai/kimai"; then
BACKUP_DIR="/opt/kimai_backup"
msg_info "Stopping Apache2"
@@ -49,7 +49,7 @@ function update_script() {
[ -f /opt/kimai/config/packages/local.yaml ] && cp /opt/kimai/config/packages/local.yaml "$BACKUP_DIR/"
msg_ok "Backup completed"
fetch_and_deploy_gh_release "kimai" "kimai/kimai"
fetch_and_deploy_gh_release "Kimai" "kimai/kimai" "prebuild" "latest" "/opt/kimai" "kimai-release-*.zip"
msg_info "Updating Kimai"
[ -d "$BACKUP_DIR/var" ] && cp -r "$BACKUP_DIR/var" /opt/kimai/

View File

@@ -1,64 +0,0 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/refs/heads/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: dkuku
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/livebook-dev/livebook
APP="Livebook"
var_tags="${var_tags:-development}"
var_disk="${var_disk:-4}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-1024}"
var_os="${var_os:-ubuntu}"
var_version="${var_version:-24.04}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -f /opt/livebook/.mix/escripts/livebook ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "livebook" "livebook-dev/livebook"; then
msg_info "Stopping Service"
systemctl stop livebook
msg_info "Stopped Service"
msg_info "Updating Container"
$STD apt update
$STD apt upgrade -y
msg_ok "Updated Container"
msg_info "Updating Livebook"
source /opt/livebook/.env
cd /opt/livebook
$STD mix escript.install hex livebook --force
chown -R livebook:livebook /opt/livebook /data
msg_info "Starting Service"
systemctl start livebook
msg_info "Started Service"
msg_ok "Updated Successfully!"
fi
exit
}
start
build_container
description
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}:8080${CL}"

View File

@@ -1,68 +0,0 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/dedicatedcode/reitti
APP="Reitti"
var_tags="${var_tags:-location-tracker}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-4096}"
var_disk="${var_disk:-15}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -f /opt/reitti/reitti.jar ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "reitti" "dedicatedcode/reitti"; then
msg_info "Stopping Service"
systemctl stop reitti
msg_ok "Stopped Service"
rm -f /opt/reitti/reitti.jar
USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "reitti" "dedicatedcode/reitti" "singlefile" "latest" "/opt/reitti" "reitti-app.jar"
mv /opt/reitti/reitti-*.jar /opt/reitti/reitti.jar
msg_info "Starting Service"
systemctl start reitti
msg_ok "Started Service"
msg_ok "Updated Successfully!"
fi
if check_for_gh_release "photon" "dedicatedcode/reitti"; then
msg_info "Stopping Service"
systemctl stop photon
msg_ok "Stopped Service"
rm -f /opt/photon/photon.jar
USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "photon" "komoot/photon" "singlefile" "latest" "/opt/photon" "photon-0*.jar"
mv /opt/photon/photon-*.jar /opt/photon/photon.jar
msg_info "Starting Service"
systemctl start photon
msg_ok "Started Service"
msg_ok "Updated Successfully!"
fi
exit
}
start
build_container
description
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}:8080${CL}"

View File

@@ -1,35 +0,0 @@
{
"name": "BentoPDF",
"slug": "bentopdf",
"categories": [
12
],
"date_created": "2025-10-30",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 8080,
"documentation": "https://github.com/alam00000/bentopdf",
"website": "https://www.bentopdf.com",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/bentopdf.webp",
"config_path": "",
"description": "A privacy-first, 100% client-side PDF Toolkit. No signups/accounts, works in the browser, online or offline.",
"install_methods": [
{
"type": "default",
"script": "ct/bentopdf.sh",
"resources": {
"cpu": 1,
"ram": 2048,
"hdd": 4,
"os": "debian",
"version": "13"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": []
}

View File

@@ -1,40 +0,0 @@
{
"name": "Livebook",
"slug": "livebook",
"categories": [
20
],
"date_created": "2025-10-30",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 8080,
"documentation": "https://hexdocs.pm/livebook/readme.html",
"config_path": null,
"website": "https://livebook.dev",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/livebook.webp",
"description": "Elixir Livebook is an interactive, web-based notebook platform for Elixir that combines code, documentation, and visualizations in a single document. Similar to Jupyter notebooks, it allows developers to write and execute Elixir code in real-time, making it ideal for data exploration, prototyping, learning, and collaborative development. Livebook features rich markdown support, built-in charting capabilities, and seamless integration with the Elixir ecosystem.",
"install_methods": [
{
"type": "default",
"script": "ct/livebook.sh",
"resources": {
"cpu": 1,
"ram": 1024,
"hdd": 4,
"os": "Ubuntu",
"version": "24.04"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "Show initial Livebook password: `cat ~/livebook.creds`",
"type": "info"
}
]
}

View File

@@ -1,40 +0,0 @@
{
"name": "Reitti",
"slug": "reitti",
"categories": [
21
],
"date_created": "2025-10-30",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 8080,
"documentation": "https://www.dedicatedcode.com/projects/reitti/",
"config_path": "/opt/reitti/.env",
"website": "https://www.dedicatedcode.com/projects/reitti/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/reitti.webp",
"description": "Reitti is a self-hosted location tracking and analysis platform that detects significant places, trip patterns, and integrates with OwnTracks, GPSLogger, and Immich. It uses PostgreSQL + PostGIS, RabbitMQ, Redis, and an optional Photon geocoder.",
"install_methods": [
{
"type": "default",
"script": "ct/reitti.sh",
"resources": {
"cpu": 2,
"ram": 4096,
"hdd": 15,
"os": "debian",
"version": "13"
}
}
],
"default_credentials": {
"username": "admin",
"password": "admin"
},
"notes": [
{
"text": "Photon Geocoder running at http://127.0.0.1:2322. Photon is fully setup, but without sample data. (filesize is big) -> checkout our guide: `https://github.com/community-scripts/ProxmoxVE/discussions/8737`.",
"type": "info"
}
]
}

View File

@@ -1,113 +1,13 @@
[
{
"name": "BerriAI/litellm",
"version": "v1.77.7.dev3",
"date": "2025-10-29T23:40:01Z"
},
{
"name": "Sonarr/Sonarr",
"version": "v4.0.15.2941",
"date": "2025-06-20T17:20:54Z"
},
{
"name": "homebridge/homebridge",
"version": "v1.11.1",
"date": "2025-10-29T22:09:26Z"
},
{
"name": "jenkinsci/jenkins",
"version": "jenkins-2.534",
"date": "2025-10-29T21:01:24Z"
},
{
"name": "chrisvel/tududi",
"version": "v0.85",
"date": "2025-10-29T20:40:57Z"
},
{
"name": "influxdata/influxdb",
"version": "v2.7.12",
"date": "2025-05-29T17:08:26Z"
},
{
"name": "runtipi/runtipi",
"version": "e2e",
"date": "2025-10-29T19:37:29Z"
},
{
"name": "firefly-iii/firefly-iii",
"version": "v6.4.2",
"date": "2025-10-07T08:11:58Z"
},
{
"name": "ollama/ollama",
"version": "v0.12.7-rc1",
"date": "2025-10-29T18:03:43Z"
},
{
"name": "paperless-ngx/paperless-ngx",
"version": "v2.19.3",
"date": "2025-10-29T17:58:16Z"
},
{
"name": "home-assistant/core",
"version": "2025.10.4",
"date": "2025-10-24T20:03:03Z"
},
{
"name": "go-gitea/gitea",
"version": "v1.25.0",
"date": "2025-10-29T16:57:54Z"
},
{
"name": "zwave-js/zwave-js-ui",
"version": "v11.6.1",
"date": "2025-10-29T16:51:06Z"
},
{
"name": "dgtlmoon/changedetection.io",
"version": "0.50.35",
"date": "2025-10-29T16:31:56Z"
},
{
"name": "azukaar/Cosmos-Server",
"version": "v0.18.4",
"date": "2025-04-05T19:12:57Z"
},
{
"name": "laurent22/joplin",
"version": "server-v3.4.4",
"date": "2025-09-25T13:19:26Z"
},
{
"name": "heiher/hev-socks5-server",
"version": "2.11.0",
"date": "2025-10-29T14:26:23Z"
},
{
"name": "mongodb/mongo",
"version": "r7.0.27-alpha0",
"date": "2025-10-29T13:54:18Z"
},
{
"name": "zitadel/zitadel",
"version": "v4.6.1",
"date": "2025-10-29T10:15:50Z"
},
{
"name": "element-hq/synapse",
"version": "v1.141.0",
"date": "2025-10-29T11:45:43Z"
},
{
"name": "zabbix/zabbix",
"version": "7.4.4",
"date": "2025-10-29T11:31:26Z"
},
{
"name": "wazuh/wazuh",
"version": "coverity-w44-4.14.1",
"date": "2025-10-29T11:28:37Z"
"name": "zitadel/zitadel",
"version": "v4.6.1",
"date": "2025-10-29T10:15:50Z"
},
{
"name": "cockpit-project/cockpit",
@@ -164,6 +64,11 @@
"version": "v1.0.1",
"date": "2025-10-29T03:25:13Z"
},
{
"name": "ollama/ollama",
"version": "v0.12.6-rc1",
"date": "2025-10-16T16:36:25Z"
},
{
"name": "jeedom/core",
"version": "4.4.20",
@@ -174,6 +79,16 @@
"version": "v4.0.1",
"date": "2025-10-15T16:53:55Z"
},
{
"name": "runtipi/runtipi",
"version": "v4.5.5",
"date": "2025-10-28T21:53:07Z"
},
{
"name": "dgtlmoon/changedetection.io",
"version": "0.50.34",
"date": "2025-10-28T21:08:11Z"
},
{
"name": "tailscale/tailscale",
"version": "v1.90.4",
@@ -194,6 +109,11 @@
"version": "v4.4.5",
"date": "2025-10-28T18:35:47Z"
},
{
"name": "azukaar/Cosmos-Server",
"version": "v0.18.4",
"date": "2025-04-05T19:12:57Z"
},
{
"name": "keycloak/keycloak",
"version": "26.4.2",
@@ -201,8 +121,8 @@
},
{
"name": "javedh-dev/tracktor",
"version": "0.4.4",
"date": "2025-10-28T17:39:14Z"
"version": "0.4.3",
"date": "2025-10-28T17:32:48Z"
},
{
"name": "pi-hole/pi-hole",
@@ -249,11 +169,21 @@
"version": "v2.16.36",
"date": "2025-10-28T13:05:28Z"
},
{
"name": "jenkinsci/jenkins",
"version": "jenkins-2.534",
"date": "2025-10-28T12:29:12Z"
},
{
"name": "n8n-io/n8n",
"version": "n8n@1.117.3",
"date": "2025-10-28T12:00:42Z"
},
{
"name": "zabbix/zabbix",
"version": "7.2.14",
"date": "2025-10-28T11:41:57Z"
},
{
"name": "YunoHost/yunohost",
"version": "debian/12.1.32.1",
@@ -269,6 +199,11 @@
"version": "v3.0.0-beta.2",
"date": "2025-10-28T10:16:29Z"
},
{
"name": "chrisvel/tududi",
"version": "v0.84.2",
"date": "2025-10-22T17:03:48Z"
},
{
"name": "maxdorninger/MediaManager",
"version": "v1.8.1",
@@ -289,6 +224,11 @@
"version": "version/2025.10.0",
"date": "2025-10-27T19:58:39Z"
},
{
"name": "BerriAI/litellm",
"version": "v1.77.7.dev2",
"date": "2025-10-27T18:50:42Z"
},
{
"name": "rabbitmq/rabbitmq-server",
"version": "v4.2.0",
@@ -319,6 +259,11 @@
"version": "v2.0.10",
"date": "2025-09-24T08:33:37Z"
},
{
"name": "firefly-iii/firefly-iii",
"version": "v6.4.2",
"date": "2025-10-07T08:11:58Z"
},
{
"name": "jellyfin/jellyfin",
"version": "v10.11.1",
@@ -329,6 +274,11 @@
"version": "1.0.1",
"date": "2025-10-27T01:35:01Z"
},
{
"name": "mongodb/mongo",
"version": "r8.0.16-rc1",
"date": "2025-10-26T23:32:32Z"
},
{
"name": "Radarr/Radarr",
"version": "v5.28.0.10274",
@@ -384,11 +334,26 @@
"version": "v5.3",
"date": "2025-10-25T13:50:31Z"
},
{
"name": "go-gitea/gitea",
"version": "v1.24.7",
"date": "2025-10-25T01:23:46Z"
},
{
"name": "home-assistant/core",
"version": "2025.10.4",
"date": "2025-10-24T20:03:03Z"
},
{
"name": "homarr-labs/homarr",
"version": "v1.43.0",
"date": "2025-10-24T19:16:05Z"
},
{
"name": "influxdata/influxdb",
"version": "v2.7.12",
"date": "2025-05-29T17:08:26Z"
},
{
"name": "verdaccio/verdaccio",
"version": "v6.2.1",
@@ -444,6 +409,16 @@
"version": "v2.4.0",
"date": "2025-10-23T21:12:48Z"
},
{
"name": "wazuh/wazuh",
"version": "v4.14.0",
"date": "2025-10-23T17:45:30Z"
},
{
"name": "paperless-ngx/paperless-ngx",
"version": "v2.19.2",
"date": "2025-10-23T17:23:27Z"
},
{
"name": "drakkan/sftpgo",
"version": "v2.7.0",
@@ -509,6 +484,11 @@
"version": "v12.2.1",
"date": "2025-10-21T14:40:19Z"
},
{
"name": "laurent22/joplin",
"version": "server-v3.4.4",
"date": "2025-09-25T13:19:26Z"
},
{
"name": "AlexxIT/go2rtc",
"version": "v1.9.11",
@@ -624,6 +604,11 @@
"version": "5.26.14",
"date": "2025-10-17T12:38:22Z"
},
{
"name": "zwave-js/zwave-js-ui",
"version": "v11.5.2",
"date": "2025-10-17T08:20:13Z"
},
{
"name": "diced/zipline",
"version": "v4.3.2",
@@ -1004,6 +989,11 @@
"version": "2.1.0-test1",
"date": "2025-09-17T18:21:45Z"
},
{
"name": "heiher/hev-socks5-server",
"version": "2.10.0",
"date": "2025-09-17T14:47:00Z"
},
{
"name": "icereed/paperless-gpt",
"version": "v0.23.0",
@@ -1234,6 +1224,11 @@
"version": "v2.1.1",
"date": "2025-07-15T22:38:01Z"
},
{
"name": "homebridge/homebridge",
"version": "v1.11.0",
"date": "2025-07-13T19:22:47Z"
},
{
"name": "mayswind/AriaNg",
"version": "1.3.11",
@@ -1274,6 +1269,11 @@
"version": "v3.0.7",
"date": "2025-06-22T17:49:29Z"
},
{
"name": "Sonarr/Sonarr",
"version": "v4.0.15.2941",
"date": "2025-06-20T17:20:54Z"
},
{
"name": "prometheus-pve/prometheus-pve-exporter",
"version": "v3.5.5",

View File

@@ -22,8 +22,7 @@ $STD apt-get install -y \
libsasl2-dev \
procps \
dnsutils \
ripgrep \
chromium
ripgrep
msg_ok "Installed Dependencies"
msg_info "Installing Python Dependencies"
@@ -33,7 +32,7 @@ $STD apt-get install -y \
python3-regex
msg_ok "Installed Python Dependencies"
NODE_VERSION="22" NODE_MODULE="@postlight/parser@latest,single-file-cli@latest" setup_nodejs
NODE_VERSION="22" setup_nodejs
PYTHON_VERSION="3.13" setup_uv
msg_info "Installing Playwright"
@@ -41,7 +40,7 @@ $STD uv pip install playwright --system
$STD playwright install-deps chromium
msg_ok "Installed Playwright"
msg_info "Installing ArchiveBox"
msg_info "Installing Chromium and ArchiveBox"
mkdir -p /opt/archivebox/{data,.npm,.cache,.local}
$STD adduser --system --shell /bin/bash --gecos 'Archive Box User' --group --disabled-password --home /home/archivebox archivebox
chown -R archivebox:archivebox /opt/archivebox/{data,.npm,.cache,.local}
@@ -93,7 +92,6 @@ motd_ssh
customize
msg_info "Cleaning up"
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -13,8 +13,65 @@ setting_up_container
network_check
update_os
ASTERISK_VERSIONS_URL="https://www.asterisk.org/downloads/asterisk/all-asterisk-versions/"
html=$(curl -fsSL "$ASTERISK_VERSIONS_URL")
LTS_VERSION=""
for major in 20 22 24 26; do
block=$(echo "$html" | awk "/Asterisk $major - LTS/,/<ul>/")
ver=$(echo "$block" | grep -oE 'Download Latest - [0-9]+\.[0-9]+(\.[0-9]+)?' | head -n1 | sed -E 's/.* - //')
if [ -n "$ver" ]; then
LTS_VERSION="$LTS_VERSION $ver"
fi
unset ver block
done
LTS_VERSION=$(echo "$LTS_VERSION" | xargs | tr ' ' '\n' | sort -V | tail -n1)
STD_VERSION=""
for major in 21 23 25 27; do
block=$(echo "$html" | awk "/Asterisk $major</,/<ul>/")
ver=$(echo "$block" | grep -oE 'Download (Latest - )?[0-9]+\.[0-9]+(\.[0-9]+)?' | head -n1 | sed -E 's/.* - //;s/Download //')
if [ -n "$ver" ]; then
STD_VERSION="$STD_VERSION $ver"
fi
unset ver block
done
STD_VERSION=$(echo "$STD_VERSION" | xargs | tr ' ' '\n' | sort -V | tail -n1)
cert_block=$(echo "$html" | awk '/Certified Asterisk/,/<ul>/')
CERT_VERSION=$(echo "$cert_block" | grep -oE 'Download Latest - [0-9]+\.[0-9]+-cert[0-9]+' | head -n1 | sed -E 's/.* - //')
cat <<EOF
Choose Asterisk version to install:
1) Latest Standard ($STD_VERSION)
2) Latest LTS ($LTS_VERSION)
3) Latest Certified ($CERT_VERSION)
EOF
read -rp "Enter choice [1-3]: " ASTERISK_CHOICE
case "$ASTERISK_CHOICE" in
2)
ASTERISK_VERSION="$LTS_VERSION"
;;
3)
ASTERISK_VERSION="$CERT_VERSION"
CERTIFIED=1
;;
*)
ASTERISK_VERSION="$STD_VERSION"
;;
esac
if [[ "$CERTIFIED" == "1" ]]; then
RELEASE="certified-asterisk-${ASTERISK_VERSION}.tar.gz"
DOWNLOAD_URL="https://downloads.asterisk.org/pub/telephony/certified-asterisk/$RELEASE"
else
RELEASE="asterisk-${ASTERISK_VERSION}.tar.gz"
DOWNLOAD_URL="https://downloads.asterisk.org/pub/telephony/asterisk/$RELEASE"
fi
msg_info "Installing Dependencies"
$STD apt-get install -y \
$STD apt install -y \
libsrtp2-dev \
build-essential \
libedit-dev \
@@ -25,13 +82,12 @@ $STD apt-get install -y \
msg_ok "Installed Dependencies"
msg_info "Downloading Asterisk"
RELEASE=$(curl -fsSL https://downloads.asterisk.org/pub/telephony/asterisk/ | grep -o 'asterisk-[0-9]\+-current\.tar\.gz' | sort -V | tail -n1)
temp_file=$(mktemp)
curl -fsSL "https://downloads.asterisk.org/pub/telephony/asterisk/${RELEASE}" -o "$temp_file"
curl -fsSL "$DOWNLOAD_URL" -o "$temp_file"
mkdir -p /opt/asterisk
tar zxf "$temp_file" --strip-components=1 -C /opt/asterisk
cd /opt/asterisk
msg_ok "Downloaded Asterisk"
msg_ok "Downloaded Asterisk ($RELEASE)"
msg_info "Installing Asterisk"
$STD ./contrib/scripts/install_prereq install
@@ -51,6 +107,7 @@ customize
msg_info "Cleaning up"
rm -f "$temp_file"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"

View File

@@ -1,53 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: vhsdream
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/alam00000/bentopdf
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
NODE_VERSION="24" setup_nodejs
fetch_and_deploy_gh_release "bentopdf" "alam00000/bentopdf" "tarball" "latest" "/opt/bentopdf"
msg_info "Setup BentoPDF"
cd /opt/bentopdf
$STD npm ci --no-audit --no-fund
export SIMPLE_MODE=true
$STD npm run build -- --mode production
msg_ok "Setup BentoPDF"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/bentopdf.service
[Unit]
Description=BentoPDF Service
After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/bentopdf
ExecStart=/usr/bin/npx serve dist -p 8080
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now bentopdf
msg_ok "Created & started service"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"

View File

@@ -33,7 +33,6 @@ MYSQL_VERSION=$(mariadb --version | grep -oE '[0-9]+\.[0-9]+\.[0-9]+')
$STD mariadb -u root -e "CREATE DATABASE $DB_NAME;"
$STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
$STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
$STD mariadb -u root -e "SET GLOBAL sql_mode='';"
{
echo "Kimai-Credentials"
echo "Kimai Database User: $DB_USER"
@@ -42,7 +41,7 @@ $STD mariadb -u root -e "SET GLOBAL sql_mode='';"
} >>~/kimai.creds
msg_ok "Set up database"
fetch_and_deploy_gh_release "kimai" "kimai/kimai"
fetch_and_deploy_gh_release "Kimai" "kimai/kimai" "prebuild" "latest" "/opt/kimai" "kimai-release-*.zip"
msg_info "Installing Kimai"
cd /opt/kimai

View File

@@ -1,106 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: dkuku
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/livebook-dev/livebook
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt-get install -y \
build-essential \
ca-certificates \
cmake \
git \
libncurses5-dev
msg_ok "Installed Dependencies"
msg_info "Creating livebook user"
mkdir -p /opt/livebook /data
export HOME=/opt/livebook
$STD adduser --system --group --home /opt/livebook --shell /bin/bash livebook
msg_ok "Created livebook user"
msg_warn "WARNING: This script will run an external installer from a third-party source (https://elixir-lang.org)."
msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://elixir-lang.org/install.sh"
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
fi
curl -fsSO https://elixir-lang.org/install.sh
$STD sh install.sh elixir@latest otp@latest
msg_info "Setup Erlang and Elixir"
ERLANG_VERSION=$(ls /opt/livebook/.elixir-install/installs/otp/ | head -n1)
ELIXIR_VERSION=$(ls /opt/livebook/.elixir-install/installs/elixir/ | head -n1)
LIVEBOOK_PASSWORD=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c16)
export ERLANG_BIN="/opt/livebook/.elixir-install/installs/otp/$ERLANG_VERSION/bin"
export ELIXIR_BIN="/opt/livebook/.elixir-install/installs/elixir/$ELIXIR_VERSION/bin"
export PATH="$ERLANG_BIN:$ELIXIR_BIN:$PATH"
$STD mix local.hex --force
$STD mix local.rebar --force
$STD mix escript.install hex livebook --force
cat <<EOF >/opt/livebook/.env
export HOME=/opt/livebook
export ERLANG_VERSION=$ERLANG_VERSION
export ELIXIR_VERSION=$ELIXIR_VERSION
export LIVEBOOK_PORT=8080
export LIVEBOOK_IP="::"
export LIVEBOOK_HOME=/data
export LIVEBOOK_PASSWORD="$LIVEBOOK_PASSWORD"
export ESCRIPTS_BIN=/opt/livebook/.mix/escripts
export ERLANG_BIN="/opt/livebook/.elixir-install/installs/otp/\${ERLANG_VERSION}/bin"
export ELIXIR_BIN="/opt/livebook/.elixir-install/installs/elixir/\${ELIXIR_VERSION}/bin"
export PATH="\$ESCRIPTS_BIN:\$ERLANG_BIN:\$ELIXIR_BIN:\$PATH"
EOF
{
echo "Livebook-Credentials"
echo "Livebook Password: $LIVEBOOK_PASSWORD"
} >>~/livebook.creds
msg_ok "Installed Erlang $ERLANG_VERSION and Elixir $ELIXIR_VERSION"
msg_info "Installing Livebook"
cat <<EOF >/etc/systemd/system/livebook.service
[Unit]
Description=Livebook
After=network.target
[Service]
Type=exec
User=livebook
Group=livebook
WorkingDirectory=/data
EnvironmentFile=-/opt/livebook/.env
ExecStart=/bin/bash -c 'source /opt/livebook/.env && cd /opt/livebook && livebook server'
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
chown -R livebook:livebook /opt/livebook /data
systemctl enable -q --now livebook
msg_ok "Installed Livebook"
motd_ssh
customize
msg_info "Cleaning Up"
$STD apt autoremove -y
$STD apt autoclean -y
$STD apt clean -y
msg_ok "Cleaned Up"

View File

@@ -1,164 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/dedicatedcode/reitti
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt install -y \
redis-server \
rabbitmq-server \
libpq-dev \
zstd
msg_ok "Installed Dependencies"
JAVA_VERSION="24" setup_java
PG_VERSION="17" PG_MODULES="postgis" setup_postgresql
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"
RABBIT_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)"
RABBIT_VHOST="/"
$STD rabbitmqctl add_user "$RABBIT_USER" "$RABBIT_PASS"
$STD rabbitmqctl add_vhost "$RABBIT_VHOST"
$STD rabbitmqctl set_permissions -p "$RABBIT_VHOST" "$RABBIT_USER" ".*" ".*" ".*"
$STD rabbitmqctl set_user_tags "$RABBIT_USER" administrator
{
echo ""
echo "Reitti Credentials"
echo "RabbitMQ User: $RABBIT_USER"
echo "RabbitMQ Password: $RABBIT_PASS"
} >>~/reitti.creds
msg_ok "Configured RabbitMQ"
USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "reitti" "dedicatedcode/reitti" "singlefile" "latest" "/opt/reitti" "reitti-app.jar"
mv /opt/reitti/reitti-*.jar /opt/reitti/reitti.jar
USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "photon" "komoot/photon" "singlefile" "latest" "/opt/photon" "photon-0*.jar"
mv /opt/photon/photon-*.jar /opt/photon/photon.jar
msg_info "Creating Reitti Configuration-File"
cat <<EOF >/opt/reitti/application.properties
# Reitti Server Base URI
reitti.server.advertise-uri=http://127.0.0.1:8080
# PostgreSQL Database Connection
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
spring.flyway.enabled=true
spring.flyway.locations=classpath:db/migration
spring.flyway.baseline-on-migrate=true
# RabbitMQ (Message Queue)
spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=$RABBIT_USER
spring.rabbitmq.password=$RABBIT_PASS
# Redis (Cache)
spring.data.redis.host=127.0.0.1
spring.data.redis.port=6379
# Server Port
server.port=8080
# Optional: Logging & Performance
logging.level.root=INFO
spring.jpa.hibernate.ddl-auto=none
spring.datasource.hikari.maximum-pool-size=10
# OIDC / Security Settings
reitti.security.oidc.registration.enabled=false
# Photon (Geocoding)
PHOTON_BASE_URL=http://127.0.0.1:2322
PROCESSING_WAIT_TIME=15
PROCESSING_BATCH_SIZE=1000
PROCESSING_WORKERS_PER_QUEUE=4-16
# Disable potentially dangerous features unless needed
DANGEROUS_LIFE=false
EOF
msg_ok "Created Configuration-File for Reitti"
msg_info "Creating Services"
cat <<EOF >/etc/systemd/system/reitti.service
[Unit]
Description=Reitti
After=network.target postgresql.service redis-server.service rabbitmq-server.service photon.service
Wants=postgresql.service redis-server.service rabbitmq-server.service photon.service
[Service]
Type=simple
WorkingDirectory=/opt/reitti/
ExecStart=/usr/bin/java --enable-native-access=ALL-UNNAMED -jar -Xmx2g reitti.jar
TimeoutStopSec=20
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
cat <<'EOF' >/etc/systemd/system/photon.service
[Unit]
Description=Photon Geocoding Service (Germany, OpenSearch)
After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/photon
ExecStart=/usr/bin/java -Xmx4g -jar photon.jar \
-data-dir /opt/photon \
-listen-port 2322 \
-listen-ip 0.0.0.0 \
-cors-any
Restart=on-failure
TimeoutStopSec=20
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now photon
systemctl enable -q --now reitti
msg_ok "Created Services"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"

View File

@@ -905,7 +905,7 @@ check_for_gh_release() {
return 0
fi
msg_ok "Already up to date: ${app} (${current})"
msg_error "No update available: ${app} is not installed!"
return 1
fi

View File

@@ -497,8 +497,6 @@ if ! command -v virt-customize &>/dev/null; then
msg_info "Installing Pre-Requisite libguestfs-tools onto Host"
apt-get -qq update >/dev/null
apt-get -qq install libguestfs-tools lsb-release -y >/dev/null
# Workaround for Proxmox VE 9.0 libguestfs issue
apt-get -qq install dhcpcd-base -y >/dev/null 2>&1 || true
msg_ok "Installed libguestfs-tools successfully"
fi