Compare commits

..

83 Commits

Author SHA1 Message Date
community-scripts-pr-app[bot]
e176779d49 Update CHANGELOG.md (#6254)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-26 00:13:38 +00:00
community-scripts-pr-app[bot]
44cee5f303 Update versions.json (#6253)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-26 02:13:16 +02:00
CanbiZ
22ccd36e55 Update alpine-teamspeak-server-install.sh 2025-07-25 14:50:56 +02:00
CanbiZ
c688887f43 Update alpine-teamspeak-server-install.sh 2025-07-25 14:46:56 +02:00
community-scripts-pr-app[bot]
6afa25b06b Update CHANGELOG.md (#6248)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-25 12:44:13 +00:00
Chris
02ad46585e Immich: fix #6236 (#6243) 2025-07-25 14:43:53 +02:00
CanbiZ
2c57cd815b Update alpine-teamspeak-server-install.sh 2025-07-25 14:43:40 +02:00
community-scripts-pr-app[bot]
72fc8a1880 Update CHANGELOG.md (#6247)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-25 12:05:38 +00:00
community-scripts-pr-app[bot]
72cf24fef4 Update versions.json (#6246)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-25 14:05:18 +02:00
Slaviša Arežina
a7a6a81596 Fix RELEASE fetch (#6237) 2025-07-25 13:29:59 +02:00
community-scripts-pr-app[bot]
470a2593a2 Update .app files (#6241)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-07-25 12:42:49 +02:00
community-scripts-pr-app[bot]
7efdc02bc4 Update CHANGELOG.md (#6242)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-25 10:40:59 +00:00
community-scripts-pr-app[bot]
c1ebb07416 Update CHANGELOG.md (#6240)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-25 10:40:40 +00:00
community-scripts-pr-app[bot]
9cf83f0ef4 Update date in json (#6239)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-07-25 10:40:37 +00:00
push-app-to-main[bot]
57a299fe03 Cleanuparr (#6238)
* 'Add new script'

* Update cleanuparr.sh

* Update cleanuparr.sh

* Update cleanuparr-install.sh

* Update frontend/public/json/cleanuparr.json

Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>

* Update frontend/public/json/cleanuparr.json

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>
2025-07-25 12:40:21 +02:00
ape364
7272c8dd50 Update pulse.json (#6235)
fix link
2025-07-25 12:16:10 +02:00
Slaviša Arežina
aa9373402e Update headscale-install.sh (#6229) 2025-07-25 08:24:12 +02:00
community-scripts-pr-app[bot]
ff429ded15 Update CHANGELOG.md (#6226)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-25 05:05:42 +00:00
Chris
5b6b55d37a Immich v1.136.0 (#6219)
- change path of copy command
- pin to latest working version rather than latest
2025-07-25 07:05:19 +02:00
community-scripts-pr-app[bot]
e8e90ce5b5 Update CHANGELOG.md (#6225)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-25 05:03:52 +00:00
Chris
1ae40a929b Wizarr: use absolute path to uv (#6221)
- for reasons unknown, updating to 2025.7.7 failed due to uv not being
in the PATH anymore
2025-07-25 07:03:30 +02:00
community-scripts-pr-app[bot]
0484259f39 Update CHANGELOG.md (#6223)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-25 00:13:46 +00:00
community-scripts-pr-app[bot]
cadd0a53bd Update versions.json (#6222)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-25 02:13:25 +02:00
community-scripts-pr-app[bot]
c82c185e4e Update CHANGELOG.md (#6220)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-24 20:04:36 +00:00
Michel Roegl-Brunner
89b2b21761 snipeit-install.sh (#6217) 2025-07-24 22:04:16 +02:00
community-scripts-pr-app[bot]
0a722a242f Update CHANGELOG.md (#6218)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-24 19:37:43 +00:00
Slaviša Arežina
01be7acf10 Refactor (#6210) 2025-07-24 21:37:20 +02:00
community-scripts-pr-app[bot]
2d66d09de2 Update CHANGELOG.md (#6216)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-24 19:01:18 +00:00
Slaviša Arežina
67069cfb21 Refactor (#6197) 2025-07-24 21:01:05 +02:00
community-scripts-pr-app[bot]
e78c590772 Update CHANGELOG.md (#6215)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-24 19:00:58 +00:00
Slaviša Arežina
d956763642 Refactor (#6202) 2025-07-24 21:00:41 +02:00
community-scripts-pr-app[bot]
af4aedf15a Update CHANGELOG.md (#6214)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-24 19:00:34 +00:00
Slaviša Arežina
e25f3dce52 Headscale: Add headscale-admin UI as option (#6205) 2025-07-24 21:00:13 +02:00
community-scripts-pr-app[bot]
eda1b1aea8 Update CHANGELOG.md (#6213)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-24 18:39:03 +00:00
CanbiZ
16e2d2206c Immich: Pin Version to v1.135.3 (#6212)
* Immich: Pin Version to v1.135.3

* Update immich.sh
2025-07-24 20:38:38 +02:00
community-scripts-pr-app[bot]
33a03f4b0e Update CHANGELOG.md (#6208)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-24 14:12:46 +00:00
Slaviša Arežina
5867ef3288 Refactor: go2rtc (#6198)
* Refactor

* Update ct/go2rtc.sh
2025-07-24 16:12:20 +02:00
community-scripts-pr-app[bot]
8ef59b590a Update .app files (#6204)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-07-24 14:53:43 +02:00
community-scripts-pr-app[bot]
72d6fb40dc Update CHANGELOG.md (#6203)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-24 12:52:36 +00:00
Slaviša Arežina
7e9d786202 Alpine TeamSpeak Server (#6201)
* Add Alpine TeamSpeak Server

* Update alpine-teamspeak-server.sh

* Update json

* Update json
2025-07-24 14:52:16 +02:00
CanbiZ
ed934a21ff habitica: ensure config is available before build 2025-07-24 14:32:39 +02:00
community-scripts-pr-app[bot]
c9015cca20 Update versions.json (#6200)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-24 14:05:46 +02:00
community-scripts-pr-app[bot]
b52e958623 Update CHANGELOG.md (#6196)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-24 10:43:52 +00:00
Slaviša Arežina
1f51e96cb1 Refactor: Headscale (#6180) 2025-07-24 12:43:32 +02:00
community-scripts-pr-app[bot]
de1a93bf6d Update CHANGELOG.md (#6194)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-24 09:44:28 +00:00
CanbiZ
8bfb78e001 Habitica: force npm to 10 (#6192) 2025-07-24 11:44:07 +02:00
community-scripts-pr-app[bot]
4fa4ed35cc Update CHANGELOG.md (#6193)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-24 08:57:43 +00:00
CanbiZ
4a050f3723 sabnzbd: add uv setup in update (#6191) 2025-07-24 10:57:20 +02:00
community-scripts-pr-app[bot]
9304835775 Update CHANGELOG.md (#6188)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-24 00:13:54 +00:00
community-scripts-pr-app[bot]
a2fa104176 Update versions.json (#6187)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-24 02:13:31 +02:00
community-scripts-pr-app[bot]
3c0888abdd Update versions.json (#6178)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-23 14:05:47 +02:00
community-scripts-pr-app[bot]
d6af60f0c0 Update CHANGELOG.md (#6176)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-23 10:23:13 +00:00
CanbiZ
0a83090ad2 documenso: remove customer_id by creating initial user (#6171) 2025-07-23 12:22:54 +02:00
CanbiZ
035419b4b9 Update frigate-install.sh 2025-07-23 10:11:45 +02:00
community-scripts-pr-app[bot]
d19130d8f1 Update CHANGELOG.md (#6169)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-23 00:14:23 +00:00
community-scripts-pr-app[bot]
b36f982fc2 Update versions.json (#6168)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-23 02:14:04 +02:00
community-scripts-pr-app[bot]
d67fa6cf38 Update CHANGELOG.md (#6166)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-22 18:49:25 +00:00
community-scripts-pr-app[bot]
4201ab58ab Update CHANGELOG.md (#6163)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-22 17:09:39 +00:00
Denis Chernov
0f3b95b3ff Fixed the previous fix on anti-nag hook, propagated fixed to other ProxMox products and fixed 8.0 compatibility (#6162) 2025-07-22 19:09:14 +02:00
Bram Suurd
feea82e0ba Add GitHub Actions workflow to validate JSON files in the frontend directory (#6152)
* Add GitHub Actions workflow to validate JSON files in the frontend directory

* test new github workflow by invalidating script

* Revalidate json script to also test workflow

* Refactor GitHub Actions workflow to validate JSON files using Python.

* test github workflow

* Update description in apache-tomcat.json for clarity and consistency.

* Consolidate JSON validation workflow: Migrate test-jsons.yml functionality into frontend-cicd.yml, enhancing CI process by validating JSON files in the public directory with Python.

* test to see if workflow fails

* test to see if workflow passes

* testing

* testing to see if workflow runs and works

* test again

* testing to see if it works
2025-07-22 16:00:10 +02:00
community-scripts-pr-app[bot]
0e0c954f0c Update CHANGELOG.md (#6161)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-22 13:57:17 +00:00
community-scripts-pr-app[bot]
6b74f6247f Update CHANGELOG.md (#6160)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-22 13:56:51 +00:00
community-scripts-pr-app[bot]
4159ba3970 Update date in json (#6159)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-07-22 13:56:45 +00:00
push-app-to-main[bot]
a53daa3559 Salt (#6116)
* 'Add new script'

* curl

* hdd

* logo

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
2025-07-22 15:56:22 +02:00
CanbiZ
4b3233d6a8 qf: php 2025-07-22 15:55:56 +02:00
community-scripts-pr-app[bot]
ff51b1e5dc Update CHANGELOG.md (#6157)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-22 13:53:04 +00:00
TJ
1aab127bdf Update tools.func - typo (#6156)
This was triggered when running the Gitea install script
2025-07-22 15:52:41 +02:00
community-scripts-pr-app[bot]
baf7dff759 Update CHANGELOG.md (#6153)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-22 13:03:00 +00:00
dependabot[bot]
b4ec04a54f Bump form-data from 4.0.3 to 4.0.4 in /frontend (#6150)
Bumps [form-data](https://github.com/form-data/form-data) from 4.0.3 to 4.0.4.
- [Release notes](https://github.com/form-data/form-data/releases)
- [Changelog](https://github.com/form-data/form-data/blob/master/CHANGELOG.md)
- [Commits](https://github.com/form-data/form-data/compare/v4.0.3...v4.0.4)

---
updated-dependencies:
- dependency-name: form-data
  dependency-version: 4.0.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-22 15:02:33 +02:00
community-scripts-pr-app[bot]
2ee8269684 Update CHANGELOG.md (#6151)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-22 12:47:13 +00:00
CanbiZ
84860a9893 [core]: Improved LXC Container Startup Handling (#6142)
* [core]: Improved LXC Container Startup Handling

* Update build.func

---------

Co-authored-by: Tobias <96661824+CrazyWolf13@users.noreply.github.com>
2025-07-22 14:46:50 +02:00
CanbiZ
ebb7da43c1 Update tools.func 2025-07-22 14:18:34 +02:00
community-scripts-pr-app[bot]
44c584dced Update versions.json (#6149)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-22 14:05:29 +02:00
community-scripts-pr-app[bot]
2bede5256f Update CHANGELOG.md (#6145)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-22 11:14:28 +00:00
CanbiZ
2848cf6d6b [core]: tools.func: increase setup_php function (#6141)
* tools.func: increase setup_php function

* better verbose output
2025-07-22 13:14:09 +02:00
community-scripts-pr-app[bot]
bce076161e Update CHANGELOG.md (#6144)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-22 10:18:15 +00:00
community-scripts-pr-app[bot]
040a15aa3e Update CHANGELOG.md (#6143)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-22 10:17:58 +00:00
Tobias
5c0cffce6f gitea-mirror: add: migration to 3.0 (#6138) 2025-07-22 12:17:53 +02:00
push-app-to-main[bot]
d552fb86c1 LinkStack (#6137)
* 'Add new script'

* Update linkstack.sh

* Update linkstack.json

* Update linkstack.sh

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
2025-07-22 12:17:35 +02:00
community-scripts-pr-app[bot]
42af89dd2d Update CHANGELOG.md (#6140)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-22 08:38:15 +00:00
Jehu Marcos Herrera Puentes
003fc3c080 fix(nginxproxymanager.sh): Set the version number before build. (#6139)
Signed-off-by: JMarcosHP <jehuherrerap@hotmail.com>
2025-07-22 10:37:54 +02:00
community-scripts-pr-app[bot]
a638dc8672 Update CHANGELOG.md (#6135)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-22 06:48:54 +00:00
Tobias
d7668531e7 wallos: add cron in installer for yearly cost (#6133)
* wallos: fix: yearly cost

* Update wallos.sh

* Update wallos.sh

---------

Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
2025-07-22 08:48:29 +02:00
50 changed files with 1362 additions and 505 deletions

81
.github/workflows/frontend-cicd.yml generated vendored
View File

@@ -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

View File

@@ -10,6 +10,89 @@
> [!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-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 ## 2025-07-21
### 🆕 New Scripts ### 🆕 New Scripts

View 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
View 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}"

View File

@@ -27,25 +27,19 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/duplicati/duplicati/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}') 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" msg_info "Stopping $APP"
systemctl stop duplicati systemctl stop duplicati
msg_ok "Stopped $APP" 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") fetch_and_deploy_gh_release "duplicati" "duplicati/duplicati" "binary" "latest" "/opt/duplicati" "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}"
msg_info "Starting $APP" msg_info "Starting $APP"
systemctl start duplicati systemctl start duplicati
msg_ok "Started $APP" msg_ok "Started $APP"
msg_info "Cleaning Up"
rm -rf ~/duplicati-${RELEASE}-linux-x64-gui.deb
msg_ok "Cleanup Completed"
msg_ok "Update Successful" msg_ok "Update Successful"
else else
msg_ok "No update required. ${APP} is already at v${RELEASE}" msg_ok "No update required. ${APP} is already at v${RELEASE}"

View File

@@ -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

View File

@@ -27,14 +27,23 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
msg_info "Updating $APP"
systemctl stop go2rtc RELEASE=$(curl -fsSL https://api.github.com/repos/AlexxIT/go2rtc/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
cd /opt/go2rtc if [[ "${RELEASE}" != "$(cat ~/.go2rtc 2>/dev/null)" ]] || [[ ! -f ~/.go2rtc ]]; then
rm go2rtc_linux_amd64 msg_info "Stopping service"
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") systemctl stop go2rtc
chmod +x go2rtc_linux_amd64 msg_ok "Stopped service"
systemctl start go2rtc
msg_ok "Updated $APP" 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 exit
} }

View File

@@ -27,8 +27,27 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
msg_error "Currently we don't provide an update function for this ${APP}." if [[ -f /opt/${APP}_version.txt ]]; then
exit 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 start
@@ -38,4 +57,4 @@ description
msg_ok "Completed Successfully!\n" msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${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}"

View File

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

6
ct/headers/cleanuparr Normal file
View File

@@ -0,0 +1,6 @@
________
/ ____/ /__ ____ _____ __ ______ ____ ___________
/ / / / _ \/ __ `/ __ \/ / / / __ \/ __ `/ ___/ ___/
/ /___/ / __/ /_/ / / / / /_/ / /_/ / /_/ / / / /
\____/_/\___/\__,_/_/ /_/\__,_/ .___/\__,_/_/ /_/
/_/

6
ct/headers/linkstack Normal file
View File

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

6
ct/headers/salt Normal file
View File

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

View File

@@ -27,18 +27,18 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi 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) }') 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}" msg_info "Stopping ${APP}"
systemctl stop headscale systemctl stop headscale
msg_ok "Stopped ${APP}" msg_ok "Stopped ${APP}"
msg_info "Updating $APP to v${RELEASE}" fetch_and_deploy_gh_release "headscale" "juanfont/headscale" "binary"
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") fetch_and_deploy_gh_release "headscale-admin" "GoodiesHQ/headscale-admin" "prebuild" "latest" "/opt/headscale-admin" "admin.zip"
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}"
msg_info "Starting ${APP}" msg_info "Starting ${APP}"
# Temporary fix until headscale project resolves service getting disabled on updates. # Temporary fix until headscale project resolves service getting disabled on updates.

View File

@@ -58,7 +58,8 @@ function update_script() {
done done
msg_ok "Image-processing libraries updated" msg_ok "Image-processing libraries updated"
fi 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 if [[ -f ~/.immich && "$RELEASE" == "$(cat ~/.immich)" ]]; then
msg_ok "No update required. ${APP} is already at v${RELEASE}" msg_ok "No update required. ${APP} is already at v${RELEASE}"
exit exit
@@ -102,7 +103,7 @@ function update_script() {
mkdir -p "$ML_DIR" mkdir -p "$ML_DIR"
rm -rf "$SRC_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" msg_info "Updating ${APP} web and microservices"
cd "$SRC_DIR"/server cd "$SRC_DIR"/server
@@ -120,7 +121,7 @@ function update_script() {
$STD npm ci $STD npm ci
$STD npm run build $STD npm run build
cd "$SRC_DIR" 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 -a web/build "$APP_DIR"/www
cp LICENSE "$APP_DIR" cp LICENSE "$APP_DIR"
cd "$APP_DIR" cd "$APP_DIR"

43
ct/linkstack.sh Normal file
View 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}"

View File

@@ -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

View File

@@ -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
View 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}"

View File

@@ -27,31 +27,25 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/VictoriaMetrics/VictoriaMetrics/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') 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" msg_info "Stopping $APP"
systemctl stop victoriametrics systemctl stop victoriametrics
[[ -f /etc/systemd/system/victoriametrics-logs.service ]] && systemctl stop victoriametrics-logs
msg_ok "Stopped $APP" msg_ok "Stopped $APP"
msg_info "Updating ${APP} to v${RELEASE}" fetch_and_deploy_gh_release "victoriametrics" "VictoriaMetrics/VictoriaMetrics" "prebuild" "latest" "/opt/victoriametrics" "victoria-metrics-linux-amd64-v+([0-9.]).tar.gz"
temp_dir=$(mktemp -d) fetch_and_deploy_gh_release "vmutils" "VictoriaMetrics/VictoriaMetrics" "prebuild" "latest" "/opt/victoriametrics" "vmutils-linux-amd64-v+([0-9.]).tar.gz"
cd $temp_dir fetch_and_deploy_gh_release "victorialogs" "VictoriaMetrics/VictoriaLogs" "prebuild" "latest" "/opt/victoriametrics" "victoria-logs-linux-amd64*.tar.gz"
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") fetch_and_deploy_gh_release "vlutils" "VictoriaMetrics/VictoriaLogs" "prebuild" "latest" "/opt/victoriametrics" "vlutils-linux-amd64*.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
chmod +x /opt/victoriametrics/* chmod +x /opt/victoriametrics/*
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to v${RELEASE}"
msg_info "Starting $APP" msg_info "Starting $APP"
systemctl start victoriametrics systemctl start victoriametrics
[[ -f /etc/systemd/system/victoriametrics-logs.service ]] && systemctl start victoriametrics-logs
msg_ok "Started $APP" msg_ok "Started $APP"
msg_info "Cleaning Up"
rm -rf $temp_dir
msg_ok "Cleaned"
msg_ok "Updated Successfully" msg_ok "Updated Successfully"
else else
msg_ok "No update required. ${APP} is already at ${RELEASE}" msg_ok "No update required. ${APP} is already at ${RELEASE}"

View File

@@ -41,6 +41,9 @@ function update_script() {
rm -rf /opt/wallos/db/wallos.empty.db rm -rf /opt/wallos/db/wallos.empty.db
mv /opt/wallos.db /opt/wallos/db/wallos.db mv /opt/wallos.db /opt/wallos/db/wallos.db
mv /opt/logos/* /opt/wallos/images/uploads/logos mv /opt/logos/* /opt/wallos/images/uploads/logos
if ! grep -q "storetotalyearlycost.php" /opt/wallos.cron; then
echo "30 1 * * 1 php /opt/wallos/endpoints/cronjobs/storetotalyearlycost.php >> /var/log/cron/storetotalyearlycost.log 2>&1" >> /opt/wallos.cron
fi
chown -R www-data:www-data /opt/wallos chown -R www-data:www-data /opt/wallos
chmod -R 755 /opt/wallos chmod -R 755 /opt/wallos
mkdir -p /var/log/cron mkdir -p /var/log/cron

View File

@@ -45,13 +45,13 @@ function update_script() {
msg_info "Updating $APP to v${RELEASE}" msg_info "Updating $APP to v${RELEASE}"
cd /opt/wizarr cd /opt/wizarr
uv -q sync --locked /usr/local/bin/uv -q sync --locked
$STD uv -q run pybabel compile -d app/translations $STD /usr/local/bin/uv -q run pybabel compile -d app/translations
$STD npm --prefix app/static install $STD npm --prefix app/static install
$STD npm --prefix app/static run build:css $STD npm --prefix app/static run build:css
mkdir -p ./.cache mkdir -p ./.cache
$STD tar -xf "$BACKUP_FILE" --directory=/ $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_ok "Updated $APP to v${RELEASE}"
msg_info "Starting $APP" msg_info "Starting $APP"

View File

@@ -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": {

View 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": []
}

View File

@@ -35,6 +35,10 @@
{ {
"text": "Configuration settings: `/etc/headscale/config.yaml`", "text": "Configuration settings: `/etc/headscale/config.yaml`",
"type": "info" "type": "info"
},
{
"text": "Access headscale-admin UI via `http://<LXC-IP>/admin/`",
"type": "info"
} }
] ]
} }

View 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"
}
]
}

View File

@@ -33,7 +33,7 @@
}, },
"notes": [ "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" "type": "Info"
}, },
{ {

View 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": []
}

View File

@@ -1,40 +1,55 @@
{ {
"name": "Teamspeak-Server", "name": "Teamspeak-Server",
"slug": "teamspeak-server", "slug": "teamspeak-server",
"categories": [ "categories": [
24 24
], ],
"date_created": "2025-07-21", "date_created": "2025-07-21",
"type": "ct", "type": "ct",
"updateable": true, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 9987, "interface_port": 9987,
"documentation": "https://support.teamspeak.com/hc/en-us/categories/360000302017-TeamSpeak-3", "documentation": "https://support.teamspeak.com/hc/en-us/categories/360000302017-TeamSpeak-3",
"website": "https://teamspeak.com/", "website": "https://teamspeak.com/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/teamspeak-light.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/teamspeak-light.webp",
"config_path": "", "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 crystalclear, lowlatency voice communication.", "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 crystalclear, lowlatency voice communication.",
"install_methods": [ "install_methods": [
{ {
"type": "default", "type": "default",
"script": "ct/teamspeak-server.sh", "script": "ct/teamspeak-server.sh",
"resources": { "resources": {
"cpu": 1, "cpu": 1,
"ram": 512, "ram": 512,
"hdd": 2, "hdd": 2,
"os": "debian", "os": "debian",
"version": "12" "version": "12"
} }
}
],
"default_credentials": {
"username": null,
"password": null
}, },
"notes": [ {
{ "type": "alpine",
"text": "Use `journalctl -u teamspeak-server.service` inside LXC console to check for admin credentials!", "script": "ct/alpine-teamspeak-server.sh",
"type": "info" "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"
}
]
} }

View File

@@ -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", "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": "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", "name": "advplyr/audiobookshelf",
"version": "v2.26.2", "version": "v2.26.3",
"date": "2025-07-21T22:47:38Z" "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", "name": "ellite/Wallos",
"version": "v4.0.0", "version": "v4.0.0",
"date": "2025-07-21T21:05:02Z" "date": "2025-07-21T21:05:02Z"
}, },
{
"name": "gtsteffaniak/filebrowser",
"version": "v0.7.16-beta",
"date": "2025-07-21T20:58:02Z"
},
{ {
"name": "autobrr/autobrr", "name": "autobrr/autobrr",
"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,21 +329,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",
"version": "v1.30.0",
"date": "2025-07-21T08:43:19Z"
},
{ {
"name": "nzbgetcom/nzbget", "name": "nzbgetcom/nzbget",
"version": "v25.2", "version": "v25.2",
@@ -99,91 +339,31 @@
"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",
"version": "fumadocs-openapi@9.1.4",
"date": "2025-07-20T13:38:10Z"
},
{ {
"name": "karakeep-app/karakeep", "name": "karakeep-app/karakeep",
"version": "sdk/v0.26.0", "version": "sdk/v0.26.0",
"date": "2025-07-20T13:26:30Z" "date": "2025-07-20T13:26:30Z"
}, },
{
"name": "wizarrrr/wizarr",
"version": "2025.7.6",
"date": "2025-07-20T13:02:43Z"
},
{ {
"name": "OliveTin/OliveTin", "name": "OliveTin/OliveTin",
"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",
"date": "2025-07-20T07:05:19Z" "date": "2025-07-20T07:05:19Z"
}, },
{
"name": "morpheus65535/bazarr",
"version": "v1.5.3-beta.10",
"date": "2025-07-15T06:07:03Z"
},
{ {
"name": "linkwarden/linkwarden", "name": "linkwarden/linkwarden",
"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",
@@ -214,36 +394,6 @@
"version": "v0.29.0", "version": "v0.29.0",
"date": "2025-07-19T08:54:54Z" "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", "name": "theonedev/onedev",
"version": "v12.0.1", "version": "v12.0.1",
@@ -264,51 +414,21 @@
"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",
"date": "2025-07-17T21:36:42Z" "date": "2025-07-17T21:36:42Z"
}, },
{
"name": "coder/code-server",
"version": "v4.102.1",
"date": "2025-07-17T21:20:36Z"
},
{ {
"name": "duplicati/duplicati", "name": "duplicati/duplicati",
"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",
"date": "2025-07-17T15:33:14Z" "date": "2025-07-17T15:33:14Z"
}, },
{
"name": "forgejo/forgejo",
"version": "v12.0.0",
"date": "2025-07-17T14:38:30Z"
},
{ {
"name": "oauth2-proxy/oauth2-proxy", "name": "oauth2-proxy/oauth2-proxy",
"version": "v7.10.0", "version": "v7.10.0",
@@ -334,16 +454,6 @@
"version": "v0.25.0", "version": "v0.25.0",
"date": "2025-07-16T14:57:02Z" "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", "name": "NLnetLabs/unbound",
"version": "release-1.23.1", "version": "release-1.23.1",
@@ -374,16 +484,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 +524,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",
@@ -449,11 +544,6 @@
"version": "v4.39.5", "version": "v4.39.5",
"date": "2025-07-13T06:12:47Z" "date": "2025-07-13T06:12:47Z"
}, },
{
"name": "henrygd/beszel",
"version": "v0.11.1",
"date": "2025-04-29T01:14:35Z"
},
{ {
"name": "Ombi-app/Ombi", "name": "Ombi-app/Ombi",
"version": "v4.47.1", "version": "v4.47.1",
@@ -489,16 +579,6 @@
"version": "flowise@3.0.4", "version": "flowise@3.0.4",
"date": "2025-07-11T13:26:54Z" "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", "name": "outline/outline",
"version": "v0.85.1", "version": "v0.85.1",
@@ -514,11 +594,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 +609,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,40 +635,15 @@
"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",
"version": "v1.0.2",
"date": "2025-07-08T19:14:31Z"
}, },
{ {
"name": "TwiN/gatus", "name": "TwiN/gatus",
"version": "v5.20.0", "version": "v5.20.0",
"date": "2025-07-08T16:27:11Z" "date": "2025-07-08T16:27:11Z"
}, },
{
"name": "docker/compose",
"version": "v2.38.2",
"date": "2025-07-08T09:35:14Z"
},
{ {
"name": "photoprism/photoprism", "name": "photoprism/photoprism",
"version": "250707-d28b3101e", "version": "250707-d28b3101e",
@@ -719,11 +764,6 @@
"version": "v0.57.0", "version": "v0.57.0",
"date": "2025-07-01T16:47:46Z" "date": "2025-07-01T16:47:46Z"
}, },
{
"name": "openobserve/openobserve",
"version": "v0.15.0-rc3",
"date": "2025-07-01T04:09:37Z"
},
{ {
"name": "MagicMirrorOrg/MagicMirror", "name": "MagicMirrorOrg/MagicMirror",
"version": "v2.32.0", "version": "v2.32.0",
@@ -749,16 +789,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",
"version": "v1.84.3",
"date": "2025-06-26T16:31:57Z"
},
{ {
"name": "node-red/node-red", "name": "node-red/node-red",
"version": "4.1.0-beta.2", "version": "4.1.0-beta.2",
@@ -774,11 +804,6 @@
"version": "v1.18.4", "version": "v1.18.4",
"date": "2025-06-25T00:06:56Z" "date": "2025-06-25T00:06:56Z"
}, },
{
"name": "ErsatzTV/ErsatzTV",
"version": "v25.2.0",
"date": "2025-06-24T17:06:31Z"
},
{ {
"name": "arunavo4/gitea-mirror", "name": "arunavo4/gitea-mirror",
"version": "v2.18.0", "version": "v2.18.0",
@@ -804,11 +829,6 @@
"version": "v2.0.114", "version": "v2.0.114",
"date": "2025-06-21T11:20:21Z" "date": "2025-06-21T11:20:21Z"
}, },
{
"name": "immich-app/immich",
"version": "v1.135.3",
"date": "2025-06-20T20:19:20Z"
},
{ {
"name": "Sonarr/Sonarr", "name": "Sonarr/Sonarr",
"version": "v4.0.15.2941", "version": "v4.0.15.2941",
@@ -1099,11 +1119,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 +1164,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",
@@ -1244,11 +1254,6 @@
"version": "v0.10.0", "version": "v0.10.0",
"date": "2025-03-02T15:13:47Z" "date": "2025-03-02T15:13:47Z"
}, },
{
"name": "heiher/hev-socks5-server",
"version": "2.8.0",
"date": "2025-03-02T04:30:50Z"
},
{ {
"name": "schlagmichdoch/PairDrop", "name": "schlagmichdoch/PairDrop",
"version": "v1.11.2", "version": "v1.11.2",
@@ -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",

View 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
View 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"

View File

@@ -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"

View File

@@ -20,19 +20,16 @@ $STD apt-get install -y \
libfontconfig1 libfontconfig1
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_info "Setting up Duplicati" fetch_and_deploy_gh_release "duplicati" "duplicati/duplicati" "binary" "latest" "/opt/duplicati" "linux-x64-gui.deb"
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"
msg_info "Configuring duplicati"
DECRYPTKEY=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13) 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) ADMINPASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
{ {
echo "Admin password = ${ADMINPASS}" echo "Admin password = ${ADMINPASS}"
echo "Database encryption key = ${DECRYPTKEY}" echo "Database encryption key = ${DECRYPTKEY}"
} >>~/duplicati.creds } >>~/duplicati.creds
msg_ok "Configured duplicati"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/duplicati.service cat <<EOF >/etc/systemd/system/duplicati.service
@@ -54,10 +51,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -f duplicati-${RELEASE}-linux-x64-gui.deb
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"
motd_ssh
customize

View File

@@ -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"

View File

@@ -13,15 +13,10 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing go2rtc" fetch_and_deploy_gh_release "go2rtc" "AlexxIT/go2rtc" "singlefile" "latest" "/opt/go2rtc" "go2rtc_linux_amd64"
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"
msg_info "Creating Service" msg_info "Creating Service"
service_path="/etc/systemd/system/go2rtc.service" cat <<EOF >/etc/systemd/system/go2rtc.service
echo "[Unit] echo "[Unit]
Description=go2rtc service Description=go2rtc service
After=network.target After=network.target
@@ -32,7 +27,8 @@ User=root
ExecStart=/opt/go2rtc/go2rtc_linux_amd64 ExecStart=/opt/go2rtc/go2rtc_linux_amd64
[Install] [Install]
WantedBy=multi-user.target" >$service_path WantedBy=multi-user.target
EOF
systemctl enable -q --now go2rtc systemctl enable -q --now go2rtc
msg_ok "Created Service" msg_ok "Created Service"

View File

@@ -13,14 +13,12 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing Gokapi" fetch_and_deploy_gh_release "gokapi" "Forceu/Gokapi" "prebuild" "latest" "/opt/gokapi" "gokapi-linux_amd64.zip"
LATEST=$(curl -fsSL https://api.github.com/repos/Forceu/Gokapi/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
msg_info "Configuring Gokapi"
mkdir -p /opt/gokapi/{data,config} 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 chmod +x /opt/gokapi/gokapi-linux_amd64
msg_ok "Installed Gokapi" msg_ok "Configured Gokapi"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/gokapi.service cat <<EOF >/etc/systemd/system/gokapi.service

View File

@@ -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 $STD dpkg -i libssl1.1_1.1.1f-1ubuntu2_amd64.deb
msg_ok "Installed Dependencies" 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" fetch_and_deploy_gh_release "habitica" "HabitRPG/habitica" "tarball" "latest" "/opt/habitica"
msg_info "Setup ${APPLICATION}" msg_info "Setup ${APPLICATION}"
cd /opt/habitica cd /opt/habitica
$STD npm i $STD npm i
$STD npm run postinstall $STD npm run postinstall
cp config.json.example config.json
$STD npm run client:build $STD npm run client:build
$STD gulp build:prod $STD gulp build:prod
cp config.json.example config.json
msg_ok "Setup ${APPLICATION}" msg_ok "Setup ${APPLICATION}"
msg_info "Creating Service" msg_info "Creating Service"

View File

@@ -13,19 +13,53 @@ setting_up_container
network_check network_check
update_os 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) }') fetch_and_deploy_gh_release "headscale" "juanfont/headscale" "binary"
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" read -r -p "${TAB3}Would you like to add headscale-admin UI? <y/N> " prompt
$STD dpkg -i headscale_${RELEASE}_linux_amd64.deb 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 systemctl enable -q --now headscale
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt msg_ok "Service started"
msg_ok "Installed ${APPLICATION} v${RELEASE}"
motd_ssh motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm headscale_${RELEASE}_linux_amd64.deb
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -283,7 +283,7 @@ GEO_DIR="${INSTALL_DIR}/geodata"
mkdir -p "$INSTALL_DIR" mkdir -p "$INSTALL_DIR"
mkdir -p {"${APP_DIR}","${UPLOAD_DIR}","${GEO_DIR}","${ML_DIR}","${INSTALL_DIR}"/cache} 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)" msg_info "Installing ${APPLICATION} (more patience please)"
@@ -299,7 +299,7 @@ cd "$SRC_DIR"/web
$STD npm ci $STD npm ci
$STD npm run build $STD npm run build
cd "$SRC_DIR" 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 -a web/build "$APP_DIR"/www
cp LICENSE "$APP_DIR" cp LICENSE "$APP_DIR"
cd "$APP_DIR" cd "$APP_DIR"

View 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
View 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"

View File

@@ -18,7 +18,7 @@ $STD apt-get install -y \
composer \ composer \
git \ git \
nginx \ 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" msg_ok "Installed Dependencies"
setup_mariadb setup_mariadb

View File

@@ -13,15 +13,13 @@ setting_up_container
network_check network_check
update_os 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" msg_info "Setup VictoriaMetrics"
temp_dir=$(mktemp -d)
cd $temp_dir
mkdir -p /opt/victoriametrics/data 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/* chmod +x /opt/victoriametrics/*
msg_ok "Setup VictoriaMetrics" msg_ok "Setup VictoriaMetrics"
@@ -37,10 +35,26 @@ User=root
WorkingDirectory=/opt/victoriametrics WorkingDirectory=/opt/victoriametrics
ExecStart=/opt/victoriametrics/victoria-metrics-prod --storageDataPath="/opt/victoriametrics/data" 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] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF
systemctl enable -q --now victoriametrics systemctl enable -q --now victoriametrics
systemctl enable -q --now victoriametrics-logs
msg_ok "Created Service" msg_ok "Created Service"
motd_ssh motd_ssh

View File

@@ -64,6 +64,7 @@ cat <<EOF >/opt/wallos.cron
*/2 * * * * php /opt/wallos/endpoints/cronjobs/sendverificationemails.php >> /var/log/cron/sendverificationemail.log 2>&1 */2 * * * * php /opt/wallos/endpoints/cronjobs/sendverificationemails.php >> /var/log/cron/sendverificationemail.log 2>&1
*/2 * * * * php /opt/wallos/endpoints/cronjobs/sendresetpasswordemails.php >> /var/log/cron/sendresetpasswordemails.log 2>&1 */2 * * * * php /opt/wallos/endpoints/cronjobs/sendresetpasswordemails.php >> /var/log/cron/sendresetpasswordemails.log 2>&1
0 */6 * * * php /opt/wallos/endpoints/cronjobs/checkforupdates.php >> /var/log/cron/checkforupdates.log 2>&1 0 */6 * * * php /opt/wallos/endpoints/cronjobs/checkforupdates.php >> /var/log/cron/checkforupdates.log 2>&1
30 1 * * 1 php /opt/wallos/endpoints/cronjobs/storetotalyearlycost.php >> /var/log/cron/storetotalyearlycost.log 2>&1
EOF EOF
crontab /opt/wallos.cron crontab /opt/wallos.cron
msg_ok "Crontabs setup" msg_ok "Crontabs setup"

View File

@@ -23,12 +23,12 @@ fetch_and_deploy_gh_release "wizarr" "wizarrrr/wizarr"
msg_info "Configure ${APPLICATION}" msg_info "Configure ${APPLICATION}"
cd /opt/wizarr cd /opt/wizarr
uv -q sync --locked /usr/local/bin/uv -q sync --locked
$STD uv -q run pybabel compile -d app/translations $STD /usr/local/bin/uv -q run pybabel compile -d app/translations
$STD npm --prefix app/static install $STD npm --prefix app/static install
$STD npm --prefix app/static run build:css $STD npm --prefix app/static run build:css
mkdir -p ./.cache 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_ok "Configure ${APPLICATION}"
msg_info "Creating env, start script and service" msg_info "Creating env, start script and service"

View File

@@ -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"

View File

@@ -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.
# #

View File

@@ -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" " " \

View File

@@ -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" " " \

View File

@@ -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)