mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-07-27 00:07:38 +00:00
Compare commits
81 Commits
add-script
...
2025-07-25
Author | SHA1 | Date | |
---|---|---|---|
e176779d49 | |||
44cee5f303 | |||
22ccd36e55 | |||
c688887f43 | |||
6afa25b06b | |||
02ad46585e | |||
2c57cd815b | |||
72fc8a1880 | |||
72cf24fef4 | |||
a7a6a81596 | |||
470a2593a2 | |||
7efdc02bc4 | |||
c1ebb07416 | |||
9cf83f0ef4 | |||
57a299fe03 | |||
7272c8dd50 | |||
aa9373402e | |||
ff429ded15 | |||
5b6b55d37a | |||
e8e90ce5b5 | |||
1ae40a929b | |||
0484259f39 | |||
cadd0a53bd | |||
c82c185e4e | |||
89b2b21761 | |||
0a722a242f | |||
01be7acf10 | |||
2d66d09de2 | |||
67069cfb21 | |||
e78c590772 | |||
d956763642 | |||
af4aedf15a | |||
e25f3dce52 | |||
eda1b1aea8 | |||
16e2d2206c | |||
33a03f4b0e | |||
5867ef3288 | |||
8ef59b590a | |||
72d6fb40dc | |||
7e9d786202 | |||
ed934a21ff | |||
c9015cca20 | |||
b52e958623 | |||
1f51e96cb1 | |||
de1a93bf6d | |||
8bfb78e001 | |||
4fa4ed35cc | |||
4a050f3723 | |||
9304835775 | |||
a2fa104176 | |||
3c0888abdd | |||
d6af60f0c0 | |||
0a83090ad2 | |||
035419b4b9 | |||
d19130d8f1 | |||
b36f982fc2 | |||
d67fa6cf38 | |||
4201ab58ab | |||
0f3b95b3ff | |||
feea82e0ba | |||
0e0c954f0c | |||
6b74f6247f | |||
4159ba3970 | |||
a53daa3559 | |||
4b3233d6a8 | |||
ff51b1e5dc | |||
1aab127bdf | |||
baf7dff759 | |||
b4ec04a54f | |||
2ee8269684 | |||
84860a9893 | |||
ebb7da43c1 | |||
44c584dced | |||
2bede5256f | |||
2848cf6d6b | |||
bce076161e | |||
040a15aa3e | |||
5c0cffce6f | |||
d552fb86c1 | |||
42af89dd2d | |||
003fc3c080 |
81
.github/workflows/frontend-cicd.yml
generated
vendored
81
.github/workflows/frontend-cicd.yml
generated
vendored
@ -24,12 +24,87 @@ concurrency:
|
||||
cancel-in-progress: false
|
||||
|
||||
jobs:
|
||||
build:
|
||||
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||
test-json-files:
|
||||
runs-on: ubuntu-latest
|
||||
defaults:
|
||||
run:
|
||||
working-directory: frontend # Set default working directory for all run steps
|
||||
working-directory: frontend
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Python
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: "3.x"
|
||||
|
||||
- name: Test JSON files
|
||||
run: |
|
||||
python3 << 'EOF'
|
||||
import json
|
||||
import glob
|
||||
import os
|
||||
import sys
|
||||
|
||||
def test_json_files():
|
||||
# Change to the correct directory
|
||||
json_dir = "public/json"
|
||||
if not os.path.exists(json_dir):
|
||||
print(f"❌ Directory not found: {json_dir}")
|
||||
return False
|
||||
|
||||
# Find all JSON files
|
||||
pattern = os.path.join(json_dir, "*.json")
|
||||
json_files = glob.glob(pattern)
|
||||
|
||||
if not json_files:
|
||||
print(f"⚠️ No JSON files found in {json_dir}")
|
||||
return True
|
||||
|
||||
print(f"Testing {len(json_files)} JSON files for valid syntax...")
|
||||
|
||||
invalid_files = []
|
||||
|
||||
for file_path in json_files:
|
||||
try:
|
||||
with open(file_path, 'r', encoding='utf-8') as f:
|
||||
json.load(f)
|
||||
print(f"✅ Valid JSON: {file_path}")
|
||||
except json.JSONDecodeError as e:
|
||||
print(f"❌ Invalid JSON syntax in: {file_path}")
|
||||
print(f" Error: {e}")
|
||||
invalid_files.append(file_path)
|
||||
except Exception as e:
|
||||
print(f"⚠️ Error reading: {file_path}")
|
||||
print(f" Error: {e}")
|
||||
invalid_files.append(file_path)
|
||||
|
||||
print("\n=== JSON Validation Summary ===")
|
||||
print(f"Total files tested: {len(json_files)}")
|
||||
print(f"Valid files: {len(json_files) - len(invalid_files)}")
|
||||
print(f"Invalid files: {len(invalid_files)}")
|
||||
|
||||
if invalid_files:
|
||||
print("\n❌ Found invalid JSON file(s):")
|
||||
for file_path in invalid_files:
|
||||
print(f" - {file_path}")
|
||||
return False
|
||||
else:
|
||||
print("\n✅ All JSON files have valid syntax!")
|
||||
return True
|
||||
|
||||
if __name__ == "__main__":
|
||||
success = test_json_files()
|
||||
sys.exit(0 if success else 1)
|
||||
EOF
|
||||
|
||||
build:
|
||||
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||
needs: test-json-files
|
||||
runs-on: ubuntu-latest
|
||||
defaults:
|
||||
run:
|
||||
working-directory: frontend
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
77
CHANGELOG.md
77
CHANGELOG.md
@ -10,14 +10,89 @@
|
||||
> [!CAUTION]
|
||||
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
|
||||
|
||||
## 2025-07-22
|
||||
## 2025-07-26
|
||||
|
||||
## 2025-07-25
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Cleanuparr ([#6238](https://github.com/community-scripts/ProxmoxVE/pull/6238))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Immich: fix #6236 [@vhsdream](https://github.com/vhsdream) ([#6243](https://github.com/community-scripts/ProxmoxVE/pull/6243))
|
||||
- Wizarr: use absolute path to uv [@vhsdream](https://github.com/vhsdream) ([#6221](https://github.com/community-scripts/ProxmoxVE/pull/6221))
|
||||
- Immich v1.136.0 [@vhsdream](https://github.com/vhsdream) ([#6219](https://github.com/community-scripts/ProxmoxVE/pull/6219))
|
||||
|
||||
## 2025-07-24
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Alpine TeamSpeak Server [@tremor021](https://github.com/tremor021) ([#6201](https://github.com/community-scripts/ProxmoxVE/pull/6201))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Immich: Pin Version to v1.135.3 [@MickLesk](https://github.com/MickLesk) ([#6212](https://github.com/community-scripts/ProxmoxVE/pull/6212))
|
||||
- Habitica: force npm to 10 [@MickLesk](https://github.com/MickLesk) ([#6192](https://github.com/community-scripts/ProxmoxVE/pull/6192))
|
||||
- sabnzbd: add uv setup in update [@MickLesk](https://github.com/MickLesk) ([#6191](https://github.com/community-scripts/ProxmoxVE/pull/6191))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- SnipeIT - Update dependencies [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#6217](https://github.com/community-scripts/ProxmoxVE/pull/6217))
|
||||
- Refactor: VictoriaMetrics [@tremor021](https://github.com/tremor021) ([#6210](https://github.com/community-scripts/ProxmoxVE/pull/6210))
|
||||
- Headscale: Add headscale-admin UI as option [@tremor021](https://github.com/tremor021) ([#6205](https://github.com/community-scripts/ProxmoxVE/pull/6205))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Refactor: Gokapi [@tremor021](https://github.com/tremor021) ([#6197](https://github.com/community-scripts/ProxmoxVE/pull/6197))
|
||||
- Refactor: duplicati [@tremor021](https://github.com/tremor021) ([#6202](https://github.com/community-scripts/ProxmoxVE/pull/6202))
|
||||
- Refactor: go2rtc [@tremor021](https://github.com/tremor021) ([#6198](https://github.com/community-scripts/ProxmoxVE/pull/6198))
|
||||
- Refactor: Headscale [@tremor021](https://github.com/tremor021) ([#6180](https://github.com/community-scripts/ProxmoxVE/pull/6180))
|
||||
|
||||
## 2025-07-23
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- documenso: remove customerId by creating initial user [@MickLesk](https://github.com/MickLesk) ([#6171](https://github.com/community-scripts/ProxmoxVE/pull/6171))
|
||||
|
||||
## 2025-07-22
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Salt ([#6116](https://github.com/community-scripts/ProxmoxVE/pull/6116))
|
||||
- LinkStack ([#6137](https://github.com/community-scripts/ProxmoxVE/pull/6137))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- tools.func - fix typo for target_file [@tjcomserv](https://github.com/tjcomserv) ([#6156](https://github.com/community-scripts/ProxmoxVE/pull/6156))
|
||||
- fix(nginxproxymanager.sh): Set the version number before build. [@JMarcosHP](https://github.com/JMarcosHP) ([#6139](https://github.com/community-scripts/ProxmoxVE/pull/6139))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- Fixed the previous fix of the anti-nag hook and propagated fixes everywhere [@imcrazytwkr](https://github.com/imcrazytwkr) ([#6162](https://github.com/community-scripts/ProxmoxVE/pull/6162))
|
||||
- [core]: Improved LXC Container Startup Handling [@MickLesk](https://github.com/MickLesk) ([#6142](https://github.com/community-scripts/ProxmoxVE/pull/6142))
|
||||
- wallos: add cron in installer for yearly cost [@CrazyWolf13](https://github.com/CrazyWolf13) ([#6133](https://github.com/community-scripts/ProxmoxVE/pull/6133))
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- gitea-mirror: add: migration to 3.0 [@CrazyWolf13](https://github.com/CrazyWolf13) ([#6138](https://github.com/community-scripts/ProxmoxVE/pull/6138))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- [core]: tools.func: increase setup_php function [@MickLesk](https://github.com/MickLesk) ([#6141](https://github.com/community-scripts/ProxmoxVE/pull/6141))
|
||||
|
||||
### 🌐 Website
|
||||
|
||||
- Bump form-data from 4.0.3 to 4.0.4 in /frontend [@dependabot[bot]](https://github.com/dependabot[bot]) ([#6150](https://github.com/community-scripts/ProxmoxVE/pull/6150))
|
||||
|
||||
## 2025-07-21
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
58
ct/alpine-teamspeak-server.sh
Normal file
58
ct/alpine-teamspeak-server.sh
Normal file
@ -0,0 +1,58 @@
|
||||
#!/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: tremor021 (Slaviša Arežina)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://teamspeak.com/en/
|
||||
|
||||
APP="Alpine-TeamSpeak-Server"
|
||||
var_tags="${var_tags:-alpine;communication}"
|
||||
var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-256}"
|
||||
var_disk="${var_disk:-2}"
|
||||
var_os="${var_os:-alpine}"
|
||||
var_version="${var_version:-3.22}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
|
||||
if [[ ! -d /opt/teamspeak-server ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
set +o pipefail && RELEASE=$(curl -fsSL https://teamspeak.com/en/downloads/#server | sed -n 's/.teamspeak3-server_linux_amd64-([0-9]+.[0-9]+.[0-9]+)./\1/p' | head -1) && set -o pipefail
|
||||
|
||||
if [ "${RELEASE}" != "$(cat ~/.teamspeak-server)" ] || [ ! -f ~/.teamspeak-server ]; then
|
||||
msg_info "Updating ${APP} LXC"
|
||||
$STD apk -U upgrade
|
||||
$STD service teamspeak stop
|
||||
curl -fsSL "https://files.teamspeak-services.com/releases/server/${RELEASE}/teamspeak3-server_linux_amd64-${RELEASE}.tar.bz2" -o ts3server.tar.bz2
|
||||
tar -xf ./ts3server.tar.bz2
|
||||
cp -ru teamspeak3-server_linux_amd64/* /opt/teamspeak-server/
|
||||
rm -f ~/ts3server.tar.bz*
|
||||
rm -rf teamspeak3-server_linux_amd64
|
||||
echo "${RELEASE}" >~/.teamspeak-server
|
||||
$STD service teamspeak start
|
||||
msg_ok "Updated Successfully"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||
fi
|
||||
|
||||
exit 0
|
||||
}
|
||||
|
||||
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 IP:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}${IP}:9987${CL}"
|
56
ct/cleanuparr.sh
Executable file
56
ct/cleanuparr.sh
Executable file
@ -0,0 +1,56 @@
|
||||
#!/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: Lucas Zampieri (zampierilucas) | MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/Cleanuparr/Cleanuparr
|
||||
|
||||
APP="Cleanuparr"
|
||||
var_tags="${var_tags:-arr}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-1024}"
|
||||
var_disk="${var_disk:-4}"
|
||||
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 [[ ! -f /opt/cleanuparr/Cleanuparr ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Cleanuparr/Cleanuparr/releases/latest | jq -r '.tag_name' | sed 's/^v//')
|
||||
if [[ "${RELEASE}" != "$(cat ~/.Cleanuparr 2>/dev/null)" ]] || [[ ! -f ~/.Cleanuparr ]]; then
|
||||
msg_info "Stopping ${APP}"
|
||||
systemctl stop cleanuparr
|
||||
msg_ok "Stopped ${APP}"
|
||||
|
||||
fetch_and_deploy_gh_release "Cleanuparr" "Cleanuparr/Cleanuparr" "prebuild" "$RELEASE" "/opt/cleanuparr" "*linux-amd64.zip"
|
||||
|
||||
msg_info "Starting ${APP}"
|
||||
systemctl start cleanuparr
|
||||
msg_ok "Started ${APP}"
|
||||
msg_ok "Updated Successfully"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||
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}:11011${CL}"
|
@ -27,25 +27,19 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/duplicati/duplicati/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}')
|
||||
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
||||
if [[ "${RELEASE}" != "$(cat ~/.duplicati)" ]] || [[ ! -f ~/.duplicati ]]; then
|
||||
msg_info "Stopping $APP"
|
||||
systemctl stop duplicati
|
||||
msg_ok "Stopped $APP"
|
||||
msg_info "Updating $APP to v${RELEASE}"
|
||||
curl -fsSL "https://github.com/duplicati/duplicati/releases/download/v${RELEASE}/duplicati-${RELEASE}-linux-x64-gui.deb" -o $(basename "https://github.com/duplicati/duplicati/releases/download/v${RELEASE}/duplicati-${RELEASE}-linux-x64-gui.deb")
|
||||
$STD dpkg -i duplicati-${RELEASE}-linux-x64-gui.deb
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
msg_ok "Updated $APP to v${RELEASE}"
|
||||
|
||||
fetch_and_deploy_gh_release "duplicati" "duplicati/duplicati" "binary" "latest" "/opt/duplicati" "linux-x64-gui.deb"
|
||||
|
||||
msg_info "Starting $APP"
|
||||
systemctl start duplicati
|
||||
msg_ok "Started $APP"
|
||||
|
||||
msg_info "Cleaning Up"
|
||||
rm -rf ~/duplicati-${RELEASE}-linux-x64-gui.deb
|
||||
msg_ok "Cleanup Completed"
|
||||
|
||||
msg_ok "Update Successful"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||
|
@ -28,6 +28,26 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
APP_VERSION=$(grep -o '"version": *"[^"]*"' /opt/gitea-mirror/package.json | cut -d'"' -f4)
|
||||
if [[ $APP_VERSION =~ ^2\. ]]; then
|
||||
if ! whiptail --backtitle "Gitea Mirror Update" --title "⚠️ VERSION 2.x DETECTED" --yesno \
|
||||
"WARNING: Version $APP_VERSION detected!\n\nUpdating from version 2.x will CLEAR ALL CONFIGURATION.\n\nThis includes:\n• API tokens\n• User settings\n• Repository configurations\n• All custom settings\n\nDo you want to continue with the update process?" 15 70 --defaultno
|
||||
then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if ! whiptail --backtitle "Gitea Mirror Update" --title "⚠️ FINAL CONFIRMATION" --yesno \
|
||||
"FINAL WARNING: This update WILL clear all configuration!\n\nBEFORE PROCEEDING, please:\n\n• Copy API tokens to a safe location\n• Backup any custom configurations\n• Note down repository settings\n\nThis action CANNOT be undone!" 18 70 --defaultno
|
||||
then
|
||||
whiptail --backtitle "Gitea Mirror Update" --title "Update Cancelled" --msgbox "Update process cancelled. Please backup your configuration before proceeding." 8 60
|
||||
exit 0
|
||||
fi
|
||||
whiptail --backtitle "Gitea Mirror Update" --title "Proceeding with Update" --msgbox \
|
||||
"Proceeding with version $APP_VERSION update.\n\nAll configuration will be cleared as warned." 8 50
|
||||
rm -rf /opt/gitea-mirror
|
||||
fi
|
||||
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/RayLabsHQ/gitea-mirror/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
if [[ "${RELEASE}" != "$(cat ~/.${APP} 2>/dev/null || cat /opt/${APP}_version.txt 2>/dev/null)" ]]; then
|
||||
|
||||
|
25
ct/go2rtc.sh
25
ct/go2rtc.sh
@ -27,14 +27,23 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Updating $APP"
|
||||
systemctl stop go2rtc
|
||||
cd /opt/go2rtc
|
||||
rm go2rtc_linux_amd64
|
||||
curl -fsSL "https://github.com/AlexxIT/go2rtc/releases/latest/download/go2rtc_linux_amd64" -o $(basename "https://github.com/AlexxIT/go2rtc/releases/latest/download/go2rtc_linux_amd64")
|
||||
chmod +x go2rtc_linux_amd64
|
||||
systemctl start go2rtc
|
||||
msg_ok "Updated $APP"
|
||||
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/AlexxIT/go2rtc/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
if [[ "${RELEASE}" != "$(cat ~/.go2rtc 2>/dev/null)" ]] || [[ ! -f ~/.go2rtc ]]; then
|
||||
msg_info "Stopping service"
|
||||
systemctl stop go2rtc
|
||||
msg_ok "Stopped service"
|
||||
|
||||
fetch_and_deploy_gh_release "go2rtc" "AlexxIT/go2rtc" "singlefile" "latest" "/opt/go2rtc" "go2rtc_linux_amd64"
|
||||
|
||||
msg_info "Starting service"
|
||||
systemctl start go2rtc
|
||||
msg_ok "Started service"
|
||||
|
||||
msg_ok "Updated Successfully"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
|
25
ct/gokapi.sh
25
ct/gokapi.sh
@ -27,8 +27,27 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_error "Currently we don't provide an update function for this ${APP}."
|
||||
exit
|
||||
if [[ -f /opt/${APP}_version.txt ]]; then
|
||||
mv /opt/${APP}_version ~/.gokapi
|
||||
fi
|
||||
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Forceu/Gokapi/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
if [[ "${RELEASE}" != "$(cat ~/.gokapi 2>/dev/null)" ]] || [[ ! -f ~/.gokapi ]]; then
|
||||
msg_info "Stopping ${APP}"
|
||||
systemctl stop gokapi
|
||||
msg_ok "Stopped ${APP}"
|
||||
|
||||
fetch_and_deploy_gh_release "gokapi" "Forceu/Gokapi" "prebuild" "latest" "/opt/gokapi" "gokapi-linux_amd64.zip"
|
||||
|
||||
msg_info "Starting ${APP}"
|
||||
systemctl start gokapi
|
||||
msg_ok "Started ${APP}"
|
||||
|
||||
msg_ok "Updated Successfully"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
@ -38,4 +57,4 @@ 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}:53842/setup${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:53842/setup${CL}"
|
||||
|
6
ct/headers/alpine-teamspeak-server
Normal file
6
ct/headers/alpine-teamspeak-server
Normal file
@ -0,0 +1,6 @@
|
||||
___ __ _ ______ _____ __ _____
|
||||
/ | / /___ (_)___ ___ /_ __/__ ____ _____ ___ / ___/____ ___ ____ _/ /__ / ___/___ ______ _____ _____
|
||||
/ /| | / / __ \/ / __ \/ _ \______/ / / _ \/ __ `/ __ `__ \\__ \/ __ \/ _ \/ __ `/ //_/_____\__ \/ _ \/ ___/ | / / _ \/ ___/
|
||||
/ ___ |/ / /_/ / / / / / __/_____/ / / __/ /_/ / / / / / /__/ / /_/ / __/ /_/ / ,< /_____/__/ / __/ / | |/ / __/ /
|
||||
/_/ |_/_/ .___/_/_/ /_/\___/ /_/ \___/\__,_/_/ /_/ /_/____/ .___/\___/\__,_/_/|_| /____/\___/_/ |___/\___/_/
|
||||
/_/ /_/
|
6
ct/headers/cleanuparr
Normal file
6
ct/headers/cleanuparr
Normal file
@ -0,0 +1,6 @@
|
||||
________
|
||||
/ ____/ /__ ____ _____ __ ______ ____ ___________
|
||||
/ / / / _ \/ __ `/ __ \/ / / / __ \/ __ `/ ___/ ___/
|
||||
/ /___/ / __/ /_/ / / / / /_/ / /_/ / /_/ / / / /
|
||||
\____/_/\___/\__,_/_/ /_/\__,_/ .___/\__,_/_/ /_/
|
||||
/_/
|
6
ct/headers/linkstack
Normal file
6
ct/headers/linkstack
Normal file
@ -0,0 +1,6 @@
|
||||
__ _ __ _____ __ __
|
||||
/ / (_)___ / /__/ ___// /_____ ______/ /__
|
||||
/ / / / __ \/ //_/\__ \/ __/ __ `/ ___/ //_/
|
||||
/ /___/ / / / / ,< ___/ / /_/ /_/ / /__/ ,<
|
||||
/_____/_/_/ /_/_/|_|/____/\__/\__,_/\___/_/|_|
|
||||
|
6
ct/headers/salt
Normal file
6
ct/headers/salt
Normal file
@ -0,0 +1,6 @@
|
||||
_____ ____
|
||||
/ ___/____ _/ / /_
|
||||
\__ \/ __ `/ / __/
|
||||
___/ / /_/ / / /_
|
||||
/____/\__,_/_/\__/
|
||||
|
@ -27,18 +27,18 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
if [[ -f /opt/${APP}_version.txt ]]; then
|
||||
mv /opt/"${APP}_version.txt" ~/.headscale
|
||||
fi
|
||||
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/juanfont/headscale/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
||||
if [[ "${RELEASE}" != "$(cat ~/.headscale 2>/dev/null)" ]] || [[ ! -f ~/.headscale ]]; then
|
||||
msg_info "Stopping ${APP}"
|
||||
systemctl stop headscale
|
||||
msg_ok "Stopped ${APP}"
|
||||
|
||||
msg_info "Updating $APP to v${RELEASE}"
|
||||
curl -fsSL "https://github.com/juanfont/headscale/releases/download/v${RELEASE}/headscale_${RELEASE}_linux_amd64.deb" -o $(basename "https://github.com/juanfont/headscale/releases/download/v${RELEASE}/headscale_${RELEASE}_linux_amd64.deb")
|
||||
dpkg -i headscale_${RELEASE}_linux_amd64.deb
|
||||
rm headscale_${RELEASE}_linux_amd64.deb
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
msg_ok "Updated $APP to ${RELEASE}"
|
||||
fetch_and_deploy_gh_release "headscale" "juanfont/headscale" "binary"
|
||||
fetch_and_deploy_gh_release "headscale-admin" "GoodiesHQ/headscale-admin" "prebuild" "latest" "/opt/headscale-admin" "admin.zip"
|
||||
|
||||
msg_info "Starting ${APP}"
|
||||
# Temporary fix until headscale project resolves service getting disabled on updates.
|
||||
|
@ -58,7 +58,8 @@ function update_script() {
|
||||
done
|
||||
msg_ok "Image-processing libraries updated"
|
||||
fi
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/immich-app/immich/releases?per_page=1 | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
RELEASE="1.136.0"
|
||||
#RELEASE=$(curl -fsSL https://api.github.com/repos/immich-app/immich/releases?per_page=1 | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
if [[ -f ~/.immich && "$RELEASE" == "$(cat ~/.immich)" ]]; then
|
||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||
exit
|
||||
@ -102,7 +103,7 @@ function update_script() {
|
||||
mkdir -p "$ML_DIR"
|
||||
rm -rf "$SRC_DIR"
|
||||
|
||||
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "latest" "$SRC_DIR"
|
||||
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v1.136.0" "$SRC_DIR"
|
||||
|
||||
msg_info "Updating ${APP} web and microservices"
|
||||
cd "$SRC_DIR"/server
|
||||
@ -120,7 +121,7 @@ function update_script() {
|
||||
$STD npm ci
|
||||
$STD npm run build
|
||||
cd "$SRC_DIR"
|
||||
cp -a server/{node_modules,dist,bin,resources,package.json,package-lock.json,start*.sh} "$APP_DIR"/
|
||||
cp -a server/{node_modules,dist,bin,resources,package.json,package-lock.json,bin/start.sh} "$APP_DIR"/
|
||||
cp -a web/build "$APP_DIR"/www
|
||||
cp LICENSE "$APP_DIR"
|
||||
cd "$APP_DIR"
|
||||
|
43
ct/linkstack.sh
Normal file
43
ct/linkstack.sh
Normal file
@ -0,0 +1,43 @@
|
||||
#!/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: Omar Minaya | MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://linkstack.org/
|
||||
|
||||
APP="LinkStack"
|
||||
var_tags="${var_tags:-os}"
|
||||
var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-1024}"
|
||||
var_disk="${var_disk:-5}"
|
||||
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 [[ ! -f ~/.linkstack ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
PHP_VERSION="8.3" PHP_MODULE="sqlite3" PHP_APACHE="YES" setup_php
|
||||
msg_warn "LinkStack should be updated via the user interface."
|
||||
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}${CL}"
|
@ -46,6 +46,8 @@ function update_script() {
|
||||
|
||||
msg_info "Building Frontend"
|
||||
(
|
||||
sed -i "s|\"version\": \"0.0.0\"|\"version\": \"$RELEASE\"|" backend/package.json
|
||||
sed -i "s|\"version\": \"0.0.0\"|\"version\": \"$RELEASE\"|" frontend/package.json
|
||||
cd ./frontend || exit
|
||||
$STD pnpm install
|
||||
$STD pnpm upgrade
|
||||
@ -72,8 +74,6 @@ function update_script() {
|
||||
ln -sf /usr/bin/certbot /opt/certbot/bin/certbot
|
||||
ln -sf /usr/local/openresty/nginx/sbin/nginx /usr/sbin/nginx
|
||||
ln -sf /usr/local/openresty/nginx/ /etc/nginx
|
||||
sed -i "s|\"version\": \"0.0.0\"|\"version\": \"$RELEASE\"|" backend/package.json
|
||||
sed -i "s|\"version\": \"0.0.0\"|\"version\": \"$RELEASE\"|" frontend/package.json
|
||||
sed -i 's+^daemon+#daemon+g' docker/rootfs/etc/nginx/nginx.conf
|
||||
NGINX_CONFS=$(find "$(pwd)" -type f -name "*.conf")
|
||||
for NGINX_CONF in $NGINX_CONFS; do
|
||||
|
@ -34,6 +34,7 @@ function update_script() {
|
||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||
exit
|
||||
fi
|
||||
setup_uv
|
||||
msg_info "Updating $APP to ${RELEASE}"
|
||||
systemctl stop sabnzbd
|
||||
cp -r /opt/sabnzbd /opt/sabnzbd_backup_$(date +%s)
|
||||
|
50
ct/salt.sh
Normal file
50
ct/salt.sh
Normal file
@ -0,0 +1,50 @@
|
||||
#!/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: bvdberg01
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/saltstack/salt
|
||||
|
||||
APP="Salt"
|
||||
var_tags="${var_tags:-automations}"
|
||||
var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-1024}"
|
||||
var_disk="${var_disk:-3}"
|
||||
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 /etc/salt ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/saltstack/salt/releases/latest | jq -r .tag_name | sed 's/^v//')
|
||||
if [[ ! -f /~.salt ]] || [[ "${RELEASE}" != "$(cat /~.salt)" ]]; then
|
||||
msg_info "Updating $APP to ${RELEASE}"
|
||||
sed -i "s/^\(Pin: version \).*/\1${RELEASE}/" /etc/apt/preferences.d/salt-pin-1001
|
||||
$STD apt-get update
|
||||
$STD apt-get upgrade -y
|
||||
echo "${RELEASE}" >/~.salt
|
||||
msg_ok "Updated ${APP} to ${RELEASE}"
|
||||
else
|
||||
msg_ok "${APP} is already up to date (${RELEASE})"
|
||||
fi
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
@ -27,31 +27,25 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/VictoriaMetrics/VictoriaMetrics/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||
if [[ ! -f ~/.victoriametrics ]] || [[ "${RELEASE}" != "$(cat ~/.victoriametrics)" ]]; then
|
||||
msg_info "Stopping $APP"
|
||||
systemctl stop victoriametrics
|
||||
[[ -f /etc/systemd/system/victoriametrics-logs.service ]] && systemctl stop victoriametrics-logs
|
||||
msg_ok "Stopped $APP"
|
||||
|
||||
msg_info "Updating ${APP} to v${RELEASE}"
|
||||
temp_dir=$(mktemp -d)
|
||||
cd $temp_dir
|
||||
curl -fsSL "https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v${RELEASE}/victoria-metrics-linux-amd64-v${RELEASE}.tar.gz" -o $(basename "https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v${RELEASE}/victoria-metrics-linux-amd64-v${RELEASE}.tar.gz")
|
||||
curl -fsSL "https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v${RELEASE}/vmutils-linux-amd64-v${RELEASE}.tar.gz" -o $(basename "https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v${RELEASE}/vmutils-linux-amd64-v${RELEASE}.tar.gz")
|
||||
find /opt/victoriametrics -maxdepth 1 -type f -executable -delete
|
||||
tar -xf victoria-metrics-linux-amd64-v${RELEASE}.tar.gz -C /opt/victoriametrics
|
||||
tar -xf vmutils-linux-amd64-v${RELEASE}.tar.gz -C /opt/victoriametrics
|
||||
fetch_and_deploy_gh_release "victoriametrics" "VictoriaMetrics/VictoriaMetrics" "prebuild" "latest" "/opt/victoriametrics" "victoria-metrics-linux-amd64-v+([0-9.]).tar.gz"
|
||||
fetch_and_deploy_gh_release "vmutils" "VictoriaMetrics/VictoriaMetrics" "prebuild" "latest" "/opt/victoriametrics" "vmutils-linux-amd64-v+([0-9.]).tar.gz"
|
||||
fetch_and_deploy_gh_release "victorialogs" "VictoriaMetrics/VictoriaLogs" "prebuild" "latest" "/opt/victoriametrics" "victoria-logs-linux-amd64*.tar.gz"
|
||||
fetch_and_deploy_gh_release "vlutils" "VictoriaMetrics/VictoriaLogs" "prebuild" "latest" "/opt/victoriametrics" "vlutils-linux-amd64*.tar.gz"
|
||||
chmod +x /opt/victoriametrics/*
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
msg_ok "Updated $APP to v${RELEASE}"
|
||||
|
||||
msg_info "Starting $APP"
|
||||
systemctl start victoriametrics
|
||||
[[ -f /etc/systemd/system/victoriametrics-logs.service ]] && systemctl start victoriametrics-logs
|
||||
msg_ok "Started $APP"
|
||||
|
||||
msg_info "Cleaning Up"
|
||||
rm -rf $temp_dir
|
||||
msg_ok "Cleaned"
|
||||
msg_ok "Updated Successfully"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||
|
@ -45,13 +45,13 @@ function update_script() {
|
||||
|
||||
msg_info "Updating $APP to v${RELEASE}"
|
||||
cd /opt/wizarr
|
||||
uv -q sync --locked
|
||||
$STD uv -q run pybabel compile -d app/translations
|
||||
/usr/local/bin/uv -q sync --locked
|
||||
$STD /usr/local/bin/uv -q run pybabel compile -d app/translations
|
||||
$STD npm --prefix app/static install
|
||||
$STD npm --prefix app/static run build:css
|
||||
mkdir -p ./.cache
|
||||
$STD tar -xf "$BACKUP_FILE" --directory=/
|
||||
$STD uv -q run flask db upgrade
|
||||
$STD /usr/local/bin/uv -q run flask db upgrade
|
||||
msg_ok "Updated $APP to v${RELEASE}"
|
||||
|
||||
msg_info "Starting $APP"
|
||||
|
6
frontend/package-lock.json
generated
6
frontend/package-lock.json
generated
@ -7749,9 +7749,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/form-data": {
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.3.tgz",
|
||||
"integrity": "sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==",
|
||||
"version": "4.0.4",
|
||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz",
|
||||
"integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
|
35
frontend/public/json/cleanuparr.json
Normal file
35
frontend/public/json/cleanuparr.json
Normal file
@ -0,0 +1,35 @@
|
||||
{
|
||||
"name": "Cleanuparr",
|
||||
"slug": "cleanuparr",
|
||||
"categories": [
|
||||
14
|
||||
],
|
||||
"date_created": "2025-07-25",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 11011,
|
||||
"documentation": "https://cleanuparr.github.io/Cleanuparr/docs/",
|
||||
"website": "https://github.com/Cleanuparr/Cleanuparr",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/cleanuparr.webp",
|
||||
"config_path": "/opt/cleanuparr/config",
|
||||
"description": "Cleanuparr is a tool for automating the cleanup of unwanted or blocked files in Sonarr, Radarr, and supported download clients like qBittorrent, Transmission, and Deluge. It removes incomplete, blocked, or malicious downloads and can trigger replacement searches to ensure your media library stays complete and up-to-date.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/cleanuparr.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": []
|
||||
}
|
@ -35,6 +35,10 @@
|
||||
{
|
||||
"text": "Configuration settings: `/etc/headscale/config.yaml`",
|
||||
"type": "info"
|
||||
},
|
||||
{
|
||||
"text": "Access headscale-admin UI via `http://<LXC-IP>/admin/`",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
44
frontend/public/json/linkstack.json
Normal file
44
frontend/public/json/linkstack.json
Normal file
@ -0,0 +1,44 @@
|
||||
{
|
||||
"name": "LinkStack",
|
||||
"slug": "linkstack",
|
||||
"categories": [
|
||||
9
|
||||
],
|
||||
"date_created": "2025-07-22",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"config_path": "/var/www/html/linkstack/.env",
|
||||
"interface_port": 80,
|
||||
"documentation": "https://docs.linkstack.org/",
|
||||
"website": "https://linkstack.org/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/linkstack.webp",
|
||||
"description": "LinkStack is an open-source, self-hosted alternative to Linktree, allowing users to create a customizable profile page to share multiple links, hosted on their own server.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/linkstack.sh",
|
||||
"resources": {
|
||||
"cpu": 1,
|
||||
"ram": 1024,
|
||||
"hdd": 5,
|
||||
"os": "Debian",
|
||||
"version": "12"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "LinkStack can be updated via the user interface.",
|
||||
"type": "info"
|
||||
},
|
||||
{
|
||||
"text": "Complete setup via the web interface at http://<container-ip>/. Check installation logs: `cat ~/linkstack-install.log`",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
@ -33,7 +33,7 @@
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "Create Proxmox-API-Token first: `https://github.com/rcourtman/Pulse?tab=readme-ov-file#creating-a-proxmox-api-token`",
|
||||
"text": "Create Proxmox-API-Token first: `https://github.com/rcourtman/Pulse?tab=readme-ov-file#creating-api-token`",
|
||||
"type": "Info"
|
||||
},
|
||||
{
|
||||
|
35
frontend/public/json/salt.json
Normal file
35
frontend/public/json/salt.json
Normal file
@ -0,0 +1,35 @@
|
||||
{
|
||||
"name": "Salt",
|
||||
"slug": "salt",
|
||||
"categories": [
|
||||
19
|
||||
],
|
||||
"date_created": "2025-07-22",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"config_path": "/opt/salt/.env",
|
||||
"interface_port": 3000,
|
||||
"documentation": "https://docs.saltproject.io/salt/install-guide/en/latest/",
|
||||
"website": "https://saltproject.io/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/salt.webp",
|
||||
"description": "SaltStack Salt is a software for automating the management and configuration of IT infrastructure and applications. It is an event-driven automation tool and framework used to deploy, configure, and manage complex IT systems. Its primary functions include configuration management, where it ensures consistent configurations and manages operating system deployment and software installation. It also automates and orchestrates routine IT processes and can create self-aware, self-healing systems.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/salt.sh",
|
||||
"resources": {
|
||||
"cpu": 1,
|
||||
"ram": 1024,
|
||||
"hdd": 3,
|
||||
"os": "Debian",
|
||||
"version": "12"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": []
|
||||
}
|
@ -1,40 +1,55 @@
|
||||
{
|
||||
"name": "Teamspeak-Server",
|
||||
"slug": "teamspeak-server",
|
||||
"categories": [
|
||||
24
|
||||
],
|
||||
"date_created": "2025-07-21",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 9987,
|
||||
"documentation": "https://support.teamspeak.com/hc/en-us/categories/360000302017-TeamSpeak-3",
|
||||
"website": "https://teamspeak.com/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/teamspeak-light.webp",
|
||||
"config_path": "",
|
||||
"description": "TeamSpeak is a voice over IP (VoIP) application, primarily used by gamers and teams to chat in real time on dedicated servers. It delivers crystal‑clear, low‑latency voice communication.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/teamspeak-server.sh",
|
||||
"resources": {
|
||||
"cpu": 1,
|
||||
"ram": 512,
|
||||
"hdd": 2,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
"name": "Teamspeak-Server",
|
||||
"slug": "teamspeak-server",
|
||||
"categories": [
|
||||
24
|
||||
],
|
||||
"date_created": "2025-07-21",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 9987,
|
||||
"documentation": "https://support.teamspeak.com/hc/en-us/categories/360000302017-TeamSpeak-3",
|
||||
"website": "https://teamspeak.com/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/teamspeak-light.webp",
|
||||
"config_path": "",
|
||||
"description": "TeamSpeak is a voice over IP (VoIP) application, primarily used by gamers and teams to chat in real time on dedicated servers. It delivers crystal‑clear, low‑latency voice communication.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/teamspeak-server.sh",
|
||||
"resources": {
|
||||
"cpu": 1,
|
||||
"ram": 512,
|
||||
"hdd": 2,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "Use `journalctl -u teamspeak-server.service` inside LXC console to check for admin credentials!",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
{
|
||||
"type": "alpine",
|
||||
"script": "ct/alpine-teamspeak-server.sh",
|
||||
"resources": {
|
||||
"cpu": 1,
|
||||
"ram": 256,
|
||||
"hdd": 2,
|
||||
"os": "alpine",
|
||||
"version": "3.22"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "Use `journalctl -u teamspeak-server.service` inside Debian LXC console to check for admin credentials!",
|
||||
"type": "info"
|
||||
},
|
||||
{
|
||||
"text": "Use `cat /var/log/teamspeak.err.log` inside Alpine LXC console to check for admin credentials!",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -1,59 +1,314 @@
|
||||
[
|
||||
{
|
||||
"name": "henrygd/beszel",
|
||||
"version": "v0.12.1",
|
||||
"date": "2025-07-25T23:53:12Z"
|
||||
},
|
||||
{
|
||||
"name": "gtsteffaniak/filebrowser",
|
||||
"version": "v0.7.17-beta",
|
||||
"date": "2025-07-25T22:03:43Z"
|
||||
},
|
||||
{
|
||||
"name": "ollama/ollama",
|
||||
"version": "v0.10.0-rc2",
|
||||
"date": "2025-07-25T21:24:06Z"
|
||||
},
|
||||
{
|
||||
"name": "homarr-labs/homarr",
|
||||
"version": "v1.30.1",
|
||||
"date": "2025-07-25T19:18:09Z"
|
||||
},
|
||||
{
|
||||
"name": "tailscale/tailscale",
|
||||
"version": "v1.86.1",
|
||||
"date": "2025-07-25T17:55:38Z"
|
||||
},
|
||||
{
|
||||
"name": "openobserve/openobserve",
|
||||
"version": "v0.15.0-rc4",
|
||||
"date": "2025-07-25T16:50:34Z"
|
||||
},
|
||||
{
|
||||
"name": "fuma-nama/fumadocs",
|
||||
"version": "fumadocs-openapi@9.1.5",
|
||||
"date": "2025-07-25T16:20:20Z"
|
||||
},
|
||||
{
|
||||
"name": "heiher/hev-socks5-server",
|
||||
"version": "2.9.0",
|
||||
"date": "2025-07-25T14:20:25Z"
|
||||
},
|
||||
{
|
||||
"name": "forgejo/forgejo",
|
||||
"version": "v12.0.1",
|
||||
"date": "2025-07-25T11:54:30Z"
|
||||
},
|
||||
{
|
||||
"name": "Luligu/matterbridge",
|
||||
"version": "3.1.7",
|
||||
"date": "2025-07-25T10:19:56Z"
|
||||
},
|
||||
{
|
||||
"name": "morpheus65535/bazarr",
|
||||
"version": "v1.5.3-beta.10",
|
||||
"date": "2025-07-15T06:07:03Z"
|
||||
},
|
||||
{
|
||||
"name": "Jackett/Jackett",
|
||||
"version": "v0.22.2193",
|
||||
"date": "2025-07-25T05:54:10Z"
|
||||
},
|
||||
{
|
||||
"name": "ErsatzTV/ErsatzTV",
|
||||
"version": "v25.3.1",
|
||||
"date": "2025-07-25T03:39:31Z"
|
||||
},
|
||||
{
|
||||
"name": "TryGhost/Ghost-CLI",
|
||||
"version": "v1.28.0",
|
||||
"date": "2025-07-25T01:21:13Z"
|
||||
},
|
||||
{
|
||||
"name": "steveiliop56/tinyauth",
|
||||
"version": "v3.6.2",
|
||||
"date": "2025-07-17T12:08:03Z"
|
||||
},
|
||||
{
|
||||
"name": "Brandawg93/PeaNUT",
|
||||
"version": "v5.10.0",
|
||||
"date": "2025-07-24T23:33:09Z"
|
||||
},
|
||||
{
|
||||
"name": "coder/code-server",
|
||||
"version": "v4.102.2",
|
||||
"date": "2025-07-24T22:42:01Z"
|
||||
},
|
||||
{
|
||||
"name": "MediaBrowser/Emby.Releases",
|
||||
"version": "4.9.1.2",
|
||||
"date": "2025-06-26T22:08:00Z"
|
||||
},
|
||||
{
|
||||
"name": "linuxserver/Heimdall",
|
||||
"version": "v2.7.3",
|
||||
"date": "2025-07-24T18:07:21Z"
|
||||
},
|
||||
{
|
||||
"name": "docker/compose",
|
||||
"version": "v2.39.1",
|
||||
"date": "2025-07-24T17:02:01Z"
|
||||
},
|
||||
{
|
||||
"name": "wizarrrr/wizarr",
|
||||
"version": "2025.7.7",
|
||||
"date": "2025-07-24T16:44:19Z"
|
||||
},
|
||||
{
|
||||
"name": "immich-app/immich",
|
||||
"version": "v1.136.0",
|
||||
"date": "2025-07-24T16:42:30Z"
|
||||
},
|
||||
{
|
||||
"name": "meilisearch/meilisearch",
|
||||
"version": "prototype-cellulite-1",
|
||||
"date": "2025-07-24T16:32:57Z"
|
||||
},
|
||||
{
|
||||
"name": "keycloak/keycloak",
|
||||
"version": "26.3.2",
|
||||
"date": "2025-07-24T10:14:27Z"
|
||||
},
|
||||
{
|
||||
"name": "grokability/snipe-it",
|
||||
"version": "v8.2.1",
|
||||
"date": "2025-07-24T14:37:54Z"
|
||||
},
|
||||
{
|
||||
"name": "Stirling-Tools/Stirling-PDF",
|
||||
"version": "v1.1.0",
|
||||
"date": "2025-07-24T14:08:58Z"
|
||||
},
|
||||
{
|
||||
"name": "glpi-project/glpi",
|
||||
"version": "10.0.19",
|
||||
"date": "2025-07-16T09:45:14Z"
|
||||
},
|
||||
{
|
||||
"name": "Paymenter/Paymenter",
|
||||
"version": "v1.2.5",
|
||||
"date": "2025-07-24T11:52:16Z"
|
||||
},
|
||||
{
|
||||
"name": "Checkmk/checkmk",
|
||||
"version": "v2.3.0p35-rc2",
|
||||
"date": "2025-07-24T07:00:54Z"
|
||||
},
|
||||
{
|
||||
"name": "zwave-js/zwave-js-ui",
|
||||
"version": "v10.10.0",
|
||||
"date": "2025-07-24T06:15:19Z"
|
||||
},
|
||||
{
|
||||
"name": "firefly-iii/firefly-iii",
|
||||
"version": "v6.2.21",
|
||||
"date": "2025-07-17T04:46:25Z"
|
||||
},
|
||||
{
|
||||
"name": "advplyr/audiobookshelf",
|
||||
"version": "v2.26.2",
|
||||
"date": "2025-07-21T22:47:38Z"
|
||||
"version": "v2.26.3",
|
||||
"date": "2025-07-23T23:16:46Z"
|
||||
},
|
||||
{
|
||||
"name": "minio/minio",
|
||||
"version": "RELEASE.2025-07-23T15-54-02Z",
|
||||
"date": "2025-07-23T20:35:39Z"
|
||||
},
|
||||
{
|
||||
"name": "grafana/grafana",
|
||||
"version": "v12.1.0",
|
||||
"date": "2025-07-23T19:35:52Z"
|
||||
},
|
||||
{
|
||||
"name": "semaphoreui/semaphore",
|
||||
"version": "v2.16.0-beta6",
|
||||
"date": "2025-07-23T19:18:14Z"
|
||||
},
|
||||
{
|
||||
"name": "fallenbagel/jellyseerr",
|
||||
"version": "preview-plex-home-profile",
|
||||
"date": "2025-07-23T16:40:31Z"
|
||||
},
|
||||
{
|
||||
"name": "jenkinsci/jenkins",
|
||||
"version": "jenkins-2.516.1",
|
||||
"date": "2025-07-23T14:16:23Z"
|
||||
},
|
||||
{
|
||||
"name": "traefik/traefik",
|
||||
"version": "v3.5.0",
|
||||
"date": "2025-07-23T14:06:54Z"
|
||||
},
|
||||
{
|
||||
"name": "Radarr/Radarr",
|
||||
"version": "v5.26.2.10099",
|
||||
"date": "2025-06-11T20:10:39Z"
|
||||
},
|
||||
{
|
||||
"name": "Prowlarr/Prowlarr",
|
||||
"version": "v1.37.0.5076",
|
||||
"date": "2025-06-04T11:04:53Z"
|
||||
},
|
||||
{
|
||||
"name": "n8n-io/n8n",
|
||||
"version": "n8n@1.103.2",
|
||||
"date": "2025-07-22T11:22:26Z"
|
||||
},
|
||||
{
|
||||
"name": "zabbix/zabbix",
|
||||
"version": "7.4.1rc1",
|
||||
"date": "2025-07-23T11:54:39Z"
|
||||
},
|
||||
{
|
||||
"name": "cockpit-project/cockpit",
|
||||
"version": "343",
|
||||
"date": "2025-07-23T11:21:34Z"
|
||||
},
|
||||
{
|
||||
"name": "jhuckaby/Cronicle",
|
||||
"version": "v0.9.85",
|
||||
"date": "2025-07-22T23:49:53Z"
|
||||
},
|
||||
{
|
||||
"name": "raydak-labs/configarr",
|
||||
"version": "v1.13.7",
|
||||
"date": "2025-07-22T20:41:45Z"
|
||||
},
|
||||
{
|
||||
"name": "TasmoAdmin/TasmoAdmin",
|
||||
"version": "v4.3.1",
|
||||
"date": "2025-07-22T20:10:08Z"
|
||||
},
|
||||
{
|
||||
"name": "esphome/esphome",
|
||||
"version": "2025.7.3",
|
||||
"date": "2025-07-22T20:09:49Z"
|
||||
},
|
||||
{
|
||||
"name": "rcourtman/Pulse",
|
||||
"version": "v3.42.0",
|
||||
"date": "2025-07-14T22:07:28Z"
|
||||
},
|
||||
{
|
||||
"name": "msgbyte/tianji",
|
||||
"version": "v1.24.6",
|
||||
"date": "2025-07-22T17:14:21Z"
|
||||
},
|
||||
{
|
||||
"name": "Dolibarr/dolibarr",
|
||||
"version": "21.0.2",
|
||||
"date": "2025-07-22T16:58:05Z"
|
||||
},
|
||||
{
|
||||
"name": "PCJones/UmlautAdaptarr",
|
||||
"version": "v0.7.3",
|
||||
"date": "2025-07-22T14:39:54Z"
|
||||
},
|
||||
{
|
||||
"name": "element-hq/synapse",
|
||||
"version": "v1.134.0",
|
||||
"date": "2025-07-15T13:43:39Z"
|
||||
},
|
||||
{
|
||||
"name": "goauthentik/authentik",
|
||||
"version": "version/2025.4.4",
|
||||
"date": "2025-07-22T13:08:15Z"
|
||||
},
|
||||
{
|
||||
"name": "crowdsecurity/crowdsec",
|
||||
"version": "v1.6.11",
|
||||
"date": "2025-07-22T12:11:38Z"
|
||||
},
|
||||
{
|
||||
"name": "home-assistant/core",
|
||||
"version": "2025.7.3",
|
||||
"date": "2025-07-22T08:30:59Z"
|
||||
},
|
||||
{
|
||||
"name": "mattermost/mattermost",
|
||||
"version": "v9.11.18",
|
||||
"date": "2025-07-22T06:18:08Z"
|
||||
},
|
||||
{
|
||||
"name": "adityachandelgit/BookLore",
|
||||
"version": "v0.34.1",
|
||||
"date": "2025-07-22T05:57:50Z"
|
||||
},
|
||||
{
|
||||
"name": "lazy-media/Reactive-Resume",
|
||||
"version": "v1.2.2",
|
||||
"date": "2025-07-22T03:12:54Z"
|
||||
},
|
||||
{
|
||||
"name": "ellite/Wallos",
|
||||
"version": "v4.0.0",
|
||||
"date": "2025-07-21T21:05:02Z"
|
||||
},
|
||||
{
|
||||
"name": "gtsteffaniak/filebrowser",
|
||||
"version": "v0.7.16-beta",
|
||||
"date": "2025-07-21T20:58:02Z"
|
||||
},
|
||||
{
|
||||
"name": "autobrr/autobrr",
|
||||
"version": "v1.64.0",
|
||||
"date": "2025-07-21T20:56:33Z"
|
||||
},
|
||||
{
|
||||
"name": "Checkmk/checkmk",
|
||||
"version": "v2.4.0p8",
|
||||
"date": "2025-07-21T19:25:40Z"
|
||||
},
|
||||
{
|
||||
"name": "mongodb/mongo",
|
||||
"version": "r8.2.0-rc0",
|
||||
"date": "2025-07-21T19:07:52Z"
|
||||
},
|
||||
{
|
||||
"name": "fallenbagel/jellyseerr",
|
||||
"version": "v2.7.2",
|
||||
"date": "2025-07-21T18:19:05Z"
|
||||
},
|
||||
{
|
||||
"name": "msgbyte/tianji",
|
||||
"version": "v1.24.5",
|
||||
"date": "2025-07-21T17:04:25Z"
|
||||
},
|
||||
{
|
||||
"name": "HabitRPG/habitica",
|
||||
"version": "v5.37.2",
|
||||
"date": "2025-07-21T14:08:35Z"
|
||||
},
|
||||
{
|
||||
"name": "n8n-io/n8n",
|
||||
"version": "n8n@1.102.4",
|
||||
"date": "2025-07-17T11:27:58Z"
|
||||
},
|
||||
{
|
||||
"name": "tobychui/zoraxy",
|
||||
"version": "v3.2.5r2",
|
||||
@ -74,21 +329,6 @@
|
||||
"version": "pmm-6401-v1.122.0",
|
||||
"date": "2025-07-21T10:40:07Z"
|
||||
},
|
||||
{
|
||||
"name": "zabbix/zabbix",
|
||||
"version": "7.0.17rc2",
|
||||
"date": "2025-07-21T10:37:33Z"
|
||||
},
|
||||
{
|
||||
"name": "linuxserver/Heimdall",
|
||||
"version": "v2.7.1",
|
||||
"date": "2025-07-21T09:13:14Z"
|
||||
},
|
||||
{
|
||||
"name": "homarr-labs/homarr",
|
||||
"version": "v1.30.0",
|
||||
"date": "2025-07-21T08:43:19Z"
|
||||
},
|
||||
{
|
||||
"name": "nzbgetcom/nzbget",
|
||||
"version": "v25.2",
|
||||
@ -99,91 +339,31 @@
|
||||
"version": "5.0.0",
|
||||
"date": "2025-07-21T07:16:58Z"
|
||||
},
|
||||
{
|
||||
"name": "mattermost/mattermost",
|
||||
"version": "preview-v0.1",
|
||||
"date": "2025-06-27T14:35:47Z"
|
||||
},
|
||||
{
|
||||
"name": "Jackett/Jackett",
|
||||
"version": "v0.22.2178",
|
||||
"date": "2025-07-21T05:53:32Z"
|
||||
},
|
||||
{
|
||||
"name": "pocket-id/pocket-id",
|
||||
"version": "v1.6.4",
|
||||
"date": "2025-07-21T05:53:30Z"
|
||||
},
|
||||
{
|
||||
"name": "lazy-media/Reactive-Resume",
|
||||
"version": "1.2.1",
|
||||
"date": "2025-07-21T03:40:58Z"
|
||||
},
|
||||
{
|
||||
"name": "firefly-iii/firefly-iii",
|
||||
"version": "v6.2.21",
|
||||
"date": "2025-07-17T04:46:25Z"
|
||||
},
|
||||
{
|
||||
"name": "steveiliop56/tinyauth",
|
||||
"version": "v3.6.2",
|
||||
"date": "2025-07-17T12:08:03Z"
|
||||
},
|
||||
{
|
||||
"name": "Dolibarr/dolibarr",
|
||||
"version": "21.0.2",
|
||||
"date": "2025-07-20T17:02:07Z"
|
||||
},
|
||||
{
|
||||
"name": "fuma-nama/fumadocs",
|
||||
"version": "fumadocs-openapi@9.1.4",
|
||||
"date": "2025-07-20T13:38:10Z"
|
||||
},
|
||||
{
|
||||
"name": "karakeep-app/karakeep",
|
||||
"version": "sdk/v0.26.0",
|
||||
"date": "2025-07-20T13:26:30Z"
|
||||
},
|
||||
{
|
||||
"name": "wizarrrr/wizarr",
|
||||
"version": "2025.7.6",
|
||||
"date": "2025-07-20T13:02:43Z"
|
||||
},
|
||||
{
|
||||
"name": "OliveTin/OliveTin",
|
||||
"version": "2025.7.19",
|
||||
"date": "2025-07-20T09:44:35Z"
|
||||
},
|
||||
{
|
||||
"name": "semaphoreui/semaphore",
|
||||
"version": "v2.16.0-beta1",
|
||||
"date": "2025-07-20T09:43:36Z"
|
||||
},
|
||||
{
|
||||
"name": "documenso/documenso",
|
||||
"version": "v1.12.2-rc.2",
|
||||
"date": "2025-07-20T07:05:19Z"
|
||||
},
|
||||
{
|
||||
"name": "morpheus65535/bazarr",
|
||||
"version": "v1.5.3-beta.10",
|
||||
"date": "2025-07-15T06:07:03Z"
|
||||
},
|
||||
{
|
||||
"name": "linkwarden/linkwarden",
|
||||
"version": "v2.11.5",
|
||||
"date": "2025-07-20T03:14:42Z"
|
||||
},
|
||||
{
|
||||
"name": "adityachandelgit/BookLore",
|
||||
"version": "v0.34.0",
|
||||
"date": "2025-07-19T22:17:45Z"
|
||||
},
|
||||
{
|
||||
"name": "Luligu/matterbridge",
|
||||
"version": "3.1.5",
|
||||
"date": "2025-07-19T21:50:47Z"
|
||||
},
|
||||
{
|
||||
"name": "pelican-dev/panel",
|
||||
"version": "v1.0.0-beta23",
|
||||
@ -214,36 +394,6 @@
|
||||
"version": "v0.29.0",
|
||||
"date": "2025-07-19T08:54:54Z"
|
||||
},
|
||||
{
|
||||
"name": "Paymenter/Paymenter",
|
||||
"version": "v1.2.4",
|
||||
"date": "2025-07-19T07:42:25Z"
|
||||
},
|
||||
{
|
||||
"name": "esphome/esphome",
|
||||
"version": "2025.7.2",
|
||||
"date": "2025-07-19T00:05:00Z"
|
||||
},
|
||||
{
|
||||
"name": "minio/minio",
|
||||
"version": "RELEASE.2025-07-18T21-56-31Z",
|
||||
"date": "2025-07-18T23:56:46Z"
|
||||
},
|
||||
{
|
||||
"name": "Brandawg93/PeaNUT",
|
||||
"version": "v5.9.4",
|
||||
"date": "2025-07-18T21:50:31Z"
|
||||
},
|
||||
{
|
||||
"name": "rcourtman/Pulse",
|
||||
"version": "v3.42.0",
|
||||
"date": "2025-07-14T22:07:28Z"
|
||||
},
|
||||
{
|
||||
"name": "keycloak/keycloak",
|
||||
"version": "26.2.6",
|
||||
"date": "2025-07-17T11:16:34Z"
|
||||
},
|
||||
{
|
||||
"name": "theonedev/onedev",
|
||||
"version": "v12.0.1",
|
||||
@ -264,51 +414,21 @@
|
||||
"version": "e6.0.0-M1.202507-rc.1",
|
||||
"date": "2025-07-18T07:48:52Z"
|
||||
},
|
||||
{
|
||||
"name": "meilisearch/meilisearch",
|
||||
"version": "prototype-chat-completions-with-filters-0",
|
||||
"date": "2025-07-16T08:54:57Z"
|
||||
},
|
||||
{
|
||||
"name": "ollama/ollama",
|
||||
"version": "v0.9.7-rc1",
|
||||
"date": "2025-07-11T22:15:00Z"
|
||||
},
|
||||
{
|
||||
"name": "cross-seed/cross-seed",
|
||||
"version": "v6.13.1",
|
||||
"date": "2025-07-17T21:36:42Z"
|
||||
},
|
||||
{
|
||||
"name": "coder/code-server",
|
||||
"version": "v4.102.1",
|
||||
"date": "2025-07-17T21:20:36Z"
|
||||
},
|
||||
{
|
||||
"name": "duplicati/duplicati",
|
||||
"version": "v2.1.1.0-2.1.1.0_experimental_2025-07-17",
|
||||
"date": "2025-07-17T20:11:33Z"
|
||||
},
|
||||
{
|
||||
"name": "grafana/grafana",
|
||||
"version": "v12.0.2+security-01",
|
||||
"date": "2025-07-17T19:13:19Z"
|
||||
},
|
||||
{
|
||||
"name": "jhuckaby/Cronicle",
|
||||
"version": "v0.9.83",
|
||||
"date": "2025-07-17T17:48:01Z"
|
||||
},
|
||||
{
|
||||
"name": "wavelog/wavelog",
|
||||
"version": "2.0.7",
|
||||
"date": "2025-07-17T15:33:14Z"
|
||||
},
|
||||
{
|
||||
"name": "forgejo/forgejo",
|
||||
"version": "v12.0.0",
|
||||
"date": "2025-07-17T14:38:30Z"
|
||||
},
|
||||
{
|
||||
"name": "oauth2-proxy/oauth2-proxy",
|
||||
"version": "v7.10.0",
|
||||
@ -334,16 +454,6 @@
|
||||
"version": "v0.25.0",
|
||||
"date": "2025-07-16T14:57:02Z"
|
||||
},
|
||||
{
|
||||
"name": "TryGhost/Ghost-CLI",
|
||||
"version": "v1.27.1",
|
||||
"date": "2025-07-16T13:29:00Z"
|
||||
},
|
||||
{
|
||||
"name": "glpi-project/glpi",
|
||||
"version": "10.0.19",
|
||||
"date": "2025-07-16T09:45:14Z"
|
||||
},
|
||||
{
|
||||
"name": "NLnetLabs/unbound",
|
||||
"version": "release-1.23.1",
|
||||
@ -374,16 +484,6 @@
|
||||
"version": "6.8.2",
|
||||
"date": "2025-07-15T15:14:16Z"
|
||||
},
|
||||
{
|
||||
"name": "jenkinsci/jenkins",
|
||||
"version": "jenkins-2.519",
|
||||
"date": "2025-07-15T14:43:59Z"
|
||||
},
|
||||
{
|
||||
"name": "element-hq/synapse",
|
||||
"version": "v1.134.0",
|
||||
"date": "2025-07-15T13:43:39Z"
|
||||
},
|
||||
{
|
||||
"name": "dgtlmoon/changedetection.io",
|
||||
"version": "0.50.7",
|
||||
@ -424,11 +524,6 @@
|
||||
"version": "v3.5.0",
|
||||
"date": "2025-07-14T16:54:21Z"
|
||||
},
|
||||
{
|
||||
"name": "home-assistant/core",
|
||||
"version": "2025.7.2",
|
||||
"date": "2025-07-14T11:29:58Z"
|
||||
},
|
||||
{
|
||||
"name": "homebridge/homebridge",
|
||||
"version": "v1.11.0",
|
||||
@ -449,11 +544,6 @@
|
||||
"version": "v4.39.5",
|
||||
"date": "2025-07-13T06:12:47Z"
|
||||
},
|
||||
{
|
||||
"name": "henrygd/beszel",
|
||||
"version": "v0.11.1",
|
||||
"date": "2025-04-29T01:14:35Z"
|
||||
},
|
||||
{
|
||||
"name": "Ombi-app/Ombi",
|
||||
"version": "v4.47.1",
|
||||
@ -489,16 +579,6 @@
|
||||
"version": "flowise@3.0.4",
|
||||
"date": "2025-07-11T13:26:54Z"
|
||||
},
|
||||
{
|
||||
"name": "zwave-js/zwave-js-ui",
|
||||
"version": "v10.9.0",
|
||||
"date": "2025-07-11T12:57:54Z"
|
||||
},
|
||||
{
|
||||
"name": "traefik/traefik",
|
||||
"version": "v3.4.4",
|
||||
"date": "2025-07-11T08:41:34Z"
|
||||
},
|
||||
{
|
||||
"name": "outline/outline",
|
||||
"version": "v0.85.1",
|
||||
@ -514,11 +594,6 @@
|
||||
"version": "v2.13.0",
|
||||
"date": "2025-07-10T19:27:54Z"
|
||||
},
|
||||
{
|
||||
"name": "crowdsecurity/crowdsec",
|
||||
"version": "v1.6.10",
|
||||
"date": "2025-07-10T12:04:30Z"
|
||||
},
|
||||
{
|
||||
"name": "NginxProxyManager/nginx-proxy-manager",
|
||||
"version": "v2.12.6",
|
||||
@ -534,11 +609,6 @@
|
||||
"version": "4.5.2",
|
||||
"date": "2025-07-09T19:08:28Z"
|
||||
},
|
||||
{
|
||||
"name": "raydak-labs/configarr",
|
||||
"version": "v1.13.6",
|
||||
"date": "2025-07-09T17:23:01Z"
|
||||
},
|
||||
{
|
||||
"name": "hargata/lubelog",
|
||||
"version": "v1.4.9",
|
||||
@ -565,40 +635,15 @@
|
||||
"date": "2025-06-26T14:34:19Z"
|
||||
},
|
||||
{
|
||||
"name": "cockpit-project/cockpit",
|
||||
"version": "342",
|
||||
"date": "2025-07-09T08:48:21Z"
|
||||
},
|
||||
{
|
||||
"name": "Prowlarr/Prowlarr",
|
||||
"version": "v1.37.0.5076",
|
||||
"date": "2025-06-04T11:04:53Z"
|
||||
},
|
||||
{
|
||||
"name": "Radarr/Radarr",
|
||||
"version": "v5.26.2.10099",
|
||||
"date": "2025-06-11T20:10:39Z"
|
||||
},
|
||||
{
|
||||
"name": "grokability/snipe-it",
|
||||
"version": "v8.1.18",
|
||||
"date": "2025-07-08T20:36:37Z"
|
||||
},
|
||||
{
|
||||
"name": "Stirling-Tools/Stirling-PDF",
|
||||
"version": "v1.0.2",
|
||||
"date": "2025-07-08T19:14:31Z"
|
||||
"name": "mysql/mysql-server",
|
||||
"version": "mysql-cluster-9.4.0",
|
||||
"date": "2025-07-09T08:35:30Z"
|
||||
},
|
||||
{
|
||||
"name": "TwiN/gatus",
|
||||
"version": "v5.20.0",
|
||||
"date": "2025-07-08T16:27:11Z"
|
||||
},
|
||||
{
|
||||
"name": "docker/compose",
|
||||
"version": "v2.38.2",
|
||||
"date": "2025-07-08T09:35:14Z"
|
||||
},
|
||||
{
|
||||
"name": "photoprism/photoprism",
|
||||
"version": "250707-d28b3101e",
|
||||
@ -719,11 +764,6 @@
|
||||
"version": "v0.57.0",
|
||||
"date": "2025-07-01T16:47:46Z"
|
||||
},
|
||||
{
|
||||
"name": "openobserve/openobserve",
|
||||
"version": "v0.15.0-rc3",
|
||||
"date": "2025-07-01T04:09:37Z"
|
||||
},
|
||||
{
|
||||
"name": "MagicMirrorOrg/MagicMirror",
|
||||
"version": "v2.32.0",
|
||||
@ -749,16 +789,6 @@
|
||||
"version": "v1.3.8",
|
||||
"date": "2025-06-29T07:41:53Z"
|
||||
},
|
||||
{
|
||||
"name": "goauthentik/authentik",
|
||||
"version": "version/2025.6.3",
|
||||
"date": "2025-06-27T14:01:06Z"
|
||||
},
|
||||
{
|
||||
"name": "tailscale/tailscale",
|
||||
"version": "v1.84.3",
|
||||
"date": "2025-06-26T16:31:57Z"
|
||||
},
|
||||
{
|
||||
"name": "node-red/node-red",
|
||||
"version": "4.1.0-beta.2",
|
||||
@ -774,11 +804,6 @@
|
||||
"version": "v1.18.4",
|
||||
"date": "2025-06-25T00:06:56Z"
|
||||
},
|
||||
{
|
||||
"name": "ErsatzTV/ErsatzTV",
|
||||
"version": "v25.2.0",
|
||||
"date": "2025-06-24T17:06:31Z"
|
||||
},
|
||||
{
|
||||
"name": "arunavo4/gitea-mirror",
|
||||
"version": "v2.18.0",
|
||||
@ -804,11 +829,6 @@
|
||||
"version": "v2.0.114",
|
||||
"date": "2025-06-21T11:20:21Z"
|
||||
},
|
||||
{
|
||||
"name": "immich-app/immich",
|
||||
"version": "v1.135.3",
|
||||
"date": "2025-06-20T20:19:20Z"
|
||||
},
|
||||
{
|
||||
"name": "Sonarr/Sonarr",
|
||||
"version": "v4.0.15.2941",
|
||||
@ -1099,11 +1119,6 @@
|
||||
"version": "v2.0.1727",
|
||||
"date": "2025-04-21T17:53:05Z"
|
||||
},
|
||||
{
|
||||
"name": "TasmoAdmin/TasmoAdmin",
|
||||
"version": "v4.3.0",
|
||||
"date": "2025-04-21T17:44:40Z"
|
||||
},
|
||||
{
|
||||
"name": "caddyserver/caddy",
|
||||
"version": "v2.10.0",
|
||||
@ -1149,11 +1164,6 @@
|
||||
"version": "v2.2.0",
|
||||
"date": "2025-03-31T21:31:48Z"
|
||||
},
|
||||
{
|
||||
"name": "mysql/mysql-server",
|
||||
"version": "mysql-cluster-9.3.0",
|
||||
"date": "2025-03-31T07:42:45Z"
|
||||
},
|
||||
{
|
||||
"name": "louislam/dockge",
|
||||
"version": "1.5.0",
|
||||
@ -1244,11 +1254,6 @@
|
||||
"version": "v0.10.0",
|
||||
"date": "2025-03-02T15:13:47Z"
|
||||
},
|
||||
{
|
||||
"name": "heiher/hev-socks5-server",
|
||||
"version": "2.8.0",
|
||||
"date": "2025-03-02T04:30:50Z"
|
||||
},
|
||||
{
|
||||
"name": "schlagmichdoch/PairDrop",
|
||||
"version": "v1.11.2",
|
||||
@ -1289,11 +1294,6 @@
|
||||
"version": "v0.5.7",
|
||||
"date": "2025-01-17T15:57:17Z"
|
||||
},
|
||||
{
|
||||
"name": "PCJones/UmlautAdaptarr",
|
||||
"version": "0.7.2",
|
||||
"date": "2025-01-13T22:17:18Z"
|
||||
},
|
||||
{
|
||||
"name": "go-vikunja/vikunja",
|
||||
"version": "v0.24.6",
|
||||
|
68
install/alpine-teamspeak-server-install.sh
Normal file
68
install/alpine-teamspeak-server-install.sh
Normal file
@ -0,0 +1,68 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: tremor021 (Slaviša Arežina)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://teamspeak.com/en/
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing dependencies"
|
||||
$STD apk add --no-cache \
|
||||
ca-certificates \
|
||||
libstdc++ \
|
||||
libc6-compat
|
||||
msg_ok "Installed dependencies"
|
||||
|
||||
RELEASE=$(curl -fsSL https://teamspeak.com/en/downloads/#server | sed -n 's/.*teamspeak3-server_linux_amd64-\([0-9.]\+\).*/\1/p' | head -1)
|
||||
msg_info "Installing Teamspeak Server v${RELEASE}"
|
||||
mkdir -p /opt/teamspeak-server
|
||||
cd /opt/teamspeak-server
|
||||
curl -fsSL "https://files.teamspeak-services.com/releases/server/${RELEASE}/teamspeak3-server_linux_amd64-${RELEASE}.tar.bz2" -o ts3server.tar.bz2
|
||||
tar xf ts3server.tar.bz2 --strip-components=1
|
||||
mkdir -p logs data lib
|
||||
mv *.so lib
|
||||
touch data/ts3server.sqlitedb data/query_ip_blacklist.txt data/query_ip_whitelist.txt .ts3server_license_accepted
|
||||
echo "${RELEASE}" >~/.teamspeak-server
|
||||
msg_ok "Installed TeamSpeak Server v${RELEASE}"
|
||||
|
||||
msg_info "Enabling TeamSpeak Server Service"
|
||||
cat <<EOF >/etc/init.d/teamspeak
|
||||
#!/sbin/openrc-run
|
||||
|
||||
name="TeamSpeak Server"
|
||||
description="TeamSpeak 3 Server"
|
||||
command="/opt/teamspeak-server/ts3server_startscript.sh"
|
||||
command_args="start"
|
||||
output_log="/var/log/teamspeak.out.log"
|
||||
error_log="/var/log/teamspeak.err.log"
|
||||
command_background=true
|
||||
pidfile="/run/teamspeak-server.pid"
|
||||
directory="/opt/teamspeak-server"
|
||||
|
||||
depend() {
|
||||
need net
|
||||
use dns
|
||||
}
|
||||
EOF
|
||||
chmod +x /etc/init.d/teamspeak
|
||||
$STD rc-update add teamspeak default
|
||||
msg_ok "Enabled TeamSpeak Server Service"
|
||||
|
||||
msg_info "Starting TeamSpeak Server"
|
||||
$STD service teamspeak start
|
||||
msg_ok "Started TeamSpeak Server"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -r ts3server.tar.bz* LICENSE* CHANGELOG doc serverquerydocs tsdns redist
|
||||
$STD apk cache clean
|
||||
msg_ok "Cleaned"
|
46
install/cleanuparr-install.sh
Executable file
46
install/cleanuparr-install.sh
Executable file
@ -0,0 +1,46 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: Lucas Zampieri (zampierilucas) | MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/Cleanuparr/Cleanuparr
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
fetch_and_deploy_gh_release "Cleanuparr" "Cleanuparr/Cleanuparr" "prebuild" "latest" "/opt/cleanuparr" "*linux-amd64.zip"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/cleanuparr.service
|
||||
[Unit]
|
||||
Description=Cleanuparr Daemon
|
||||
After=syslog.target network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
WorkingDirectory=/opt/cleanuparr
|
||||
ExecStart=/opt/cleanuparr/Cleanuparr
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
Environment="PORT=11011"
|
||||
Environment="CONFIG_DIR=/opt/cleanuparr/config"
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now cleanuparr
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleaned"
|
@ -79,7 +79,7 @@ msg_ok "Installed Documenso"
|
||||
|
||||
msg_info "Create User"
|
||||
PASSWORD_HASH=$(python3 -c "import bcrypt; print(bcrypt.hashpw(b'helper-scripts', bcrypt.gensalt(rounds=12)).decode())")
|
||||
$STD sudo -u postgres psql -d documenso_db -c "INSERT INTO \"User\" (name, email, \"emailVerified\", password, \"identityProvider\", roles, \"createdAt\", \"lastSignedIn\", \"updatedAt\", \"customerId\") VALUES ('helper-scripts', 'helper-scripts@local.com', '2025-01-20 17:14:45.058', '$PASSWORD_HASH', 'DOCUMENSO', ARRAY['USER', 'ADMIN']::\"Role\"[], '2025-01-20 16:04:05.543', '2025-01-20 16:14:55.249', '2025-01-20 16:14:55.25', NULL) RETURNING id;"
|
||||
$STD sudo -u postgres psql -d documenso_db -c "INSERT INTO \"User\" (name, email, \"emailVerified\", password, \"identityProvider\", roles, \"createdAt\", \"lastSignedIn\", \"updatedAt\") VALUES ('helper-scripts', 'helper-scripts@local.com', '2025-01-20 17:14:45.058', '$PASSWORD_HASH', 'DOCUMENSO', ARRAY['USER', 'ADMIN']::\"Role\"[], '2025-01-20 16:04:05.543', '2025-01-20 16:14:55.249', '2025-01-20 16:14:55.25') RETURNING id;"
|
||||
$STD npm run prisma:migrate-deploy
|
||||
msg_ok "User created"
|
||||
|
||||
|
@ -20,19 +20,16 @@ $STD apt-get install -y \
|
||||
libfontconfig1
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Setting up Duplicati"
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/duplicati/duplicati/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}')
|
||||
curl -fsSL "https://github.com/duplicati/duplicati/releases/download/v${RELEASE}/duplicati-${RELEASE}-linux-x64-gui.deb" -o "duplicati-${RELEASE}-linux-x64-gui.deb"
|
||||
$STD dpkg -i duplicati-${RELEASE}-linux-x64-gui.deb
|
||||
echo "${RELEASE}" >/opt/Duplicati_version.txt
|
||||
msg_ok "Finished setting up Duplicati"
|
||||
fetch_and_deploy_gh_release "duplicati" "duplicati/duplicati" "binary" "latest" "/opt/duplicati" "linux-x64-gui.deb"
|
||||
|
||||
msg_info "Configuring duplicati"
|
||||
DECRYPTKEY=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||
ADMINPASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||
{
|
||||
echo "Admin password = ${ADMINPASS}"
|
||||
echo "Database encryption key = ${DECRYPTKEY}"
|
||||
} >>~/duplicati.creds
|
||||
msg_ok "Configured duplicati"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/duplicati.service
|
||||
@ -54,10 +51,6 @@ motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -f duplicati-${RELEASE}-linux-x64-gui.deb
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleaned"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
@ -42,10 +42,7 @@ if [[ "$CTTYPE" == "0" ]]; then
|
||||
fi
|
||||
msg_ok "Set Up Hardware Acceleration"
|
||||
|
||||
#RELEASE=$(curl -fsSL https://api.github.com/repos/blakeblackshear/frigate/releases/latest | jq -r '.tag_name')
|
||||
msg_ok "Stop spinner to prevent segmentation fault"
|
||||
msg_info "Installing Frigate v0.14.1 (Perseverance)"
|
||||
if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID >/dev/null; then kill $SPINNER_PID >/dev/null; fi
|
||||
cd ~
|
||||
mkdir -p /opt/frigate/models
|
||||
curl -fsSL "https://github.com/blakeblackshear/frigate/archive/refs/tags/v0.14.1.tar.gz" -o "frigate.tar.gz"
|
||||
|
@ -13,15 +13,10 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing go2rtc"
|
||||
mkdir -p /opt/go2rtc
|
||||
cd /opt/go2rtc
|
||||
curl -fsSL "https://github.com/AlexxIT/go2rtc/releases/latest/download/go2rtc_linux_amd64" -o "go2rtc_linux_amd64"
|
||||
chmod +x go2rtc_linux_amd64
|
||||
msg_ok "Installed go2rtc"
|
||||
fetch_and_deploy_gh_release "go2rtc" "AlexxIT/go2rtc" "singlefile" "latest" "/opt/go2rtc" "go2rtc_linux_amd64"
|
||||
|
||||
msg_info "Creating Service"
|
||||
service_path="/etc/systemd/system/go2rtc.service"
|
||||
cat <<EOF >/etc/systemd/system/go2rtc.service
|
||||
echo "[Unit]
|
||||
Description=go2rtc service
|
||||
After=network.target
|
||||
@ -32,7 +27,8 @@ User=root
|
||||
ExecStart=/opt/go2rtc/go2rtc_linux_amd64
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target" >$service_path
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now go2rtc
|
||||
msg_ok "Created Service"
|
||||
|
||||
|
@ -13,14 +13,12 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Gokapi"
|
||||
LATEST=$(curl -fsSL https://api.github.com/repos/Forceu/Gokapi/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
|
||||
fetch_and_deploy_gh_release "gokapi" "Forceu/Gokapi" "prebuild" "latest" "/opt/gokapi" "gokapi-linux_amd64.zip"
|
||||
|
||||
msg_info "Configuring Gokapi"
|
||||
mkdir -p /opt/gokapi/{data,config}
|
||||
curl -fsSL "https://github.com/Forceu/Gokapi/releases/download/$LATEST/gokapi-linux_amd64.zip" -o "gokapi-linux_amd64.zip"
|
||||
$STD unzip gokapi-linux_amd64.zip -d /opt/gokapi
|
||||
rm gokapi-linux_amd64.zip
|
||||
chmod +x /opt/gokapi/gokapi-linux_amd64
|
||||
msg_ok "Installed Gokapi"
|
||||
msg_ok "Configured Gokapi"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/gokapi.service
|
||||
|
@ -22,16 +22,17 @@ curl -fsSL "http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1
|
||||
$STD dpkg -i libssl1.1_1.1.1f-1ubuntu2_amd64.deb
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
NODE_VERSION="20" NODE_MODULE="gulp-cli,mocha" setup_nodejs
|
||||
NODE_VERSION="20" NODE_MODULE="gulp-cli,mocha,npm@10" setup_nodejs
|
||||
fetch_and_deploy_gh_release "habitica" "HabitRPG/habitica" "tarball" "latest" "/opt/habitica"
|
||||
|
||||
msg_info "Setup ${APPLICATION}"
|
||||
cd /opt/habitica
|
||||
$STD npm i
|
||||
$STD npm run postinstall
|
||||
cp config.json.example config.json
|
||||
$STD npm run client:build
|
||||
$STD gulp build:prod
|
||||
cp config.json.example config.json
|
||||
|
||||
msg_ok "Setup ${APPLICATION}"
|
||||
|
||||
msg_info "Creating Service"
|
||||
|
@ -13,19 +13,53 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/juanfont/headscale/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
msg_info "Installing ${APPLICATION} v${RELEASE}"
|
||||
curl -fsSL "https://github.com/juanfont/headscale/releases/download/v${RELEASE}/headscale_${RELEASE}_linux_amd64.deb" -o "headscale_${RELEASE}_linux_amd64.deb"
|
||||
$STD dpkg -i headscale_${RELEASE}_linux_amd64.deb
|
||||
fetch_and_deploy_gh_release "headscale" "juanfont/headscale" "binary"
|
||||
|
||||
read -r -p "${TAB3}Would you like to add headscale-admin UI? <y/N> " prompt
|
||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||
fetch_and_deploy_gh_release "headscale-admin" "GoodiesHQ/headscale-admin" "prebuild" "latest" "/opt/headscale-admin" "admin.zip"
|
||||
|
||||
msg_info "Configuring headscale-admin"
|
||||
$STD apt-get install -y caddy
|
||||
$STD caddy stop
|
||||
rm /etc/caddy/Caddyfile
|
||||
cat <<'EOF' >/etc/caddy/Caddyfile
|
||||
:{$PORT:80}
|
||||
|
||||
handle_path /admin* {
|
||||
root * /opt/headscale-admin
|
||||
encode gzip zstd
|
||||
|
||||
# Correct MIME types for JS/WASM
|
||||
header {
|
||||
@js_files path *.js
|
||||
@wasm_files path *.wasm
|
||||
|
||||
Content-Type @js_files application/javascript
|
||||
Content-Type @wasm_files application/wasm
|
||||
|
||||
X-Content-Type-Options nosniff
|
||||
}
|
||||
|
||||
# Fallback for SPA routing
|
||||
try_files {path} {path}/ index.html
|
||||
file_server
|
||||
}
|
||||
|
||||
EOF
|
||||
caddy fmt --overwrite /etc/caddy/Caddyfile
|
||||
systemctl start caddy
|
||||
msg_ok "Configured headscale-admin"
|
||||
fi
|
||||
|
||||
msg_info "Starting service"
|
||||
systemctl enable -q --now headscale
|
||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
||||
msg_ok "Installed ${APPLICATION} v${RELEASE}"
|
||||
msg_ok "Service started"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm headscale_${RELEASE}_linux_amd64.deb
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleaned"
|
||||
|
@ -283,7 +283,7 @@ GEO_DIR="${INSTALL_DIR}/geodata"
|
||||
mkdir -p "$INSTALL_DIR"
|
||||
mkdir -p {"${APP_DIR}","${UPLOAD_DIR}","${GEO_DIR}","${ML_DIR}","${INSTALL_DIR}"/cache}
|
||||
|
||||
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "latest" "$SRC_DIR"
|
||||
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v1.136.0" "$SRC_DIR"
|
||||
|
||||
msg_info "Installing ${APPLICATION} (more patience please)"
|
||||
|
||||
@ -299,7 +299,7 @@ cd "$SRC_DIR"/web
|
||||
$STD npm ci
|
||||
$STD npm run build
|
||||
cd "$SRC_DIR"
|
||||
cp -a server/{node_modules,dist,bin,resources,package.json,package-lock.json,start*.sh} "$APP_DIR"/
|
||||
cp -a server/{node_modules,dist,bin,resources,package.json,package-lock.json,bin/start.sh} "$APP_DIR"/
|
||||
cp -a web/build "$APP_DIR"/www
|
||||
cp LICENSE "$APP_DIR"
|
||||
cd "$APP_DIR"
|
||||
|
48
install/linkstack-install.sh
Normal file
48
install/linkstack-install.sh
Normal file
@ -0,0 +1,48 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: Omar Minaya | MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://linkstack.org/
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
PHP_VERSION="8.3" PHP_MODULE="sqlite3" PHP_APACHE="YES" setup_php
|
||||
fetch_and_deploy_gh_release "linkstack" "linkstackorg/linkstack" "prebuild" "latest" "/var/www/html/linkstack" "linkstack.zip"
|
||||
|
||||
msg_info "Configuring LinkStack"
|
||||
$STD a2enmod rewrite
|
||||
chown -R www-data:www-data /var/www/html/linkstack
|
||||
chmod -R 755 /var/www/html/linkstack
|
||||
|
||||
cat <<EOF >/etc/apache2/sites-available/linkstack.conf
|
||||
<VirtualHost *:80>
|
||||
ServerAdmin webmaster@localhost
|
||||
DocumentRoot /var/www/html/linkstack
|
||||
ErrorLog /var/log/apache2/linkstack-error.log
|
||||
CustomLog /var/log/apache2/linkstack-access.log combined
|
||||
<Directory /var/www/html/linkstack/>
|
||||
Options Indexes FollowSymLinks
|
||||
AllowOverride All
|
||||
Require all granted
|
||||
</Directory>
|
||||
</VirtualHost>
|
||||
EOF
|
||||
$STD a2dissite 000-default.conf
|
||||
$STD a2ensite linkstack.conf
|
||||
$STD systemctl restart apache2
|
||||
msg_ok "Configured LinkStack"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleaned"
|
44
install/salt-install.sh
Normal file
44
install/salt-install.sh
Normal file
@ -0,0 +1,44 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: bvdberg01
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/saltstack/salt
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y jq
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Setup Salt Repo"
|
||||
mkdir -p /etc/apt/keyrings
|
||||
curl -fsSL https://packages.broadcom.com/artifactory/api/security/keypair/SaltProjectKey/public -o /etc/apt/keyrings/salt-archive-keyring.pgp
|
||||
curl -fsSL https://github.com/saltstack/salt-install-guide/releases/latest/download/salt.sources -o /etc/apt/sources.list.d/salt.sources
|
||||
$STD apt-get update
|
||||
msg_ok "Setup Salt Repo"
|
||||
|
||||
msg_info "Installing Salt"
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/saltstack/salt/releases/latest | jq -r .tag_name | sed 's/^v//')
|
||||
cat <<EOF >/etc/apt/preferences.d/salt-pin-1001
|
||||
Package: salt-*
|
||||
Pin: version ${RELEASE}
|
||||
Pin-Priority: 1001
|
||||
EOF
|
||||
$STD apt-get install -y salt-master
|
||||
echo "${RELEASE}" >/~.salt
|
||||
msg_ok "Installed Salt"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleaned"
|
@ -18,7 +18,7 @@ $STD apt-get install -y \
|
||||
composer \
|
||||
git \
|
||||
nginx \
|
||||
php8.2-{bcmath,common,ctype,curl,fileinfo,fpm,gd,iconv,intl,mbstring,mysql,soap,xml,xsl,zip,cli}
|
||||
php8.2-{bcmath,common,ctype,ldap,curl,fileinfo,fpm,gd,iconv,intl,mbstring,mysql,soap,xml,xsl,zip,cli}
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
setup_mariadb
|
||||
|
@ -13,15 +13,13 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
fetch_and_deploy_gh_release "victoriametrics" "VictoriaMetrics/VictoriaMetrics" "prebuild" "latest" "/opt/victoriametrics" "victoria-metrics-linux-amd64-v+([0-9.]).tar.gz"
|
||||
fetch_and_deploy_gh_release "vmutils" "VictoriaMetrics/VictoriaMetrics" "prebuild" "latest" "/opt/victoriametrics" "vmutils-linux-amd64-v+([0-9.]).tar.gz"
|
||||
fetch_and_deploy_gh_release "victorialogs" "VictoriaMetrics/VictoriaLogs" "prebuild" "latest" "/opt/victoriametrics" "victoria-logs-linux-amd64*.tar.gz"
|
||||
fetch_and_deploy_gh_release "vlutils" "VictoriaMetrics/VictoriaLogs" "prebuild" "latest" "/opt/victoriametrics" "vlutils-linux-amd64*.tar.gz"
|
||||
|
||||
msg_info "Setup VictoriaMetrics"
|
||||
temp_dir=$(mktemp -d)
|
||||
cd $temp_dir
|
||||
mkdir -p /opt/victoriametrics/data
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/VictoriaMetrics/VictoriaMetrics/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
curl -fsSL "https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v${RELEASE}/victoria-metrics-linux-amd64-v${RELEASE}.tar.gz" -o "victoria-metrics-linux-amd64-v${RELEASE}.tar.gz"
|
||||
curl -fsSL "https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v${RELEASE}/vmutils-linux-amd64-v${RELEASE}.tar.gz" -o "vmutils-linux-amd64-v${RELEASE}.tar.gz"
|
||||
tar -xf victoria-metrics-linux-amd64-v${RELEASE}.tar.gz -C /opt/victoriametrics
|
||||
tar -xf vmutils-linux-amd64-v${RELEASE}.tar.gz -C /opt/victoriametrics
|
||||
chmod +x /opt/victoriametrics/*
|
||||
msg_ok "Setup VictoriaMetrics"
|
||||
|
||||
@ -37,10 +35,26 @@ User=root
|
||||
WorkingDirectory=/opt/victoriametrics
|
||||
ExecStart=/opt/victoriametrics/victoria-metrics-prod --storageDataPath="/opt/victoriametrics/data"
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
cat <<EOF >/etc/systemd/system/victoriametrics-logs.service
|
||||
[Unit]
|
||||
Description=VictoriaMetrics Service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
Restart=always
|
||||
User=root
|
||||
WorkingDirectory=/opt/victoriametrics
|
||||
ExecStart=/opt/victoriametrics/victoria-logs-prod
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now victoriametrics
|
||||
systemctl enable -q --now victoriametrics-logs
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
|
@ -23,12 +23,12 @@ fetch_and_deploy_gh_release "wizarr" "wizarrrr/wizarr"
|
||||
|
||||
msg_info "Configure ${APPLICATION}"
|
||||
cd /opt/wizarr
|
||||
uv -q sync --locked
|
||||
$STD uv -q run pybabel compile -d app/translations
|
||||
/usr/local/bin/uv -q sync --locked
|
||||
$STD /usr/local/bin/uv -q run pybabel compile -d app/translations
|
||||
$STD npm --prefix app/static install
|
||||
$STD npm --prefix app/static run build:css
|
||||
mkdir -p ./.cache
|
||||
$STD uv -q run flask db upgrade
|
||||
$STD /usr/local/bin/uv -q run flask db upgrade
|
||||
msg_ok "Configure ${APPLICATION}"
|
||||
|
||||
msg_info "Creating env, start script and service"
|
||||
|
@ -1201,7 +1201,52 @@ EOF
|
||||
# This starts the container and executes <app>-install.sh
|
||||
msg_info "Starting LXC Container"
|
||||
pct start "$CTID"
|
||||
msg_ok "Started LXC Container"
|
||||
|
||||
# wait for status 'running'
|
||||
for i in {1..10}; do
|
||||
if pct status "$CTID" | grep -q "status: running"; then
|
||||
msg_ok "Started LXC Container"
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
if [ "$i" -eq 10 ]; then
|
||||
msg_error "LXC Container did not reach running state"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "$var_os" != "alpine" ]; then
|
||||
msg_info "Waiting for network in LXC container"
|
||||
for i in {1..10}; do
|
||||
if pct exec "$CTID" -- ping -c1 -W1 deb.debian.org >/dev/null 2>&1; then
|
||||
msg_ok "Network in LXC is reachable"
|
||||
break
|
||||
fi
|
||||
if [ "$i" -lt 10 ]; then
|
||||
msg_warn "No network yet in LXC (try $i/10) – waiting..."
|
||||
sleep 3
|
||||
else
|
||||
msg_error "No network in LXC after waiting."
|
||||
read -r -p "Set fallback DNS (1.1.1.1/8.8.8.8)? [y/N]: " choice
|
||||
case "$choice" in
|
||||
[yY]*)
|
||||
pct set "$CTID" --nameserver 1.1.1.1
|
||||
pct set "$CTID" --nameserver 8.8.8.8
|
||||
if pct exec "$CTID" -- ping -c1 -W1 deb.debian.org >/dev/null 2>&1; then
|
||||
msg_ok "Network reachable after DNS fallback"
|
||||
else
|
||||
msg_error "Still no network/DNS in LXC! Aborting customization."
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
msg_error "Aborted by user – no DNS fallback set."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
msg_info "Customizing LXC Container"
|
||||
: "${tz:=Etc/UTC}"
|
||||
@ -1211,7 +1256,7 @@ EOF
|
||||
http://dl-cdn.alpinelinux.org/alpine/latest-stable/main
|
||||
http://dl-cdn.alpinelinux.org/alpine/latest-stable/community
|
||||
EOF'
|
||||
pct exec "$CTID" -- ash -c "apk add bash newt curl openssh nano mc ncurses >/dev/null"
|
||||
pct exec "$CTID" -- ash -c "apk add bash newt curl openssh nano mc ncurses jq >/dev/null"
|
||||
else
|
||||
sleep 3
|
||||
pct exec "$CTID" -- bash -c "sed -i '/$LANG/ s/^# //' /etc/locale.gen"
|
||||
@ -1229,7 +1274,7 @@ EOF'
|
||||
msg_warn "Skipping timezone setup – zone '$tz' not found in container"
|
||||
fi
|
||||
|
||||
pct exec "$CTID" -- bash -c "apt-get update >/dev/null && apt-get install -y sudo curl mc gnupg2 >/dev/null"
|
||||
pct exec "$CTID" -- bash -c "apt-get update >/dev/null && apt-get install -y sudo curl mc gnupg2 jq >/dev/null"
|
||||
fi
|
||||
msg_ok "Customized LXC Container"
|
||||
|
||||
|
@ -396,9 +396,10 @@ function setup_php() {
|
||||
COMBINED_MODULES="${DEFAULT_MODULES}"
|
||||
fi
|
||||
|
||||
# Deduplicate modules
|
||||
# Deduplicate
|
||||
COMBINED_MODULES=$(echo "$COMBINED_MODULES" | tr ',' '\n' | awk '!seen[$0]++' | paste -sd, -)
|
||||
|
||||
# Get current PHP-CLI version
|
||||
local CURRENT_PHP=""
|
||||
if command -v php >/dev/null 2>&1; then
|
||||
CURRENT_PHP=$(php -v 2>/dev/null | awk '/^PHP/{print $2}' | cut -d. -f1,2)
|
||||
@ -420,53 +421,44 @@ function setup_php() {
|
||||
$STD apt-get update
|
||||
fi
|
||||
|
||||
# Build module list
|
||||
local MODULE_LIST="php${PHP_VERSION}"
|
||||
for pkg in $MODULE_LIST; do
|
||||
if ! apt-cache show "$pkg" >/dev/null 2>&1; then
|
||||
msg_error "Package not found: $pkg"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
IFS=',' read -ra MODULES <<<"$COMBINED_MODULES"
|
||||
for mod in "${MODULES[@]}"; do
|
||||
MODULE_LIST+=" php${PHP_VERSION}-${mod}"
|
||||
if apt-cache show "php${PHP_VERSION}-${mod}" >/dev/null 2>&1; then
|
||||
MODULE_LIST+=" php${PHP_VERSION}-${mod}"
|
||||
else
|
||||
msg_warn "PHP-Module ${mod} for PHP ${PHP_VERSION} not found – skipping"
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ "$PHP_FPM" == "YES" ]]; then
|
||||
MODULE_LIST+=" php${PHP_VERSION}-fpm"
|
||||
fi
|
||||
|
||||
# install apache2 with PHP support if requested
|
||||
if [[ "$PHP_APACHE" == "YES" ]]; then
|
||||
$STD apt-get install -y apache2 libapache2-mod-php${PHP_VERSION}
|
||||
$STD systemctl restart apache2 || true
|
||||
fi
|
||||
|
||||
if [[ "$PHP_APACHE" == "YES" ]] && [[ -n "$CURRENT_PHP" ]]; then
|
||||
if [[ -f /etc/apache2/mods-enabled/php${CURRENT_PHP}.load ]]; then
|
||||
$STD a2dismod php${CURRENT_PHP} || true
|
||||
if ! dpkg -l | grep -q "libapache2-mod-php${PHP_VERSION}"; then
|
||||
msg_info "Installing Apache with PHP${PHP_VERSION} support"
|
||||
$STD apt-get install -y apache2 libapache2-mod-php${PHP_VERSION}
|
||||
else
|
||||
msg_info "Apache with PHP${PHP_VERSION} already installed – skipping install"
|
||||
fi
|
||||
$STD a2enmod php${PHP_VERSION}
|
||||
$STD systemctl restart apache2 || true
|
||||
fi
|
||||
|
||||
if [[ "$PHP_FPM" == "YES" ]] && [[ -n "$CURRENT_PHP" ]]; then
|
||||
$STD systemctl stop php${CURRENT_PHP}-fpm || true
|
||||
$STD systemctl disable php${CURRENT_PHP}-fpm || true
|
||||
fi
|
||||
|
||||
# setup / update PHP modules
|
||||
$STD apt-get install -y $MODULE_LIST
|
||||
msg_ok "Setup PHP $PHP_VERSION"
|
||||
|
||||
if [[ "$PHP_FPM" == "YES" ]]; then
|
||||
$STD systemctl enable php${PHP_VERSION}-fpm
|
||||
$STD systemctl restart php${PHP_VERSION}-fpm
|
||||
# optional stop old PHP-FPM service
|
||||
if [[ "$PHP_FPM" == "YES" && -n "$CURRENT_PHP" && "$CURRENT_PHP" != "$PHP_VERSION" ]]; then
|
||||
$STD systemctl stop php"${CURRENT_PHP}"-fpm || true
|
||||
$STD systemctl disable php"${CURRENT_PHP}"-fpm || true
|
||||
fi
|
||||
|
||||
# Patch all relevant php.ini files
|
||||
local PHP_INI_PATHS=("/etc/php/${PHP_VERSION}/cli/php.ini")
|
||||
[[ "$PHP_FPM" == "YES" ]] && PHP_INI_PATHS+=("/etc/php/${PHP_VERSION}/fpm/php.ini")
|
||||
[[ "$PHP_APACHE" == "YES" ]] && PHP_INI_PATHS+=("/etc/php/${PHP_VERSION}/apache2/php.ini")
|
||||
|
||||
for ini in "${PHP_INI_PATHS[@]}"; do
|
||||
if [[ -f "$ini" ]]; then
|
||||
$STD msg_info "Patching $ini"
|
||||
@ -477,8 +469,29 @@ function setup_php() {
|
||||
$STD msg_ok "Patched $ini"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# patch Apache configuration if needed
|
||||
if [[ "$PHP_APACHE" == "YES" ]]; then
|
||||
for mod in $(ls /etc/apache2/mods-enabled/ 2>/dev/null | grep -E '^php[0-9]\.[0-9]\.conf$' | sed 's/\.conf//'); do
|
||||
if [[ "$mod" != "php${PHP_VERSION}" ]]; then
|
||||
$STD a2dismod "$mod" || true
|
||||
fi
|
||||
done
|
||||
$STD a2enmod mpm_prefork
|
||||
$STD a2enmod "php${PHP_VERSION}"
|
||||
$STD systemctl restart apache2 || true
|
||||
fi
|
||||
|
||||
# enable and restart PHP-FPM if requested
|
||||
if [[ "$PHP_FPM" == "YES" ]]; then
|
||||
if systemctl list-unit-files | grep -q "php${PHP_VERSION}-fpm.service"; then
|
||||
$STD systemctl enable php${PHP_VERSION}-fpm
|
||||
$STD systemctl restart php${PHP_VERSION}-fpm
|
||||
else
|
||||
msg_warn "FPM requested but service php${PHP_VERSION}-fpm not found"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
# ------------------------------------------------------------------------------
|
||||
# Installs or updates Composer globally.
|
||||
#
|
||||
|
@ -113,24 +113,22 @@ EOF
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ ! -f /etc/apt/apt.conf.d/no-nag-script ]]; then
|
||||
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 { \"dpkg -V proxmox-widget-toolkit | grep -q '/proxmoxlib\.js$'; if [ \$? -eq 1 ]; 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
|
||||
apt --reinstall install proxmox-widget-toolkit &>/dev/null
|
||||
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
|
||||
fi
|
||||
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" " " \
|
||||
|
@ -9,10 +9,10 @@ header_info() {
|
||||
cat <<"EOF"
|
||||
____ __ _________ ____ __ ____ __ ____
|
||||
/ __ \/ |/ / ____/ / __ \____ _____/ /_ / _/___ _____/ /_____ _/ / /
|
||||
/ /_/ / /|_/ / / __ / /_/ / __ \/ ___/ __/ / // __ \/ ___/ __/ __ `/ / /
|
||||
/ ____/ / / / /_/ / / ____/ /_/ (__ ) /_ _/ // / / (__ ) /_/ /_/ / / /
|
||||
/_/ /_/ /_/\____/ /_/ \____/____/\__/ /___/_/ /_/____/\__/\__,_/_/_/
|
||||
|
||||
/ /_/ / /|_/ / / __ / /_/ / __ \/ ___/ __/ / // __ \/ ___/ __/ __ `/ / /
|
||||
/ ____/ / / / /_/ / / ____/ /_/ (__ ) /_ _/ // / / (__ ) /_/ /_/ / / /
|
||||
/_/ /_/ /_/\____/ /_/ \____/____/\__/ /___/_/ /_/____/\__/\__,_/_/_/
|
||||
|
||||
EOF
|
||||
}
|
||||
|
||||
@ -112,27 +112,25 @@ EOF
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ ! -f /etc/apt/apt.conf.d/no-nag-script ]]; then
|
||||
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"
|
||||
# Normal GUI:
|
||||
echo "DPkg::Post-Invoke { \"dpkg -V proxmox-widget-toolkit | grep -q '/proxmoxlib\.js$'; if [ \$? -eq 1 ]; 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
|
||||
# JS-Library used when accessing via mobile device browser
|
||||
echo "DPkg::Post-Invoke { \"dpkg -V pmg-gui | grep -q '/pmgmanagerlib-mobile\.js$'; if [ \$? -eq 1 ]; 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
|
||||
apt --reinstall install proxmox-widget-toolkit pmg-gui &>/dev/null
|
||||
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
|
||||
fi
|
||||
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"
|
||||
# Normal GUI (proxmox-widget-toolkit)
|
||||
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
|
||||
# JS library used when accessing via mobile device browser
|
||||
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
|
||||
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 pmg-gui &>/dev/null
|
||||
|
||||
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "UPDATE" --menu "\nUpdate Proxmox Mail Gateway now?" 11 58 2 \
|
||||
"yes" " " \
|
||||
|
@ -140,7 +140,7 @@ EOF
|
||||
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 { \"dpkg -V proxmox-widget-toolkit 2>/dev/null && [ -f /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js ] && echo 'Removing subscription nag from UI...' && sed -i '/data\.status/{s/\!/=/;s/active/NoMoreNagging/}' /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js\"; };" >/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
|
||||
msg_ok "Disabled subscription nag (Delete browser cache)"
|
||||
;;
|
||||
no)
|
||||
|
Reference in New Issue
Block a user