mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-07-27 08:17:36 +00:00
Compare commits
34 Commits
tools_php
...
MickLesk-p
Author | SHA1 | Date | |
---|---|---|---|
3bae95cf05 | |||
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
|
cancel-in-progress: false
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
test-json-files:
|
||||||
if: github.repository == 'community-scripts/ProxmoxVE'
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
defaults:
|
defaults:
|
||||||
run:
|
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:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
36
CHANGELOG.md
36
CHANGELOG.md
@ -10,14 +10,48 @@
|
|||||||
> [!CAUTION]
|
> [!CAUTION]
|
||||||
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
|
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
|
||||||
|
|
||||||
## 2025-07-22
|
## 2025-07-24
|
||||||
|
|
||||||
|
## 2025-07-23
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
### 🚀 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
|
- #### ✨ 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))
|
- 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
|
## 2025-07-21
|
||||||
|
|
||||||
### 🆕 New Scripts
|
### 🆕 New Scripts
|
||||||
|
@ -28,6 +28,26 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
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) }')
|
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
|
if [[ "${RELEASE}" != "$(cat ~/.${APP} 2>/dev/null || cat /opt/${APP}_version.txt 2>/dev/null)" ]]; then
|
||||||
|
|
||||||
|
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 @@
|
|||||||
|
_____ ____
|
||||||
|
/ ___/____ _/ / /_
|
||||||
|
\__ \/ __ `/ / __/
|
||||||
|
___/ / /_/ / / /_
|
||||||
|
/____/\__,_/_/\__/
|
||||||
|
|
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"
|
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
|
cd ./frontend || exit
|
||||||
$STD pnpm install
|
$STD pnpm install
|
||||||
$STD pnpm upgrade
|
$STD pnpm upgrade
|
||||||
@ -72,8 +74,6 @@ function update_script() {
|
|||||||
ln -sf /usr/bin/certbot /opt/certbot/bin/certbot
|
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/sbin/nginx /usr/sbin/nginx
|
||||||
ln -sf /usr/local/openresty/nginx/ /etc/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
|
sed -i 's+^daemon+#daemon+g' docker/rootfs/etc/nginx/nginx.conf
|
||||||
NGINX_CONFS=$(find "$(pwd)" -type f -name "*.conf")
|
NGINX_CONFS=$(find "$(pwd)" -type f -name "*.conf")
|
||||||
for NGINX_CONF in $NGINX_CONFS; do
|
for NGINX_CONF in $NGINX_CONFS; do
|
||||||
|
@ -34,6 +34,7 @@ function update_script() {
|
|||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
setup_uv
|
||||||
msg_info "Updating $APP to ${RELEASE}"
|
msg_info "Updating $APP to ${RELEASE}"
|
||||||
systemctl stop sabnzbd
|
systemctl stop sabnzbd
|
||||||
cp -r /opt/sabnzbd /opt/sabnzbd_backup_$(date +%s)
|
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}"
|
6
frontend/package-lock.json
generated
6
frontend/package-lock.json
generated
@ -7749,9 +7749,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/form-data": {
|
"node_modules/form-data": {
|
||||||
"version": "4.0.3",
|
"version": "4.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz",
|
||||||
"integrity": "sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==",
|
"integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
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,14 +1,194 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"name": "advplyr/audiobookshelf",
|
||||||
|
"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": "meilisearch/meilisearch",
|
||||||
|
"version": "prototype-cellulite-0",
|
||||||
|
"date": "2025-07-23T16:21:26Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "grokability/snipe-it",
|
||||||
|
"version": "v8.2.0",
|
||||||
|
"date": "2025-07-23T15:26:10Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": "cockpit-project/cockpit",
|
||||||
|
"version": "343",
|
||||||
|
"date": "2025-07-23T11:21:34Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "zabbix/zabbix",
|
||||||
|
"version": "7.0.17",
|
||||||
|
"date": "2025-07-23T08:11:47Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Jackett/Jackett",
|
||||||
|
"version": "v0.22.2185",
|
||||||
|
"date": "2025-07-23T05:51:56Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": "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": "ollama/ollama",
|
||||||
|
"version": "v0.9.7-rc1",
|
||||||
|
"date": "2025-07-11T22:15:00Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": "keycloak/keycloak",
|
||||||
|
"version": "26.2.6",
|
||||||
|
"date": "2025-07-17T11:16:34Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": "linuxserver/Heimdall",
|
||||||
|
"version": "v2.7.2",
|
||||||
|
"date": "2025-07-22T15:00:08Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": "Luligu/matterbridge",
|
||||||
|
"version": "3.1.6",
|
||||||
|
"date": "2025-07-22T12:22:34Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": "Checkmk/checkmk",
|
||||||
|
"version": "v2.3.0p35-rc1",
|
||||||
|
"date": "2025-07-22T07:29:21Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": "MediaBrowser/Emby.Releases",
|
"name": "MediaBrowser/Emby.Releases",
|
||||||
"version": "4.9.1.2",
|
"version": "4.9.1.2",
|
||||||
"date": "2025-06-26T22:08:00Z"
|
"date": "2025-06-26T22:08:00Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "advplyr/audiobookshelf",
|
|
||||||
"version": "v2.26.2",
|
|
||||||
"date": "2025-07-21T22:47:38Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "ellite/Wallos",
|
"name": "ellite/Wallos",
|
||||||
"version": "v4.0.0",
|
"version": "v4.0.0",
|
||||||
@ -24,36 +204,16 @@
|
|||||||
"version": "v1.64.0",
|
"version": "v1.64.0",
|
||||||
"date": "2025-07-21T20:56:33Z"
|
"date": "2025-07-21T20:56:33Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "Checkmk/checkmk",
|
|
||||||
"version": "v2.4.0p8",
|
|
||||||
"date": "2025-07-21T19:25:40Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "mongodb/mongo",
|
"name": "mongodb/mongo",
|
||||||
"version": "r8.2.0-rc0",
|
"version": "r8.2.0-rc0",
|
||||||
"date": "2025-07-21T19:07:52Z"
|
"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",
|
"name": "HabitRPG/habitica",
|
||||||
"version": "v5.37.2",
|
"version": "v5.37.2",
|
||||||
"date": "2025-07-21T14:08:35Z"
|
"date": "2025-07-21T14:08:35Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "n8n-io/n8n",
|
|
||||||
"version": "n8n@1.102.4",
|
|
||||||
"date": "2025-07-17T11:27:58Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "tobychui/zoraxy",
|
"name": "tobychui/zoraxy",
|
||||||
"version": "v3.2.5r2",
|
"version": "v3.2.5r2",
|
||||||
@ -74,16 +234,6 @@
|
|||||||
"version": "pmm-6401-v1.122.0",
|
"version": "pmm-6401-v1.122.0",
|
||||||
"date": "2025-07-21T10:40:07Z"
|
"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",
|
"name": "homarr-labs/homarr",
|
||||||
"version": "v1.30.0",
|
"version": "v1.30.0",
|
||||||
@ -99,41 +249,11 @@
|
|||||||
"version": "5.0.0",
|
"version": "5.0.0",
|
||||||
"date": "2025-07-21T07:16:58Z"
|
"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",
|
"name": "pocket-id/pocket-id",
|
||||||
"version": "v1.6.4",
|
"version": "v1.6.4",
|
||||||
"date": "2025-07-21T05:53:30Z"
|
"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",
|
"name": "fuma-nama/fumadocs",
|
||||||
"version": "fumadocs-openapi@9.1.4",
|
"version": "fumadocs-openapi@9.1.4",
|
||||||
@ -154,11 +274,6 @@
|
|||||||
"version": "2025.7.19",
|
"version": "2025.7.19",
|
||||||
"date": "2025-07-20T09:44:35Z"
|
"date": "2025-07-20T09:44:35Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "semaphoreui/semaphore",
|
|
||||||
"version": "v2.16.0-beta1",
|
|
||||||
"date": "2025-07-20T09:43:36Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "documenso/documenso",
|
"name": "documenso/documenso",
|
||||||
"version": "v1.12.2-rc.2",
|
"version": "v1.12.2-rc.2",
|
||||||
@ -174,16 +289,6 @@
|
|||||||
"version": "v2.11.5",
|
"version": "v2.11.5",
|
||||||
"date": "2025-07-20T03:14:42Z"
|
"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",
|
"name": "pelican-dev/panel",
|
||||||
"version": "v1.0.0-beta23",
|
"version": "v1.0.0-beta23",
|
||||||
@ -219,31 +324,11 @@
|
|||||||
"version": "v1.2.4",
|
"version": "v1.2.4",
|
||||||
"date": "2025-07-19T07:42:25Z"
|
"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",
|
"name": "Brandawg93/PeaNUT",
|
||||||
"version": "v5.9.4",
|
"version": "v5.9.4",
|
||||||
"date": "2025-07-18T21:50:31Z"
|
"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",
|
"name": "theonedev/onedev",
|
||||||
"version": "v12.0.1",
|
"version": "v12.0.1",
|
||||||
@ -264,16 +349,6 @@
|
|||||||
"version": "e6.0.0-M1.202507-rc.1",
|
"version": "e6.0.0-M1.202507-rc.1",
|
||||||
"date": "2025-07-18T07:48:52Z"
|
"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",
|
"name": "cross-seed/cross-seed",
|
||||||
"version": "v6.13.1",
|
"version": "v6.13.1",
|
||||||
@ -289,16 +364,6 @@
|
|||||||
"version": "v2.1.1.0-2.1.1.0_experimental_2025-07-17",
|
"version": "v2.1.1.0-2.1.1.0_experimental_2025-07-17",
|
||||||
"date": "2025-07-17T20:11:33Z"
|
"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",
|
"name": "wavelog/wavelog",
|
||||||
"version": "2.0.7",
|
"version": "2.0.7",
|
||||||
@ -374,16 +439,6 @@
|
|||||||
"version": "6.8.2",
|
"version": "6.8.2",
|
||||||
"date": "2025-07-15T15:14:16Z"
|
"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",
|
"name": "dgtlmoon/changedetection.io",
|
||||||
"version": "0.50.7",
|
"version": "0.50.7",
|
||||||
@ -424,11 +479,6 @@
|
|||||||
"version": "v3.5.0",
|
"version": "v3.5.0",
|
||||||
"date": "2025-07-14T16:54:21Z"
|
"date": "2025-07-14T16:54:21Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "home-assistant/core",
|
|
||||||
"version": "2025.7.2",
|
|
||||||
"date": "2025-07-14T11:29:58Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "homebridge/homebridge",
|
"name": "homebridge/homebridge",
|
||||||
"version": "v1.11.0",
|
"version": "v1.11.0",
|
||||||
@ -494,11 +544,6 @@
|
|||||||
"version": "v10.9.0",
|
"version": "v10.9.0",
|
||||||
"date": "2025-07-11T12:57:54Z"
|
"date": "2025-07-11T12:57:54Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "traefik/traefik",
|
|
||||||
"version": "v3.4.4",
|
|
||||||
"date": "2025-07-11T08:41:34Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "outline/outline",
|
"name": "outline/outline",
|
||||||
"version": "v0.85.1",
|
"version": "v0.85.1",
|
||||||
@ -514,11 +559,6 @@
|
|||||||
"version": "v2.13.0",
|
"version": "v2.13.0",
|
||||||
"date": "2025-07-10T19:27:54Z"
|
"date": "2025-07-10T19:27:54Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "crowdsecurity/crowdsec",
|
|
||||||
"version": "v1.6.10",
|
|
||||||
"date": "2025-07-10T12:04:30Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "NginxProxyManager/nginx-proxy-manager",
|
"name": "NginxProxyManager/nginx-proxy-manager",
|
||||||
"version": "v2.12.6",
|
"version": "v2.12.6",
|
||||||
@ -534,11 +574,6 @@
|
|||||||
"version": "4.5.2",
|
"version": "4.5.2",
|
||||||
"date": "2025-07-09T19:08:28Z"
|
"date": "2025-07-09T19:08:28Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "raydak-labs/configarr",
|
|
||||||
"version": "v1.13.6",
|
|
||||||
"date": "2025-07-09T17:23:01Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "hargata/lubelog",
|
"name": "hargata/lubelog",
|
||||||
"version": "v1.4.9",
|
"version": "v1.4.9",
|
||||||
@ -565,24 +600,9 @@
|
|||||||
"date": "2025-06-26T14:34:19Z"
|
"date": "2025-06-26T14:34:19Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cockpit-project/cockpit",
|
"name": "mysql/mysql-server",
|
||||||
"version": "342",
|
"version": "mysql-cluster-9.4.0",
|
||||||
"date": "2025-07-09T08:48:21Z"
|
"date": "2025-07-09T08:35:30Z"
|
||||||
},
|
|
||||||
{
|
|
||||||
"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",
|
"name": "Stirling-Tools/Stirling-PDF",
|
||||||
@ -749,11 +769,6 @@
|
|||||||
"version": "v1.3.8",
|
"version": "v1.3.8",
|
||||||
"date": "2025-06-29T07:41:53Z"
|
"date": "2025-06-29T07:41:53Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "goauthentik/authentik",
|
|
||||||
"version": "version/2025.6.3",
|
|
||||||
"date": "2025-06-27T14:01:06Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "tailscale/tailscale",
|
"name": "tailscale/tailscale",
|
||||||
"version": "v1.84.3",
|
"version": "v1.84.3",
|
||||||
@ -1099,11 +1114,6 @@
|
|||||||
"version": "v2.0.1727",
|
"version": "v2.0.1727",
|
||||||
"date": "2025-04-21T17:53:05Z"
|
"date": "2025-04-21T17:53:05Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "TasmoAdmin/TasmoAdmin",
|
|
||||||
"version": "v4.3.0",
|
|
||||||
"date": "2025-04-21T17:44:40Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "caddyserver/caddy",
|
"name": "caddyserver/caddy",
|
||||||
"version": "v2.10.0",
|
"version": "v2.10.0",
|
||||||
@ -1149,11 +1159,6 @@
|
|||||||
"version": "v2.2.0",
|
"version": "v2.2.0",
|
||||||
"date": "2025-03-31T21:31:48Z"
|
"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",
|
"name": "louislam/dockge",
|
||||||
"version": "1.5.0",
|
"version": "1.5.0",
|
||||||
@ -1289,11 +1294,6 @@
|
|||||||
"version": "v0.5.7",
|
"version": "v0.5.7",
|
||||||
"date": "2025-01-17T15:57:17Z"
|
"date": "2025-01-17T15:57:17Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "PCJones/UmlautAdaptarr",
|
|
||||||
"version": "0.7.2",
|
|
||||||
"date": "2025-01-13T22:17:18Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "go-vikunja/vikunja",
|
"name": "go-vikunja/vikunja",
|
||||||
"version": "v0.24.6",
|
"version": "v0.24.6",
|
||||||
|
@ -79,7 +79,7 @@ msg_ok "Installed Documenso"
|
|||||||
|
|
||||||
msg_info "Create User"
|
msg_info "Create User"
|
||||||
PASSWORD_HASH=$(python3 -c "import bcrypt; print(bcrypt.hashpw(b'helper-scripts', bcrypt.gensalt(rounds=12)).decode())")
|
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
|
$STD npm run prisma:migrate-deploy
|
||||||
msg_ok "User created"
|
msg_ok "User created"
|
||||||
|
|
||||||
|
@ -42,10 +42,7 @@ if [[ "$CTTYPE" == "0" ]]; then
|
|||||||
fi
|
fi
|
||||||
msg_ok "Set Up Hardware Acceleration"
|
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)"
|
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 ~
|
cd ~
|
||||||
mkdir -p /opt/frigate/models
|
mkdir -p /opt/frigate/models
|
||||||
curl -fsSL "https://github.com/blakeblackshear/frigate/archive/refs/tags/v0.14.1.tar.gz" -o "frigate.tar.gz"
|
curl -fsSL "https://github.com/blakeblackshear/frigate/archive/refs/tags/v0.14.1.tar.gz" -o "frigate.tar.gz"
|
||||||
|
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"
|
@ -1201,7 +1201,52 @@ EOF
|
|||||||
# This starts the container and executes <app>-install.sh
|
# This starts the container and executes <app>-install.sh
|
||||||
msg_info "Starting LXC Container"
|
msg_info "Starting LXC Container"
|
||||||
pct start "$CTID"
|
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"
|
msg_info "Customizing LXC Container"
|
||||||
: "${tz:=Etc/UTC}"
|
: "${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/main
|
||||||
http://dl-cdn.alpinelinux.org/alpine/latest-stable/community
|
http://dl-cdn.alpinelinux.org/alpine/latest-stable/community
|
||||||
EOF'
|
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
|
else
|
||||||
sleep 3
|
sleep 3
|
||||||
pct exec "$CTID" -- bash -c "sed -i '/$LANG/ s/^# //' /etc/locale.gen"
|
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"
|
msg_warn "Skipping timezone setup – zone '$tz' not found in container"
|
||||||
fi
|
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
|
fi
|
||||||
msg_ok "Customized LXC Container"
|
msg_ok "Customized LXC Container"
|
||||||
|
|
||||||
|
@ -396,9 +396,10 @@ function setup_php() {
|
|||||||
COMBINED_MODULES="${DEFAULT_MODULES}"
|
COMBINED_MODULES="${DEFAULT_MODULES}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Deduplicate modules
|
# Deduplicate
|
||||||
COMBINED_MODULES=$(echo "$COMBINED_MODULES" | tr ',' '\n' | awk '!seen[$0]++' | paste -sd, -)
|
COMBINED_MODULES=$(echo "$COMBINED_MODULES" | tr ',' '\n' | awk '!seen[$0]++' | paste -sd, -)
|
||||||
|
|
||||||
|
# Get current PHP-CLI version
|
||||||
local CURRENT_PHP=""
|
local CURRENT_PHP=""
|
||||||
if command -v php >/dev/null 2>&1; then
|
if command -v php >/dev/null 2>&1; then
|
||||||
CURRENT_PHP=$(php -v 2>/dev/null | awk '/^PHP/{print $2}' | cut -d. -f1,2)
|
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
|
$STD apt-get update
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Build module list
|
||||||
local MODULE_LIST="php${PHP_VERSION}"
|
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"
|
IFS=',' read -ra MODULES <<<"$COMBINED_MODULES"
|
||||||
for mod in "${MODULES[@]}"; do
|
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
|
done
|
||||||
|
|
||||||
if [[ "$PHP_FPM" == "YES" ]]; then
|
if [[ "$PHP_FPM" == "YES" ]]; then
|
||||||
MODULE_LIST+=" php${PHP_VERSION}-fpm"
|
MODULE_LIST+=" php${PHP_VERSION}-fpm"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# install apache2 with PHP support if requested
|
||||||
if [[ "$PHP_APACHE" == "YES" ]]; then
|
if [[ "$PHP_APACHE" == "YES" ]]; then
|
||||||
$STD apt-get install -y apache2 libapache2-mod-php${PHP_VERSION}
|
if ! dpkg -l | grep -q "libapache2-mod-php${PHP_VERSION}"; then
|
||||||
$STD systemctl restart apache2 || true
|
msg_info "Installing Apache with PHP${PHP_VERSION} support"
|
||||||
fi
|
$STD apt-get install -y apache2 libapache2-mod-php${PHP_VERSION}
|
||||||
|
else
|
||||||
if [[ "$PHP_APACHE" == "YES" ]] && [[ -n "$CURRENT_PHP" ]]; then
|
msg_info "Apache with PHP${PHP_VERSION} already installed – skipping install"
|
||||||
if [[ -f /etc/apache2/mods-enabled/php${CURRENT_PHP}.load ]]; then
|
|
||||||
$STD a2dismod php${CURRENT_PHP} || true
|
|
||||||
fi
|
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
|
fi
|
||||||
|
|
||||||
|
# setup / update PHP modules
|
||||||
$STD apt-get install -y $MODULE_LIST
|
$STD apt-get install -y $MODULE_LIST
|
||||||
msg_ok "Setup PHP $PHP_VERSION"
|
msg_ok "Setup PHP $PHP_VERSION"
|
||||||
|
|
||||||
if [[ "$PHP_FPM" == "YES" ]]; then
|
# optional stop old PHP-FPM service
|
||||||
$STD systemctl enable php${PHP_VERSION}-fpm
|
if [[ "$PHP_FPM" == "YES" && -n "$CURRENT_PHP" && "$CURRENT_PHP" != "$PHP_VERSION" ]]; then
|
||||||
$STD systemctl restart php${PHP_VERSION}-fpm
|
$STD systemctl stop php"${CURRENT_PHP}"-fpm || true
|
||||||
|
$STD systemctl disable php"${CURRENT_PHP}"-fpm || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Patch all relevant php.ini files
|
# Patch all relevant php.ini files
|
||||||
local PHP_INI_PATHS=("/etc/php/${PHP_VERSION}/cli/php.ini")
|
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_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")
|
[[ "$PHP_APACHE" == "YES" ]] && PHP_INI_PATHS+=("/etc/php/${PHP_VERSION}/apache2/php.ini")
|
||||||
|
|
||||||
for ini in "${PHP_INI_PATHS[@]}"; do
|
for ini in "${PHP_INI_PATHS[@]}"; do
|
||||||
if [[ -f "$ini" ]]; then
|
if [[ -f "$ini" ]]; then
|
||||||
$STD msg_info "Patching $ini"
|
$STD msg_info "Patching $ini"
|
||||||
@ -477,8 +469,29 @@ function setup_php() {
|
|||||||
$STD msg_ok "Patched $ini"
|
$STD msg_ok "Patched $ini"
|
||||||
fi
|
fi
|
||||||
done
|
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.
|
# Installs or updates Composer globally.
|
||||||
#
|
#
|
||||||
|
@ -113,24 +113,22 @@ EOF
|
|||||||
;;
|
;;
|
||||||
esac
|
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 \
|
||||||
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" " " \
|
||||||
"yes" " " \
|
"no" " " 3>&2 2>&1 1>&3)
|
||||||
"no" " " 3>&2 2>&1 1>&3)
|
case $CHOICE in
|
||||||
case $CHOICE in
|
yes)
|
||||||
yes)
|
whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox --title "Support Subscriptions" "Supporting the software's development team is essential. Check their official website's Support Subscriptions for pricing. Without their dedicated work, we wouldn't have this exceptional software." 10 58
|
||||||
whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox --title "Support Subscriptions" "Supporting the software's development team is essential. 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"
|
||||||
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
|
||||||
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
|
msg_ok "Disabled subscription nag (Delete browser cache)"
|
||||||
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
|
||||||
no)
|
msg_error "Selected no to Disabling subscription nag"
|
||||||
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
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "UPDATE" --menu "\nUpdate Proxmox Backup Server now?" 11 58 2 \
|
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "UPDATE" --menu "\nUpdate Proxmox Backup Server now?" 11 58 2 \
|
||||||
"yes" " " \
|
"yes" " " \
|
||||||
|
@ -9,10 +9,10 @@ header_info() {
|
|||||||
cat <<"EOF"
|
cat <<"EOF"
|
||||||
____ __ _________ ____ __ ____ __ ____
|
____ __ _________ ____ __ ____ __ ____
|
||||||
/ __ \/ |/ / ____/ / __ \____ _____/ /_ / _/___ _____/ /_____ _/ / /
|
/ __ \/ |/ / ____/ / __ \____ _____/ /_ / _/___ _____/ /_____ _/ / /
|
||||||
/ /_/ / /|_/ / / __ / /_/ / __ \/ ___/ __/ / // __ \/ ___/ __/ __ `/ / /
|
/ /_/ / /|_/ / / __ / /_/ / __ \/ ___/ __/ / // __ \/ ___/ __/ __ `/ / /
|
||||||
/ ____/ / / / /_/ / / ____/ /_/ (__ ) /_ _/ // / / (__ ) /_/ /_/ / / /
|
/ ____/ / / / /_/ / / ____/ /_/ (__ ) /_ _/ // / / (__ ) /_/ /_/ / / /
|
||||||
/_/ /_/ /_/\____/ /_/ \____/____/\__/ /___/_/ /_/____/\__/\__,_/_/_/
|
/_/ /_/ /_/\____/ /_/ \____/____/\__/ /___/_/ /_/____/\__/\__,_/_/_/
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -112,27 +112,25 @@ EOF
|
|||||||
;;
|
;;
|
||||||
esac
|
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 \
|
||||||
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" " " \
|
||||||
"yes" " " \
|
"no" " " 3>&2 2>&1 1>&3)
|
||||||
"no" " " 3>&2 2>&1 1>&3)
|
case $CHOICE in
|
||||||
case $CHOICE in
|
yes)
|
||||||
yes)
|
whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox --title "Support Subscriptions" "Supporting the software's development team is essential. Check their official website's Support Subscriptions for pricing. Without their dedicated work, we wouldn't have this exceptional software." 10 58
|
||||||
whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox --title "Support Subscriptions" "Supporting the software's development team is essential. 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"
|
||||||
msg_info "Disabling subscription nag"
|
# Normal GUI (proxmox-widget-toolkit)
|
||||||
# Normal GUI:
|
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
|
||||||
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
|
||||||
# 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
|
||||||
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
|
msg_ok "Disabled subscription nag (Delete browser cache)"
|
||||||
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
|
||||||
no)
|
msg_error "Selected no to disabling subscription nag"
|
||||||
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
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "UPDATE" --menu "\nUpdate Proxmox Mail Gateway now?" 11 58 2 \
|
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "UPDATE" --menu "\nUpdate Proxmox Mail Gateway now?" 11 58 2 \
|
||||||
"yes" " " \
|
"yes" " " \
|
||||||
|
@ -140,7 +140,7 @@ EOF
|
|||||||
yes)
|
yes)
|
||||||
whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox --title "Support Subscriptions" "Supporting the software's development team is essential. Check their official website's Support Subscriptions for pricing. Without their dedicated work, we wouldn't have this exceptional software." 10 58
|
whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox --title "Support Subscriptions" "Supporting the software's development team is essential. 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"
|
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)"
|
msg_ok "Disabled subscription nag (Delete browser cache)"
|
||||||
;;
|
;;
|
||||||
no)
|
no)
|
||||||
|
Reference in New Issue
Block a user