mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-09-13 07:10:51 +02:00
Compare commits
16 Commits
2025-08-25
...
2025-08-26
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d25a12c87e | ||
|
|
e24315c50b | ||
|
|
753ed67b50 | ||
|
|
d6e498050f | ||
|
|
4a69a7b39f | ||
|
|
1dcde93b4a | ||
|
|
663c6570f4 | ||
|
|
6a17e25871 | ||
|
|
e609552cec | ||
|
|
bd4b781c9e | ||
|
|
7eb6715a1f | ||
|
|
aa0190978f | ||
|
|
e0f5e588e0 | ||
|
|
3949e2e049 | ||
|
|
ab4560b879 | ||
|
|
b8f854e7ad |
20
CHANGELOG.md
20
CHANGELOG.md
@@ -10,8 +10,28 @@
|
|||||||
> [!CAUTION]
|
> [!CAUTION]
|
||||||
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
|
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
|
||||||
|
|
||||||
|
## 2025-08-27
|
||||||
|
|
||||||
## 2025-08-26
|
## 2025-08-26
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- tracktor ([#7190](https://github.com/community-scripts/ProxmoxVE/pull/7190))
|
||||||
|
- PBS: Upgrade Script for v4 [@MickLesk](https://github.com/MickLesk) ([#7214](https://github.com/community-scripts/ProxmoxVE/pull/7214))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Refactor: Post-PBS-Script [@MickLesk](https://github.com/MickLesk) ([#7213](https://github.com/community-scripts/ProxmoxVE/pull/7213))
|
||||||
|
- Refactor: Post-PMG-Script [@MickLesk](https://github.com/MickLesk) ([#7212](https://github.com/community-scripts/ProxmoxVE/pull/7212))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- #### 📝 Script Information
|
||||||
|
|
||||||
|
- [website] Update documentation URLs [@tremor021](https://github.com/tremor021) ([#7201](https://github.com/community-scripts/ProxmoxVE/pull/7201))
|
||||||
|
|
||||||
## 2025-08-25
|
## 2025-08-25
|
||||||
|
|
||||||
### 🆕 New Scripts
|
### 🆕 New Scripts
|
||||||
|
|||||||
6
ct/headers/tracktor
Normal file
6
ct/headers/tracktor
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
__ __ __
|
||||||
|
/ /__________ ______/ /__/ /_____ _____
|
||||||
|
/ __/ ___/ __ `/ ___/ //_/ __/ __ \/ ___/
|
||||||
|
/ /_/ / / /_/ / /__/ ,< / /_/ /_/ / /
|
||||||
|
\__/_/ \__,_/\___/_/|_|\__/\____/_/
|
||||||
|
|
||||||
72
ct/tracktor.sh
Normal file
72
ct/tracktor.sh
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
#!/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: CrazyWolf13
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://tracktor.bytedge.in/
|
||||||
|
|
||||||
|
APP="tracktor"
|
||||||
|
var_tags="${var_tags:-car;monitoring}"
|
||||||
|
var_cpu="${var_cpu:-2}"
|
||||||
|
var_ram="${var_ram:-4096}"
|
||||||
|
var_disk="${var_disk:-6}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-12}"
|
||||||
|
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/tracktor ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/javedh-dev/tracktor/releases/latest | jq -r '.tag_name' | sed 's/^v//')
|
||||||
|
if [[ "${RELEASE}" != "$(cat ~/.tracktor 2>/dev/null)" ]] || [[ ! -f ~/.tracktor ]]; then
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop tracktor
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
msg_info "Creating Backup"
|
||||||
|
cp /opt/tracktor/app/backend/.env /opt/tracktor.env
|
||||||
|
msg_ok "Created Backup"
|
||||||
|
|
||||||
|
setup_nodejs
|
||||||
|
fetch_and_deploy_gh_release "tracktor" "javedh-dev/tracktor" "tarball" "latest" "/opt/tracktor"
|
||||||
|
|
||||||
|
msg_info "Updating ${APP}"
|
||||||
|
cd /opt/tracktor
|
||||||
|
$STD npm install
|
||||||
|
$STD npm run build
|
||||||
|
msg_ok "Updated $APP"
|
||||||
|
|
||||||
|
msg_info "Restoring Backup"
|
||||||
|
cp /opt/tracktor.env /opt/tracktor/app/backend/.env
|
||||||
|
msg_ok "Restored Backup"
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start tracktor
|
||||||
|
msg_ok "Started Service"
|
||||||
|
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "Already up to date"
|
||||||
|
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}:3000${CL}"
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 8080,
|
"interface_port": 8080,
|
||||||
"documentation": null,
|
"documentation": "https://guacamole.apache.org/doc/gug/",
|
||||||
"website": "https://guacamole.apache.org/",
|
"website": "https://guacamole.apache.org/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/apache-guacamole.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/apache-guacamole.webp",
|
||||||
"config_path": "/etc/guacamole/guacd.conf",
|
"config_path": "/etc/guacamole/guacd.conf",
|
||||||
|
|||||||
@@ -9,10 +9,10 @@
|
|||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 3142,
|
"interface_port": 3142,
|
||||||
"documentation": null,
|
"documentation": "https://www.unix-ag.uni-kl.de/~bloch/acng/html/index.html",
|
||||||
"website": "https://www.unix-ag.uni-kl.de/~bloch/acng/",
|
"website": "https://www.unix-ag.uni-kl.de/~bloch/acng/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/linux.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/linux.webp",
|
||||||
"config_path": "",
|
"config_path": "/etc/apt-cacher-ng/acng.conf",
|
||||||
"description": "Apt-Cacher-NG is a caching proxy. Specialized for package files from Linux distributors, primarily for Debian (and Debian based) distributions.",
|
"description": "Apt-Cacher-NG is a caching proxy. Specialized for package files from Linux distributors, primarily for Debian (and Debian based) distributions.",
|
||||||
"install_methods": [
|
"install_methods": [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -9,8 +9,8 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": null,
|
"interface_port": null,
|
||||||
"documentation": null,
|
"documentation": "https://wiki.archlinux.org/title/Main_page",
|
||||||
"website": null,
|
"website": "https://archlinux.org/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/arch-linux.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/arch-linux.webp",
|
||||||
"config_path": "",
|
"config_path": "",
|
||||||
"description": "Arch Linux is a highly customizable, independent Linux distribution that gives users complete control over their system. Known for its rolling release model, Arch Linux is always up-to-date with the latest software. It's favored by experienced users who appreciate its minimalist approach, demanding a hands-on installation and configuration process. This level of control and flexibility makes it a popular choice for those who want to tailor their Linux system to their exact needs.",
|
"description": "Arch Linux is a highly customizable, independent Linux distribution that gives users complete control over their system. Known for its rolling release model, Arch Linux is always up-to-date with the latest software. It's favored by experienced users who appreciate its minimalist approach, demanding a hands-on installation and configuration process. This level of control and flexibility makes it a popular choice for those who want to tailor their Linux system to their exact needs.",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 80,
|
"interface_port": 80,
|
||||||
"documentation": null,
|
"documentation": "https://sabre.io/dav/",
|
||||||
"website": "https://sabre.io/baikal/",
|
"website": "https://sabre.io/baikal/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/baikal.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/baikal.webp",
|
||||||
"config_path": "/opt/baikal/config/baikal.yaml",
|
"config_path": "/opt/baikal/config/baikal.yaml",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 4000,
|
"interface_port": 4000,
|
||||||
"documentation": null,
|
"documentation": "https://0xerr0r.github.io/blocky/latest/configuration/",
|
||||||
"website": "https://0xerr0r.github.io/blocky/",
|
"website": "https://0xerr0r.github.io/blocky/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/blocky.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/blocky.webp",
|
||||||
"config_path": "/opt/blocky/config.yml",
|
"config_path": "/opt/blocky/config.yml",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 80,
|
"interface_port": 80,
|
||||||
"documentation": null,
|
"documentation": "https://www.bookstackapp.com/docs/",
|
||||||
"website": "https://www.bookstackapp.com/",
|
"website": "https://www.bookstackapp.com/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/bookstack.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/bookstack.webp",
|
||||||
"config_path": "/opt/bookstack/.env",
|
"config_path": "/opt/bookstack/.env",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 80,
|
"interface_port": 80,
|
||||||
"documentation": null,
|
"documentation": "https://wiki.casaos.io/en/home",
|
||||||
"website": "https://www.casaos.io/",
|
"website": "https://www.casaos.io/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/casaos.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/casaos.webp",
|
||||||
"config_path": "",
|
"config_path": "",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 8082,
|
"interface_port": 8082,
|
||||||
"documentation": null,
|
"documentation": "https://athou.github.io/commafeed/documentation/",
|
||||||
"website": "https://www.commafeed.com/",
|
"website": "https://www.commafeed.com/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/commafeed.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/commafeed.webp",
|
||||||
"config_path": "",
|
"config_path": "",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": null,
|
"interface_port": null,
|
||||||
"documentation": null,
|
"documentation": "https://doc.crowdsec.net/",
|
||||||
"website": "https://crowdsec.net/",
|
"website": "https://crowdsec.net/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/crowdsec.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/crowdsec.webp",
|
||||||
"config_path": "",
|
"config_path": "",
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
{
|
{
|
||||||
|
|
||||||
"name": "Dashy",
|
"name": "Dashy",
|
||||||
"slug": "dashy",
|
"slug": "dashy",
|
||||||
"categories": [
|
"categories": [
|
||||||
@@ -10,7 +9,7 @@
|
|||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 4000,
|
"interface_port": 4000,
|
||||||
"documentation": null,
|
"documentation": "https://dashy.to/docs",
|
||||||
"website": "https://dashy.to/",
|
"website": "https://dashy.to/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/dashy.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/dashy.webp",
|
||||||
"config_path": "/opt/dashy/user-data/conf.yml",
|
"config_path": "/opt/dashy/user-data/conf.yml",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 3000,
|
"interface_port": 3000,
|
||||||
"documentation": null,
|
"documentation": "https://forgejo.org/docs/latest/",
|
||||||
"website": "https://forgejo.org/",
|
"website": "https://forgejo.org/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/forgejo.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/forgejo.webp",
|
||||||
"config_path": "/etc/forgejo/app.ini",
|
"config_path": "/etc/forgejo/app.ini",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": true,
|
"privileged": true,
|
||||||
"interface_port": 5000,
|
"interface_port": 5000,
|
||||||
"documentation": null,
|
"documentation": "https://docs.frigate.video/",
|
||||||
"website": "https://frigate.video/",
|
"website": "https://frigate.video/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/frigate.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/frigate.webp",
|
||||||
"config_path": "",
|
"config_path": "",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 3000,
|
"interface_port": 3000,
|
||||||
"documentation": null,
|
"documentation": "https://docs.gitea.com/",
|
||||||
"website": "https://gitea.com",
|
"website": "https://gitea.com",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/gitea.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/gitea.webp",
|
||||||
"config_path": "/etc/gitea/app.ini",
|
"config_path": "/etc/gitea/app.ini",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 8484,
|
"interface_port": 8484,
|
||||||
"documentation": null,
|
"documentation": "https://support.getgrist.com/self-managed/#the-essentials",
|
||||||
"website": "https://www.getgrist.com/",
|
"website": "https://www.getgrist.com/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/grist.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/grist.webp",
|
||||||
"config_path": "/opt/grist/.env",
|
"config_path": "/opt/grist/.env",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 7990,
|
"interface_port": 7990,
|
||||||
"documentation": null,
|
"documentation": "https://github.com/linuxserver/Heimdall/blob/2.x/readme.md",
|
||||||
"website": "https://heimdall.site/",
|
"website": "https://heimdall.site/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/heimdall.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/heimdall.webp",
|
||||||
"config_path": "/opt/Heimdall/.env",
|
"config_path": "/opt/Heimdall/.env",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 1080,
|
"interface_port": 1080,
|
||||||
"documentation": null,
|
"documentation": "https://github.com/heiher/hev-socks5-server/blob/main/README.md",
|
||||||
"website": "https://github.com/heiher/hev-socks5-server",
|
"website": "https://github.com/heiher/hev-socks5-server",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/hev.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/hev.webp",
|
||||||
"config_path": "/opt/hivemq/conf/config.xml",
|
"config_path": "/opt/hivemq/conf/config.xml",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 7575,
|
"interface_port": 7575,
|
||||||
"documentation": null,
|
"documentation": "https://homarr.dev/docs/getting-started/",
|
||||||
"website": "https://homarr.dev/",
|
"website": "https://homarr.dev/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/homarr.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/homarr.webp",
|
||||||
"config_path": "/opt/homarr/.env",
|
"config_path": "/opt/homarr/.env",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 8010,
|
"interface_port": 8010,
|
||||||
"documentation": null,
|
"documentation": "https://github.com/bastienwirtz/homer/blob/main/README.md#table-of-contents",
|
||||||
"website": "https://github.com/bastienwirtz/homer",
|
"website": "https://github.com/bastienwirtz/homer",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/homer.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/homer.webp",
|
||||||
"config_path": "/opt/homer/assets/config.yml",
|
"config_path": "/opt/homer/assets/config.yml",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 8086,
|
"interface_port": 8086,
|
||||||
"documentation": null,
|
"documentation": "https://docs.influxdata.com/",
|
||||||
"website": "https://www.influxdata.com/",
|
"website": "https://www.influxdata.com/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/influxdb.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/influxdb.webp",
|
||||||
"config_path": "",
|
"config_path": "",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 26000,
|
"interface_port": 26000,
|
||||||
"documentation": null,
|
"documentation": "https://www.iventoy.com/en/doc_news.html",
|
||||||
"website": "https://www.iventoy.com/",
|
"website": "https://www.iventoy.com/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/iventoy.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/iventoy.webp",
|
||||||
"config_path": "",
|
"config_path": "",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 5055,
|
"interface_port": 5055,
|
||||||
"documentation": null,
|
"documentation": "https://docs.jellyseerr.dev/",
|
||||||
"website": "https://github.com/Fallenbagel/jellyseerr",
|
"website": "https://github.com/Fallenbagel/jellyseerr",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/jellyseerr.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/jellyseerr.webp",
|
||||||
"config_path": "/etc/jellyseerr/jellyseerr.conf",
|
"config_path": "/etc/jellyseerr/jellyseerr.conf",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 3000,
|
"interface_port": 3000,
|
||||||
"documentation": null,
|
"documentation": "https://mafl.hywax.space/reference/configuration.html",
|
||||||
"website": "https://mafl.hywax.space/",
|
"website": "https://mafl.hywax.space/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/mafl.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/mafl.webp",
|
||||||
"config_path": "/opt/mafl/data/config.yml",
|
"config_path": "/opt/mafl/data/config.yml",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 8283,
|
"interface_port": 8283,
|
||||||
"documentation": null,
|
"documentation": "https://github.com/Luligu/matterbridge/blob/main/README.md",
|
||||||
"website": "https://github.com/Luligu/matterbridge",
|
"website": "https://github.com/Luligu/matterbridge",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/matterbridge.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/matterbridge.webp",
|
||||||
"config_path": "",
|
"config_path": "",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 8065,
|
"interface_port": 8065,
|
||||||
"documentation": null,
|
"documentation": "https://docs.mattermost.com/",
|
||||||
"website": "https://mattermost.com/",
|
"website": "https://mattermost.com/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/mattermost.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/mattermost.webp",
|
||||||
"config_path": "/opt/mattermost/config/config.json",
|
"config_path": "/opt/mattermost/config/config.json",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 8081,
|
"interface_port": 8081,
|
||||||
"documentation": null,
|
"documentation": "https://github.com/pymedusa/Medusa/wiki",
|
||||||
"website": "https://pymedusa.com/",
|
"website": "https://pymedusa.com/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/py-medusa.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/py-medusa.webp",
|
||||||
"config_path": "",
|
"config_path": "",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 8081,
|
"interface_port": 8081,
|
||||||
"documentation": null,
|
"documentation": "https://github.com/alexta69/metube/blob/master/README.md",
|
||||||
"website": "https://github.com/alexta69/metube",
|
"website": "https://github.com/alexta69/metube",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/metube.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/metube.webp",
|
||||||
"config_path": "/opt/metube/.env",
|
"config_path": "/opt/metube/.env",
|
||||||
|
|||||||
@@ -10,8 +10,8 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": null,
|
"interface_port": null,
|
||||||
"documentation": null,
|
"documentation": "https://help.mikrotik.com/docs/spaces/ROS/pages/18350234/Cloud+Hosted+Router+CHR",
|
||||||
"website": "https://help.mikrotik.com/docs/display/ROS/Cloud+Hosted+Router%2C+CHR",
|
"website": "https://mikrotik.com",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/mikrotik.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/mikrotik.webp",
|
||||||
"config_path": "",
|
"config_path": "",
|
||||||
"description": "Mikrotik RouterOS CHR is a Linux-based operating system that transforms a computer into a router. It provides a wide range of features for network routing, firewall, bandwidth management, wireless access point, backhaul link, hotspot gateway, VPN server, and many others. RouterOS is a versatile solution that supports various network configurations, including those with multiple WAN links, hotspots, and VPNs. It is highly customizable, allowing administrators to configure and manage their networks according to their specific requirements. With RouterOS, network administrators can monitor and control the performance and security of their networks, ensuring reliable and secure communication for their users. The software is designed to be easy to use and provides a wide range of tools for network management, making it a valuable solution for small and large networks alike.",
|
"description": "Mikrotik RouterOS CHR is a Linux-based operating system that transforms a computer into a router. It provides a wide range of features for network routing, firewall, bandwidth management, wireless access point, backhaul link, hotspot gateway, VPN server, and many others. RouterOS is a versatile solution that supports various network configurations, including those with multiple WAN links, hotspots, and VPNs. It is highly customizable, allowing administrators to configure and manage their networks according to their specific requirements. With RouterOS, network administrators can monitor and control the performance and security of their networks, ensuring reliable and secure communication for their users. The software is designed to be easy to use and provides a wide range of tools for network management, making it a valuable solution for small and large networks alike.",
|
||||||
|
|||||||
@@ -8,8 +8,8 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": null,
|
"interface_port": 27017,
|
||||||
"documentation": null,
|
"documentation": "https://www.mongodb.com/docs/manual/",
|
||||||
"website": "https://www.mongodb.com/",
|
"website": "https://www.mongodb.com/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/mongodb.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/mongodb.webp",
|
||||||
"config_path": "",
|
"config_path": "",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 80,
|
"interface_port": 80,
|
||||||
"documentation": null,
|
"documentation": "https://docs.nextcloud.com/server/21/admin_manual/contents.html",
|
||||||
"website": "https://www.turnkeylinux.org/nextcloud",
|
"website": "https://www.turnkeylinux.org/nextcloud",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/nextcloud.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/nextcloud.webp",
|
||||||
"config_path": "",
|
"config_path": "",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 81,
|
"interface_port": 81,
|
||||||
"documentation": null,
|
"documentation": "https://nginxproxymanager.com/guide/",
|
||||||
"website": "https://nginxproxymanager.com/",
|
"website": "https://nginxproxymanager.com/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/nginx-proxy-manager.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/nginx-proxy-manager.webp",
|
||||||
"config_path": "",
|
"config_path": "",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 5454,
|
"interface_port": 5454,
|
||||||
"documentation": null,
|
"documentation": "https://notifiarr.wiki/",
|
||||||
"website": "https://notifiarr.com/",
|
"website": "https://notifiarr.com/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/notifiarr.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/notifiarr.webp",
|
||||||
"config_path": "/etc/notifiarr/notifiarr.conf",
|
"config_path": "/etc/notifiarr/notifiarr.conf",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 80,
|
"interface_port": 80,
|
||||||
"documentation": null,
|
"documentation": "https://docs.ntfy.sh/",
|
||||||
"website": "https://ntfy.sh/",
|
"website": "https://ntfy.sh/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/ntfy.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/ntfy.webp",
|
||||||
"config_path": "/etc/ntfy/server.yml",
|
"config_path": "/etc/ntfy/server.yml",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 1337,
|
"interface_port": 1337,
|
||||||
"documentation": null,
|
"documentation": "https://docs.olivetin.app/",
|
||||||
"website": "https://www.olivetin.app/",
|
"website": "https://www.olivetin.app/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/olivetin.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/olivetin.webp",
|
||||||
"config_path": "/etc/OliveTin/config.yaml",
|
"config_path": "/etc/OliveTin/config.yaml",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 80,
|
"interface_port": 80,
|
||||||
"documentation": null,
|
"documentation": "https://docs.openmediavault.org/en/stable/",
|
||||||
"website": "https://www.openmediavault.org/",
|
"website": "https://www.openmediavault.org/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/openmediavault.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/openmediavault.webp",
|
||||||
"config_path": "",
|
"config_path": "",
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": null,
|
"interface_port": null,
|
||||||
"documentation": null,
|
"documentation": "https://openwrt.org/docs/start",
|
||||||
"website": "https://openwrt.org/",
|
"website": "https://openwrt.org/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/openwrt.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/openwrt.webp",
|
||||||
"config_path": "",
|
"config_path": "",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 80,
|
"interface_port": 80,
|
||||||
"documentation": null,
|
"documentation": "https://doc.owncloud.com/",
|
||||||
"website": "https://www.turnkeylinux.org/owncloud",
|
"website": "https://www.turnkeylinux.org/owncloud",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/owncloud.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/owncloud.webp",
|
||||||
"config_path": "",
|
"config_path": "",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 3000,
|
"interface_port": 3000,
|
||||||
"documentation": null,
|
"documentation": "https://github.com/clusterzx/paperless-ai/wiki/1.-Home",
|
||||||
"website": "https://github.com/clusterzx/paperless-ai",
|
"website": "https://github.com/clusterzx/paperless-ai",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/paperless-ai.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/paperless-ai.webp",
|
||||||
"config_path": "/opt/paperless-ai/data/.env",
|
"config_path": "/opt/paperless-ai/data/.env",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 8080,
|
"interface_port": 8080,
|
||||||
"documentation": null,
|
"documentation": "https://github.com/icereed/paperless-gpt/blob/main/README.md",
|
||||||
"website": "https://github.com/icereed/paperless-gpt",
|
"website": "https://github.com/icereed/paperless-gpt",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/paperless-ngx-light.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/paperless-ngx-light.webp",
|
||||||
"config_path": "/opt/paperless-gpt-data/.env",
|
"config_path": "/opt/paperless-gpt-data/.env",
|
||||||
|
|||||||
52
frontend/public/json/pbs4-upgrade.json
Normal file
52
frontend/public/json/pbs4-upgrade.json
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
{
|
||||||
|
"name": "PBS 4 Upgrade",
|
||||||
|
"slug": "pbs4-upgrade",
|
||||||
|
"categories": [
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"date_created": "2025-08-26",
|
||||||
|
"type": "pve",
|
||||||
|
"updateable": false,
|
||||||
|
"privileged": false,
|
||||||
|
"interface_port": null,
|
||||||
|
"documentation": "https://pbs.proxmox.com/wiki/Upgrade_from_3_to_4",
|
||||||
|
"website": "https://www.proxmox.com/en/proxmox-backup-server",
|
||||||
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/proxmox.webp",
|
||||||
|
"config_path": "",
|
||||||
|
"description": "This script guides you through upgrading Proxmox Backup Server from version 3.x (Debian 12 Bookworm) to version 4.0 (Debian 13 Trixie). It adjusts the Debian base sources, configures PBS 4 repositories in deb822 format, updates enterprise/no-subscription/test repos, runs a full system upgrade, and finalizes with a reboot.",
|
||||||
|
"install_methods": [
|
||||||
|
{
|
||||||
|
"type": "default",
|
||||||
|
"script": "tools/pve/pbs4-upgrade.sh",
|
||||||
|
"resources": {
|
||||||
|
"cpu": null,
|
||||||
|
"ram": null,
|
||||||
|
"hdd": null,
|
||||||
|
"os": null,
|
||||||
|
"version": null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"default_credentials": {
|
||||||
|
"username": null,
|
||||||
|
"password": null
|
||||||
|
},
|
||||||
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "Execute this script directly on the PBS 3.x host as root.",
|
||||||
|
"type": "info"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "Ensure you have a verified backup of /etc/proxmox-backup before starting.",
|
||||||
|
"type": "warning"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "Do not run this on an already upgraded PBS 4.x system.",
|
||||||
|
"type": "warning"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "A reboot is strongly recommended after upgrade to activate the new kernel and services.",
|
||||||
|
"type": "info"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 3000,
|
"interface_port": 3000,
|
||||||
"documentation": null,
|
"documentation": "https://github.com/Brandawg93/PeaNUT/blob/main/README.md",
|
||||||
"website": "https://github.com/Brandawg93/PeaNUT/",
|
"website": "https://github.com/Brandawg93/PeaNUT/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/peanut.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/peanut.webp",
|
||||||
"config_path": "/etc/peanut/settings.yml",
|
"config_path": "/etc/peanut/settings.yml",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 2342,
|
"interface_port": 2342,
|
||||||
"documentation": null,
|
"documentation": "https://docs.photoprism.app/",
|
||||||
"website": "https://photoprism.app/",
|
"website": "https://photoprism.app/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/photoprism.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/photoprism.webp",
|
||||||
"config_path": "/opt/photoprism/config/.env",
|
"config_path": "/opt/photoprism/config/.env",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": null,
|
"interface_port": null,
|
||||||
"documentation": null,
|
"documentation": "https://github.com/leiweibau/Pi.Alert/blob/main/README.md",
|
||||||
"website": "https://github.com/leiweibau/Pi.Alert/",
|
"website": "https://github.com/leiweibau/Pi.Alert/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/pi-alert.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/pi-alert.webp",
|
||||||
"config_path": "/opt/pialert/config/pialert.conf",
|
"config_path": "/opt/pialert/config/pialert.conf",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": null,
|
"interface_port": null,
|
||||||
"documentation": null,
|
"documentation": "https://podman.io/docs",
|
||||||
"website": "https://podman.io/",
|
"website": "https://podman.io/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/podman.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/podman.webp",
|
||||||
"config_path": "",
|
"config_path": "",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 5432,
|
"interface_port": 5432,
|
||||||
"documentation": null,
|
"documentation": "https://www.postgresql.org/docs/",
|
||||||
"website": "https://www.postgresql.org/",
|
"website": "https://www.postgresql.org/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/postgresql.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/postgresql.webp",
|
||||||
"config_path": "",
|
"config_path": "",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 9696,
|
"interface_port": 9696,
|
||||||
"documentation": null,
|
"documentation": "https://wiki.servarr.com/prowlarr",
|
||||||
"website": "https://github.com/Prowlarr/Prowlarr",
|
"website": "https://github.com/Prowlarr/Prowlarr",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/prowlarr.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/prowlarr.webp",
|
||||||
"config_path": "",
|
"config_path": "",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 7878,
|
"interface_port": 7878,
|
||||||
"documentation": null,
|
"documentation": "https://wiki.servarr.com/radarr",
|
||||||
"website": "https://radarr.video/",
|
"website": "https://radarr.video/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/radarr.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/radarr.webp",
|
||||||
"config_path": "",
|
"config_path": "",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 6500,
|
"interface_port": 6500,
|
||||||
"documentation": null,
|
"documentation": "https://github.com/rogerfar/rdt-client/blob/main/README.md",
|
||||||
"website": "https://github.com/rogerfar/rdt-client",
|
"website": "https://github.com/rogerfar/rdt-client",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/real-debrid.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/real-debrid.webp",
|
||||||
"config_path": "/opt/rdtc/appsettings.json",
|
"config_path": "/opt/rdtc/appsettings.json",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": null,
|
"interface_port": null,
|
||||||
"documentation": null,
|
"documentation": "https://recyclarr.dev/wiki/",
|
||||||
"website": "https://recyclarr.dev/",
|
"website": "https://recyclarr.dev/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/recyclarr.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/recyclarr.webp",
|
||||||
"config_path": "",
|
"config_path": "",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": null,
|
"interface_port": null,
|
||||||
"documentation": null,
|
"documentation": "https://redis.io/docs/latest/",
|
||||||
"website": "https://redis.io/",
|
"website": "https://redis.io/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/redis.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/redis.webp",
|
||||||
"config_path": "Debian /etc/redis/redis.conf | Alpine: /etc/redis.conf",
|
"config_path": "Debian /etc/redis/redis.conf | Alpine: /etc/redis.conf",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 80,
|
"interface_port": 80,
|
||||||
"documentation": null,
|
"documentation": "https://runtipi.io/docs/introduction",
|
||||||
"website": "https://runtipi.io/",
|
"website": "https://runtipi.io/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/runtipi.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/runtipi.webp",
|
||||||
"config_path": "opt/runtipi/state/settings.json",
|
"config_path": "opt/runtipi/state/settings.json",
|
||||||
|
|||||||
35
frontend/public/json/searxng.json
Normal file
35
frontend/public/json/searxng.json
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
"name": "SearXNG",
|
||||||
|
"slug": "searxng",
|
||||||
|
"categories": [
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"date_created": "2025-08-26",
|
||||||
|
"type": "ct",
|
||||||
|
"updateable": true,
|
||||||
|
"privileged": false,
|
||||||
|
"interface_port": 8888,
|
||||||
|
"documentation": "https://docs.searxng.org/",
|
||||||
|
"website": "https://github.com/searxng/searxng",
|
||||||
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/searxng.webp",
|
||||||
|
"config_path": "/etc/searxng/settings.yml",
|
||||||
|
"description": "SearXNG is a free internet metasearch engine which aggregates results from up to 215 search services. Users are neither tracked nor profiled. Additionally, SearXNG can be used over Tor for online anonymity.",
|
||||||
|
"install_methods": [
|
||||||
|
{
|
||||||
|
"type": "default",
|
||||||
|
"script": "ct/searxng.sh",
|
||||||
|
"resources": {
|
||||||
|
"cpu": 2,
|
||||||
|
"ram": 2048,
|
||||||
|
"hdd": 7,
|
||||||
|
"os": "debian",
|
||||||
|
"version": "12"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"default_credentials": {
|
||||||
|
"username": null,
|
||||||
|
"password": null
|
||||||
|
},
|
||||||
|
"notes": []
|
||||||
|
}
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 8080,
|
"interface_port": 8080,
|
||||||
"documentation": null,
|
"documentation": "https://docs.shinobi.video/",
|
||||||
"website": "https://shinobi.video/",
|
"website": "https://shinobi.video/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/shinobi.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/shinobi.webp",
|
||||||
"config_path": "/opt/Shinobi/conf.json",
|
"config_path": "/opt/Shinobi/conf.json",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": null,
|
"interface_port": null,
|
||||||
"documentation": null,
|
"documentation": "https://oss.oetiker.ch/smokeping/doc/index.en.html",
|
||||||
"website": "https://oss.oetiker.ch/smokeping/",
|
"website": "https://oss.oetiker.ch/smokeping/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/smokeping.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/smokeping.webp",
|
||||||
"config_path": "/etc/smokeping/config.d/Targets",
|
"config_path": "/etc/smokeping/config.d/Targets",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 8989,
|
"interface_port": 8989,
|
||||||
"documentation": null,
|
"documentation": "https://wiki.servarr.com/sonarr",
|
||||||
"website": "https://sonarr.tv/",
|
"website": "https://sonarr.tv/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/sonarr.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/sonarr.webp",
|
||||||
"config_path": "",
|
"config_path": "",
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 8080,
|
"interface_port": 8080,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://github.com/Stirling-Tools/Stirling-PDF",
|
"website": "https://docs.stirlingpdf.com/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/stirling-pdf.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/stirling-pdf.webp",
|
||||||
"config_path": "/opt/Stirling-PDF/.env",
|
"config_path": "/opt/Stirling-PDF/.env",
|
||||||
"description": "Stirling-PDF is a powerful locally hosted web based PDF manipulation tool that allows you to perform various operations on PDF files, such as splitting merging, converting, reorganizing, adding images, rotating, compressing, and more.",
|
"description": "Stirling-PDF is a powerful locally hosted web based PDF manipulation tool that allows you to perform various operations on PDF files, such as splitting merging, converting, reorganizing, adding images, rotating, compressing, and more.",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 8384,
|
"interface_port": 8384,
|
||||||
"documentation": null,
|
"documentation": "https://docs.syncthing.net/",
|
||||||
"website": "https://syncthing.net/",
|
"website": "https://syncthing.net/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/syncthing.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/syncthing.webp",
|
||||||
"config_path": "/root/.local/state/syncthing/config.xml - Alpine: /var/lib/syncthing/.local/state/syncthing/config.xml",
|
"config_path": "/root/.local/state/syncthing/config.xml - Alpine: /var/lib/syncthing/.local/state/syncthing/config.xml",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 8002,
|
"interface_port": 8002,
|
||||||
"documentation": null,
|
"documentation": "https://docs.tandoor.dev/",
|
||||||
"website": "https://tandoor.dev/",
|
"website": "https://tandoor.dev/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/tandoor-recipes.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/tandoor-recipes.webp",
|
||||||
"config_path": "/opt/tandoor/.env",
|
"config_path": "/opt/tandoor/.env",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 8181,
|
"interface_port": 8181,
|
||||||
"documentation": null,
|
"documentation": "https://github.com/Tautulli/Tautulli/wiki",
|
||||||
"website": "https://tautulli.com/",
|
"website": "https://tautulli.com/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/tautulli.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/tautulli.webp",
|
||||||
"config_path": "",
|
"config_path": "",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 8265,
|
"interface_port": 8265,
|
||||||
"documentation": null,
|
"documentation": "https://docs.tdarr.io/docs/welcome/what",
|
||||||
"website": "https://tdarr.io/",
|
"website": "https://tdarr.io/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/tdarr.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/tdarr.webp",
|
||||||
"config_path": "",
|
"config_path": "",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 34400,
|
"interface_port": 34400,
|
||||||
"documentation": null,
|
"documentation": "https://github.com/xteve-project/xTeVe-Documentation/blob/master/en/configuration.md",
|
||||||
"website": "https://github.com/Threadfin/Threadfin",
|
"website": "https://github.com/Threadfin/Threadfin",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/threadfin.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/threadfin.webp",
|
||||||
"config_path": "",
|
"config_path": "",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 12345,
|
"interface_port": 12345,
|
||||||
"documentation": null,
|
"documentation": "https://tianji.dev/docs/intro",
|
||||||
"website": "https://tianji.msgbyte.com/",
|
"website": "https://tianji.msgbyte.com/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/tianji.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/tianji.webp",
|
||||||
"config_path": "/opt/tianji/src/server/.env",
|
"config_path": "/opt/tianji/src/server/.env",
|
||||||
|
|||||||
40
frontend/public/json/tracktor.json
Normal file
40
frontend/public/json/tracktor.json
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
{
|
||||||
|
"name": "Tracktor",
|
||||||
|
"slug": "tracktor",
|
||||||
|
"categories": [
|
||||||
|
9
|
||||||
|
],
|
||||||
|
"date_created": "2025-08-26",
|
||||||
|
"type": "ct",
|
||||||
|
"updateable": true,
|
||||||
|
"privileged": false,
|
||||||
|
"interface_port": 3000,
|
||||||
|
"documentation": "https://tracktor.bytedge.in/introduction.html",
|
||||||
|
"config_path": "/opt/tracktor/app/server/.env",
|
||||||
|
"website": "https://tracktor.bytedge.in/",
|
||||||
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/tracktor.webp",
|
||||||
|
"description": "Tracktor is an open-source web application for comprehensive vehicle management.\nEasily track fuel consumption, maintenance, insurance, and regulatory documents for all your vehicles in one place.",
|
||||||
|
"install_methods": [
|
||||||
|
{
|
||||||
|
"type": "default",
|
||||||
|
"script": "ct/tracktor.sh",
|
||||||
|
"resources": {
|
||||||
|
"cpu": 1,
|
||||||
|
"ram": 1024,
|
||||||
|
"hdd": 6,
|
||||||
|
"os": "Debian",
|
||||||
|
"version": "12"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"default_credentials": {
|
||||||
|
"username": null,
|
||||||
|
"password": null
|
||||||
|
},
|
||||||
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "Please check and update the '/opt/tracktor/app/backend/.env' file if using behind reverse proxy.",
|
||||||
|
"type": "info"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 3002,
|
"interface_port": 3002,
|
||||||
"documentation": null,
|
"documentation": "https://github.com/chrisvel/tududi#-getting-started",
|
||||||
"config_path": "/opt/tududi/backend/.env",
|
"config_path": "/opt/tududi/backend/.env",
|
||||||
"website": "https://tududi.com/",
|
"website": "https://tududi.com/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/tududi.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/tududi.webp",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 5335,
|
"interface_port": 5335,
|
||||||
"documentation": null,
|
"documentation": "https://unbound.docs.nlnetlabs.nl/en/latest/",
|
||||||
"website": "https://www.nlnetlabs.nl/projects/unbound/about/",
|
"website": "https://www.nlnetlabs.nl/projects/unbound/about/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/unbound.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/unbound.webp",
|
||||||
"config_path": "/etc/unbound/unbound.conf.d/unbound.conf",
|
"config_path": "/etc/unbound/unbound.conf.d/unbound.conf",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": true,
|
"privileged": true,
|
||||||
"interface_port": 8888,
|
"interface_port": 8888,
|
||||||
"documentation": null,
|
"documentation": "https://docs.unmanic.app/docs/",
|
||||||
"website": "https://docs.unmanic.app/",
|
"website": "https://docs.unmanic.app/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/unmanic.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/unmanic.webp",
|
||||||
"config_path": "",
|
"config_path": "",
|
||||||
|
|||||||
@@ -1,9 +1,99 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"name": "Threadfin/Threadfin",
|
||||||
|
"version": "1.2.36",
|
||||||
|
"date": "2025-08-26T20:40:14Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "influxdata/influxdb",
|
||||||
|
"version": "v3.4.0",
|
||||||
|
"date": "2025-08-26T20:10:23Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "msgbyte/tianji",
|
||||||
|
"version": "v1.24.23",
|
||||||
|
"date": "2025-08-26T18:02:18Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "netbox-community/netbox",
|
||||||
|
"version": "v4.3.7",
|
||||||
|
"date": "2025-08-26T17:54:25Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "jenkinsci/jenkins",
|
||||||
|
"version": "jenkins-2.525",
|
||||||
|
"date": "2025-08-26T14:28:44Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "meilisearch/meilisearch",
|
||||||
|
"version": "latest",
|
||||||
|
"date": "2025-08-26T14:14:42Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "traefik/traefik",
|
||||||
|
"version": "v2.11.29",
|
||||||
|
"date": "2025-08-26T13:14:55Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "element-hq/synapse",
|
||||||
|
"version": "v1.137.0",
|
||||||
|
"date": "2025-08-26T09:51:47Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "MediaBrowser/Emby.Releases",
|
||||||
|
"version": "4.9.1.2",
|
||||||
|
"date": "2025-06-26T22:08:00Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "evcc-io/evcc",
|
||||||
|
"version": "0.207.5",
|
||||||
|
"date": "2025-08-26T06:57:07Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "morpheus65535/bazarr",
|
||||||
|
"version": "v1.5.3-beta.10",
|
||||||
|
"date": "2025-07-15T06:07:03Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Jackett/Jackett",
|
||||||
|
"version": "v0.22.2349",
|
||||||
|
"date": "2025-08-26T05:58:15Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "henrygd/beszel",
|
||||||
|
"version": "v0.12.4",
|
||||||
|
"date": "2025-08-26T01:45:02Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "documenso/documenso",
|
||||||
|
"version": "v1.12.2-rc.6",
|
||||||
|
"date": "2025-08-26T01:17:43Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "hyperion-project/hyperion.ng",
|
||||||
|
"version": "2.1.1",
|
||||||
|
"date": "2025-06-14T17:45:06Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "jeedom/core",
|
||||||
|
"version": "4.4.19",
|
||||||
|
"date": "2025-08-26T00:27:08Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "steveiliop56/tinyauth",
|
||||||
|
"version": "v3.6.2",
|
||||||
|
"date": "2025-07-17T12:08:03Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "coder/code-server",
|
"name": "coder/code-server",
|
||||||
"version": "v4.103.2",
|
"version": "v4.103.2",
|
||||||
"date": "2025-08-25T23:30:54Z"
|
"date": "2025-08-25T23:30:54Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "keycloak/keycloak",
|
||||||
|
"version": "26.3.3",
|
||||||
|
"date": "2025-08-20T10:12:51Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "advplyr/audiobookshelf",
|
"name": "advplyr/audiobookshelf",
|
||||||
"version": "v2.29.0",
|
"version": "v2.29.0",
|
||||||
@@ -54,6 +144,11 @@
|
|||||||
"version": "v2.3.0p36",
|
"version": "v2.3.0p36",
|
||||||
"date": "2025-08-25T15:32:14Z"
|
"date": "2025-08-25T15:32:14Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "wazuh/wazuh",
|
||||||
|
"version": "coverity-w35-4.13.0",
|
||||||
|
"date": "2025-08-25T15:17:33Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "n8n-io/n8n",
|
"name": "n8n-io/n8n",
|
||||||
"version": "n8n@1.107.4",
|
"version": "n8n@1.107.4",
|
||||||
@@ -79,26 +174,11 @@
|
|||||||
"version": "1.23.2",
|
"version": "1.23.2",
|
||||||
"date": "2025-08-25T09:39:42Z"
|
"date": "2025-08-25T09:39:42Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "meilisearch/meilisearch",
|
|
||||||
"version": "latest",
|
|
||||||
"date": "2025-08-25T09:14:19Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "emqx/emqx",
|
"name": "emqx/emqx",
|
||||||
"version": "e5.10.1-beta.2",
|
"version": "e5.10.1-beta.2",
|
||||||
"date": "2025-08-25T08:51:40Z"
|
"date": "2025-08-25T08:51:40Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "morpheus65535/bazarr",
|
|
||||||
"version": "v1.5.3-beta.10",
|
|
||||||
"date": "2025-07-15T06:07:03Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Jackett/Jackett",
|
|
||||||
"version": "v0.22.2343",
|
|
||||||
"date": "2025-08-25T05:50:39Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "firefly-iii/firefly-iii",
|
"name": "firefly-iii/firefly-iii",
|
||||||
"version": "v6.3.2",
|
"version": "v6.3.2",
|
||||||
@@ -114,31 +194,16 @@
|
|||||||
"version": "8.2.10",
|
"version": "8.2.10",
|
||||||
"date": "2025-08-25T01:26:55Z"
|
"date": "2025-08-25T01:26:55Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "jeedom/core",
|
|
||||||
"version": "4.4.19",
|
|
||||||
"date": "2025-08-25T00:27:05Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "gtsteffaniak/filebrowser",
|
"name": "gtsteffaniak/filebrowser",
|
||||||
"version": "v0.8.2-beta",
|
"version": "v0.8.2-beta",
|
||||||
"date": "2025-08-25T00:26:03Z"
|
"date": "2025-08-25T00:26:03Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "steveiliop56/tinyauth",
|
|
||||||
"version": "v3.6.2",
|
|
||||||
"date": "2025-07-17T12:08:03Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "crafty-controller/crafty-4",
|
"name": "crafty-controller/crafty-4",
|
||||||
"version": "v4.5.1",
|
"version": "v4.5.1",
|
||||||
"date": "2025-08-24T23:58:52Z"
|
"date": "2025-08-24T23:58:52Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "documenso/documenso",
|
|
||||||
"version": "v1.12.2-rc.5",
|
|
||||||
"date": "2025-08-24T23:48:04Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "Ombi-app/Ombi",
|
"name": "Ombi-app/Ombi",
|
||||||
"version": "v4.47.1",
|
"version": "v4.47.1",
|
||||||
@@ -156,8 +221,8 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "runtipi/runtipi",
|
"name": "runtipi/runtipi",
|
||||||
"version": "v4.3.0",
|
"version": "nightly",
|
||||||
"date": "2025-07-05T12:14:52Z"
|
"date": "2025-08-24T18:27:58Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "wavelog/wavelog",
|
"name": "wavelog/wavelog",
|
||||||
@@ -179,21 +244,11 @@
|
|||||||
"version": "fumadocs-openapi@9.2.3",
|
"version": "fumadocs-openapi@9.2.3",
|
||||||
"date": "2025-08-24T12:48:14Z"
|
"date": "2025-08-24T12:48:14Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "keycloak/keycloak",
|
|
||||||
"version": "26.3.3",
|
|
||||||
"date": "2025-08-20T10:12:51Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "Lidarr/Lidarr",
|
"name": "Lidarr/Lidarr",
|
||||||
"version": "v2.12.4.4658",
|
"version": "v2.12.4.4658",
|
||||||
"date": "2025-06-09T17:27:45Z"
|
"date": "2025-06-09T17:27:45Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "msgbyte/tianji",
|
|
||||||
"version": "v1.24.22",
|
|
||||||
"date": "2025-08-24T09:51:24Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "janeczku/calibre-web",
|
"name": "janeczku/calibre-web",
|
||||||
"version": "0.6.25",
|
"version": "0.6.25",
|
||||||
@@ -254,21 +309,11 @@
|
|||||||
"version": "version/2025.8.1",
|
"version": "version/2025.8.1",
|
||||||
"date": "2025-08-22T14:55:30Z"
|
"date": "2025-08-22T14:55:30Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "MediaBrowser/Emby.Releases",
|
|
||||||
"version": "4.9.1.2",
|
|
||||||
"date": "2025-06-26T22:08:00Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "open-webui/open-webui",
|
"name": "open-webui/open-webui",
|
||||||
"version": "v0.6.25",
|
"version": "v0.6.25",
|
||||||
"date": "2025-08-22T13:22:43Z"
|
"date": "2025-08-22T13:22:43Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "wazuh/wazuh",
|
|
||||||
"version": "v4.10.3",
|
|
||||||
"date": "2025-08-19T18:51:00Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "theonedev/onedev",
|
"name": "theonedev/onedev",
|
||||||
"version": "v12.0.7",
|
"version": "v12.0.7",
|
||||||
@@ -334,11 +379,6 @@
|
|||||||
"version": "v1.5.0",
|
"version": "v1.5.0",
|
||||||
"date": "2025-08-21T17:33:22Z"
|
"date": "2025-08-21T17:33:22Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "evcc-io/evcc",
|
|
||||||
"version": "0.207.4",
|
|
||||||
"date": "2025-08-21T17:20:43Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "kyantech/Palmr",
|
"name": "kyantech/Palmr",
|
||||||
"version": "v3.2.0-beta",
|
"version": "v3.2.0-beta",
|
||||||
@@ -364,11 +404,6 @@
|
|||||||
"version": "v2.16.18",
|
"version": "v2.16.18",
|
||||||
"date": "2025-08-21T08:19:58Z"
|
"date": "2025-08-21T08:19:58Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "jenkinsci/jenkins",
|
|
||||||
"version": "jenkins-2.516.2",
|
|
||||||
"date": "2025-08-20T17:15:26Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "AdguardTeam/AdGuardHome",
|
"name": "AdguardTeam/AdGuardHome",
|
||||||
"version": "v0.107.65",
|
"version": "v0.107.65",
|
||||||
@@ -409,11 +444,6 @@
|
|||||||
"version": "v6.13.2",
|
"version": "v6.13.2",
|
||||||
"date": "2025-08-19T18:18:40Z"
|
"date": "2025-08-19T18:18:40Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "Threadfin/Threadfin",
|
|
||||||
"version": "1.3.0",
|
|
||||||
"date": "2025-08-19T17:37:44Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "dgtlmoon/changedetection.io",
|
"name": "dgtlmoon/changedetection.io",
|
||||||
"version": "0.50.10",
|
"version": "0.50.10",
|
||||||
@@ -429,11 +459,6 @@
|
|||||||
"version": "preview-dns-cache-manager",
|
"version": "preview-dns-cache-manager",
|
||||||
"date": "2025-08-19T11:57:00Z"
|
"date": "2025-08-19T11:57:00Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "element-hq/synapse",
|
|
||||||
"version": "v1.136.0",
|
|
||||||
"date": "2025-08-12T14:26:27Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "chrisvel/tududi",
|
"name": "chrisvel/tududi",
|
||||||
"version": "v0.80",
|
"version": "v0.80",
|
||||||
@@ -529,11 +554,6 @@
|
|||||||
"version": "v0.9.90",
|
"version": "v0.9.90",
|
||||||
"date": "2025-08-15T19:14:52Z"
|
"date": "2025-08-15T19:14:52Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "netbox-community/netbox",
|
|
||||||
"version": "v4.3.6",
|
|
||||||
"date": "2025-08-12T17:16:42Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "intri-in/manage-my-damn-life-nextjs",
|
"name": "intri-in/manage-my-damn-life-nextjs",
|
||||||
"version": "v0.8.0-release",
|
"version": "v0.8.0-release",
|
||||||
@@ -689,11 +709,6 @@
|
|||||||
"version": "v11.1.0",
|
"version": "v11.1.0",
|
||||||
"date": "2025-08-07T14:57:29Z"
|
"date": "2025-08-07T14:57:29Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "influxdata/influxdb",
|
|
||||||
"version": "v1.12.2rc2",
|
|
||||||
"date": "2025-08-06T23:12:18Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "Athou/commafeed",
|
"name": "Athou/commafeed",
|
||||||
"version": "5.11.0",
|
"version": "5.11.0",
|
||||||
@@ -759,11 +774,6 @@
|
|||||||
"version": "10.1.44",
|
"version": "10.1.44",
|
||||||
"date": "2025-08-04T13:17:59Z"
|
"date": "2025-08-04T13:17:59Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "henrygd/beszel",
|
|
||||||
"version": "v0.12.3",
|
|
||||||
"date": "2025-08-04T02:21:16Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "benjaminjonard/koillection",
|
"name": "benjaminjonard/koillection",
|
||||||
"version": "1.6.18",
|
"version": "1.6.18",
|
||||||
@@ -829,11 +839,6 @@
|
|||||||
"version": "v2.1.1867",
|
"version": "v2.1.1867",
|
||||||
"date": "2025-07-31T18:08:43Z"
|
"date": "2025-07-31T18:08:43Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "hyperion-project/hyperion.ng",
|
|
||||||
"version": "2.1.1",
|
|
||||||
"date": "2025-06-14T17:45:06Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "leiweibau/Pi.Alert",
|
"name": "leiweibau/Pi.Alert",
|
||||||
"version": "v2025-07-30",
|
"version": "v2025-07-30",
|
||||||
@@ -904,11 +909,6 @@
|
|||||||
"version": "RELEASE.2025-07-23T15-54-02Z",
|
"version": "RELEASE.2025-07-23T15-54-02Z",
|
||||||
"date": "2025-07-23T20:35:39Z"
|
"date": "2025-07-23T20:35:39Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "traefik/traefik",
|
|
||||||
"version": "v3.5.0",
|
|
||||||
"date": "2025-07-23T14:06:54Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "TasmoAdmin/TasmoAdmin",
|
"name": "TasmoAdmin/TasmoAdmin",
|
||||||
"version": "v4.3.1",
|
"version": "v4.3.1",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 3456,
|
"interface_port": 3456,
|
||||||
"documentation": null,
|
"documentation": "https://vikunja.io/docs/",
|
||||||
"website": "https://vikunja.io/",
|
"website": "https://vikunja.io/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/vikunja.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/vikunja.webp",
|
||||||
"config_path": "/etc/vikunja/config.yml",
|
"config_path": "/etc/vikunja/config.yml",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 8088,
|
"interface_port": 8088,
|
||||||
"documentation": null,
|
"documentation": "https://github.com/matze/wastebin/blob/a297749b932ed9ff32569f3af7ee8e4a5b499834/README.md",
|
||||||
"website": "https://github.com/matze/wastebin",
|
"website": "https://github.com/matze/wastebin",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/wastebin.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/wastebin.webp",
|
||||||
"config_path": "/opt/wastebin-data/.env",
|
"config_path": "/opt/wastebin-data/.env",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 8840,
|
"interface_port": 8840,
|
||||||
"documentation": null,
|
"documentation": "https://github.com/aceberg/WatchYourLAN/blob/main/README.md",
|
||||||
"website": "https://github.com/aceberg/WatchYourLAN",
|
"website": "https://github.com/aceberg/WatchYourLAN",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/watchyourlan.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/watchyourlan.webp",
|
||||||
"config_path": "/data/config.yaml",
|
"config_path": "/data/config.yaml",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 10000,
|
"interface_port": 10000,
|
||||||
"documentation": null,
|
"documentation": "https://webmin.com/docs/",
|
||||||
"website": "https://webmin.com/",
|
"website": "https://webmin.com/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/webmin.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/webmin.webp",
|
||||||
"config_path": "",
|
"config_path": "",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 6969,
|
"interface_port": 6969,
|
||||||
"documentation": null,
|
"documentation": "https://wiki.servarr.com/en/whisparr",
|
||||||
"website": "https://github.com/Whisparr/Whisparr",
|
"website": "https://github.com/Whisparr/Whisparr",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/whisparr.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/whisparr.webp",
|
||||||
"config_path": "",
|
"config_path": "",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 80,
|
"interface_port": 80,
|
||||||
"documentation": null,
|
"documentation": "https://doc.yunohost.org/",
|
||||||
"website": "https://yunohost.org/",
|
"website": "https://yunohost.org/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/yunohost.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/yunohost.webp",
|
||||||
"config_path": "",
|
"config_path": "",
|
||||||
|
|||||||
61
install/tracktor-install.sh
Normal file
61
install/tracktor-install.sh
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2025 Community Scripts ORG
|
||||||
|
# Author: CrazyWolf13
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://tracktor.bytedge.in
|
||||||
|
|
||||||
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||||
|
color
|
||||||
|
verb_ip6
|
||||||
|
catch_errors
|
||||||
|
setting_up_container
|
||||||
|
network_check
|
||||||
|
update_os
|
||||||
|
|
||||||
|
setup_nodejs
|
||||||
|
fetch_and_deploy_gh_release "tracktor" "javedh-dev/tracktor" "tarball" "latest" "/opt/tracktor"
|
||||||
|
|
||||||
|
msg_info "Configuring Tracktor"
|
||||||
|
cd /opt/tracktor
|
||||||
|
$STD npm install
|
||||||
|
$STD npm run build
|
||||||
|
mkdir /opt/tracktor-data
|
||||||
|
HOST_IP=$(hostname -I | awk '{print $1}')
|
||||||
|
cat <<EOF >/opt/tracktor/app/backend/.env
|
||||||
|
NODE_ENV=production
|
||||||
|
PUBLIC_DEMO_MODE=false
|
||||||
|
DB_PATH=/opt/tracktor-data/tracktor.db
|
||||||
|
# Replace this URL if using behind reverse proxy for https traffic. Though it is optional and should work without changing
|
||||||
|
PUBLIC_API_BASE_URL=http://$HOST_IP:3000
|
||||||
|
# Here add the reverse proxy url as well to avoid cross errors from the app.
|
||||||
|
CORS_ORIGINS=http://$HOST_IP:3000
|
||||||
|
PORT=3000
|
||||||
|
EOF
|
||||||
|
msg_ok "Configured Tracktor"
|
||||||
|
|
||||||
|
msg_info "Creating service"
|
||||||
|
cat <<EOF >/etc/systemd/system/tracktor.service
|
||||||
|
[Unit]
|
||||||
|
Description=Tracktor Service
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
WorkingDirectory=/opt/tracktor
|
||||||
|
EnvironmentFile=/opt/tracktor/app/backend/.env
|
||||||
|
ExecStart=/usr/bin/npm start
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
systemctl enable -q --now tracktor
|
||||||
|
msg_ok "Created service"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
$STD apt-get -y autoremove
|
||||||
|
$STD apt-get -y autoclean
|
||||||
|
msg_ok "Cleaned"
|
||||||
183
tools/pve/pbs4-upgrade.sh
Normal file
183
tools/pve/pbs4-upgrade.sh
Normal file
@@ -0,0 +1,183 @@
|
|||||||
|
#!/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
|
||||||
|
|
||||||
|
header_info() {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
____ ____ _____ __ __ __ __ __
|
||||||
|
/ __ \/ __ ) ___// // / / / / /___ ____ __________ _____/ /__
|
||||||
|
/ /_/ / __ \__ \/ // /_ / / / / __ \/ __ `/ ___/ __ `/ __ / _ \
|
||||||
|
/ ____/ /_/ /__/ /__ __/ / /_/ / /_/ / /_/ / / / /_/ / /_/ / __/
|
||||||
|
/_/ /_____/____/ /_/ \____/ .___/\__, /_/ \__,_/\__,_/\___/
|
||||||
|
/_/ /____/
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
RD=$(echo "\033[01;31m")
|
||||||
|
YW=$(echo "\033[33m")
|
||||||
|
GN=$(echo "\033[1;92m")
|
||||||
|
CL=$(echo "\033[m")
|
||||||
|
BFR="\\r\\033[K"
|
||||||
|
HOLD="-"
|
||||||
|
CM="${GN}✓${CL}"
|
||||||
|
CROSS="${RD}✗${CL}"
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
shopt -s inherit_errexit nullglob
|
||||||
|
|
||||||
|
msg_info() { echo -ne " ${HOLD} ${YW}$1..."; }
|
||||||
|
msg_ok() { echo -e "${BFR} ${CM} ${GN}$1${CL}"; }
|
||||||
|
msg_error() { echo -e "${BFR} ${CROSS} ${RD}$1${CL}"; }
|
||||||
|
|
||||||
|
start_routines() {
|
||||||
|
header_info
|
||||||
|
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "PBS 3 BACKUP" --menu \
|
||||||
|
"\nMake a backup of /etc/proxmox-backup to ensure recovery in worst case?" 14 58 2 \
|
||||||
|
"yes" " " "no" " " 3>&2 2>&1 1>&3)
|
||||||
|
case $CHOICE in
|
||||||
|
yes)
|
||||||
|
msg_info "Backing up Proxmox Backup Server 3"
|
||||||
|
tar czf "pbs3-etc-backup-$(date -I).tar.gz" -C "/etc" "proxmox-backup"
|
||||||
|
msg_ok "Backed up Proxmox Backup Server 3"
|
||||||
|
;;
|
||||||
|
no) msg_error "Selected no to Backup" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# --- Debian 13 Sources ---
|
||||||
|
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "PBS 4 SOURCES" --menu \
|
||||||
|
"Switch to Debian 13 (Trixie) sources for PBS 4?" 14 58 2 "yes" " " "no" " " 3>&2 2>&1 1>&3)
|
||||||
|
case $CHOICE in
|
||||||
|
yes)
|
||||||
|
msg_info "Switching to Debian 13 (Trixie) Sources"
|
||||||
|
rm -f /etc/apt/sources.list.d/*.list
|
||||||
|
sed -i '/proxmox/d;/bookworm/d' /etc/apt/sources.list || true
|
||||||
|
cat >/etc/apt/sources.list.d/debian.sources <<EOF
|
||||||
|
Types: deb
|
||||||
|
URIs: http://deb.debian.org/debian
|
||||||
|
Suites: trixie
|
||||||
|
Components: main contrib
|
||||||
|
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
|
||||||
|
|
||||||
|
Types: deb
|
||||||
|
URIs: http://security.debian.org/debian-security
|
||||||
|
Suites: trixie-security
|
||||||
|
Components: main contrib
|
||||||
|
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
|
||||||
|
|
||||||
|
Types: deb
|
||||||
|
URIs: http://deb.debian.org/debian
|
||||||
|
Suites: trixie-updates
|
||||||
|
Components: main contrib
|
||||||
|
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
|
||||||
|
EOF
|
||||||
|
msg_ok "Configured Debian 13 (Trixie) Sources"
|
||||||
|
;;
|
||||||
|
no) msg_error "Selected no to Sources update" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# --- Enterprise Repo ---
|
||||||
|
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "PBS4-ENTERPRISE" --menu \
|
||||||
|
"Add 'pbs-enterprise' repository (for subscription users)?" 14 58 2 "yes" " " "no" " " \
|
||||||
|
3>&2 2>&1 1>&3)
|
||||||
|
case $CHOICE in
|
||||||
|
yes)
|
||||||
|
msg_info "Adding 'pbs-enterprise' repository"
|
||||||
|
cat >/etc/apt/sources.list.d/pbs-enterprise.sources <<EOF
|
||||||
|
Types: deb
|
||||||
|
URIs: https://enterprise.proxmox.com/debian/pbs
|
||||||
|
Suites: trixie
|
||||||
|
Components: pbs-enterprise
|
||||||
|
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
|
||||||
|
EOF
|
||||||
|
msg_ok "Added 'pbs-enterprise' repository"
|
||||||
|
;;
|
||||||
|
no) msg_error "Skipped enterprise repo" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# --- No-Subscription Repo ---
|
||||||
|
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "PBS4-NO-SUBSCRIPTION" --menu \
|
||||||
|
"Enable 'pbs-no-subscription' repository?" 14 58 2 "yes" " " "no" " " \
|
||||||
|
3>&2 2>&1 1>&3)
|
||||||
|
case $CHOICE in
|
||||||
|
yes)
|
||||||
|
msg_info "Adding 'pbs-no-subscription' repository"
|
||||||
|
cat >/etc/apt/sources.list.d/proxmox.sources <<EOF
|
||||||
|
Types: deb
|
||||||
|
URIs: http://download.proxmox.com/debian/pbs
|
||||||
|
Suites: trixie
|
||||||
|
Components: pbs-no-subscription
|
||||||
|
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
|
||||||
|
EOF
|
||||||
|
msg_ok "Added 'pbs-no-subscription' repository"
|
||||||
|
;;
|
||||||
|
no) msg_error "Skipped no-subscription repo" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# --- Test Repo ---
|
||||||
|
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "PBS4 TEST" --menu \
|
||||||
|
"Add 'pbs-test' repository (disabled by default)?" 14 58 2 "yes" " " "no" " " \
|
||||||
|
3>&2 2>&1 1>&3)
|
||||||
|
case $CHOICE in
|
||||||
|
yes)
|
||||||
|
msg_info "Adding 'pbs-test' repository (disabled)"
|
||||||
|
cat >/etc/apt/sources.list.d/pbs-test.sources <<EOF
|
||||||
|
# Types: deb
|
||||||
|
# URIs: http://download.proxmox.com/debian/pbs
|
||||||
|
# Suites: trixie
|
||||||
|
# Components: pbs-test
|
||||||
|
# Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
|
||||||
|
EOF
|
||||||
|
msg_ok "Added 'pbs-test' repository"
|
||||||
|
;;
|
||||||
|
no) msg_error "Skipped test repo" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# --- Upgrade ---
|
||||||
|
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "PBS 4 UPGRADE" --menu \
|
||||||
|
"\nUpgrade to Proxmox Backup Server 4 now?" 11 58 2 "yes" " " "no" " " \
|
||||||
|
3>&2 2>&1 1>&3)
|
||||||
|
case $CHOICE in
|
||||||
|
yes)
|
||||||
|
msg_info "Upgrading to Proxmox Backup Server 4 (Patience)"
|
||||||
|
apt update
|
||||||
|
DEBIAN_FRONTEND=noninteractive apt -o Dpkg::Options::="--force-confold" dist-upgrade -y
|
||||||
|
msg_ok "System upgraded to PBS 4"
|
||||||
|
;;
|
||||||
|
no) msg_error "Selected no to upgrade" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# --- Reboot ---
|
||||||
|
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "REBOOT" --menu \
|
||||||
|
"\nReboot Proxmox Backup Server 4 now? (recommended)" 11 58 2 "yes" " " "no" " " \
|
||||||
|
3>&2 2>&1 1>&3)
|
||||||
|
case $CHOICE in
|
||||||
|
yes)
|
||||||
|
msg_info "Rebooting PBS 4"
|
||||||
|
sleep 2
|
||||||
|
msg_ok "Upgrade Complete"
|
||||||
|
reboot
|
||||||
|
;;
|
||||||
|
no)
|
||||||
|
msg_error "Selected no to Reboot (Reboot recommended)"
|
||||||
|
msg_ok "Upgrade Complete"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
header_info
|
||||||
|
while true; do
|
||||||
|
read -rp "Start the Upgrade to Proxmox Backup Server 4 Script (y/n)? " yn
|
||||||
|
case $yn in
|
||||||
|
[Yy]*) break ;;
|
||||||
|
[Nn]*)
|
||||||
|
clear
|
||||||
|
exit
|
||||||
|
;;
|
||||||
|
*) echo "Please answer yes or no." ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
start_routines
|
||||||
@@ -1,9 +1,8 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# Copyright (c) 2021-2025 tteck
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
# Author: tteck (tteckster)
|
# Author: tteck (tteckster) | MickLesk (CanbiZ) | thost96
|
||||||
# License: MIT
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
|
|
||||||
header_info() {
|
header_info() {
|
||||||
clear
|
clear
|
||||||
@@ -29,143 +28,45 @@ CROSS="${RD}✗${CL}"
|
|||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
shopt -s inherit_errexit nullglob
|
shopt -s inherit_errexit nullglob
|
||||||
|
|
||||||
msg_info() {
|
msg_info() { echo -ne " ${HOLD} ${YW}$1..."; }
|
||||||
local msg="$1"
|
msg_ok() { echo -e "${BFR} ${CM} ${GN}$1${CL}"; }
|
||||||
echo -ne " ${HOLD} ${YW}${msg}..."
|
msg_error() { echo -e "${BFR} ${CROSS} ${RD}$1${CL}"; }
|
||||||
|
|
||||||
|
# ---- helpers ----
|
||||||
|
get_pbs_codename() {
|
||||||
|
awk -F'=' '/^VERSION_CODENAME=/{print $2}' /etc/os-release
|
||||||
}
|
}
|
||||||
|
|
||||||
msg_ok() {
|
repo_state_list() {
|
||||||
local msg="$1"
|
local repo="$1"
|
||||||
echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
|
local file=""
|
||||||
|
local state="missing"
|
||||||
|
for f in /etc/apt/sources.list /etc/apt/sources.list.d/*.list; do
|
||||||
|
[[ -f "$f" ]] || continue
|
||||||
|
if grep -q "$repo" "$f"; then
|
||||||
|
file="$f"
|
||||||
|
if grep -qE "^[^#].*${repo}" "$f"; then
|
||||||
|
state="active"
|
||||||
|
elif grep -qE "^#.*${repo}" "$f"; then
|
||||||
|
state="disabled"
|
||||||
|
fi
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
echo "$state $file"
|
||||||
}
|
}
|
||||||
|
|
||||||
msg_error() {
|
component_exists_in_sources() {
|
||||||
local msg="$1"
|
local component="$1"
|
||||||
echo -e "${BFR} ${CROSS} ${RD}${msg}${CL}"
|
grep -h -E "^[^#]*Components:[^#]*\b${component}\b" /etc/apt/sources.list.d/*.sources 2>/dev/null | grep -q .
|
||||||
}
|
|
||||||
|
|
||||||
start_routines() {
|
|
||||||
header_info
|
|
||||||
VERSION="$(awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release)"
|
|
||||||
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "PBS SOURCES" --menu "This will set the correct sources to update and install Proxmox Backup Server.\n \nChange to Proxmox Backup Server sources?" 14 58 2 \
|
|
||||||
"yes" " " \
|
|
||||||
"no" " " 3>&2 2>&1 1>&3)
|
|
||||||
case $CHOICE in
|
|
||||||
yes)
|
|
||||||
msg_info "Changing to Proxmox Backup Server Sources"
|
|
||||||
cat <<EOF >/etc/apt/sources.list
|
|
||||||
deb http://deb.debian.org/debian ${VERSION} main contrib
|
|
||||||
deb http://deb.debian.org/debian ${VERSION}-updates main contrib
|
|
||||||
deb http://security.debian.org/debian-security ${VERSION}-security main contrib
|
|
||||||
EOF
|
|
||||||
msg_ok "Changed to Proxmox Backup Server Sources"
|
|
||||||
;;
|
|
||||||
no)
|
|
||||||
msg_error "Selected no to Correcting Proxmox Backup Server Sources"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "PBS-ENTERPRISE" --menu "The 'pbs-enterprise' repository is only available to users who have purchased a Proxmox VE subscription.\n \nDisable 'pbs-enterprise' repository?" 14 58 2 \
|
|
||||||
"yes" " " \
|
|
||||||
"no" " " 3>&2 2>&1 1>&3)
|
|
||||||
case $CHOICE in
|
|
||||||
yes)
|
|
||||||
msg_info "Disabling 'pbs-enterprise' repository"
|
|
||||||
cat <<EOF >/etc/apt/sources.list.d/pbs-enterprise.list
|
|
||||||
# deb https://enterprise.proxmox.com/debian/pbs ${VERSION} pbs-enterprise
|
|
||||||
EOF
|
|
||||||
msg_ok "Disabled 'pbs-enterprise' repository"
|
|
||||||
;;
|
|
||||||
no)
|
|
||||||
msg_error "Selected no to Disabling 'pbs-enterprise' repository"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "PBS-NO-SUBSCRIPTION" --menu "The 'pbs-no-subscription' repository provides access to all of the open-source components of Proxmox Backup Server.\n \nEnable 'pbs-no-subscription' repository?" 14 58 2 \
|
|
||||||
"yes" " " \
|
|
||||||
"no" " " 3>&2 2>&1 1>&3)
|
|
||||||
case $CHOICE in
|
|
||||||
yes)
|
|
||||||
msg_info "Enabling 'pbs-no-subscription' repository"
|
|
||||||
cat <<EOF >/etc/apt/sources.list.d/pbs-install-repo.list
|
|
||||||
deb http://download.proxmox.com/debian/pbs ${VERSION} pbs-no-subscription
|
|
||||||
EOF
|
|
||||||
msg_ok "Enabled 'pbs-no-subscription' repository"
|
|
||||||
;;
|
|
||||||
no)
|
|
||||||
msg_error "Selected no to Enabling 'pbs-no-subscription' repository"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "PBS TEST" --menu "The 'pbstest' repository can give advanced users access to new features and updates before they are officially released.\n \nAdd (Disabled) 'pbstest' repository?" 14 58 2 \
|
|
||||||
"yes" " " \
|
|
||||||
"no" " " 3>&2 2>&1 1>&3)
|
|
||||||
case $CHOICE in
|
|
||||||
yes)
|
|
||||||
msg_info "Adding 'pbstest' repository and set disabled"
|
|
||||||
cat <<EOF >/etc/apt/sources.list.d/pbstest-for-beta.list
|
|
||||||
# deb http://download.proxmox.com/debian/pbs ${VERSION} pbstest
|
|
||||||
EOF
|
|
||||||
msg_ok "Added 'pbstest' repository"
|
|
||||||
;;
|
|
||||||
no)
|
|
||||||
msg_error "Selected no to Adding 'pbstest' repository"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUBSCRIPTION NAG" --menu "This will disable the nag message reminding you to purchase a subscription every time you log in to the web interface.\n \nDisable subscription nag?" 14 58 2 \
|
|
||||||
"yes" " " \
|
|
||||||
"no" " " 3>&2 2>&1 1>&3)
|
|
||||||
case $CHOICE in
|
|
||||||
yes)
|
|
||||||
whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox --title "Support Subscriptions" "Supporting the software's development team is essential. Check their official website's Support Subscriptions for pricing. Without their dedicated work, we wouldn't have this exceptional software." 10 58
|
|
||||||
msg_info "Disabling subscription nag"
|
|
||||||
echo "DPkg::Post-Invoke { \"if [ -s /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js ] && ! grep -q -F 'NoMoreNagging' /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js; then echo 'Removing subscription nag from UI...'; sed -i '/data\.status/{s/\!//;s/active/NoMoreNagging/}' /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js; fi\" };" >/etc/apt/apt.conf.d/no-nag-script
|
|
||||||
msg_ok "Disabled subscription nag (Delete browser cache)"
|
|
||||||
;;
|
|
||||||
no)
|
|
||||||
whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox --title "Support Subscriptions" "Supporting the software's development team is essential. Check their official website's Support Subscriptions for pricing. Without their dedicated work, we wouldn't have this exceptional software." 10 58
|
|
||||||
msg_error "Selected no to Disabling subscription nag"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
apt --reinstall install proxmox-widget-toolkit &>/dev/null
|
|
||||||
|
|
||||||
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "UPDATE" --menu "\nUpdate Proxmox Backup Server now?" 11 58 2 \
|
|
||||||
"yes" " " \
|
|
||||||
"no" " " 3>&2 2>&1 1>&3)
|
|
||||||
case $CHOICE in
|
|
||||||
yes)
|
|
||||||
msg_info "Updating Proxmox Backup Server (Patience)"
|
|
||||||
apt-get update &>/dev/null
|
|
||||||
apt-get -y dist-upgrade &>/dev/null
|
|
||||||
msg_ok "Updated Proxmox Backup Server"
|
|
||||||
;;
|
|
||||||
no)
|
|
||||||
msg_error "Selected no to Updating Proxmox Backup Server"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "REBOOT" --menu "\nReboot Proxmox Backup Server now? (recommended)" 11 58 2 \
|
|
||||||
"yes" " " \
|
|
||||||
"no" " " 3>&2 2>&1 1>&3)
|
|
||||||
case $CHOICE in
|
|
||||||
yes)
|
|
||||||
msg_info "Rebooting Proxmox Backup Server"
|
|
||||||
sleep 2
|
|
||||||
msg_ok "Completed Post Install Routines"
|
|
||||||
reboot
|
|
||||||
;;
|
|
||||||
no)
|
|
||||||
msg_error "Selected no to Rebooting Proxmox Backup Server (Reboot recommended)"
|
|
||||||
msg_ok "Completed Post Install Routines"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# ---- main ----
|
||||||
|
main() {
|
||||||
header_info
|
header_info
|
||||||
echo -e "\nThis script will Perform Post Install Routines.\n"
|
echo -e "\nThis script will Perform Post Install Routines.\n"
|
||||||
while true; do
|
while true; do
|
||||||
read -p "Start the Proxmox Backup Server Post Install Script (y/n)?" yn
|
read -rp "Start the Proxmox Backup Server Post Install Script (y/n)? " yn
|
||||||
case $yn in
|
case $yn in
|
||||||
[Yy]*) break ;;
|
[Yy]*) break ;;
|
||||||
[Nn]*)
|
[Nn]*)
|
||||||
@@ -181,4 +82,222 @@ if command -v pveversion >/dev/null 2>&1; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
start_routines
|
local CODENAME
|
||||||
|
CODENAME="$(get_pbs_codename)"
|
||||||
|
|
||||||
|
case "$CODENAME" in
|
||||||
|
bookworm) start_routines_3 ;;
|
||||||
|
trixie) start_routines_4 ;;
|
||||||
|
*)
|
||||||
|
msg_error "Unsupported Debian codename: $CODENAME"
|
||||||
|
echo -e "Supported: bookworm (PBS 3.x) and trixie (PBS 4.x)"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
# ---- PBS 3.x (Bookworm) ----
|
||||||
|
start_routines_3() {
|
||||||
|
header_info
|
||||||
|
local VERSION="bookworm"
|
||||||
|
|
||||||
|
# --- Debian sources ---
|
||||||
|
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "PBS SOURCES" --menu \
|
||||||
|
"Correct Debian sources for Proxmox Backup Server 3.x?" 14 58 2 "yes" " " "no" " " 3>&2 2>&1 1>&3)
|
||||||
|
case $CHOICE in
|
||||||
|
yes)
|
||||||
|
msg_info "Correcting Debian Sources"
|
||||||
|
cat <<EOF >/etc/apt/sources.list
|
||||||
|
deb http://deb.debian.org/debian ${VERSION} main contrib
|
||||||
|
deb http://deb.debian.org/debian ${VERSION}-updates main contrib
|
||||||
|
deb http://security.debian.org/debian-security ${VERSION}-security main contrib
|
||||||
|
EOF
|
||||||
|
msg_ok "Corrected Debian Sources"
|
||||||
|
;;
|
||||||
|
no) msg_error "Selected no to Correcting Debian Sources" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# --- Enterprise repo ---
|
||||||
|
read -r state file <<<"$(repo_state_list pbs-enterprise)"
|
||||||
|
case $state in
|
||||||
|
active)
|
||||||
|
sed -i "s/^[^#].*pbs-enterprise/# &/" "$file"
|
||||||
|
msg_ok "Disabled 'pbs-enterprise' repository"
|
||||||
|
;;
|
||||||
|
disabled) msg_ok "'pbs-enterprise' already disabled" ;;
|
||||||
|
missing)
|
||||||
|
cat >/etc/apt/sources.list.d/pbs-enterprise.list <<EOF
|
||||||
|
# deb https://enterprise.proxmox.com/debian/pbs ${VERSION} pbs-enterprise
|
||||||
|
EOF
|
||||||
|
msg_ok "Added 'pbs-enterprise' repository (disabled)"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# --- No-subscription repo ---
|
||||||
|
read -r state file <<<"$(repo_state_list pbs-no-subscription)"
|
||||||
|
if [[ "$state" == "missing" ]]; then
|
||||||
|
cat >/etc/apt/sources.list.d/pbs-install-repo.list <<EOF
|
||||||
|
deb http://download.proxmox.com/debian/pbs ${VERSION} pbs-no-subscription
|
||||||
|
EOF
|
||||||
|
msg_ok "Enabled 'pbs-no-subscription' repository"
|
||||||
|
else
|
||||||
|
msg_ok "'pbs-no-subscription' repository already present"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# --- Test repo (legacy name pbstest) ---
|
||||||
|
read -r state file <<<"$(repo_state_list pbstest)"
|
||||||
|
if [[ "$state" == "missing" ]]; then
|
||||||
|
cat >/etc/apt/sources.list.d/pbstest-for-beta.list <<EOF
|
||||||
|
# deb http://download.proxmox.com/debian/pbs ${VERSION} pbstest
|
||||||
|
EOF
|
||||||
|
msg_ok "Added 'pbstest' repository (disabled)"
|
||||||
|
else
|
||||||
|
msg_ok "'pbstest' repository already exists"
|
||||||
|
fi
|
||||||
|
|
||||||
|
post_routines_common
|
||||||
|
}
|
||||||
|
|
||||||
|
# ---- PBS 4.x (Trixie, deb822) ----
|
||||||
|
start_routines_4() {
|
||||||
|
header_info
|
||||||
|
local VERSION="trixie"
|
||||||
|
|
||||||
|
# --- Debian sources (deb822) ---
|
||||||
|
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "PBS SOURCES" --menu \
|
||||||
|
"Correct Debian sources for Proxmox Backup Server 4.x (deb822)?" 14 58 2 "yes" " " "no" " " 3>&2 2>&1 1>&3)
|
||||||
|
case $CHOICE in
|
||||||
|
yes)
|
||||||
|
msg_info "Correcting Debian Sources (deb822)"
|
||||||
|
rm -f /etc/apt/sources.list.d/*.list
|
||||||
|
sed -i '/proxmox/d;/bookworm/d' /etc/apt/sources.list || true
|
||||||
|
cat >/etc/apt/sources.list.d/debian.sources <<EOF
|
||||||
|
Types: deb
|
||||||
|
URIs: http://deb.debian.org/debian
|
||||||
|
Suites: trixie
|
||||||
|
Components: main contrib
|
||||||
|
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
|
||||||
|
|
||||||
|
Types: deb
|
||||||
|
URIs: http://security.debian.org/debian-security
|
||||||
|
Suites: trixie-security
|
||||||
|
Components: main contrib
|
||||||
|
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
|
||||||
|
|
||||||
|
Types: deb
|
||||||
|
URIs: http://deb.debian.org/debian
|
||||||
|
Suites: trixie-updates
|
||||||
|
Components: main contrib
|
||||||
|
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
|
||||||
|
EOF
|
||||||
|
msg_ok "Corrected Debian Sources"
|
||||||
|
;;
|
||||||
|
no) msg_error "Selected no to Correcting Debian Sources" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# --- Enterprise repo ---
|
||||||
|
if ! component_exists_in_sources "pbs-enterprise"; then
|
||||||
|
cat >/etc/apt/sources.list.d/pbs-enterprise.sources <<EOF
|
||||||
|
Types: deb
|
||||||
|
URIs: https://enterprise.proxmox.com/debian/pbs
|
||||||
|
Suites: trixie
|
||||||
|
Components: pbs-enterprise
|
||||||
|
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
|
||||||
|
EOF
|
||||||
|
msg_ok "Added 'pbs-enterprise' repository"
|
||||||
|
else
|
||||||
|
msg_ok "'pbs-enterprise' repository already present"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# --- No-subscription repo ---
|
||||||
|
if ! component_exists_in_sources "pbs-no-subscription"; then
|
||||||
|
cat >/etc/apt/sources.list.d/proxmox.sources <<EOF
|
||||||
|
Types: deb
|
||||||
|
URIs: http://download.proxmox.com/debian/pbs
|
||||||
|
Suites: trixie
|
||||||
|
Components: pbs-no-subscription
|
||||||
|
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
|
||||||
|
EOF
|
||||||
|
msg_ok "Added 'pbs-no-subscription' repository"
|
||||||
|
else
|
||||||
|
msg_ok "'pbs-no-subscription' repository already present"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# --- Test repo (pbs-test, renamed) ---
|
||||||
|
if ! component_exists_in_sources "pbs-test"; then
|
||||||
|
cat >/etc/apt/sources.list.d/pbs-test.sources <<EOF
|
||||||
|
# Types: deb
|
||||||
|
# URIs: http://download.proxmox.com/debian/pbs
|
||||||
|
# Suites: trixie
|
||||||
|
# Components: pbs-test
|
||||||
|
# Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
|
||||||
|
EOF
|
||||||
|
msg_ok "Added 'pbs-test' repository (disabled)"
|
||||||
|
else
|
||||||
|
msg_ok "'pbs-test' repository already present"
|
||||||
|
fi
|
||||||
|
|
||||||
|
post_routines_common
|
||||||
|
}
|
||||||
|
|
||||||
|
# ---- Shared routines ----
|
||||||
|
post_routines_common() {
|
||||||
|
# Subscription nag
|
||||||
|
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUBSCRIPTION NAG" --menu \
|
||||||
|
"Disable subscription nag in PBS UI?" 14 58 2 "yes" " " "no" " " 3>&2 2>&1 1>&3)
|
||||||
|
case $CHOICE in
|
||||||
|
yes)
|
||||||
|
whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox \
|
||||||
|
"Supporting the software's development team is essential.\nPlease consider buying a subscription." 10 58
|
||||||
|
msg_info "Disabling subscription nag"
|
||||||
|
echo "DPkg::Post-Invoke { \"if [ -s /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js ] && ! grep -q -F 'NoMoreNagging' /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js; then sed -i '/data\\.status/{s/\\!//;s/active/NoMoreNagging/}' /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js; fi\" };" >/etc/apt/apt.conf.d/no-nag-script
|
||||||
|
msg_ok "Disabled subscription nag (clear browser cache!)"
|
||||||
|
;;
|
||||||
|
no)
|
||||||
|
msg_error "Selected no to Disabling subscription nag"
|
||||||
|
rm -f /etc/apt/apt.conf.d/no-nag-script 2>/dev/null
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
apt --reinstall install proxmox-widget-toolkit &>/dev/null || msg_error "Widget toolkit reinstall failed"
|
||||||
|
|
||||||
|
# Update
|
||||||
|
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "UPDATE" --menu \
|
||||||
|
"Update Proxmox Backup Server now?" 11 58 2 "yes" " " "no" " " 3>&2 2>&1 1>&3)
|
||||||
|
case $CHOICE in
|
||||||
|
yes)
|
||||||
|
msg_info "Updating Proxmox Backup Server (Patience)"
|
||||||
|
apt update &>/dev/null || msg_error "apt update failed"
|
||||||
|
apt -y dist-upgrade &>/dev/null || msg_error "apt dist-upgrade failed"
|
||||||
|
msg_ok "Updated Proxmox Backup Server"
|
||||||
|
;;
|
||||||
|
no) msg_error "Selected no to updating Proxmox Backup Server" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Reminder
|
||||||
|
whiptail --backtitle "Proxmox VE Helper Scripts" --title "Post-Install Reminder" --msgbox \
|
||||||
|
"IMPORTANT:
|
||||||
|
|
||||||
|
Please run this script on every PBS node individually if you have multiple nodes.
|
||||||
|
|
||||||
|
After completing these steps, it is strongly recommended to REBOOT your node.
|
||||||
|
|
||||||
|
After the upgrade or post-install routines, always clear your browser cache or perform a hard reload (Ctrl+Shift+R) before using the PBS Web UI to avoid UI display issues." 20 80
|
||||||
|
|
||||||
|
# Reboot
|
||||||
|
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "REBOOT" --menu \
|
||||||
|
"Reboot Proxmox Backup Server now? (recommended)" 11 58 2 "yes" " " "no" " " 3>&2 2>&1 1>&3)
|
||||||
|
case $CHOICE in
|
||||||
|
yes)
|
||||||
|
msg_info "Rebooting PBS"
|
||||||
|
sleep 2
|
||||||
|
msg_ok "Completed Post Install Routines"
|
||||||
|
reboot
|
||||||
|
;;
|
||||||
|
no)
|
||||||
|
msg_error "Selected no to Reboot (Reboot recommended)"
|
||||||
|
msg_ok "Completed Post Install Routines"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
main
|
||||||
|
|||||||
@@ -43,113 +43,258 @@ msg_error() {
|
|||||||
echo -e "${BFR} ${CROSS} ${RD}${msg}${CL}"
|
echo -e "${BFR} ${CROSS} ${RD}${msg}${CL}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ! grep -q "Proxmox Mail Gateway" /etc/issue 2>/dev/null; then
|
||||||
|
msg_error "This script is only intended for Proxmox Mail Gateway"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
repo_state() {
|
||||||
|
# $1 = repo name (e.g. pmg-enterprise, pmg-no-subscription, pmgtest)
|
||||||
|
local repo="$1"
|
||||||
|
local file=""
|
||||||
|
local state="missing"
|
||||||
|
for f in /etc/apt/sources.list /etc/apt/sources.list.d/*.list; do
|
||||||
|
[[ -f "$f" ]] || continue
|
||||||
|
if grep -q "$repo" "$f"; then
|
||||||
|
file="$f"
|
||||||
|
if grep -qE "^[^#].*${repo}" "$f"; then
|
||||||
|
state="active"
|
||||||
|
elif grep -qE "^#.*${repo}" "$f"; then
|
||||||
|
state="disabled"
|
||||||
|
fi
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
echo "$state $file"
|
||||||
|
}
|
||||||
|
|
||||||
start_routines() {
|
start_routines() {
|
||||||
header_info
|
header_info
|
||||||
VERSION="$(awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release)"
|
VERSION="$(awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release)"
|
||||||
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "PMG SOURCES" --menu "This will set the correct sources to update and install Proxmox Mail Gateway.\n \nChange to Proxmox Mail Gateway sources?" 14 58 2 \
|
|
||||||
|
# ---- SOURCES ----
|
||||||
|
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "PMG SOURCES" --menu \
|
||||||
|
"This will set the correct Debian sources for Proxmox Mail Gateway.\n\nCorrect sources?" 14 58 2 \
|
||||||
"yes" " " \
|
"yes" " " \
|
||||||
"no" " " 3>&2 2>&1 1>&3)
|
"no" " " 3>&2 2>&1 1>&3)
|
||||||
case $CHOICE in
|
case $CHOICE in
|
||||||
yes)
|
yes)
|
||||||
msg_info "Changing to Proxmox Mail Gateway Sources"
|
msg_info "Correcting Debian Sources"
|
||||||
cat <<EOF >/etc/apt/sources.list
|
cat <<EOF >/etc/apt/sources.list
|
||||||
deb http://deb.debian.org/debian ${VERSION} main contrib
|
deb http://deb.debian.org/debian ${VERSION} main contrib
|
||||||
deb http://deb.debian.org/debian ${VERSION}-updates main contrib
|
deb http://deb.debian.org/debian ${VERSION}-updates main contrib
|
||||||
deb http://security.debian.org/debian-security ${VERSION}-security main contrib
|
deb http://security.debian.org/debian-security ${VERSION}-security main contrib
|
||||||
EOF
|
EOF
|
||||||
msg_ok "Changed to Proxmox Mail Gateway Sources"
|
msg_ok "Corrected Debian Sources"
|
||||||
;;
|
|
||||||
no)
|
|
||||||
msg_error "Selected no to Correcting Proxmox Mail Gateway Sources"
|
|
||||||
;;
|
;;
|
||||||
|
no) msg_error "Selected no to Correcting Debian Sources" ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "PMG-ENTERPRISE" --menu "The 'pmg-enterprise' repository is only available to users who have purchased a Proxmox Mail Gateway subscription.\n \nDisable 'pmg-enterprise' repository?" 14 58 2 \
|
# ---- PMG-ENTERPRISE ----
|
||||||
"yes" " " \
|
read -r state file <<<"$(repo_state pmg-enterprise)"
|
||||||
"no" " " 3>&2 2>&1 1>&3)
|
case $state in
|
||||||
|
active)
|
||||||
|
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "PMG-ENTERPRISE" \
|
||||||
|
--menu "'pmg-enterprise' repository is currently ENABLED.\n\nWhat do you want to do?" 14 58 3 \
|
||||||
|
"keep" "Keep as is" \
|
||||||
|
"disable" "Comment out (disable)" \
|
||||||
|
"delete" "Delete repo file" \
|
||||||
|
3>&2 2>&1 1>&3)
|
||||||
case $CHOICE in
|
case $CHOICE in
|
||||||
yes)
|
keep) msg_ok "Kept 'pmg-enterprise' repository" ;;
|
||||||
|
disable)
|
||||||
msg_info "Disabling 'pmg-enterprise' repository"
|
msg_info "Disabling 'pmg-enterprise' repository"
|
||||||
cat <<EOF >/etc/apt/sources.list.d/pmg-enterprise.list
|
sed -i "s/^[^#].*pmg-enterprise/# &/" "$file"
|
||||||
# deb https://enterprise.proxmox.com/debian/pmg ${VERSION} pmg-enterprise
|
|
||||||
EOF
|
|
||||||
msg_ok "Disabled 'pmg-enterprise' repository"
|
msg_ok "Disabled 'pmg-enterprise' repository"
|
||||||
;;
|
;;
|
||||||
no)
|
delete)
|
||||||
msg_error "Selected no to disabling 'pmg-enterprise' repository"
|
msg_info "Deleting 'pmg-enterprise' repository file"
|
||||||
|
rm -f "$file"
|
||||||
|
msg_ok "Deleted 'pmg-enterprise' repository file"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
disabled)
|
||||||
|
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "PMG-ENTERPRISE" \
|
||||||
|
--menu "'pmg-enterprise' repository is currently DISABLED.\n\nWhat do you want to do?" 14 58 3 \
|
||||||
|
"enable" "Uncomment (enable)" \
|
||||||
|
"keep" "Keep disabled" \
|
||||||
|
"delete" "Delete repo file" \
|
||||||
|
3>&2 2>&1 1>&3)
|
||||||
|
case $CHOICE in
|
||||||
|
enable)
|
||||||
|
msg_info "Enabling 'pmg-enterprise' repository"
|
||||||
|
sed -i "s/^#.*pmg-enterprise/deb/" "$file"
|
||||||
|
msg_ok "Enabled 'pmg-enterprise' repository"
|
||||||
|
;;
|
||||||
|
keep) msg_ok "Kept 'pmg-enterprise' repository disabled" ;;
|
||||||
|
delete)
|
||||||
|
msg_info "Deleting 'pmg-enterprise' repository file"
|
||||||
|
rm -f "$file"
|
||||||
|
msg_ok "Deleted 'pmg-enterprise' repository file"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
missing)
|
||||||
|
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "PMG-ENTERPRISE" \
|
||||||
|
--menu "Add 'pmg-enterprise' repository?\n\nOnly for subscription customers." 14 58 2 \
|
||||||
|
"no" " " \
|
||||||
|
"yes" " " \
|
||||||
|
--default-item "no" \
|
||||||
|
3>&2 2>&1 1>&3)
|
||||||
|
case $CHOICE in
|
||||||
|
yes)
|
||||||
|
msg_info "Adding 'pmg-enterprise' repository"
|
||||||
|
cat >/etc/apt/sources.list.d/pmg-enterprise.list <<EOF
|
||||||
|
deb https://enterprise.proxmox.com/debian/pmg ${VERSION} pmg-enterprise
|
||||||
|
EOF
|
||||||
|
msg_ok "Added 'pmg-enterprise' repository"
|
||||||
|
;;
|
||||||
|
no) msg_error "Selected no to Adding 'pmg-enterprise' repository" ;;
|
||||||
|
esac
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "PMG-NO-SUBSCRIPTION" --menu "The 'pmg-no-subscription' repository provides access to all of the open-source components of Proxmox Mail Gateway.\n \nEnable 'pmg-no-subscription' repository?" 14 58 2 \
|
# ---- PMG-NO-SUBSCRIPTION ----
|
||||||
"yes" " " \
|
read -r state file <<<"$(repo_state pmg-no-subscription)"
|
||||||
"no" " " 3>&2 2>&1 1>&3)
|
case $state in
|
||||||
|
active)
|
||||||
|
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "PMG-NO-SUBSCRIPTION" \
|
||||||
|
--menu "'pmg-no-subscription' repository is currently ENABLED.\n\nWhat do you want to do?" 14 58 3 \
|
||||||
|
"keep" "Keep as is" \
|
||||||
|
"disable" "Comment out (disable)" \
|
||||||
|
"delete" "Delete repo file" \
|
||||||
|
3>&2 2>&1 1>&3)
|
||||||
case $CHOICE in
|
case $CHOICE in
|
||||||
yes)
|
keep) msg_ok "Kept 'pmg-no-subscription' repository" ;;
|
||||||
|
disable)
|
||||||
|
msg_info "Disabling 'pmg-no-subscription' repository"
|
||||||
|
sed -i "s/^[^#].*pmg-no-subscription/# &/" "$file"
|
||||||
|
msg_ok "Disabled 'pmg-no-subscription' repository"
|
||||||
|
;;
|
||||||
|
delete)
|
||||||
|
msg_info "Deleting 'pmg-no-subscription' repository file"
|
||||||
|
rm -f "$file"
|
||||||
|
msg_ok "Deleted 'pmg-no-subscription' repository file"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
disabled)
|
||||||
|
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "PMG-NO-SUBSCRIPTION" \
|
||||||
|
--menu "'pmg-no-subscription' repository is currently DISABLED.\n\nWhat do you want to do?" 14 58 3 \
|
||||||
|
"enable" "Uncomment (enable)" \
|
||||||
|
"keep" "Keep disabled" \
|
||||||
|
"delete" "Delete repo file" \
|
||||||
|
3>&2 2>&1 1>&3)
|
||||||
|
case $CHOICE in
|
||||||
|
enable)
|
||||||
msg_info "Enabling 'pmg-no-subscription' repository"
|
msg_info "Enabling 'pmg-no-subscription' repository"
|
||||||
cat <<EOF >/etc/apt/sources.list.d/pmg-install-repo.list
|
sed -i "s/^#.*pmg-no-subscription/deb/" "$file"
|
||||||
deb http://download.proxmox.com/debian/pmg ${VERSION} pmg-no-subscription
|
|
||||||
EOF
|
|
||||||
msg_ok "Enabled 'pmg-no-subscription' repository"
|
msg_ok "Enabled 'pmg-no-subscription' repository"
|
||||||
;;
|
;;
|
||||||
no)
|
keep) msg_ok "Kept 'pmg-no-subscription' repository disabled" ;;
|
||||||
msg_error "Selected no to enabling 'pmg-no-subscription' repository"
|
delete)
|
||||||
|
msg_info "Deleting 'pmg-no-subscription' repository file"
|
||||||
|
rm -f "$file"
|
||||||
|
msg_ok "Deleted 'pmg-no-subscription' repository file"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
missing)
|
||||||
|
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "PMG-NO-SUBSCRIPTION" \
|
||||||
|
--menu "Add 'pmg-no-subscription' repository?" 14 58 2 \
|
||||||
|
"yes" " " \
|
||||||
|
"no" " " \
|
||||||
|
3>&2 2>&1 1>&3)
|
||||||
|
case $CHOICE in
|
||||||
|
yes)
|
||||||
|
msg_info "Adding 'pmg-no-subscription' repository"
|
||||||
|
cat >/etc/apt/sources.list.d/pmg-install-repo.list <<EOF
|
||||||
|
deb http://download.proxmox.com/debian/pmg ${VERSION} pmg-no-subscription
|
||||||
|
EOF
|
||||||
|
msg_ok "Added 'pmg-no-subscription' repository"
|
||||||
|
;;
|
||||||
|
no) msg_error "Selected no to Adding 'pmg-no-subscription' repository" ;;
|
||||||
|
esac
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "PMG TEST" --menu "The 'pmgtest' repository can give advanced users access to new features and updates before they are officially released.\n \nAdd (Disabled) 'pmgtest' repository?" 14 58 2 \
|
# ---- PMG-TEST ----
|
||||||
|
read -r state file <<<"$(repo_state pmgtest)"
|
||||||
|
case $state in
|
||||||
|
active) msg_ok "'pmgtest' repository already active (skipped)" ;;
|
||||||
|
disabled) msg_ok "'pmgtest' repository already disabled (skipped)" ;;
|
||||||
|
missing)
|
||||||
|
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "PMG TEST" \
|
||||||
|
--menu "The 'pmgtest' repository can give advanced users access to new features early.\n\nAdd (disabled) 'pmgtest' repository?" 14 58 2 \
|
||||||
"yes" " " \
|
"yes" " " \
|
||||||
"no" " " 3>&2 2>&1 1>&3)
|
"no" " " 3>&2 2>&1 1>&3)
|
||||||
case $CHOICE in
|
case $CHOICE in
|
||||||
yes)
|
yes)
|
||||||
msg_info "Adding 'pmgtest' repository and set disabled"
|
msg_info "Adding 'pmgtest' repository (disabled)"
|
||||||
cat <<EOF >/etc/apt/sources.list.d/pmgtest-for-beta.list
|
cat >/etc/apt/sources.list.d/pmgtest-for-beta.list <<EOF
|
||||||
# deb http://download.proxmox.com/debian/pmg ${VERSION} pmgtest
|
# deb http://download.proxmox.com/debian/pmg ${VERSION} pmgtest
|
||||||
EOF
|
EOF
|
||||||
msg_ok "Added 'pmgtest' repository"
|
msg_ok "Added 'pmgtest' repository"
|
||||||
;;
|
;;
|
||||||
no)
|
no) msg_error "Selected no to Adding 'pmgtest' repository" ;;
|
||||||
msg_error "Selected no to adding 'pmgtest' repository"
|
esac
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUBSCRIPTION NAG" --menu "This will disable the nag message reminding you to purchase a subscription every time you log in to the web interface.\n \nDisable subscription nag?" 14 58 2 \
|
# ---- SUBSCRIPTION NAG ----
|
||||||
"yes" " " \
|
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUBSCRIPTION NAG" --menu \
|
||||||
"no" " " 3>&2 2>&1 1>&3)
|
"Disable subscription nag in PMG UI?" 14 58 2 "yes" " " "no" " " 3>&2 2>&1 1>&3)
|
||||||
case $CHOICE in
|
case $CHOICE in
|
||||||
yes)
|
yes)
|
||||||
whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox --title "Support Subscriptions" "Supporting the software's development team is essential. Check their official website's Support Subscriptions for pricing. Without their dedicated work, we wouldn't have this exceptional software." 10 58
|
whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox --title "Support Subscriptions" \
|
||||||
|
"Supporting the software's development team is essential.\nPlease consider buying a subscription." 10 58
|
||||||
msg_info "Disabling subscription nag"
|
msg_info "Disabling subscription nag"
|
||||||
# Normal GUI (proxmox-widget-toolkit)
|
cat <<'EOF' >/etc/apt/apt.conf.d/no-nag-script
|
||||||
echo "DPkg::Post-Invoke { \"if [ -s /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js ] && ! grep -q -F 'NoMoreNagging' /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js; then echo 'Removing subscription nag from UI...'; sed -i '/data\.status/{s/\!//;s/active/NoMoreNagging/}' /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js; fi\" };" >/etc/apt/apt.conf.d/no-nag-script
|
DPkg::Post-Invoke {
|
||||||
# JS library used when accessing via mobile device browser
|
"if [ -s /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js ] && ! grep -q -F 'NoMoreNagging' /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js; then
|
||||||
echo "DPkg::Post-Invoke { \"if [ -s /usr/share/javascript/pmg-gui/js/pmgmanagerlib-mobile.js ] && ! grep -q -F 'NoMoreNagging' /usr/share/javascript/pmg-gui/js/pmgmanagerlib-mobile.js; then echo 'Removing subscription nag from mobile UI...'; sed -i '/data\.status/{s/\!//;s/active/NoMoreNagging/}' /usr/share/javascript/pmg-gui/js/pmgmanagerlib-mobile.js; fi\" };" >/etc/apt/apt.conf.d/no-nag-script-pmgmanagerlib-mobile
|
sed -i '/data\.status/{s/\\!//;s/active/NoMoreNagging/}' /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js;
|
||||||
msg_ok "Disabled subscription nag (Delete browser cache)"
|
fi";
|
||||||
|
"if [ -s /usr/share/javascript/pmg-gui/js/pmgmanagerlib-mobile.js ] && ! grep -q -F 'NoMoreNagging' /usr/share/javascript/pmg-gui/js/pmgmanagerlib-mobile.js; then
|
||||||
|
sed -i '/data\.status/{s/\\!//;s/active/NoMoreNagging/}' /usr/share/javascript/pmg-gui/js/pmgmanagerlib-mobile.js;
|
||||||
|
fi";
|
||||||
|
};
|
||||||
|
EOF
|
||||||
|
msg_ok "Disabled subscription nag (clear browser cache!)"
|
||||||
;;
|
;;
|
||||||
no)
|
no)
|
||||||
whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox --title "Support Subscriptions" "Supporting the software's development team is essential. Check their official website's Support Subscriptions for pricing. Without their dedicated work, we wouldn't have this exceptional software." 10 58
|
msg_error "Selected no to Disabling subscription nag"
|
||||||
msg_error "Selected no to disabling subscription nag"
|
rm -f /etc/apt/apt.conf.d/no-nag-script 2>/dev/null
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
apt --reinstall install proxmox-widget-toolkit pmg-gui &>/dev/null
|
apt --reinstall install proxmox-widget-toolkit pmg-gui &>/dev/null || msg_error "Widget toolkit reinstall failed"
|
||||||
|
|
||||||
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "UPDATE" --menu "\nUpdate Proxmox Mail Gateway now?" 11 58 2 \
|
# ---- UPDATE ----
|
||||||
"yes" " " \
|
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "UPDATE" --menu \
|
||||||
"no" " " 3>&2 2>&1 1>&3)
|
"Update Proxmox Mail Gateway now?" 11 58 2 "yes" " " "no" " " 3>&2 2>&1 1>&3)
|
||||||
case $CHOICE in
|
case $CHOICE in
|
||||||
yes)
|
yes)
|
||||||
msg_info "Updating Proxmox Mail Gateway (Patience)"
|
msg_info "Updating Proxmox Mail Gateway (Patience)"
|
||||||
apt-get update &>/dev/null
|
apt update &>/dev/null || msg_error "apt update failed"
|
||||||
apt-get -y dist-upgrade &>/dev/null
|
apt -y dist-upgrade &>/dev/null || msg_error "apt dist-upgrade failed"
|
||||||
msg_ok "Updated Proxmox Mail Gateway"
|
msg_ok "Updated Proxmox Mail Gateway"
|
||||||
;;
|
;;
|
||||||
no)
|
no) msg_error "Selected no to updating Proxmox Mail Gateway" ;;
|
||||||
msg_error "Selected no to updating Proxmox Mail Gateway"
|
|
||||||
;;
|
|
||||||
esac
|
esac
|
||||||
|
|
||||||
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "REBOOT" --menu "\nReboot Proxmox Mail Gateway now? (recommended)" 11 58 2 \
|
# ---- REMINDER ----
|
||||||
"yes" " " \
|
whiptail --backtitle "Proxmox VE Helper Scripts" --title "Post-Install Reminder" --msgbox \
|
||||||
"no" " " 3>&2 2>&1 1>&3)
|
"IMPORTANT:
|
||||||
|
|
||||||
|
Please run this script on every PMG node individually if you have multiple nodes.
|
||||||
|
|
||||||
|
After completing these steps, it is strongly recommended to REBOOT your node.
|
||||||
|
|
||||||
|
After the upgrade or post-install routines, always clear your browser cache or perform a hard reload (Ctrl+Shift+R) before using the PMG Web UI to avoid UI display issues." 20 80
|
||||||
|
|
||||||
|
# ---- REBOOT ----
|
||||||
|
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "REBOOT" --menu \
|
||||||
|
"Reboot Proxmox Mail Gateway now? (recommended)" 11 58 2 "yes" " " "no" " " 3>&2 2>&1 1>&3)
|
||||||
case $CHOICE in
|
case $CHOICE in
|
||||||
yes)
|
yes)
|
||||||
msg_info "Rebooting Proxmox Mail Gateway"
|
msg_info "Rebooting Proxmox Mail Gateway"
|
||||||
@@ -158,7 +303,7 @@ EOF
|
|||||||
reboot
|
reboot
|
||||||
;;
|
;;
|
||||||
no)
|
no)
|
||||||
msg_error "Selected no to reboot Proxmox Mail Gateway (Reboot recommended)"
|
msg_error "Selected no to reboot (Reboot recommended)"
|
||||||
msg_ok "Completed Post Install Routines"
|
msg_ok "Completed Post Install Routines"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@@ -167,7 +312,7 @@ EOF
|
|||||||
header_info
|
header_info
|
||||||
echo -e "\nThis script will Perform Post Install Routines.\n"
|
echo -e "\nThis script will Perform Post Install Routines.\n"
|
||||||
while true; do
|
while true; do
|
||||||
read -p "Start the Proxmox Mail Gateway Post Install Script (y/n)?" yn
|
read -rp "Start the Proxmox Mail Gateway Post Install Script (y/n)? " yn
|
||||||
case $yn in
|
case $yn in
|
||||||
[Yy]*) break ;;
|
[Yy]*) break ;;
|
||||||
[Nn]*)
|
[Nn]*)
|
||||||
|
|||||||
Reference in New Issue
Block a user