mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-11-04 10:22:50 +00:00
Compare commits
157 Commits
2025-10-15
...
2025-10-26
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fb11b1a0e2 | ||
|
|
66b8d6cb90 | ||
|
|
1723775c55 | ||
|
|
8852def9a6 | ||
|
|
249a02754a | ||
|
|
65c79447ea | ||
|
|
a6607734b7 | ||
|
|
a8d5fc9bc8 | ||
|
|
0e7a089949 | ||
|
|
e208b571b9 | ||
|
|
327544c737 | ||
|
|
1c8b7b4e7e | ||
|
|
6e5140314f | ||
|
|
622f85db23 | ||
|
|
55be335b66 | ||
|
|
5db685f235 | ||
|
|
14027a605a | ||
|
|
5f0dba82ad | ||
|
|
c0087bf8aa | ||
|
|
691fc48915 | ||
|
|
fe9e894e79 | ||
|
|
43356df77f | ||
|
|
e4b96ec200 | ||
|
|
01a63d0a9d | ||
|
|
0a4a64ca0c | ||
|
|
4cdb43065d | ||
|
|
add12ef634 | ||
|
|
3ab5167d8a | ||
|
|
b16a7f4562 | ||
|
|
fa3f993256 | ||
|
|
c0894cb612 | ||
|
|
3b96230327 | ||
|
|
99617f265a | ||
|
|
1fe00c2493 | ||
|
|
05fd03d160 | ||
|
|
e837ebb0e5 | ||
|
|
8e1a9ffb07 | ||
|
|
af991286dc | ||
|
|
c1205691e7 | ||
|
|
394787e10e | ||
|
|
e37ef10283 | ||
|
|
130e3c7efe | ||
|
|
634a847c06 | ||
|
|
c92f9d5518 | ||
|
|
c7fffd85d3 | ||
|
|
2ae62055a6 | ||
|
|
e6bd1b5759 | ||
|
|
55120ae165 | ||
|
|
4672934701 | ||
|
|
560e1fdad3 | ||
|
|
e60020a998 | ||
|
|
dfda118e65 | ||
|
|
6d7c318dec | ||
|
|
9c39c9cd67 | ||
|
|
0ed95ea9cb | ||
|
|
433119e830 | ||
|
|
a794358c14 | ||
|
|
0f69e8cc69 | ||
|
|
2e34f534eb | ||
|
|
1c9d325ae8 | ||
|
|
a117cb7a34 | ||
|
|
33d61e45c4 | ||
|
|
69a6590ab0 | ||
|
|
0f2117ceba | ||
|
|
87ae749eba | ||
|
|
cc4b944b3b | ||
|
|
1c14b31a05 | ||
|
|
395e522430 | ||
|
|
5277be0bc3 | ||
|
|
bd8d91057e | ||
|
|
de35c2a1f9 | ||
|
|
f151c80b8b | ||
|
|
5f607a3132 | ||
|
|
14bcaa054f | ||
|
|
3d01a3bc03 | ||
|
|
389e40e6f0 | ||
|
|
e94666c4d5 | ||
|
|
f81cac1f70 | ||
|
|
b8b5e92fd2 | ||
|
|
c160079447 | ||
|
|
9dc31f48ef | ||
|
|
49c8e29a56 | ||
|
|
0f1abd953f | ||
|
|
56c5067853 | ||
|
|
ee8e7f5bf0 | ||
|
|
b2b892c430 | ||
|
|
ef4fab1a2c | ||
|
|
dc358da26f | ||
|
|
345708aae6 | ||
|
|
bcdbbc4678 | ||
|
|
af0bd86db4 | ||
|
|
c188984601 | ||
|
|
489339ce4e | ||
|
|
523d2b66bd | ||
|
|
9a40d53d06 | ||
|
|
a257a77f63 | ||
|
|
25251add27 | ||
|
|
ea1021095d | ||
|
|
932de62b38 | ||
|
|
8fd8bb407e | ||
|
|
8ece0e3676 | ||
|
|
b34a449d9f | ||
|
|
60be24660d | ||
|
|
a2be293397 | ||
|
|
e44e8a30d1 | ||
|
|
3cd8d0d08b | ||
|
|
2d95a73923 | ||
|
|
3743af8c78 | ||
|
|
f91daa6b72 | ||
|
|
4685612685 | ||
|
|
f4106db935 | ||
|
|
4a4dbfa15e | ||
|
|
475ccd7a33 | ||
|
|
b36b4258cc | ||
|
|
8ab6e2d469 | ||
|
|
22e71e5a05 | ||
|
|
edb105fad9 | ||
|
|
6584d658e1 | ||
|
|
6877f53853 | ||
|
|
83ad8433bd | ||
|
|
da552dcbd8 | ||
|
|
77aba17771 | ||
|
|
3df8fadbba | ||
|
|
59f8e85b1c | ||
|
|
eaed744f2e | ||
|
|
14bd66ed91 | ||
|
|
5c0ce0959e | ||
|
|
35810eb770 | ||
|
|
048d468e8f | ||
|
|
a204f29f48 | ||
|
|
b17257f464 | ||
|
|
01ccfc023a | ||
|
|
c055781fed | ||
|
|
c6b85deb13 | ||
|
|
b56e8d0bbb | ||
|
|
32d98aa3c5 | ||
|
|
1611e48581 | ||
|
|
2b5ec97862 | ||
|
|
f761d9bf7c | ||
|
|
996294daae | ||
|
|
e87bce1542 | ||
|
|
730b16af72 | ||
|
|
554ea0d65e | ||
|
|
6ee5c9eab4 | ||
|
|
bd38e7bdf4 | ||
|
|
78c8933855 | ||
|
|
c16e187f36 | ||
|
|
ac89626832 | ||
|
|
72ecf11324 | ||
|
|
98f2bd9783 | ||
|
|
ca2c708ad6 | ||
|
|
b46820966e | ||
|
|
d0cee74371 | ||
|
|
8f09a1c8e7 | ||
|
|
f9a51de384 | ||
|
|
67cff5e18a | ||
|
|
4625dc58cb |
178
CHANGELOG.md
178
CHANGELOG.md
@@ -10,8 +10,186 @@
|
||||
> [!CAUTION]
|
||||
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
|
||||
|
||||
## 2025-10-27
|
||||
|
||||
## 2025-10-26
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- ComfyUI ([#8633](https://github.com/community-scripts/ProxmoxVE/pull/8633))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- PiHole: Bump to Debian 12 [@MickLesk](https://github.com/MickLesk) ([#8649](https://github.com/community-scripts/ProxmoxVE/pull/8649))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Refactor: Mylar3 [@tremor021](https://github.com/tremor021) ([#8642](https://github.com/community-scripts/ProxmoxVE/pull/8642))
|
||||
|
||||
## 2025-10-25
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- PatchMon ([#8632](https://github.com/community-scripts/ProxmoxVE/pull/8632))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- UrBackup Server: Fix install going interactive [@tremor021](https://github.com/tremor021) ([#8622](https://github.com/community-scripts/ProxmoxVE/pull/8622))
|
||||
|
||||
## 2025-10-24
|
||||
|
||||
### 🌐 Website
|
||||
|
||||
- #### 📝 Script Information
|
||||
|
||||
- Fix config path for BunkerWeb [@Nonolanlan1007](https://github.com/Nonolanlan1007) ([#8618](https://github.com/community-scripts/ProxmoxVE/pull/8618))
|
||||
- Update logo URL in guardian.json [@HydroshieldMKII](https://github.com/HydroshieldMKII) ([#8615](https://github.com/community-scripts/ProxmoxVE/pull/8615))
|
||||
|
||||
## 2025-10-23
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Radicale: Update dependencies [@ilofX](https://github.com/ilofX) ([#8603](https://github.com/community-scripts/ProxmoxVE/pull/8603))
|
||||
- Various Downgrades to Debian 12 (MySQL / OMW / Technitium) [@MickLesk](https://github.com/MickLesk) ([#8595](https://github.com/community-scripts/ProxmoxVE/pull/8595))
|
||||
- MeTube: Fix inserting path into .bashrc [@tremor021](https://github.com/tremor021) ([#8589](https://github.com/community-scripts/ProxmoxVE/pull/8589))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Refactor: Kavita + Updated tools.func (no-same-owner) [@MickLesk](https://github.com/MickLesk) ([#8594](https://github.com/community-scripts/ProxmoxVE/pull/8594))
|
||||
- tools.func: update update_check messages for clarity [@MickLesk](https://github.com/MickLesk) ([#8588](https://github.com/community-scripts/ProxmoxVE/pull/8588))
|
||||
|
||||
## 2025-10-22
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- Refactor: Full Change & Feature-Bump of tools.func [@MickLesk](https://github.com/MickLesk) ([#8409](https://github.com/community-scripts/ProxmoxVE/pull/8409))
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- part-db: use helper-script php function [@MickLesk](https://github.com/MickLesk) ([#8575](https://github.com/community-scripts/ProxmoxVE/pull/8575))
|
||||
- omada: remove static mongodb install [@MickLesk](https://github.com/MickLesk) ([#8577](https://github.com/community-scripts/ProxmoxVE/pull/8577))
|
||||
|
||||
## 2025-10-21
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- rwMarkable: migrate from rwMarkable => jotty [@vhsdream](https://github.com/vhsdream) ([#8554](https://github.com/community-scripts/ProxmoxVE/pull/8554))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Guardian: Added validation before copying file and fix build command error [@HydroshieldMKII](https://github.com/HydroshieldMKII) ([#8553](https://github.com/community-scripts/ProxmoxVE/pull/8553))
|
||||
- Unifi: Bump libssl debian version to new update [@fastiuk](https://github.com/fastiuk) ([#8547](https://github.com/community-scripts/ProxmoxVE/pull/8547))
|
||||
- Alpine-TeamSpeak-Server: Fix release version fetching [@tremor021](https://github.com/tremor021) ([#8537](https://github.com/community-scripts/ProxmoxVE/pull/8537))
|
||||
- jellyfin: fix opencl dep for ubuntu [@MickLesk](https://github.com/MickLesk) ([#8535](https://github.com/community-scripts/ProxmoxVE/pull/8535))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- Refactor: ProjectSend [@tremor021](https://github.com/tremor021) ([#8552](https://github.com/community-scripts/ProxmoxVE/pull/8552))
|
||||
|
||||
### 🌐 Website
|
||||
|
||||
- #### 📝 Script Information
|
||||
|
||||
- Open Archiver: Fix application icon [@tremor021](https://github.com/tremor021) ([#8542](https://github.com/community-scripts/ProxmoxVE/pull/8542))
|
||||
|
||||
## 2025-10-20
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- jellyfin: fix: version conflict [@CrazyWolf13](https://github.com/CrazyWolf13) ([#8520](https://github.com/community-scripts/ProxmoxVE/pull/8520))
|
||||
- Paperless-AI: Increase CPU and RAM [@MickLesk](https://github.com/MickLesk) ([#8507](https://github.com/community-scripts/ProxmoxVE/pull/8507))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- Enhance error message for container creation failure [@MickLesk](https://github.com/MickLesk) ([#8511](https://github.com/community-scripts/ProxmoxVE/pull/8511))
|
||||
- Filebrowser-Quantum: change initial config to newer default [@MickLesk](https://github.com/MickLesk) ([#8497](https://github.com/community-scripts/ProxmoxVE/pull/8497))
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- Remove: GoMFT [@MickLesk](https://github.com/MickLesk) ([#8499](https://github.com/community-scripts/ProxmoxVE/pull/8499))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- palmr: update node to v24 [@CrazyWolf13](https://github.com/CrazyWolf13) ([#8521](https://github.com/community-scripts/ProxmoxVE/pull/8521))
|
||||
- jellyfin: add: intel dependencies [@CrazyWolf13](https://github.com/CrazyWolf13) ([#8508](https://github.com/community-scripts/ProxmoxVE/pull/8508))
|
||||
- Jellyfin: ensure libjemalloc is used / increase hdd space [@MickLesk](https://github.com/MickLesk) ([#8494](https://github.com/community-scripts/ProxmoxVE/pull/8494))
|
||||
|
||||
## 2025-10-19
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- rwMarkable: Increase RAM [@vhsdream](https://github.com/vhsdream) ([#8482](https://github.com/community-scripts/ProxmoxVE/pull/8482))
|
||||
- changedetection: fix: update [@CrazyWolf13](https://github.com/CrazyWolf13) ([#8480](https://github.com/community-scripts/ProxmoxVE/pull/8480))
|
||||
|
||||
## 2025-10-18
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Open-Archiver ([#8452](https://github.com/community-scripts/ProxmoxVE/pull/8452))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Cronicle: Dont copy init.d service file [@tremor021](https://github.com/tremor021) ([#8451](https://github.com/community-scripts/ProxmoxVE/pull/8451))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Refactor: Nginx Proxy Manager [@MickLesk](https://github.com/MickLesk) ([#8453](https://github.com/community-scripts/ProxmoxVE/pull/8453))
|
||||
|
||||
## 2025-10-17
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- Revert back to debian 12 template for various apps [@tremor021](https://github.com/tremor021) ([#8431](https://github.com/community-scripts/ProxmoxVE/pull/8431))
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- [FIX]Pulse: replace policykit-1 with polkitd [@vhsdream](https://github.com/vhsdream) ([#8439](https://github.com/community-scripts/ProxmoxVE/pull/8439))
|
||||
- MySpeed: Fix build step [@tremor021](https://github.com/tremor021) ([#8427](https://github.com/community-scripts/ProxmoxVE/pull/8427))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- GLPI: Bump to Debian 13 base [@tremor021](https://github.com/tremor021) ([#8443](https://github.com/community-scripts/ProxmoxVE/pull/8443))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- refactor: fix pve-scripts local install script [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#8418](https://github.com/community-scripts/ProxmoxVE/pull/8418))
|
||||
|
||||
### 🌐 Website
|
||||
|
||||
- #### 📝 Script Information
|
||||
|
||||
- PLANKA: Fix config path [@tremor021](https://github.com/tremor021) ([#8422](https://github.com/community-scripts/ProxmoxVE/pull/8422))
|
||||
|
||||
## 2025-10-16
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- post-pve/post-pbs: Disable 'pve-enterprise' and 'ceph enterprise' repositories [@MickLesk](https://github.com/MickLesk) ([#8399](https://github.com/community-scripts/ProxmoxVE/pull/8399))
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- fix: changedetection: fix for tsc and esbuild not found [@CrazyWolf13](https://github.com/CrazyWolf13) ([#8407](https://github.com/community-scripts/ProxmoxVE/pull/8407))
|
||||
- paperless-ngx: remove unneeded deps, use static ghostscript [@MickLesk](https://github.com/MickLesk) ([#8397](https://github.com/community-scripts/ProxmoxVE/pull/8397))
|
||||
- UmlautAdaptarr: Revert back to bookworm repo [@tremor021](https://github.com/tremor021) ([#8392](https://github.com/community-scripts/ProxmoxVE/pull/8392))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Enhance nginx proxy manager install script [@MickLesk](https://github.com/MickLesk) ([#8400](https://github.com/community-scripts/ProxmoxVE/pull/8400))
|
||||
|
||||
## 2025-10-15
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
@@ -27,7 +27,7 @@ function update_script() {
|
||||
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
|
||||
set +o pipefail && RELEASE=$(curl -fsSL https://teamspeak.com/en/downloads/#server | sed -n 's/.*teamspeak3-server_linux_amd64-\([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"
|
||||
|
||||
@@ -57,6 +57,7 @@ function update_script() {
|
||||
$STD /opt/browserless/node_modules/playwright-core/cli.js install --force chrome
|
||||
$STD /opt/browserless/node_modules/playwright-core/cli.js install --force msedge
|
||||
$STD /opt/browserless/node_modules/playwright-core/cli.js install chromium firefox webkit
|
||||
$STD npm install --prefix /opt/browserless esbuild typescript ts-node @types/node --save-dev
|
||||
$STD npm run build --prefix /opt/browserless
|
||||
$STD npm run build:function --prefix /opt/browserless
|
||||
$STD npm prune production --prefix /opt/browserless
|
||||
|
||||
42
ct/comfyui.sh
Normal file
42
ct/comfyui.sh
Normal file
@@ -0,0 +1,42 @@
|
||||
#!/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: jdacode
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/comfyanonymous/ComfyUI
|
||||
|
||||
APP="ComfyUI"
|
||||
var_tags="${var_tags:-ai}"
|
||||
var_cpu="${var_cpu:-4}"
|
||||
var_ram="${var_ram:-8192}"
|
||||
var_disk="${var_disk:-25}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -f /opt/${APP} ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_error "To update use the ${APP} Manager."
|
||||
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}:8188${CL}"
|
||||
@@ -61,9 +61,6 @@ function update_script() {
|
||||
$STD node bin/build.js dist
|
||||
sed -i "s/localhost:3012/${IP}:3012/g" /opt/cronicle/conf/config.json
|
||||
$STD /opt/cronicle/bin/control.sh start
|
||||
$STD cp /opt/cronicle/bin/cronicled.init /etc/init.d/cronicled
|
||||
chmod 775 /etc/init.d/cronicled
|
||||
$STD update-rc.d cronicled defaults
|
||||
msg_ok "Installed Cronicle Worker"
|
||||
|
||||
echo -e "\n Add Masters secret key to /opt/cronicle/conf/config.json \n"
|
||||
|
||||
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-10}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-12}"
|
||||
var_version="${var_version:-13}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
@@ -44,4 +44,4 @@ description
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:80${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:80${CL}"
|
||||
|
||||
53
ct/gomft.sh
53
ct/gomft.sh
@@ -1,53 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: Slaviša Arežina (tremor021)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/StarFleetCPTN/GoMFT
|
||||
|
||||
APP="GoMFT"
|
||||
var_tags="${var_tags:-backup}"
|
||||
var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-512}"
|
||||
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 [[ ! -d "/opt/gomft" ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
if check_for_gh_release "gomft" "StarFleetCPTN/GoMFT"; then
|
||||
msg_info "Stopping $APP"
|
||||
systemctl stop gomft
|
||||
msg_ok "Stopped $APP"
|
||||
|
||||
fetch_and_deploy_gh_release "gomft" "StarFleetCPTN/GoMFT" "singlefile" "latest" "/opt/gomft" "gomft*linux-amd64"
|
||||
|
||||
msg_info "Starting $APP"
|
||||
systemctl start gomft
|
||||
msg_ok "Started $APP"
|
||||
msg_ok "Update Successful"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
|
||||
@@ -40,9 +40,9 @@ if check_for_gh_release "guardian" "HydroshieldMKII/Guardian" ; then
|
||||
msg_ok "Backed up Database"
|
||||
fi
|
||||
|
||||
cp /opt/guardian/.env /opt
|
||||
[[ -f "/opt/guardian/.env" ]] && cp "/opt/guardian/.env" "/opt"
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "guardian" "HydroshieldMKII/Guardian" "tarball" "latest" "/opt/guardian"
|
||||
mv /opt/.env /opt/guardian
|
||||
[[ -f "/opt/.env" ]] && mv "/opt/.env" "/opt/guardian"
|
||||
|
||||
if [[ -f "/tmp/plex-guard.db.backup" ]] ; then
|
||||
msg_info "Restoring Database"
|
||||
@@ -58,7 +58,8 @@ if check_for_gh_release "guardian" "HydroshieldMKII/Guardian" ; then
|
||||
|
||||
cd /opt/guardian/frontend
|
||||
$STD npm ci
|
||||
$STD DEPLOYMENT_MODE=standalone npm run build
|
||||
export DEPLOYMENT_MODE=standalone
|
||||
$STD npm run build
|
||||
msg_ok "Updated Guardian"
|
||||
|
||||
msg_info "Starting Services"
|
||||
|
||||
6
ct/headers/comfyui
Normal file
6
ct/headers/comfyui
Normal file
@@ -0,0 +1,6 @@
|
||||
______ ____ __ ______
|
||||
/ ____/___ ____ ___ / __/_ __/ / / / _/
|
||||
/ / / __ \/ __ `__ \/ /_/ / / / / / // /
|
||||
/ /___/ /_/ / / / / / / __/ /_/ / /_/ // /
|
||||
\____/\____/_/ /_/ /_/_/ \__, /\____/___/
|
||||
/____/
|
||||
@@ -1,6 +0,0 @@
|
||||
______ __ _______________
|
||||
/ ____/___ / |/ / ____/_ __/
|
||||
/ / __/ __ \/ /|_/ / /_ / /
|
||||
/ /_/ / /_/ / / / / __/ / /
|
||||
\____/\____/_/ /_/_/ /_/
|
||||
|
||||
6
ct/headers/jotty
Normal file
6
ct/headers/jotty
Normal file
@@ -0,0 +1,6 @@
|
||||
_ __ __
|
||||
(_)___ / /_/ /___ __
|
||||
/ / __ \/ __/ __/ / / /
|
||||
/ / /_/ / /_/ /_/ /_/ /
|
||||
__/ /\____/\__/\__/\__, /
|
||||
/___/ /____/
|
||||
6
ct/headers/open-archiver
Normal file
6
ct/headers/open-archiver
Normal file
@@ -0,0 +1,6 @@
|
||||
____ ___ __ _
|
||||
/ __ \____ ___ ____ / | __________/ /_ (_) _____ _____
|
||||
/ / / / __ \/ _ \/ __ \______/ /| | / ___/ ___/ __ \/ / | / / _ \/ ___/
|
||||
/ /_/ / /_/ / __/ / / /_____/ ___ |/ / / /__/ / / / /| |/ / __/ /
|
||||
\____/ .___/\___/_/ /_/ /_/ |_/_/ \___/_/ /_/_/ |___/\___/_/
|
||||
/_/
|
||||
6
ct/headers/patchmon
Normal file
6
ct/headers/patchmon
Normal file
@@ -0,0 +1,6 @@
|
||||
____ __ __ __ ___
|
||||
/ __ \____ _/ /______/ /_ / |/ /___ ____
|
||||
/ /_/ / __ `/ __/ ___/ __ \/ /|_/ / __ \/ __ \
|
||||
/ ____/ /_/ / /_/ /__/ / / / / / / /_/ / / / /
|
||||
/_/ \__,_/\__/\___/_/ /_/_/ /_/\____/_/ /_/
|
||||
|
||||
@@ -42,4 +42,4 @@ description
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
|
||||
|
||||
@@ -9,7 +9,7 @@ APP="Jellyfin"
|
||||
var_tags="${var_tags:-media}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-8}"
|
||||
var_disk="${var_disk:-16}"
|
||||
var_os="${var_os:-ubuntu}"
|
||||
var_version="${var_version:-24.04}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
@@ -27,11 +27,28 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Updating ${APP} LXC"
|
||||
$STD apt-get update
|
||||
$STD apt-get -y upgrade
|
||||
$STD apt-get -y --with-new-pkgs upgrade jellyfin jellyfin-server
|
||||
msg_ok "Updated ${APP} LXC"
|
||||
|
||||
if ! grep -qEi 'ubuntu' /etc/os-release; then
|
||||
msg_info "Updating Intel Dependencies"
|
||||
fetch_and_deploy_gh_release "intel-igc-core-2" "intel/intel-graphics-compiler" "binary" "latest" "" "intel-igc-core-2_*_amd64.deb"
|
||||
fetch_and_deploy_gh_release "intel-igc-opencl-2" "intel/intel-graphics-compiler" "binary" "latest" "" "intel-igc-opencl-2_*_amd64.deb"
|
||||
fetch_and_deploy_gh_release "intel-libgdgmm12" "intel/compute-runtime" "binary" "latest" "" "libigdgmm12_*_amd64.deb"
|
||||
fetch_and_deploy_gh_release "intel-opencl-icd" "intel/compute-runtime" "binary" "latest" "" "intel-opencl-icd_*_amd64.deb"
|
||||
msg_ok "Updated Intel Dependencies"
|
||||
fi
|
||||
|
||||
msg_info "Updating Jellyfin"
|
||||
if ! dpkg -s libjemalloc2 >/dev/null 2>&1; then
|
||||
$STD apt install -y libjemalloc2
|
||||
fi
|
||||
if [[ ! -f /usr/lib/libjemalloc.so ]]; then
|
||||
ln -sf /usr/lib/x86_64-linux-gnu/libjemalloc.so.2 /usr/lib/libjemalloc.so
|
||||
fi
|
||||
$STD apt update
|
||||
$STD apt -y upgrade
|
||||
$STD apt -y --with-new-pkgs upgrade jellyfin jellyfin-server
|
||||
msg_ok "Updated Jellyfin"
|
||||
msg_ok "Update Successfully!"
|
||||
exit
|
||||
}
|
||||
|
||||
|
||||
74
ct/jotty.sh
Normal file
74
ct/jotty.sh
Normal file
@@ -0,0 +1,74 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: vhsdream
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/fccview/jotty
|
||||
|
||||
APP="jotty"
|
||||
var_tags="${var_tags:-tasks;notes}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-3072}"
|
||||
var_disk="${var_disk:-6}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -d /opt/jotty ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "jotty" "fccview/jotty"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop jotty
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up configuration & data"
|
||||
cd /opt/jotty
|
||||
cp ./.env /opt/app.env
|
||||
$STD tar -cf /opt/data_config.tar ./data ./config
|
||||
msg_ok "Backed up configuration & data"
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "jotty" "fccview/jotty" "tarball" "latest" "/opt/jotty"
|
||||
|
||||
msg_info "Updating app"
|
||||
cd /opt/jotty
|
||||
$STD yarn --frozen-lockfile
|
||||
$STD yarn next telemetry disable
|
||||
$STD yarn build
|
||||
msg_ok "Updated app"
|
||||
|
||||
msg_info "Restoring configuration & data"
|
||||
mv /opt/app.env /opt/jotty/.env
|
||||
$STD tar -xf /opt/data_config.tar
|
||||
msg_ok "Restored configuration & data"
|
||||
|
||||
msg_info "Restarting ${APP} service"
|
||||
systemctl start jotty
|
||||
msg_ok "Restarted ${APP} service"
|
||||
rm /opt/data_config.tar
|
||||
msg_ok "Updated Successfully"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
||||
41
ct/kavita.sh
41
ct/kavita.sh
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-8}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-12}"
|
||||
var_version="${var_version:-13}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
@@ -20,23 +20,28 @@ color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /opt/Kavita ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Updating $APP LXC"
|
||||
systemctl stop kavita
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Kareadita/Kavita/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||
$STD tar -xvzf <(curl -fsSL https://github.com/Kareadita/Kavita/releases/download/$RELEASE/kavita-linux-x64.tar.gz) --no-same-owner
|
||||
rm -rf Kavita/config
|
||||
cp -r Kavita/* /opt/Kavita
|
||||
rm -rf Kavita
|
||||
systemctl start kavita
|
||||
msg_ok "Updated $APP LXC"
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /opt/Kavita ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "kavita" "Kareadita/Kavita"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop kavita
|
||||
msg_ok "Service Stopped"
|
||||
|
||||
fetch_and_deploy_gh_release "kavita" "Kareadita/Kavita" "prebuild" "latest" "/opt/Kavita" "kavita-linux-x64.tar.gz"
|
||||
chmod +x /opt/Kavita/Kavita && chown root:root /opt/Kavita/Kavita
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start kavita
|
||||
msg_ok "Service Started"
|
||||
msg_ok "Update Successfully!"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
@@ -46,4 +51,4 @@ description
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5000${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5000${CL}"
|
||||
|
||||
@@ -30,7 +30,7 @@ function update_script() {
|
||||
fi
|
||||
|
||||
if [[ $(echo ":$PATH:" != *":/usr/local/bin:"*) ]]; then
|
||||
echo 'export PATH="/usr/local/bin:$PATH"' >>~/.bashrc
|
||||
echo -e "\nexport PATH=\"/usr/local/bin:\$PATH\"" >>~/.bashrc
|
||||
source ~/.bashrc
|
||||
if ! command -v deno &>/dev/null; then
|
||||
export DENO_INSTALL="/usr/local"
|
||||
@@ -110,6 +110,7 @@ EOF
|
||||
|
||||
msg_ok "Updated Successfully!"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
|
||||
16
ct/mylar3.sh
16
ct/mylar3.sh
@@ -1,7 +1,7 @@
|
||||
#!/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: davalanche
|
||||
# Author: davalanche | Co-Author: Slaviša Arežina (tremor021)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/mylar3/mylar3
|
||||
|
||||
@@ -25,16 +25,10 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/mylar3/mylar3/releases/latest | jq -r '.tag_name')
|
||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||
msg_info "Updating ${APP} to ${RELEASE}"
|
||||
rm -rf /opt/mylar3/* /opt/mylar3/.*
|
||||
curl -fsSL "https://github.com/mylar3/mylar3/archive/refs/tags/${RELEASE}.tar.gz" | tar -xz --strip-components=1 -C /opt/mylar3
|
||||
|
||||
if check_for_gh_release "mylar3" "mylar3/mylar3"; then
|
||||
fetch_and_deploy_gh_release "mylar3" "mylar3/mylar3" "tarball"
|
||||
systemctl restart mylar3
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
msg_ok "Updated ${APP} to ${RELEASE}"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
@@ -46,4 +40,4 @@ description
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8090${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8090${CL}"
|
||||
|
||||
26
ct/mysql.sh
26
ct/mysql.sh
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-1024}"
|
||||
var_disk="${var_disk:-4}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_version="${var_version:-12}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
@@ -20,18 +20,18 @@ color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -f /usr/share/keyrings/mysql.gpg ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Updating ${APP} LXC"
|
||||
$STD apt update
|
||||
$STD apt -y upgrade
|
||||
msg_ok "Updated Successfully"
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -f /usr/share/keyrings/mysql.gpg ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Updating ${APP} LXC"
|
||||
$STD apt update
|
||||
$STD apt -y upgrade
|
||||
msg_ok "Updated Successfully"
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
@@ -41,4 +41,4 @@ description
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following IP:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}${IP}:3306${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}${IP}:3306${CL}"
|
||||
|
||||
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-8}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_version="${var_version:-12}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
|
||||
@@ -27,14 +27,23 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if ! command -v pnpm &>/dev/null; then
|
||||
msg_info "Installing pnpm"
|
||||
#export NODE_OPTIONS=--openssl-legacy-provider
|
||||
$STD npm install -g pnpm@8.15
|
||||
msg_ok "Installed pnpm"
|
||||
|
||||
if command -v node &> /dev/null; then
|
||||
CURRENT_NODE_VERSION=$(node --version | cut -d'v' -f2 | cut -d'.' -f1)
|
||||
if [[ "$CURRENT_NODE_VERSION" != "22" ]]; then
|
||||
systemctl stop openresty
|
||||
apt-get purge -y nodejs npm
|
||||
apt-get autoremove -y
|
||||
rm -rf /usr/local/bin/node /usr/local/bin/npm
|
||||
rm -rf /usr/local/lib/node_modules
|
||||
rm -rf ~/.npm
|
||||
rm -rf /root/.npm
|
||||
fi
|
||||
fi
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
||||
export NODE_OPTIONS="--openssl-legacy-provider"
|
||||
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/NginxProxyManager/nginx-proxy-manager/releases/latest |
|
||||
grep "tag_name" |
|
||||
awk '{print substr($2, 3, length($2)-4) }')
|
||||
@@ -49,9 +58,10 @@ function update_script() {
|
||||
sed -i "s|\"version\": \"0.0.0\"|\"version\": \"$RELEASE\"|" backend/package.json
|
||||
sed -i "s|\"version\": \"0.0.0\"|\"version\": \"$RELEASE\"|" frontend/package.json
|
||||
cd ./frontend || exit
|
||||
$STD pnpm install
|
||||
$STD pnpm upgrade
|
||||
$STD pnpm run build
|
||||
# Replace node-sass with sass in package.json before installation
|
||||
sed -i 's/"node-sass".*$/"sass": "^1.92.1",/g' package.json
|
||||
$STD yarn install --network-timeout 600000
|
||||
$STD yarn build
|
||||
)
|
||||
msg_ok "Built Frontend"
|
||||
|
||||
@@ -71,7 +81,7 @@ function update_script() {
|
||||
|
||||
msg_info "Setting up Environment"
|
||||
ln -sf /usr/bin/python3 /usr/bin/python
|
||||
ln -sf /usr/bin/certbot /opt/certbot/bin/certbot
|
||||
ln -sf /opt/certbot/bin/certbot /usr/local/bin/certbot
|
||||
ln -sf /usr/local/openresty/nginx/sbin/nginx /usr/sbin/nginx
|
||||
ln -sf /usr/local/openresty/nginx/ /etc/nginx
|
||||
sed -i 's+^daemon+#daemon+g' docker/rootfs/etc/nginx/nginx.conf
|
||||
@@ -113,7 +123,12 @@ function update_script() {
|
||||
cp -r frontend/app-images/* /app/frontend/images
|
||||
cp -r backend/* /app
|
||||
cp -r global/* /app/global
|
||||
$STD python3 -m pip install --no-cache-dir --break-system-packages certbot-dns-cloudflare
|
||||
|
||||
# Update Certbot and plugins in virtual environment
|
||||
if [ -d /opt/certbot ]; then
|
||||
$STD /opt/certbot/bin/pip install --upgrade pip setuptools wheel
|
||||
$STD /opt/certbot/bin/pip install --upgrade certbot certbot-dns-cloudflare
|
||||
fi
|
||||
msg_ok "Setup Environment"
|
||||
|
||||
msg_info "Initializing Backend"
|
||||
@@ -134,7 +149,8 @@ function update_script() {
|
||||
EOF
|
||||
fi
|
||||
cd /app || exit
|
||||
$STD pnpm install
|
||||
export NODE_OPTIONS="--openssl-legacy-provider"
|
||||
$STD yarn install --network-timeout 600000
|
||||
msg_ok "Initialized Backend"
|
||||
|
||||
msg_info "Starting Services"
|
||||
|
||||
@@ -11,7 +11,7 @@ var_disk="${var_disk:-6}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_version="${var_version:-12}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
|
||||
26
ct/omv.sh
26
ct/omv.sh
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-1024}"
|
||||
var_disk="${var_disk:-4}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_version="${var_version:-12}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
@@ -20,18 +20,18 @@ color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -f /etc/apt/sources.list.d/openmediavault.list ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Updating ${APP} LXC"
|
||||
$STD apt update
|
||||
$STD apt -y upgrade
|
||||
msg_ok "Updated Successfully"
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -f /etc/apt/sources.list.d/openmediavault.list ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Updating ${APP} LXC"
|
||||
$STD apt update
|
||||
$STD apt -y upgrade
|
||||
msg_ok "Updated Successfully"
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
@@ -41,4 +41,4 @@ description
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
|
||||
|
||||
61
ct/open-archiver.sh
Normal file
61
ct/open-archiver.sh
Normal file
@@ -0,0 +1,61 @@
|
||||
#!/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: Slaviša Arežina (tremor021)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://openarchiver.com/
|
||||
|
||||
APP="Open-Archiver"
|
||||
var_tags="${var_tags:-os}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-3072}"
|
||||
var_disk="${var_disk:-8}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /opt/openarchiver ]]; then
|
||||
msg_error "No Open Archiver Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "openarchiver" "LogicLabs-OU/OpenArchiver"; then
|
||||
msg_info "Stopping Services"
|
||||
systemctl stop openarchiver
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
cp /opt/openarchiver/.env /opt/openarchiver.env
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "openarchiver" "LogicLabs-OU/OpenArchiver" "tarball" "latest" "/opt/openarchiver"
|
||||
mv /opt/openarchiver.env /opt/openarchiver/.env
|
||||
|
||||
msg_info "Updating Open Archiver"
|
||||
$STD pnpm install --shamefully-hoist --frozen-lockfile --prod=false
|
||||
$STD pnpm build
|
||||
$STD pnpm db:migrate
|
||||
msg_ok "Updated Open Archiver"
|
||||
|
||||
msg_info "Starting Services"
|
||||
systemctl start openarchiver
|
||||
msg_ok "Started Services"
|
||||
msg_ok "Updated Successfully"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
||||
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-4}"
|
||||
var_ram="${var_ram:-8192}"
|
||||
var_disk="${var_disk:-25}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_version="${var_version:-12}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
|
||||
@@ -37,7 +37,7 @@ function update_script() {
|
||||
fetch_and_deploy_gh_release "Palmr" "kyantech/Palmr" "tarball" "latest" "/opt/palmr"
|
||||
|
||||
PNPM="$(jq -r '.packageManager' /opt/palmr/package.json)"
|
||||
NODE_VERSION="20" NODE_MODULE="$PNPM" setup_nodejs
|
||||
NODE_VERSION="24" NODE_MODULE="$PNPM" setup_nodejs
|
||||
|
||||
msg_info "Updating ${APP}"
|
||||
cd /opt/palmr/apps/server
|
||||
|
||||
@@ -7,8 +7,8 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
||||
|
||||
APP="Paperless-AI"
|
||||
var_tags="${var_tags:-ai;document}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_cpu="${var_cpu:-4}"
|
||||
var_ram="${var_ram:-4096}"
|
||||
var_disk="${var_disk:-20}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
|
||||
76
ct/patchmon.sh
Normal file
76
ct/patchmon.sh
Normal file
@@ -0,0 +1,76 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: vhsdream
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/PatchMon/PatchMon
|
||||
|
||||
APP="PatchMon"
|
||||
var_tags="${var_tags:-monitoring}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-4}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -d "/opt/patchmon" ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
NODE_VERSION="24" setup_nodejs
|
||||
if check_for_gh_release "PatchMon" "PatchMon/PatchMon"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop patchmon-server
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Creating Backup"
|
||||
cp /opt/patchmon/backend/.env /opt/backend.env
|
||||
cp /opt/patchmon/frontend/.env /opt/frontend.env
|
||||
msg_ok "Backup Created"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "PatchMon" "PatchMon/PatchMon" "tarball" "latest" "/opt/patchmon"
|
||||
|
||||
msg_info "Updating PatchMon"
|
||||
cd /opt/patchmon
|
||||
export NODE_ENV=production
|
||||
$STD npm install --no-audit --no-fund --no-save --ignore-scripts
|
||||
cd /opt/patchmon/backend
|
||||
$STD npm install --no-audit --no-fund --no-save --ignore-scripts
|
||||
cd /opt/patchmon/frontend
|
||||
$STD npm install --include=dev --no-audit --no-fund --no-save --ignore-scripts
|
||||
$STD npm run build
|
||||
cd /opt/patchmon/backend
|
||||
mv /opt/backend.env /opt/patchmon/backend/.env
|
||||
mv /opt/frontend.env /opt/patchmon/frontend/.env
|
||||
$STD npx prisma migrate deploy
|
||||
$STD npx prisma generate
|
||||
msg_ok "Updated PatchMon"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start patchmon-server
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated Successfully!"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
|
||||
@@ -34,7 +34,7 @@ function update_script() {
|
||||
|
||||
fetch_and_deploy_gh_release "photoprism" "photoprism/photoprism" "prebuild" "latest" "/opt/photoprism" "*linux-amd64.tar.gz"
|
||||
|
||||
LIBHEIF_URL=$(curl -fsSL "https://dl.photoprism.app/dist/libheif/" | grep -oP "libheif-$(lsb_release -cs)-amd64-v[0-9\.]+\.tar\.gz" | sort -V | tail -n 1)
|
||||
LIBHEIF_URL=$(curl -fsSL "https://dl.photoprism.app/dist/libheif/" | grep -oP "libheif-bookworm-amd64-v[0-9\.]+\.tar\.gz" | sort -V | tail -n 1)
|
||||
if [[ "${LIBHEIF_URL}" != "$(cat ~/.photoprism_libheif 2>/dev/null)" ]] || [[ ! -f ~/.photoprism_libheif ]]; then
|
||||
msg_info "Updating PhotoPrism LibHeif"
|
||||
$STD apt install -y libvips42
|
||||
|
||||
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-512}"
|
||||
var_disk="${var_disk:-2}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_version="${var_version:-12}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
@@ -27,12 +27,13 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Updating ${APP}"
|
||||
msg_info "Updating PiHole"
|
||||
set +e
|
||||
$STD apt update
|
||||
$STD apt upgrade -y
|
||||
/usr/local/bin/pihole -up
|
||||
msg_ok "Updated ${APP}"
|
||||
msg_ok "Updated PiHole"
|
||||
msg_ok "Updated Successfully!"
|
||||
exit
|
||||
}
|
||||
|
||||
|
||||
@@ -27,31 +27,28 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/projectsend/projectsend/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 check_for_gh_release "projectsend" "projectsend/projectsend"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop apache2
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Updating ${APP} to v${RELEASE}"
|
||||
cd /opt
|
||||
curl -fsSL "https://github.com/projectsend/projectsend/releases/download/r${RELEASE}/projectsend-r${RELEASE}.zip" -o $(basename "https://github.com/projectsend/projectsend/releases/download/r${RELEASE}/projectsend-r${RELEASE}.zip")
|
||||
$STD unzip -o "projectsend-r${RELEASE}.zip" -d projectsend
|
||||
php_ver=$(php -v | head -n 1 | awk '{print $2}')
|
||||
if [[ ! $php_ver == "8.4"* ]]; then
|
||||
PHP_VERSION="8.4" PHP_APACHE="YES" PHP_MODULE="pdo,mysql,gettext,fileinfo" setup_php
|
||||
fi
|
||||
|
||||
mv /opt/projectsend/includes/sys.config.php /opt/sys.config.php
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "projectsend" "projectsend/projectsend" "prebuild" "latest" "/opt/projectsend" "projectsend-r*.zip"
|
||||
mv /opt/sys.config.php /opt/projectsend/includes/sys.config.php
|
||||
chown -R www-data:www-data /opt/projectsend
|
||||
chmod -R 775 /opt/projectsend
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
msg_ok "Updated $APP to v${RELEASE}"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start apache2
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -rf "/opt/projectsend-r${RELEASE}.zip"
|
||||
msg_ok "Cleaned"
|
||||
msg_ok "Updated Successfully"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
|
||||
APP="rwMarkable"
|
||||
var_tags="${var_tags:-tasks;notes}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_ram="${var_ram:-3072}"
|
||||
var_disk="${var_disk:-6}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
@@ -29,38 +29,41 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "rwMarkable" "fccview/rwMarkable"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop rwmarkable
|
||||
msg_ok "Stopped Service"
|
||||
msg_info "Stopping service"
|
||||
systemctl -q disable --now rwmarkable
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up configuration & data"
|
||||
cd /opt/rwmarkable
|
||||
cp ./.env /opt/app.env
|
||||
$STD tar -cf /opt/data_config.tar ./data ./config
|
||||
msg_ok "Backed up configuration & data"
|
||||
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "jotty" "fccview/jotty" "tarball" "latest" "/opt/jotty"
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "rwMarkable" "fccview/rwMarkable" "tarball" "latest" "/opt/rwmarkable"
|
||||
msg_info "Updating app"
|
||||
cd /opt/jotty
|
||||
$STD yarn --frozen-lockfile
|
||||
$STD yarn next telemetry disable
|
||||
$STD yarn build
|
||||
msg_ok "Updated app"
|
||||
|
||||
msg_info "Updating app"
|
||||
cd /opt/rwmarkable
|
||||
$STD yarn --frozen-lockfile
|
||||
$STD yarn next telemetry disable
|
||||
$STD yarn build
|
||||
msg_ok "Updated app"
|
||||
msg_info "Migrating configuration & data"
|
||||
cp /opt/rwmarkable/.env /opt/jotty/.env
|
||||
mkdir -p /opt/jotty/data
|
||||
cp -r /opt/rwmarkable/data/* /opt/jotty/data
|
||||
cp -r /opt/rwmarkable/config/* /opt/jotty/config
|
||||
msg_ok "Migrated configuration & data"
|
||||
|
||||
msg_info "Restoring configuration & data"
|
||||
mv /opt/app.env /opt/rwmarkable/.env
|
||||
$STD tar -xf /opt/data_config.tar
|
||||
msg_ok "Restored configuration & data"
|
||||
msg_info "Patching systemd service file"
|
||||
sed -i 's/rw[M|m]arkable/jotty/g' /etc/systemd/system/rwmarkable.service
|
||||
mv /etc/systemd/system/rwmarkable.service /etc/systemd/system/jotty.service
|
||||
systemctl daemon-reload
|
||||
msg_ok "Patched systemd service file"
|
||||
|
||||
msg_info "Restarting ${APP} service"
|
||||
systemctl start rwmarkable
|
||||
msg_ok "Restarted ${APP} service"
|
||||
rm /opt/data_config.tar
|
||||
msg_ok "Updated Successfully"
|
||||
fi
|
||||
msg_info "Patching update script"
|
||||
sed -i 's/rwmarkable/jotty/g' /usr/bin/update
|
||||
msg_ok "Patched update script"
|
||||
|
||||
msg_info "Starting jotty service"
|
||||
systemctl -q enable --now jotty
|
||||
msg_ok "Started jotty service"
|
||||
msg_ok "Migrated Successfully!"
|
||||
exit
|
||||
}
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-1024}"
|
||||
var_disk="${var_disk:-4}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_version="${var_version:-12}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
|
||||
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-512}"
|
||||
var_disk="${var_disk:-2}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_version="${var_version:-12}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
"documentation": "https://docs.bunkerweb.io/latest/",
|
||||
"website": "https://www.bunkerweb.io/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/bunkerweb.webp",
|
||||
"config_path": "/opt/bunkerweb/variables.env",
|
||||
"config_path": "/etc/bunkerweb/variables.env",
|
||||
"description": "BunkerWeb is a security-focused web server that enhances web application protection. It guards against common web vulnerabilities like SQL injection, XSS, and CSRF. It features simple setup and configuration using a YAML file, customizable security rules, and provides detailed logs for traffic monitoring and threat detection.",
|
||||
"install_methods": [
|
||||
{
|
||||
|
||||
44
frontend/public/json/comfyui.json
Normal file
44
frontend/public/json/comfyui.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"name": "ComfyUI",
|
||||
"slug": "comfyui",
|
||||
"categories": [
|
||||
20
|
||||
],
|
||||
"date_created": "2025-10-26",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"config_path": "/opt",
|
||||
"interface_port": 8188,
|
||||
"documentation": "https://github.com/comfyanonymous/ComfyUI",
|
||||
"website": "https://www.comfy.org/",
|
||||
"logo": "https://framerusercontent.com/images/3cNQMWKzIhIrQ5KErBm7dSmbd2w.png",
|
||||
"description": "ComfyUI is a node-based interface and inference engine for generative AI. Users can combine various AI models and operations through nodes to achieve highly customizable and controllable content generation.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/comfyui.sh",
|
||||
"resources": {
|
||||
"cpu": 4,
|
||||
"ram": 8192,
|
||||
"hdd": 25,
|
||||
"os": "debian",
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "Application takes long time to install. Please be patient!",
|
||||
"type": "warning"
|
||||
},
|
||||
{
|
||||
"text": "Please check that you have installed the drivers for your GPU.",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 10,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
{
|
||||
"name": "GoMFT",
|
||||
"slug": "gomft",
|
||||
"categories": [
|
||||
7
|
||||
],
|
||||
"date_created": "2025-03-18",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 8080,
|
||||
"documentation": "https://github.com/StarFleetCPTN/GoMFT#configuration",
|
||||
"website": "https://github.com/StarFleetCPTN/GoMFT",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/gomft.webp",
|
||||
"config_path": "/opt/gomft/.env",
|
||||
"description": "GoMFT is a web-based managed file transfer application built with Go, leveraging rclone for robust file transfer capabilities. It provides a user-friendly interface for configuring, scheduling, and monitoring file transfers across various storage providers.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/gomft.sh",
|
||||
"resources": {
|
||||
"cpu": 1,
|
||||
"ram": 512,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": "admin@example.com",
|
||||
"password": "admin"
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "For additional configuration options check the documentation.",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -12,7 +12,7 @@
|
||||
"documentation": "https://github.com/HydroshieldMKII/Guardian/blob/main/README.md",
|
||||
"config_path": "/opt/guardian/.env",
|
||||
"website": "https://github.com/HydroshieldMKII/Guardian",
|
||||
"logo": null,
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/guardian-plex.webp",
|
||||
"description": "Guardian is a lightweight companion app for Plex that lets you monitor, approve or block devices in real time. It helps you enforce per-user or global policies, stop unwanted sessions automatically and grant temporary access - all through a simple web interface.",
|
||||
"install_methods": [
|
||||
{
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 8,
|
||||
"hdd": 16,
|
||||
"os": "ubuntu",
|
||||
"version": "24.04"
|
||||
}
|
||||
|
||||
40
frontend/public/json/jotty.json
Normal file
40
frontend/public/json/jotty.json
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"name": "jotty",
|
||||
"slug": "jotty",
|
||||
"categories": [
|
||||
12
|
||||
],
|
||||
"date_created": "2025-10-21",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 3000,
|
||||
"documentation": "https://github.com/fccview/jotty/blob/main/README.md",
|
||||
"website": "https://github.com/fccview/jotty",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/jotty.webp",
|
||||
"config_path": "/opt/jotty/.env",
|
||||
"description": "A simple, self-hosted app for your checklists and notes. Tired of bloated, cloud-based to-do apps? jotty is a lightweight alternative for managing your personal checklists and notes. It's built with Next.js 14, is easy to deploy, and keeps all your data on your own server.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/jotty.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 3072,
|
||||
"hdd": 6,
|
||||
"os": "debian",
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "jotty was previously named rwMarkable",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 8,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -1,48 +1,48 @@
|
||||
{
|
||||
"name": "MySQL",
|
||||
"slug": "mysql",
|
||||
"categories": [
|
||||
8
|
||||
],
|
||||
"date_created": "2024-10-10",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": null,
|
||||
"documentation": "https://dev.mysql.com/doc/",
|
||||
"website": "https://www.mysql.com/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/mysql.webp",
|
||||
"config_path": "",
|
||||
"description": "MySQL is an open-source relational database management system (RDBMS) that uses SQL for managing and manipulating data. It is known for its scalability, reliability, and high performance, making it suitable for small to large-scale applications. Key features include support for ACID transactions, data replication for high availability, and compatibility with various programming languages like Python, PHP, and Java.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/mysql.sh",
|
||||
"resources": {
|
||||
"cpu": 1,
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
"name": "MySQL",
|
||||
"slug": "mysql",
|
||||
"categories": [
|
||||
8
|
||||
],
|
||||
"date_created": "2024-10-10",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": null,
|
||||
"documentation": "https://dev.mysql.com/doc/",
|
||||
"website": "https://www.mysql.com/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/mysql.webp",
|
||||
"config_path": "",
|
||||
"description": "MySQL is an open-source relational database management system (RDBMS) that uses SQL for managing and manipulating data. It is known for its scalability, reliability, and high performance, making it suitable for small to large-scale applications. Key features include support for ACID transactions, data replication for high availability, and compatibility with various programming languages like Python, PHP, and Java.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/mysql.sh",
|
||||
"resources": {
|
||||
"cpu": 1,
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "Database credentials: `cat mysql.creds`",
|
||||
"type": "info"
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "Database credentials: `cat mysql.creds`",
|
||||
"type": "info"
|
||||
},
|
||||
{
|
||||
"text": "With an option to install the MySQL 8.4 LTS release instead of MySQL 8.0",
|
||||
"type": "info"
|
||||
},
|
||||
{
|
||||
"text": "If installed, access phpMyAdmin at `http://<LXC_IP>/phpMyAdmin`, case sensitive.",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
{
|
||||
"text": "With an option to install the MySQL 8.4 LTS release instead of MySQL 8.0",
|
||||
"type": "info"
|
||||
},
|
||||
{
|
||||
"text": "If installed, access phpMyAdmin at `http://<LXC_IP>/phpMyAdmin`, case sensitive.",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 8,
|
||||
"os": "debian",
|
||||
"version": "13"
|
||||
"version": "12"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 6,
|
||||
"os": "debian",
|
||||
"version": "13"
|
||||
"version": "12"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "13"
|
||||
"version": "12"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
40
frontend/public/json/open-archiver.json
Normal file
40
frontend/public/json/open-archiver.json
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"name": "Open-Archiver",
|
||||
"slug": "open-archiver",
|
||||
"categories": [
|
||||
7
|
||||
],
|
||||
"date_created": "2025-10-18",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 3000,
|
||||
"documentation": "https://docs.openarchiver.com/",
|
||||
"config_path": "/opt/openarchiver/.env",
|
||||
"website": "https://openarchiver.com/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/open-archiver.webp",
|
||||
"description": "Open Archiver is a secure, self-hosted email archiving solution, and it's completely open source. Get an email archiver that enables full-text search across email and attachments. Create a permanent, searchable, and compliant mail archive from Google Workspace, Microsoft 35, and any IMAP server.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/open-archiver.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 3072,
|
||||
"hdd": 8,
|
||||
"os": "debian",
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "Data directory is: `/opt/openarchiver-data`. If you have a lot of email, you might consider mounting external storage to this directory.",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 8192,
|
||||
"hdd": 25,
|
||||
"os": "debian",
|
||||
"version": "13"
|
||||
"version": "12"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -19,8 +19,8 @@
|
||||
"type": "default",
|
||||
"script": "ct/paperless-ai.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"cpu": 4,
|
||||
"ram": 4096,
|
||||
"hdd": 20,
|
||||
"os": "debian",
|
||||
"version": "13"
|
||||
|
||||
35
frontend/public/json/patchmon.json
Normal file
35
frontend/public/json/patchmon.json
Normal file
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"name": "PatchMon",
|
||||
"slug": "patchmon",
|
||||
"categories": [
|
||||
9
|
||||
],
|
||||
"date_created": "2025-10-25",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 3399,
|
||||
"documentation": "https://docs.patchmon.net",
|
||||
"website": "https://patchmon.net",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/patchmon.webp",
|
||||
"config_path": "/opt/patchmon/backend/.env, /opt/patchmon/frontend/.env",
|
||||
"description": "Monitor Linux patches across all your hosts with real-time visibility, security update tracking, and comprehensive package management.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/patchmon.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": []
|
||||
}
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 512,
|
||||
"hdd": 2,
|
||||
"os": "debian",
|
||||
"version": "13"
|
||||
"version": "12"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
"documentation": "https://docs.planka.cloud/",
|
||||
"website": "https://planka.app/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/planka.webp",
|
||||
"config_path": "/opt/planka/planka/.env",
|
||||
"config_path": "/opt/planka/.env",
|
||||
"description": "Planka is a powerful, project management platform that transforms how teams collaborate. Create projects with multiple boards, organize tasks with intuitive drag-and-drop cards, attach files, write rich markdown descriptions, set due dates, assign team members, and keep conversations flowing with comments and labels—all with seamless real-time updates and smart notifications.",
|
||||
"install_methods": [
|
||||
{
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
{
|
||||
"name": "rwMarkable",
|
||||
"slug": "rwmarkable",
|
||||
"categories": [
|
||||
12
|
||||
],
|
||||
"date_created": "2025-10-09",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 3000,
|
||||
"documentation": "https://github.com/fccview/rwMarkable/blob/main/README.md",
|
||||
"website": "https://github.com/fccview/rwMarkable",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/rwmarkable.webp",
|
||||
"config_path": "/opt/rwmarkable/.env",
|
||||
"description": "A simple, self-hosted app for your checklists and notes. Tired of bloated, cloud-based to-do apps? rwMarkable is a lightweight alternative for managing your personal checklists and notes. It's built with Next.js 14, is easy to deploy, and keeps all your data on your own server.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/rwmarkable.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 6,
|
||||
"os": "debian",
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": []
|
||||
}
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "13"
|
||||
"version": "12"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 512,
|
||||
"hdd": 2,
|
||||
"os": "debian",
|
||||
"version": "13"
|
||||
"version": "12"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -35,6 +35,10 @@
|
||||
{
|
||||
"text": "You probably want to drastically extend the storage space to fit whatever clients you want to back up",
|
||||
"type": "info"
|
||||
},
|
||||
{
|
||||
"text": "Directory `/opt/urbackup/backups` is set as initial backup path. Change it to your liking",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -20,7 +20,7 @@ $STD apk add --no-cache \
|
||||
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)
|
||||
RELEASE=$(curl -fsSL https://teamspeak.com/en/downloads/#server | sed -n 's/.*teamspeak3-server_linux_amd64-\([0-9.]*[0-9]\).*/\1/p' | head -1)
|
||||
msg_info "Installing Teamspeak Server v${RELEASE}"
|
||||
mkdir -p /opt/teamspeak-server
|
||||
cd /opt/teamspeak-server
|
||||
|
||||
87
install/comfyui-install.sh
Normal file
87
install/comfyui-install.sh
Normal file
@@ -0,0 +1,87 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: jdacode
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/comfyanonymous/ComfyUI
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
echo
|
||||
echo "${TAB3}Choose the GPU type for ComfyUI:"
|
||||
echo "${TAB3}[1]-None [2]-NVIDIA [3]-AMD [4]-Intel"
|
||||
read -rp "${TAB3}Enter your choice [1-4] (default: 1): " gpu_choice
|
||||
gpu_choice=${gpu_choice:-1}
|
||||
case "$gpu_choice" in
|
||||
1) comfyui_gpu_type="none";;
|
||||
2) comfyui_gpu_type="nvidia";;
|
||||
3) comfyui_gpu_type="amd";;
|
||||
4) comfyui_gpu_type="intel";;
|
||||
*) comfyui_gpu_type="none"; echo "${TAB3}Invalid choice. Defaulting to ${comfyui_gpu_type}." ;;
|
||||
esac
|
||||
echo
|
||||
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
|
||||
fetch_and_deploy_gh_release "ComfyUI" "comfyanonymous/ComfyUI" "tarball" "latest" "/opt/ComfyUI"
|
||||
|
||||
msg_info "Python dependencies"
|
||||
$STD uv venv "/opt/ComfyUI/venv"
|
||||
if [[ "${comfyui_gpu_type,,}" == "nvidia" ]]; then
|
||||
$STD uv pip install \
|
||||
torch \
|
||||
torchvision \
|
||||
torchaudio \
|
||||
--extra-index-url "https://download.pytorch.org/whl/cu128" \
|
||||
--python="/opt/ComfyUI/venv/bin/python"
|
||||
elif [[ "${comfyui_gpu_type,,}" == "amd" ]]; then
|
||||
$STD uv pip install \
|
||||
torch \
|
||||
torchvision \
|
||||
torchaudio \
|
||||
--index-url "https://download.pytorch.org/whl/rocm6.3" \
|
||||
--python="/opt/ComfyUI/venv/bin/python"
|
||||
elif [[ "${comfyui_gpu_type,,}" == "intel" ]]; then
|
||||
$STD uv pip install \
|
||||
torch \
|
||||
torchvision \
|
||||
torchaudio \
|
||||
--index-url "https://download.pytorch.org/whl/xpu" \
|
||||
--python="/opt/ComfyUI/venv/bin/python"
|
||||
fi
|
||||
$STD uv pip install -r "/opt/ComfyUI/requirements.txt" --python="/opt/ComfyUI/venv/bin/python"
|
||||
msg_ok "Python dependencies"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/comfyui.service
|
||||
[Unit]
|
||||
Description=ComfyUI Service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
WorkingDirectory=/opt/ComfyUI
|
||||
ExecStart=/opt/ComfyUI/venv/bin/python /opt/ComfyUI/main.py --listen --port 8188 --cpu
|
||||
Restart=on-failure
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now comfyui
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
$STD apt -y autoremove
|
||||
$STD apt -y autoclean
|
||||
$STD apt -y clean
|
||||
msg_ok "Cleaned"
|
||||
@@ -24,9 +24,6 @@ $STD node bin/build.js dist
|
||||
sed -i "s/localhost:3012/${IP}:3012/g" /opt/cronicle/conf/config.json
|
||||
$STD /opt/cronicle/bin/control.sh setup
|
||||
$STD /opt/cronicle/bin/control.sh start
|
||||
$STD cp /opt/cronicle/bin/cronicled.init /etc/init.d/cronicled
|
||||
chmod 775 /etc/init.d/cronicled
|
||||
$STD update-rc.d cronicled defaults
|
||||
msg_ok "Configured Cronicle Primary Server"
|
||||
|
||||
motd_ssh
|
||||
|
||||
@@ -14,7 +14,7 @@ network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y \
|
||||
$STD apt install -y \
|
||||
git \
|
||||
apache2 \
|
||||
php8.4-{apcu,cli,common,curl,gd,ldap,mysql,xmlrpc,xml,mbstring,bcmath,intl,zip,redis,bz2,soap} \
|
||||
@@ -156,6 +156,7 @@ customize
|
||||
msg_info "Cleaning up"
|
||||
rm -rf /opt/glpi/install
|
||||
rm -rf /opt/glpi-${RELEASE}.tgz
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
$STD apt -y autoremove
|
||||
$STD apt -y autoclean
|
||||
$STD apt -y clean
|
||||
msg_ok "Cleaned"
|
||||
|
||||
@@ -1,78 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: Slaviša Arežina (tremor021)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/StarFleetCPTN/GoMFT
|
||||
|
||||
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 \
|
||||
sqlite3 \
|
||||
rclone \
|
||||
tzdata \
|
||||
ca-certificates
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
fetch_and_deploy_gh_release "gomft" "StarFleetCPTN/GoMFT" "singlefile" "latest" "/opt/gomft" "gomft*linux-amd64"
|
||||
|
||||
msg_info "Configuring ${APPLICATION}"
|
||||
JWT_SECRET_KEY=$(openssl rand -base64 24 | tr -d '/+=')
|
||||
cat <<EOF >/opt/gomft/.env
|
||||
SERVER_ADDRESS=:8080
|
||||
DATA_DIR=/opt/gomft/data/gomft
|
||||
BACKUP_DIR=/opt/gomft/data/gomft/backups
|
||||
JWT_SECRET=$JWT_SECRET_KEY
|
||||
BASE_URL=http://localhost:8080
|
||||
|
||||
# Email configuration
|
||||
EMAIL_ENABLED=false
|
||||
EMAIL_HOST=smtp.example.com
|
||||
EMAIL_PORT=587
|
||||
EMAIL_FROM_EMAIL=gomft@example.com
|
||||
EMAIL_FROM_NAME=GoMFT
|
||||
EMAIL_REPLY_TO=
|
||||
EMAIL_ENABLE_TLS=true
|
||||
EMAIL_REQUIRE_AUTH=true
|
||||
EMAIL_USERNAME=smtp_username
|
||||
EMAIL_PASSWORD=smtp_password
|
||||
EOF
|
||||
msg_ok "Configured ${APPLICATION}"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/gomft.service
|
||||
[Unit]
|
||||
Description=GoMFT Service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
EnvironmentFile=/opt/gomft/.env
|
||||
WorkingDirectory=/opt/gomft
|
||||
ExecStart=/opt/gomft/gomft
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now gomft
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleaned"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
@@ -14,7 +14,14 @@ network_check
|
||||
update_os
|
||||
|
||||
msg_info "Setting Up Hardware Acceleration"
|
||||
$STD apt-get -y install {va-driver-all,ocl-icd-libopencl1,intel-opencl-icd,vainfo,intel-gpu-tools}
|
||||
if ! grep -qEi 'ubuntu' /etc/os-release; then
|
||||
fetch_and_deploy_gh_release "intel-igc-core-2" "intel/intel-graphics-compiler" "binary" "latest" "" "intel-igc-core-2_*_amd64.deb"
|
||||
fetch_and_deploy_gh_release "intel-igc-opencl-2" "intel/intel-graphics-compiler" "binary" "latest" "" "intel-igc-opencl-2_*_amd64.deb"
|
||||
fetch_and_deploy_gh_release "intel-libgdgmm12" "intel/compute-runtime" "binary" "latest" "" "libigdgmm12_*_amd64.deb"
|
||||
fetch_and_deploy_gh_release "intel-opencl-icd" "intel/compute-runtime" "binary" "latest" "" "intel-opencl-icd_*_amd64.deb"
|
||||
fi
|
||||
|
||||
$STD apt -y install {va-driver-all,ocl-icd-libopencl1,intel-opencl-icd,vainfo,intel-gpu-tools}
|
||||
if [[ "$CTTYPE" == "0" ]]; then
|
||||
chgrp video /dev/dri
|
||||
chmod 755 /dev/dri
|
||||
@@ -26,13 +33,16 @@ msg_ok "Set Up Hardware Acceleration"
|
||||
|
||||
msg_info "Installing Jellyfin"
|
||||
VERSION="$(awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release)"
|
||||
# If the keyring directory is absent, create it
|
||||
if ! dpkg -s libjemalloc2 >/dev/null 2>&1; then
|
||||
$STD apt install -y libjemalloc2
|
||||
fi
|
||||
if [[ ! -f /usr/lib/libjemalloc.so ]]; then
|
||||
ln -sf /usr/lib/x86_64-linux-gnu/libjemalloc.so.2 /usr/lib/libjemalloc.so
|
||||
fi
|
||||
if [[ ! -d /etc/apt/keyrings ]]; then
|
||||
mkdir -p /etc/apt/keyrings
|
||||
fi
|
||||
# Download the repository signing key and install it to the keyring directory
|
||||
curl -fsSL https://repo.jellyfin.org/jellyfin_team.gpg.key | gpg --dearmor --yes --output /etc/apt/keyrings/jellyfin.gpg
|
||||
# Install the Deb822 format jellyfin.sources entry
|
||||
cat <<EOF >/etc/apt/sources.list.d/jellyfin.sources
|
||||
Types: deb
|
||||
URIs: https://repo.jellyfin.org/${PCT_OSTYPE}
|
||||
@@ -41,10 +51,11 @@ Components: main
|
||||
Architectures: amd64
|
||||
Signed-By: /etc/apt/keyrings/jellyfin.gpg
|
||||
EOF
|
||||
# Install Jellyfin using the metapackage (which will fetch jellyfin-server, jellyfin-web, and jellyfin-ffmpeg5)
|
||||
$STD apt-get update
|
||||
$STD apt-get install -y jellyfin
|
||||
|
||||
$STD apt update
|
||||
$STD apt install -y jellyfin
|
||||
sed -i 's/"MinimumLevel": "Information"/"MinimumLevel": "Error"/g' /etc/jellyfin/logging.json
|
||||
|
||||
chown -R jellyfin:adm /etc/jellyfin
|
||||
sleep 10
|
||||
systemctl restart jellyfin
|
||||
@@ -59,6 +70,7 @@ motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
$STD apt -y autoremove
|
||||
$STD apt -y autoclean
|
||||
$STD apt -y clean
|
||||
msg_ok "Cleaned"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: vhsdream
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/fccview/rwMarkable
|
||||
# Source: https://github.com/fccview/jotty
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
@@ -14,16 +14,16 @@ network_check
|
||||
update_os
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
||||
fetch_and_deploy_gh_release "rwMarkable" "fccview/rwMarkable" "tarball" "latest" "/opt/rwmarkable"
|
||||
fetch_and_deploy_gh_release "jotty" "fccview/jotty" "tarball" "latest" "/opt/jotty"
|
||||
|
||||
msg_info "Installing ${APPLICATION}"
|
||||
cd /opt/rwmarkable
|
||||
cd /opt/jotty
|
||||
$STD yarn --frozen-lockfile
|
||||
$STD yarn next telemetry disable
|
||||
$STD yarn build
|
||||
mkdir -p data/{users,checklists,notes}
|
||||
|
||||
cat <<EOF >/opt/rwmarkable/.env
|
||||
cat <<EOF >/opt/jotty/.env
|
||||
NODE_ENV=production
|
||||
# HTTPS=true
|
||||
|
||||
@@ -39,21 +39,21 @@ EOF
|
||||
msg_ok "Installed ${APPLICATION}"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/rwmarkable.service
|
||||
cat <<EOF >/etc/systemd/system/jotty.service
|
||||
[Unit]
|
||||
Description=rwMarkable server
|
||||
Description=jotty server
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
WorkingDirectory=/opt/rwmarkable
|
||||
EnvironmentFile=/opt/rwmarkable/.env
|
||||
WorkingDirectory=/opt/jotty
|
||||
EnvironmentFile=/opt/jotty/.env
|
||||
ExecStart=yarn start
|
||||
Restart=on-abnormal
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now rwmarkable
|
||||
systemctl enable -q --now jotty
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
@@ -13,15 +13,11 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Kavita"
|
||||
cd /opt
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Kareadita/Kavita/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||
$STD tar -xvzf <(curl -fsSL https://github.com/Kareadita/Kavita/releases/download/$RELEASE/kavita-linux-x64.tar.gz) --no-same-owner
|
||||
msg_ok "Installed Kavita"
|
||||
fetch_and_deploy_gh_release "Kavita" "Kareadita/Kavita" "prebuild" "latest" "/opt/Kavita" "kavita-linux-x64.tar.gz"
|
||||
|
||||
msg_info "Creating Service"
|
||||
service_path="/etc/systemd/system/kavita.service"
|
||||
echo "[Unit]
|
||||
cat <<EOF >/etc/systemd/system/kavita.service
|
||||
[Unit]
|
||||
Description=Kavita Server
|
||||
After=network.target
|
||||
|
||||
@@ -34,15 +30,17 @@ KillMode=process
|
||||
Restart=on-failure
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target" >$service_path
|
||||
chmod +x /opt/Kavita/* && chown root /opt/Kavita/*
|
||||
systemctl enable --now -q kavita.service
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
chmod +x /opt/Kavita/Kavita && chown root:root /opt/Kavita/Kavita
|
||||
systemctl enable -q --now kavita
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
$STD apt -y autoremove
|
||||
$STD apt -y autoclean
|
||||
$STD apt -y clean
|
||||
msg_ok "Cleaned"
|
||||
|
||||
@@ -33,7 +33,7 @@ msg_info "Installing Deno"
|
||||
export DENO_INSTALL="/usr/local"
|
||||
curl -fsSL https://deno.land/install.sh | $STD sh -s -- -y
|
||||
[[ ":$PATH:" != *":/usr/local/bin:"* ]] &&
|
||||
echo 'export PATH="/usr/local/bin:$PATH"' >>~/.bashrc &&
|
||||
echo -e "\nexport PATH=\"/usr/local/bin:\$PATH\"" >>~/.bashrc &&
|
||||
source ~/.bashrc
|
||||
msg_ok "Installed Deno"
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: davalanche
|
||||
# Author: davalanche | Co-Author: Slaviša Arežina (tremor021)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/mylar3/mylar3
|
||||
|
||||
@@ -14,7 +14,6 @@ network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y jq
|
||||
cat <<EOF >/etc/apt/sources.list.d/non-free.sources
|
||||
Types: deb
|
||||
URIs: http://deb.debian.org/debian
|
||||
@@ -23,22 +22,17 @@ Components: non-free non-free-firmware
|
||||
EOF
|
||||
$STD apt update
|
||||
$STD apt install -y unrar
|
||||
rm /etc/apt/sources.list.d/non-free.sources
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Setup Python3"
|
||||
$STD apt install -y python3-pip
|
||||
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
||||
$STD pip install -U --no-cache-dir pip
|
||||
msg_ok "Setup Python3"
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
fetch_and_deploy_gh_release "mylar3" "mylar3/mylar3" "tarball"
|
||||
|
||||
msg_info "Installing ${APPLICATION}"
|
||||
mkdir -p /opt/mylar3
|
||||
mkdir -p /opt/mylar3-data
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/mylar3/mylar3/releases/latest | jq -r '.tag_name')
|
||||
curl -fsSL "https://github.com/mylar3/mylar3/archive/refs/tags/${RELEASE}.tar.gz" | tar -xz --strip-components=1 -C /opt/mylar3
|
||||
$STD pip install --no-cache-dir -r /opt/mylar3/requirements.txt
|
||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
||||
$STD uv venv /opt/mylar3/.venv
|
||||
$STD /opt/mylar3/.venv/bin/python -m ensurepip --upgrade
|
||||
$STD /opt/mylar3/.venv/bin/python -m pip install --upgrade pip
|
||||
$STD /opt/mylar3/.venv/bin/python -m pip install --no-cache-dir -r /opt/mylar3/requirements.txt
|
||||
msg_ok "Installed ${APPLICATION}"
|
||||
|
||||
msg_info "Creating Service"
|
||||
@@ -48,7 +42,7 @@ Description=Mylar3 Service
|
||||
After=network-online.target
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/python3 /opt/mylar3/Mylar.py --daemon --nolaunch --datadir=/opt/mylar3-data
|
||||
ExecStart=/opt/mylar3/.venv/bin/python /opt/mylar3/Mylar.py --daemon --nolaunch --datadir=/opt/mylar3-data
|
||||
GuessMainPID=no
|
||||
Type=forking
|
||||
Restart=on-failure
|
||||
|
||||
@@ -16,7 +16,8 @@ update_os
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y \
|
||||
build-essential \
|
||||
ca-certificates
|
||||
ca-certificates \
|
||||
python3-setuptools
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
|
||||
@@ -63,27 +63,7 @@ msg_ok "MySQL Server configured"
|
||||
|
||||
read -r -p "${TAB3}Would you like to add PhpMyAdmin? <y/N> " prompt
|
||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||
msg_info "Installing phpMyAdmin"
|
||||
$STD apt install -y \
|
||||
apache2 \
|
||||
php \
|
||||
php-mysqli \
|
||||
php-mbstring \
|
||||
php-zip \
|
||||
php-gd \
|
||||
php-json \
|
||||
php-curl
|
||||
|
||||
curl -fsSL "https://files.phpmyadmin.net/phpMyAdmin/5.2.2/phpMyAdmin-5.2.2-all-languages.tar.gz" -o "phpMyAdmin-5.2.2-all-languages.tar.gz"
|
||||
mkdir -p /var/www/html/phpMyAdmin
|
||||
tar xf phpMyAdmin-5.2.2-all-languages.tar.gz --strip-components=1 -C /var/www/html/phpMyAdmin
|
||||
cp /var/www/html/phpMyAdmin/config.sample.inc.php /var/www/html/phpMyAdmin/config.inc.php
|
||||
SECRET=$(openssl rand -base64 24)
|
||||
sed -i "s#\$cfg\['blowfish_secret'\] = '';#\$cfg['blowfish_secret'] = '${SECRET}';#" /var/www/html/phpMyAdmin/config.inc.php
|
||||
chmod 660 /var/www/html/phpMyAdmin/config.inc.php
|
||||
chown -R www-data:www-data /var/www/html/phpMyAdmin
|
||||
systemctl restart apache2
|
||||
msg_ok "Installed phpMyAdmin"
|
||||
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/phpmyadmin.sh)"
|
||||
fi
|
||||
|
||||
msg_info "Start Service"
|
||||
|
||||
@@ -29,61 +29,49 @@ $STD apt install -y \
|
||||
python3-dev \
|
||||
python3-pip \
|
||||
python3-venv \
|
||||
python3-cffi \
|
||||
python3-certbot \
|
||||
python3-certbot-dns-cloudflare
|
||||
$STD pip3 install --break-system-packages certbot-dns-multi
|
||||
$STD python3 -m venv /opt/certbot/
|
||||
python3-cffi
|
||||
msg_ok "Installed Python Dependencies"
|
||||
|
||||
msg_info "Setting up Certbot"
|
||||
$STD python3 -m venv /opt/certbot
|
||||
$STD /opt/certbot/bin/pip install --upgrade pip setuptools wheel
|
||||
$STD /opt/certbot/bin/pip install certbot certbot-dns-cloudflare
|
||||
ln -sf /opt/certbot/bin/certbot /usr/local/bin/certbot
|
||||
msg_ok "Set up Certbot"
|
||||
|
||||
VERSION="$(awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release)"
|
||||
|
||||
msg_info "Installing Openresty"
|
||||
curl -fsSL "https://openresty.org/package/pubkey.gpg" | gpg --dearmor -o /etc/apt/trusted.gpg.d/openresty-archive-keyring.gpg
|
||||
echo -e "deb http://openresty.org/package/debian bullseye openresty" >/etc/apt/sources.list.d/openresty.list
|
||||
case "$VERSION" in
|
||||
trixie)
|
||||
echo -e "deb http://openresty.org/package/debian bookworm openresty" >/etc/apt/sources.list.d/openresty.list
|
||||
;;
|
||||
*)
|
||||
echo -e "deb http://openresty.org/package/debian $VERSION openresty" >/etc/apt/sources.list.d/openresty.list
|
||||
;;
|
||||
esac
|
||||
$STD apt update
|
||||
$STD apt -y install openresty
|
||||
msg_ok "Installed Openresty"
|
||||
|
||||
msg_info "Installing Node.js"
|
||||
$STD bash <(curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh)
|
||||
source ~/.bashrc
|
||||
$STD nvm install 16.20.2
|
||||
ln -sf /root/.nvm/versions/node/v16.20.2/bin/node /usr/bin/node
|
||||
msg_ok "Installed Node.js"
|
||||
|
||||
msg_info "Installing pnpm"
|
||||
$STD npm install -g pnpm@8.15
|
||||
msg_ok "Installed pnpm"
|
||||
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
||||
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/NginxProxyManager/nginx-proxy-manager/releases/latest |
|
||||
grep "tag_name" |
|
||||
awk '{print substr($2, 3, length($2)-4) }')
|
||||
|
||||
read -r -p "${TAB3}Would you like to install an older version (v2.10.4)? <y/N> " prompt
|
||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||
msg_info "Downloading Nginx Proxy Manager v2.10.4"
|
||||
curl -fsSL "https://codeload.github.com/NginxProxyManager/nginx-proxy-manager/tar.gz/v2.10.4" | tar -xz
|
||||
cd ./nginx-proxy-manager-2.10.4
|
||||
msg_ok "Downloaded Nginx Proxy Manager v2.10.4"
|
||||
else
|
||||
msg_info "Downloading Nginx Proxy Manager v${RELEASE}"
|
||||
curl -fsSL "https://codeload.github.com/NginxProxyManager/nginx-proxy-manager/tar.gz/v${RELEASE}" | tar -xz
|
||||
cd ./nginx-proxy-manager-"${RELEASE}"
|
||||
msg_ok "Downloaded Nginx Proxy Manager v${RELEASE}"
|
||||
fi
|
||||
msg_info "Downloading Nginx Proxy Manager v${RELEASE}"
|
||||
curl -fsSL "https://codeload.github.com/NginxProxyManager/nginx-proxy-manager/tar.gz/v${RELEASE}" | tar -xz
|
||||
cd ./nginx-proxy-manager-"${RELEASE}"
|
||||
msg_ok "Downloaded Nginx Proxy Manager v${RELEASE}"
|
||||
|
||||
msg_info "Setting up Environment"
|
||||
ln -sf /usr/bin/python3 /usr/bin/python
|
||||
ln -sf /usr/bin/certbot /opt/certbot/bin/certbot
|
||||
ln -sf /usr/local/openresty/nginx/sbin/nginx /usr/sbin/nginx
|
||||
ln -sf /usr/local/openresty/nginx/ /etc/nginx
|
||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||
sed -i "s|\"version\": \"0.0.0\"|\"version\": \"2.10.4\"|" backend/package.json
|
||||
sed -i "s|\"version\": \"0.0.0\"|\"version\": \"2.10.4\"|" frontend/package.json
|
||||
else
|
||||
sed -i "s|\"version\": \"0.0.0\"|\"version\": \"$RELEASE\"|" backend/package.json
|
||||
sed -i "s|\"version\": \"0.0.0\"|\"version\": \"$RELEASE\"|" frontend/package.json
|
||||
fi
|
||||
sed -i "s|\"version\": \"0.0.0\"|\"version\": \"$RELEASE\"|" backend/package.json
|
||||
sed -i "s|\"version\": \"0.0.0\"|\"version\": \"$RELEASE\"|" frontend/package.json
|
||||
sed -i 's+^daemon+#daemon+g' docker/rootfs/etc/nginx/nginx.conf
|
||||
NGINX_CONFS=$(find "$(pwd)" -type f -name "*.conf")
|
||||
for NGINX_CONF in $NGINX_CONFS; do
|
||||
@@ -131,9 +119,11 @@ msg_ok "Set up Environment"
|
||||
|
||||
msg_info "Building Frontend"
|
||||
cd ./frontend
|
||||
$STD pnpm install
|
||||
$STD pnpm upgrade
|
||||
$STD pnpm run build
|
||||
export NODE_OPTIONS="--openssl-legacy-provider"
|
||||
# Replace node-sass with sass in package.json before installation
|
||||
sed -i 's/"node-sass".*$/"sass": "^1.92.1",/g' package.json
|
||||
$STD yarn install --network-timeout 600000
|
||||
$STD yarn build
|
||||
cp -r dist/* /app/frontend
|
||||
cp -r app-images/* /app/frontend/images
|
||||
msg_ok "Built Frontend"
|
||||
@@ -156,7 +146,8 @@ if [ ! -f /app/config/production.json ]; then
|
||||
EOF
|
||||
fi
|
||||
cd /app
|
||||
$STD pnpm install
|
||||
export NODE_OPTIONS="--openssl-legacy-provider"
|
||||
$STD yarn install --network-timeout 600000
|
||||
msg_ok "Initialized Backend"
|
||||
|
||||
msg_info "Creating Service"
|
||||
@@ -185,7 +176,6 @@ customize
|
||||
msg_info "Starting Services"
|
||||
sed -i 's/user npm/user root/g; s/^pid/#pid/g' /usr/local/openresty/nginx/conf/nginx.conf
|
||||
sed -r -i 's/^([[:space:]]*)su npm npm/\1#su npm npm/g;' /etc/logrotate.d/nginx-proxy-manager
|
||||
sed -i 's/include-system-site-packages = false/include-system-site-packages = true/g' /opt/certbot/pyvenv.cfg
|
||||
systemctl enable -q --now openresty
|
||||
systemctl enable -q --now npm
|
||||
msg_ok "Started Services"
|
||||
|
||||
@@ -19,11 +19,11 @@ msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Checking CPU Features"
|
||||
if lscpu | grep -q 'avx'; then
|
||||
MONGODB_VERSION="7.0"
|
||||
msg_ok "AVX detected: Using MongoDB 7.0"
|
||||
MONGODB_VERSION="8.0"
|
||||
msg_ok "AVX detected: Using MongoDB 8.0"
|
||||
MONGO_VERSION="8.0" setup_mongodb
|
||||
else
|
||||
msg_error "No AVX detected: TP-Link Canceled Support for Old MongoDB for Debian 12\n https://www.tp-link.com/baltic/support/faq/4160/"
|
||||
exit 0
|
||||
MONGO_VERSION="4.4" setup_mongodb
|
||||
fi
|
||||
|
||||
msg_info "Installing Azul Zulu Java"
|
||||
@@ -34,27 +34,15 @@ $STD apt update
|
||||
$STD apt -y install zulu21-jre-headless
|
||||
msg_ok "Installed Azul Zulu Java"
|
||||
|
||||
msg_info "Installing libssl (if needed)"
|
||||
|
||||
if ! dpkg -l | grep -q 'libssl1.1'; then
|
||||
msg_info "Installing libssl (if needed)"
|
||||
curl -fsSL "https://security.debian.org/debian-security/pool/updates/main/o/openssl/libssl1.1_1.1.1w-0+deb11u4_amd64.deb" -o "/tmp/libssl.deb"
|
||||
$STD dpkg -i /tmp/libssl.deb
|
||||
rm -f /tmp/libssl.deb
|
||||
msg_ok "Installed libssl1.1"
|
||||
fi
|
||||
|
||||
msg_info "Installing MongoDB $MONGODB_VERSION"
|
||||
curl -fsSL "https://www.mongodb.org/static/pgp/server-${MONGODB_VERSION}.asc" | gpg --dearmor >/usr/share/keyrings/mongodb-server-${MONGODB_VERSION}.gpg
|
||||
cat <<EOF >/etc/apt/sources.list.d/mongodb-org-${MONGODB_VERSION}.sources
|
||||
Types: deb
|
||||
URIs: http://repo.mongodb.org/apt/debian
|
||||
Suites: $(grep '^VERSION_CODENAME=' /etc/os-release | cut -d'=' -f2)/mongodb-org/${MONGODB_VERSION}
|
||||
Components: main
|
||||
Signed-By: /usr/share/keyrings/mongodb-server-${MONGODB_VERSION}.gpg
|
||||
EOF
|
||||
$STD apt update
|
||||
$STD apt install -y mongodb-org
|
||||
msg_ok "Installed MongoDB $MONGODB_VERSION"
|
||||
|
||||
msg_info "Installing Omada Controller"
|
||||
OMADA_URL=$(curl -fsSL "https://support.omadanetworks.com/en/download/software/omada-controller/" |
|
||||
grep -o 'https://static\.tp-link\.com/upload/software/[^"]*linux_x64[^"]*\.deb' |
|
||||
|
||||
124
install/open-archiver-install.sh
Normal file
124
install/open-archiver-install.sh
Normal file
@@ -0,0 +1,124 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: Slaviša Arežina (tremor021)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://openarchiver.com/
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing dependendencies"
|
||||
$STD apt install -y valkey
|
||||
msg_ok "Installed dependendencies"
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="pnpm" setup_nodejs
|
||||
PG_VERSION="17" setup_postgresql
|
||||
fetch_and_deploy_gh_release "meilisearch" "meilisearch/meilisearch" "binary"
|
||||
fetch_and_deploy_gh_release "openarchiver" "LogicLabs-OU/OpenArchiver" "tarball"
|
||||
JWT_KEY="$(openssl rand -hex 32)"
|
||||
SECRET_KEY="$(openssl rand -hex 32)"
|
||||
IP_ADDR=$(hostname -I | awk '{print $1}')
|
||||
|
||||
msg_info "Setting up PostgreSQL"
|
||||
DB_NAME="openarchiver_db"
|
||||
DB_USER="openarchiver"
|
||||
DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-18)"
|
||||
$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
|
||||
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;"
|
||||
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
|
||||
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';"
|
||||
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC';"
|
||||
{
|
||||
echo "Open Archiver DB Credentials"
|
||||
echo "Database Name: $DB_NAME"
|
||||
echo "Database User: $DB_USER"
|
||||
echo "Database Password: $DB_PASS"
|
||||
} >>~/openarchiver.creds
|
||||
msg_ok "Set up PostgreSQL"
|
||||
|
||||
msg_info "Configuring MeiliSearch"
|
||||
curl -fsSL https://raw.githubusercontent.com/meilisearch/meilisearch/latest/config.toml -o /etc/meilisearch.toml
|
||||
MASTER_KEY=$(openssl rand -base64 12)
|
||||
sed -i \
|
||||
-e 's|^env =.*|env = "production"|' \
|
||||
-e "s|^# master_key =.*|master_key = \"$MASTER_KEY\"|" \
|
||||
-e 's|^db_path =.*|db_path = "/var/lib/meilisearch/data"|' \
|
||||
-e 's|^dump_dir =.*|dump_dir = "/var/lib/meilisearch/dumps"|' \
|
||||
-e 's|^snapshot_dir =.*|snapshot_dir = "/var/lib/meilisearch/snapshots"|' \
|
||||
-e 's|^# no_analytics = true|no_analytics = true|' \
|
||||
-e 's|^http_addr =.*|http_addr = "127.0.0.1:7700"|' \
|
||||
/etc/meilisearch.toml
|
||||
|
||||
cat <<EOF >/etc/systemd/system/meilisearch.service
|
||||
[Unit]
|
||||
Description=Meilisearch
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/meilisearch --config-file-path /etc/meilisearch.toml
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now meilisearch
|
||||
sleep 5
|
||||
msg_ok "Configured MeiliSearch"
|
||||
|
||||
msg_info "Setting up Open Archiver"
|
||||
mkdir -p /opt/openarchiver-data
|
||||
cd /opt/openarchiver
|
||||
cp .env.example .env
|
||||
sed -i "s|^NODE_ENV=.*|NODE_ENV=production|g" /opt/openarchiver/.env
|
||||
sed -i "s|^POSTGRES_DB=.*|POSTGRES_DB=openarchiver_db|g" /opt/openarchiver/.env
|
||||
sed -i "s|^POSTGRES_USER=.*|POSTGRES_USER=openarchiver|g" /opt/openarchiver/.env
|
||||
sed -i "s|^POSTGRES_PASSWORD=.*|POSTGRES_PASSWORD=$DB_PASS|g" /opt/openarchiver/.env
|
||||
sed -i "s|^DATABASE_URL=.*|DATABASE_URL=\"postgresql://openarchiver:$DB_PASS@localhost:5432/openarchiver_db\"|g" /opt/openarchiver/.env
|
||||
sed -i "s|^MEILI_HOST=.*|MEILI_HOST=http://localhost:7700|g" /opt/openarchiver/.env
|
||||
sed -i "s|^MEILI_MASTER_KEY=.*|MEILI_MASTER_KEY=$MASTER_KEY|g" /opt/openarchiver/.env
|
||||
sed -i "s|^REDIS_HOST=.*|REDIS_HOST=localhost|g" /opt/openarchiver/.env
|
||||
sed -i "s|^REDIS_PASSWORD=.*|REDIS_PASSWORD=|g" /opt/openarchiver/.env
|
||||
sed -i "s|^STORAGE_LOCAL_ROOT_PATH=.*|STORAGE_LOCAL_ROOT_PATH=/opt/openarchiver-data|g" /opt/openarchiver/.env
|
||||
sed -i "s|^JWT_SECRET=.*|JWT_SECRET=$JWT_KEY|g" /opt/openarchiver/.env
|
||||
sed -i "s|^ENCRYPTION_KEY=.*|ENCRYPTION_KEY=$SECRET_KEY|g" /opt/openarchiver/.env
|
||||
sed -i "s|^TIKA_URL=.*|TIKA_URL=|g" /opt/openarchiver/.env
|
||||
echo "ORIGIN=http://$IP_ADDR:3000" >> /opt/openarchiver/.env
|
||||
$STD pnpm install --shamefully-hoist --frozen-lockfile --prod=false
|
||||
$STD pnpm build
|
||||
$STD pnpm db:migrate
|
||||
msg_ok "Setup Open Archiver"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/openarchiver.service
|
||||
[Unit]
|
||||
Description=Open Archiver Service
|
||||
After=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
EnvironmentFile=/opt/openarchiver/.env
|
||||
WorkingDirectory=/opt/openarchiver
|
||||
ExecStart=/usr/bin/pnpm docker-start
|
||||
Restart=on-failure
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now openarchiver
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
$STD apt -y autoremove
|
||||
$STD apt -y autoclean
|
||||
$STD apt -y clean
|
||||
msg_ok "Cleaned"
|
||||
@@ -15,7 +15,7 @@ update_os
|
||||
|
||||
fetch_and_deploy_gh_release "Palmr" "kyantech/Palmr" "tarball" "latest" "/opt/palmr"
|
||||
PNPM="$(jq -r '.packageManager' /opt/palmr/package.json)"
|
||||
NODE_VERSION="20" NODE_MODULE="$PNPM" setup_nodejs
|
||||
NODE_VERSION="24" NODE_MODULE="$PNPM" setup_nodejs
|
||||
|
||||
msg_info "Configuring palmr backend"
|
||||
PALMR_DIR="/opt/palmr_data"
|
||||
|
||||
@@ -22,8 +22,7 @@ $STD apt install -y \
|
||||
optipng \
|
||||
libpq-dev \
|
||||
libmagic-dev \
|
||||
mime-support \
|
||||
libzbar0 \
|
||||
libzbar0t64 \
|
||||
poppler-utils \
|
||||
default-libmysqlclient-dev \
|
||||
automake \
|
||||
@@ -31,37 +30,22 @@ $STD apt install -y \
|
||||
pkg-config \
|
||||
libtiff-dev \
|
||||
libpng-dev \
|
||||
libleptonica-dev
|
||||
libleptonica-dev \
|
||||
unpaper \
|
||||
icc-profiles-free \
|
||||
qpdf \
|
||||
libleptonica6 \
|
||||
libxml2 \
|
||||
pngquant \
|
||||
zlib1g \
|
||||
tesseract-ocr \
|
||||
tesseract-ocr-eng \
|
||||
ghostscript
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
PG_VERSION="16" setup_postgresql
|
||||
PYTHON_VERSION="3.13" setup_uv
|
||||
fetch_and_deploy_gh_release "paperless" "paperless-ngx/paperless-ngx" "prebuild" "latest" "/opt/paperless" "paperless*tar.xz"
|
||||
fetch_and_deploy_gh_release "jbig2enc" "ie13/jbig2enc" "tarball" "latest" "/opt/jbig2enc"
|
||||
setup_gs
|
||||
|
||||
msg_info "Installing OCR Dependencies (Patience)"
|
||||
$STD apt install -y \
|
||||
unpaper \
|
||||
icc-profiles-free \
|
||||
qpdf \
|
||||
liblept5 \
|
||||
libxml2 \
|
||||
pngquant \
|
||||
zlib1g \
|
||||
tesseract-ocr \
|
||||
tesseract-ocr-eng
|
||||
msg_ok "Installed OCR Dependencies"
|
||||
|
||||
msg_info "Setup JBIG2"
|
||||
cd /opt/jbig2enc
|
||||
$STD bash ./autogen.sh
|
||||
$STD bash ./configure
|
||||
$STD make
|
||||
$STD make install
|
||||
cd /
|
||||
rm -rf /opt/jbig2enc
|
||||
msg_ok "Installed JBIG2"
|
||||
|
||||
msg_info "Setting up PostgreSQL database"
|
||||
DB_NAME=paperlessdb
|
||||
@@ -126,7 +110,11 @@ $STD uv run python -m nltk.downloader -d /usr/share/nltk_data snowball_data
|
||||
$STD uv run python -m nltk.downloader -d /usr/share/nltk_data stopwords
|
||||
$STD uv run python -m nltk.downloader -d /usr/share/nltk_data punkt_tab || \
|
||||
$STD uv run python -m nltk.downloader -d /usr/share/nltk_data punkt
|
||||
sed -i -e 's/rights="none" pattern="PDF"/rights="read|write" pattern="PDF"/' /etc/ImageMagick-6/policy.xml
|
||||
for policy_file in /etc/ImageMagick-6/policy.xml /etc/ImageMagick-7/policy.xml; do
|
||||
if [[ -f "$policy_file" ]]; then
|
||||
sed -i -e 's/rights="none" pattern="PDF"/rights="read|write" pattern="PDF"/' "$policy_file"
|
||||
fi
|
||||
done
|
||||
msg_ok "Installed Natural Language Toolkit"
|
||||
|
||||
msg_info "Creating Services"
|
||||
|
||||
@@ -13,19 +13,10 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y \
|
||||
ca-certificates \
|
||||
software-properties-common \
|
||||
apt-transport-https \
|
||||
lsb-release \
|
||||
php-{opcache,curl,gd,mbstring,xml,bcmath,intl,zip,xsl,pgsql} \
|
||||
libapache2-mod-php \
|
||||
composer
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
|
||||
PG_VERSION="16" setup_postgresql
|
||||
PHP_VERSION="8.4" PHP_APACHE="YES" PHP_MODULE="xsl,pgsql" setup_php
|
||||
setup_composer
|
||||
|
||||
msg_info "Setting up PHP"
|
||||
PHPVER=$(php -r 'echo PHP_MAJOR_VERSION . "." . PHP_MINOR_VERSION . "\n";')
|
||||
|
||||
287
install/patchmon-install.sh
Normal file
287
install/patchmon-install.sh
Normal file
@@ -0,0 +1,287 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: vhsdream
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/PatcMmon/PatchMon
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y \
|
||||
build-essential \
|
||||
nginx \
|
||||
redis-server
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
NODE_VERSION="24" setup_nodejs
|
||||
PG_VERSION="17" setup_postgresql
|
||||
|
||||
msg_info "Setup PostgreSQL Database"
|
||||
DB_NAME=patchmon_db
|
||||
DB_USER=patchmon_usr
|
||||
DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)"
|
||||
$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
|
||||
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;"
|
||||
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
|
||||
$STD sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE $DB_NAME TO $DB_USER;"
|
||||
{
|
||||
echo "PatchMon Credentials"
|
||||
echo "PatchMon Database Name: $DB_NAME"
|
||||
echo "PatchMon Database User: $DB_USER"
|
||||
echo "PatchMon Database Password: $DB_PASS"
|
||||
} >>~/patchmon.creds
|
||||
msg_ok "Setup PostgreSQL Database"
|
||||
|
||||
fetch_and_deploy_gh_release "PatchMon" "PatchMon/PatchMon" "tarball" "latest" "/opt/patchmon"
|
||||
|
||||
msg_info "Configuring PatchMon"
|
||||
cd /opt/patchmon
|
||||
export NODE_ENV=production
|
||||
$STD npm install --no-audit --no-fund --no-save --ignore-scripts
|
||||
cd /opt/patchmon/backend
|
||||
$STD npm install --no-audit --no-fund --no-save --ignore-scripts
|
||||
cd /opt/patchmon/frontend
|
||||
$STD npm install --include=dev --no-audit --no-fund --no-save --ignore-scripts
|
||||
$STD npm run build
|
||||
|
||||
JWT_SECRET="$(openssl rand -base64 64 | tr -d "=+/" | cut -c1-50)"
|
||||
LOCAL_IP="$(hostname -I | awk '{print $1}')"
|
||||
cat <<EOF >/opt/patchmon/backend/.env
|
||||
# Database Configuration
|
||||
DATABASE_URL="postgresql://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME"
|
||||
PY_THRESHOLD=3M_DB_CONN_MAX_ATTEMPTS=30
|
||||
PM_DB_CONN_WAIT_INTERVAL=2
|
||||
|
||||
# JWT Configuration
|
||||
JWT_SECRET="$JWT_SECRET"
|
||||
JWT_EXPIRES_IN=1h
|
||||
JWT_REFRESH_EXPIRES_IN=7d
|
||||
|
||||
# Server Configuration
|
||||
PORT=3399
|
||||
NODE_ENV=production
|
||||
|
||||
# API Configuration
|
||||
API_VERSION=v1
|
||||
|
||||
# CORS Configuration
|
||||
CORS_ORIGIN="http://$LOCAL_IP"
|
||||
|
||||
# Session Configuration
|
||||
SESSION_INACTIVITY_TIMEOUT_MINUTES=30
|
||||
|
||||
# User Configuration
|
||||
DEFAULT_USER_ROLE=user
|
||||
|
||||
# Rate Limiting (times in milliseconds)
|
||||
RATE_LIMIT_WINDOW_MS=900000
|
||||
RATE_LIMIT_MAX=5000
|
||||
AUTH_RATE_LIMIT_WINDOW_MS=600000
|
||||
AUTH_RATE_LIMIT_MAX=500
|
||||
AGENT_RATE_LIMIT_WINDOW_MS=60000
|
||||
AGENT_RATE_LIMIT_MAX=1000
|
||||
|
||||
# Redis Configuration
|
||||
REDIS_HOST=localhost
|
||||
REDIS_PORT=6379
|
||||
|
||||
# Logging
|
||||
LOG_LEVEL=info
|
||||
ENABLE_LOGGING=true
|
||||
|
||||
# TFA Configuration
|
||||
TFA_REMEMBER_ME_EXPIRES_IN=30d
|
||||
TFA_MAX_REMEMBER_SESSIONS=5
|
||||
TFA_SUSPICIOUS_ACTIVITY_THRESHOLD=3
|
||||
EOF
|
||||
|
||||
cat <<EOF >/opt/patchmon/frontend/.env
|
||||
VITE_API_URL=http://$LOCAL_IP/api/v1
|
||||
VITE_APP_NAME=PatchMon
|
||||
VITE_APP_VERSION=1.3.0
|
||||
EOF
|
||||
|
||||
cd /opt/patchmon/backend
|
||||
$STD npx prisma migrate deploy
|
||||
$STD npx prisma generate
|
||||
msg_ok "Configured PatchMon"
|
||||
|
||||
msg_info "Configuring Nginx"
|
||||
cat <<EOF >/etc/nginx/sites-available/patchmon.conf
|
||||
server {
|
||||
listen 80;
|
||||
server_name $LOCAL_IP;
|
||||
|
||||
# Security headers
|
||||
add_header X-Frame-Options DENY always;
|
||||
add_header X-Content-Type-Options nosniff always;
|
||||
add_header X-XSS-Protection "1; mode=block" always;
|
||||
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
|
||||
|
||||
# Frontend
|
||||
location / {
|
||||
root /opt/patchmon/frontend/dist;
|
||||
try_files \$uri \$uri/ /index.html;
|
||||
}
|
||||
|
||||
# Bull Board proxy
|
||||
location /bullboard {
|
||||
proxy_pass http://127.0.0.1:3399;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade \$http_upgrade;
|
||||
proxy_set_header Connection 'upgrade';
|
||||
proxy_set_header Host \$host;
|
||||
proxy_set_header X-Real-IP \$remote_addr;
|
||||
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto \$scheme;
|
||||
proxy_set_header X-Forwarded-Host \$host;
|
||||
proxy_set_header Cookie \$http_cookie;
|
||||
proxy_cache_bypass \$http_upgrade;
|
||||
proxy_read_timeout 300s;
|
||||
proxy_connect_timeout 75s;
|
||||
|
||||
# Enable cookie passthrough
|
||||
proxy_pass_header Set-Cookie;
|
||||
proxy_cookie_path / /;
|
||||
|
||||
# Preserve original client IP
|
||||
proxy_set_header X-Original-Forwarded-For \$http_x_forwarded_for;
|
||||
if (\$request_method = 'OPTIONS') {
|
||||
return 204;
|
||||
}
|
||||
}
|
||||
|
||||
# API proxy
|
||||
location /api/ {
|
||||
proxy_pass http://127.0.0.1:3399;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade \$http_upgrade;
|
||||
proxy_set_header Connection 'upgrade';
|
||||
proxy_set_header Host \$host;
|
||||
proxy_set_header X-Real-IP \$remote_addr;
|
||||
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto \$scheme;
|
||||
proxy_cache_bypass \$http_upgrade;
|
||||
proxy_read_timeout 300s;
|
||||
proxy_connect_timeout 75s;
|
||||
|
||||
# Preserve original client IP
|
||||
proxy_set_header X-Original-Forwarded-For \$http_x_forwarded_for;
|
||||
if (\$request_method = 'OPTIONS') {
|
||||
return 204;
|
||||
}
|
||||
}
|
||||
|
||||
# Static assets caching (exclude Bull Board assets)
|
||||
location ~* ^/(?!bullboard).*\.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
|
||||
root /opt/patchmon/frontend/dist;
|
||||
expires 1y;
|
||||
add_header Cache-Control "public, immutable";
|
||||
}
|
||||
|
||||
# Health check endpoint
|
||||
location /health {
|
||||
proxy_pass http://127.0.0.1:3399/health;
|
||||
access_log off;
|
||||
}
|
||||
}
|
||||
EOF
|
||||
ln -sf /etc/nginx/sites-available/patchmon.conf /etc/nginx/sites-enabled/
|
||||
rm -f /etc/nginx/sites-enabled/default
|
||||
$STD nginx -t
|
||||
systemctl restart nginx
|
||||
msg_ok "Configured Nginx"
|
||||
|
||||
msg_info "Creating service"
|
||||
cat <<EOF >/etc/systemd/system/patchmon-server.service
|
||||
[Unit]
|
||||
Description=PatchMon Service
|
||||
After=network.target postgresql.service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
WorkingDirectory=/opt/patchmon/backend
|
||||
ExecStart=/usr/bin/node src/server.js
|
||||
Restart=always
|
||||
RestartSec=10
|
||||
Environment=NODE_ENV=production
|
||||
Environment=PATH=/usr/bin:/usr/local/bin
|
||||
NoNewPrivileges=true
|
||||
PrivateTmp=true
|
||||
ProtectSystem=strict
|
||||
ProtectHome=true
|
||||
ReadWritePaths=/opt/patchmon
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now patchmon-server
|
||||
msg_ok "Created and started service"
|
||||
|
||||
msg_info "Updating settings"
|
||||
cat <<EOF >/opt/patchmon/backend/update-settings.js
|
||||
const { PrismaClient } = require('@prisma/client');
|
||||
const { v4: uuidv4 } = require('uuid');
|
||||
const prisma = new PrismaClient();
|
||||
|
||||
async function updateSettings() {
|
||||
try {
|
||||
const existingSettings = await prisma.settings.findFirst();
|
||||
|
||||
const settingsData = {
|
||||
id: uuidv4(),
|
||||
server_url: 'http://$LOCAL_IP',
|
||||
server_protocol: 'http',
|
||||
server_host: '$LOCAL_IP',
|
||||
server_port: 3399,
|
||||
update_interval: 60,
|
||||
auto_update: true,
|
||||
signup_enabled: false,
|
||||
ignore_ssl_self_signed: false,
|
||||
updated_at: new Date()
|
||||
};
|
||||
|
||||
if (existingSettings) {
|
||||
// Update existing settings
|
||||
await prisma.settings.update({
|
||||
where: { id: existingSettings.id },
|
||||
data: settingsData
|
||||
});
|
||||
} else {
|
||||
// Create new settings record
|
||||
await prisma.settings.create({
|
||||
data: settingsData
|
||||
});
|
||||
}
|
||||
|
||||
console.log('✅ Database settings updated successfully');
|
||||
} catch (error) {
|
||||
console.error('❌ Error updating settings:', error.message);
|
||||
process.exit(1);
|
||||
} finally {
|
||||
await prisma.\$disconnect();
|
||||
}
|
||||
}
|
||||
|
||||
updateSettings();
|
||||
EOF
|
||||
|
||||
cd /opt/patchmon/backend
|
||||
$STD node update-settings.js
|
||||
msg_ok "Settings updated successfully"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
$STD apt -y autoremove
|
||||
$STD apt -y autoclean
|
||||
$STD apt -y clean
|
||||
msg_ok "Cleaned"
|
||||
@@ -37,7 +37,7 @@ msg_info "Installing PhotoPrism (Patience)"
|
||||
mkdir -p /opt/photoprism/{cache,config,photos,storage,temp}
|
||||
mkdir -p /opt/photoprism/photos/{originals,import}
|
||||
mkdir -p /opt/photoprism_backups
|
||||
LIBHEIF_URL=$(curl -fsSL "https://dl.photoprism.app/dist/libheif/" | grep -oP "libheif-$(lsb_release -cs)-amd64-v[0-9\.]+\.tar\.gz" | sort -V | tail -n 1)
|
||||
LIBHEIF_URL=$(curl -fsSL "https://dl.photoprism.app/dist/libheif/" | grep -oP "libheif-bookworm-amd64-v[0-9\.]+\.tar\.gz" | sort -V | tail -n 1)
|
||||
curl -fsSL "https://dl.photoprism.app/dist/libheif/$LIBHEIF_URL" -o /tmp/libheif.tar.gz
|
||||
tar -xzf /tmp/libheif.tar.gz -C /usr/local
|
||||
ldconfig
|
||||
|
||||
@@ -13,14 +13,9 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y \
|
||||
apache2 \
|
||||
libapache2-mod-php \
|
||||
php8.2-{pdo,mysql,mbstring,gettext,fileinfo,gd,xml,zip}
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
PHP_VERSION="8.4" PHP_APACHE="YES" PHP_MODULE="pdo,mysql,gettext,fileinfo" setup_php
|
||||
setup_mariadb
|
||||
fetch_and_deploy_gh_release "projectsend" "projectsend/projectsend" "prebuild" "latest" "/opt/projectsend" "projectsend-r*.zip"
|
||||
|
||||
msg_info "Setting up MariaDB"
|
||||
DB_NAME=projectsend
|
||||
@@ -37,12 +32,7 @@ $STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUS
|
||||
} >>~/projectsend.creds
|
||||
msg_ok "Set up MariaDB"
|
||||
|
||||
msg_info "Installing projectsend"
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/projectsend/projectsend/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
cd /opt
|
||||
curl -fsSL "https://github.com/projectsend/projectsend/releases/download/r${RELEASE}/projectsend-r${RELEASE}.zip" -o "projectsend-r${RELEASE}.zip"
|
||||
mkdir projectsend
|
||||
$STD unzip "projectsend-r${RELEASE}.zip" -d projectsend
|
||||
msg_info "Installing ProjectSend"
|
||||
mv /opt/projectsend/includes/sys.config.sample.php /opt/projectsend/includes/sys.config.php
|
||||
chown -R www-data:www-data /opt/projectsend
|
||||
chmod -R 775 /opt/projectsend
|
||||
@@ -55,8 +45,7 @@ sed -i -e "s/^\(memory_limit = \).*/\1 256M/" \
|
||||
-e "s/^\(post_max_size = \).*/\1 256M/" \
|
||||
-e "s/^\(upload_max_filesize = \).*/\1 256M/" \
|
||||
-e "s/^\(max_execution_time = \).*/\1 300/" \
|
||||
/etc/php/8.2/apache2/php.ini
|
||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
||||
/etc/php/8.4/apache2/php.ini
|
||||
msg_ok "Installed projectsend"
|
||||
|
||||
msg_info "Creating Service"
|
||||
@@ -84,7 +73,6 @@ motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -rf "/opt/projectsend-r${RELEASE}.zip"
|
||||
$STD apt -y autoremove
|
||||
$STD apt -y autoclean
|
||||
$STD apt -y clean
|
||||
|
||||
@@ -14,9 +14,9 @@ network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Proxmox Backup Server"
|
||||
curl -fsSL "https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg" -o "/etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg"
|
||||
curl -fsSL "https://enterprise.proxmox.com/debian/proxmox-release-trixie.gpg" -o "/etc/apt/trusted.gpg.d/proxmox-release-trixie.gpg"
|
||||
cat <<EOF >>/etc/apt/sources.list
|
||||
deb http://download.proxmox.com/debian/pbs bookworm pbs-no-subscription
|
||||
deb http://download.proxmox.com/debian/pbs trixie pbs-no-subscription
|
||||
EOF
|
||||
$STD apt update
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
@@ -17,7 +17,7 @@ update_os
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y \
|
||||
diffutils \
|
||||
policykit-1
|
||||
polkitd
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Creating User"
|
||||
|
||||
@@ -29,6 +29,10 @@ $STD npm install
|
||||
cp .env.example .env
|
||||
mkdir -p data
|
||||
chmod 755 data
|
||||
|
||||
$STD npx prisma generate
|
||||
$STD npx prisma migrate deploy
|
||||
|
||||
$STD npm run build
|
||||
msg_ok "Installed PVE Scripts local"
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ msg_info "Installing Dependencies"
|
||||
$STD apt install -y \
|
||||
apache2-utils \
|
||||
python3-pip \
|
||||
python3.11-venv
|
||||
python3-venv
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Setting up Radicale"
|
||||
|
||||
@@ -37,7 +37,7 @@ curl -fsSL "https://github.com/Donkie/Spoolman/releases/download/$RELEASE/spoolm
|
||||
$STD unzip spoolman.zip -d spoolman
|
||||
rm -rf spoolman.zip
|
||||
cd spoolman
|
||||
$STD pip3 install -r requirements.txt
|
||||
$STD pip3 install --upgrade --ignore-installed -r requirements.txt
|
||||
curl -fsSL "https://raw.githubusercontent.com/Donkie/Spoolman/master/.env.example" -o ".env"
|
||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
||||
msg_ok "Installed Spoolman"
|
||||
|
||||
@@ -54,7 +54,6 @@ $STD apt install -y \
|
||||
libreoffice-base-core \
|
||||
libreoffice-script-provider-python \
|
||||
libreoffice-java-common \
|
||||
unoconv \
|
||||
pngquant \
|
||||
weasyprint
|
||||
msg_ok "Installed LibreOffice Components"
|
||||
|
||||
@@ -17,8 +17,8 @@ msg_info "Installing Dependencies"
|
||||
curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg
|
||||
cat <<EOF | sudo tee /etc/apt/sources.list.d/microsoft-prod.sources >/dev/null
|
||||
Types: deb
|
||||
URIs: https://packages.microsoft.com/debian/13/prod/
|
||||
Suites: trixie
|
||||
URIs: https://packages.microsoft.com/debian/12/prod/
|
||||
Suites: bookworm
|
||||
Components: main
|
||||
Signed-By: /usr/share/keyrings/microsoft-prod.gpg
|
||||
EOF
|
||||
|
||||
@@ -35,8 +35,8 @@ if ! grep -q -m1 'avx[^ ]*' /proc/cpuinfo; then
|
||||
msg_ok "No AVX Support Detected"
|
||||
msg_info "Installing MongoDB 4.4"
|
||||
if ! dpkg -l | grep -q "libssl1.1"; then
|
||||
curl -fsSL "https://security.debian.org/debian-security/pool/updates/main/o/openssl/libssl1.1_1.1.1w-0+deb11u3_amd64.deb" -o "libssl1.1_1.1.1w-0+deb11u3_amd64.deb"
|
||||
$STD dpkg -i libssl1.1_1.1.1w-0+deb11u3_amd64.deb
|
||||
curl -fsSL "https://security.debian.org/debian-security/pool/updates/main/o/openssl/libssl1.1_1.1.1w-0+deb11u4_amd64.deb" -o "libssl1.1_1.1.1w-0+deb11u4_amd64.deb"
|
||||
$STD dpkg -i libssl1.1_1.1.1w-0+deb11u4_amd64.deb
|
||||
fi
|
||||
curl -fsSL "https://www.mongodb.org/static/pgp/server-4.4.asc" | gpg --dearmor -o /usr/share/keyrings/mongodb-server-4.4.gpg
|
||||
cat <<EOF | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.sources >/dev/null
|
||||
|
||||
@@ -14,9 +14,12 @@ network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y coreutils
|
||||
$STD apt install -y \
|
||||
coreutils \
|
||||
debconf-utils
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
|
||||
msg_info "Installing UrBackup Server"
|
||||
curl -fsSL https://download.opensuse.org/repositories/home:uroni/Debian_12/Release.key | gpg --dearmor -o /usr/share/keyrings/home-uroni.gpg
|
||||
cat <<EOF | sudo tee /etc/apt/sources.list.d/home-uroni.sources >/dev/null
|
||||
@@ -27,6 +30,8 @@ Components:
|
||||
Signed-By: /usr/share/keyrings/home-uroni.gpg
|
||||
EOF
|
||||
$STD apt update
|
||||
mkdir -p /opt/urbackup/backups
|
||||
echo "urbackup-server urbackup/backuppath string /opt/urbackup/backups" | debconf-set-selections
|
||||
$STD apt install -y urbackup-server
|
||||
msg_ok "Installed UrBackup Server"
|
||||
|
||||
|
||||
@@ -345,7 +345,7 @@ if ! pct create "$CTID" "${TEMPLATE_STORAGE}:vztmpl/${TEMPLATE}" "${PCT_OPTIONS[
|
||||
msg_error "Template appears to be corrupted – re-downloading."
|
||||
rm -f "$TEMPLATE_PATH"
|
||||
else
|
||||
msg_error "Template is valid, but container creation still failed."
|
||||
msg_error "Template is valid, but container creation failed. Update your whole Proxmox System (pve-container) first or check https://github.com/community-scripts/ProxmoxVE/discussions/8126"
|
||||
exit 209
|
||||
fi
|
||||
|
||||
|
||||
2325
misc/tools.func
2325
misc/tools.func
File diff suppressed because it is too large
Load Diff
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: Author: MickLesk
|
||||
# Author: MickLesk
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
|
||||
function header_info() {
|
||||
@@ -53,20 +53,9 @@ fi
|
||||
|
||||
header_info
|
||||
|
||||
function msg_info() {
|
||||
local msg="$1"
|
||||
echo -e "${INFO} ${YW}${msg}...${CL}"
|
||||
}
|
||||
|
||||
function msg_ok() {
|
||||
local msg="$1"
|
||||
echo -e "${CM} ${GN}${msg}${CL}"
|
||||
}
|
||||
|
||||
function msg_error() {
|
||||
local msg="$1"
|
||||
echo -e "${CROSS} ${RD}${msg}${CL}"
|
||||
}
|
||||
function msg_info() { echo -e "${INFO} ${YW}$1...${CL}"; }
|
||||
function msg_ok() { echo -e "${CM} ${GN}$1${CL}"; }
|
||||
function msg_error() { echo -e "${CROSS} ${RD}$1${CL}"; }
|
||||
|
||||
# Detect legacy FileBrowser installation
|
||||
LEGACY_DB="/usr/local/community-scripts/filebrowser.db"
|
||||
@@ -96,42 +85,32 @@ if [[ -f "$LEGACY_DB" || -f "$LEGACY_BIN" && ! -f "$CONFIG_PATH" ]]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Check existing installation
|
||||
if [[ -f "$INSTALL_PATH" ]]; then
|
||||
echo -e "${YW}⚠️ ${APP} is already installed.${CL}"
|
||||
echo -n "Uninstall ${APP}? (y/N): "
|
||||
read -r uninstall_prompt
|
||||
if [[ "${uninstall_prompt,,}" =~ ^(y|yes)$ ]]; then
|
||||
msg_info "Uninstalling ${APP}"
|
||||
if [[ "$OS" == "Debian" ]]; then
|
||||
systemctl disable --now filebrowser.service &>/dev/null
|
||||
rm -f "$SERVICE_PATH"
|
||||
else
|
||||
rc-service filebrowser stop &>/dev/null
|
||||
rc-update del filebrowser &>/dev/null
|
||||
rm -f "$SERVICE_PATH"
|
||||
fi
|
||||
rm -f "$INSTALL_PATH" "$CONFIG_PATH"
|
||||
msg_ok "${APP} has been uninstalled."
|
||||
exit 0
|
||||
# Existing installation
|
||||
if [[ -f "$INSTALL_PATH" ]]; then
|
||||
echo -e "${YW}⚠️ ${APP} is already installed.${CL}"
|
||||
echo -n "Uninstall ${APP}? (y/N): "
|
||||
read -r uninstall_prompt
|
||||
if [[ "${uninstall_prompt,,}" =~ ^(y|yes)$ ]]; then
|
||||
msg_info "Uninstalling ${APP}"
|
||||
if [[ "$OS" == "Debian" ]]; then
|
||||
systemctl disable --now filebrowser.service &>/dev/null
|
||||
rm -f "$SERVICE_PATH"
|
||||
else
|
||||
rc-service filebrowser stop &>/dev/null
|
||||
rc-update del filebrowser &>/dev/null
|
||||
rm -f "$SERVICE_PATH"
|
||||
fi
|
||||
|
||||
echo -n "Update ${APP}? (y/N): "
|
||||
read -r update_prompt
|
||||
rm -f "$INSTALL_PATH" "$CONFIG_PATH"
|
||||
msg_ok "${APP} has been uninstalled."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo -n "Update ${APP}? (y/N): "
|
||||
read -r update_prompt
|
||||
if [[ "${update_prompt,,}" =~ ^(y|yes)$ ]]; then
|
||||
msg_info "Updating ${APP}"
|
||||
tmp="${INSTALL_PATH}.tmp.$$"
|
||||
if ! curl -fSL https://github.com/gtsteffaniak/filebrowser/releases/latest/download/linux-amd64-filebrowser -o "$tmp"; then
|
||||
msg_error "Download failed"
|
||||
rm -f "$tmp"
|
||||
exit 1
|
||||
fi
|
||||
chmod 0755 "$tmp"
|
||||
if ! mv -f "$tmp" "$INSTALL_PATH"; then
|
||||
msg_error "Install failed (cannot move into $INSTALL_PATH)"
|
||||
rm -f "$tmp"
|
||||
exit 1
|
||||
fi
|
||||
curl -fsSL https://github.com/gtsteffaniak/filebrowser/releases/latest/download/linux-amd64-filebrowser -o "$INSTALL_PATH"
|
||||
chmod +x "$INSTALL_PATH"
|
||||
msg_ok "Updated ${APP}"
|
||||
exit 0
|
||||
else
|
||||
@@ -147,72 +126,80 @@ PORT=${PORT:-$DEFAULT_PORT}
|
||||
|
||||
echo -n "Install ${APP}? (y/n): "
|
||||
read -r install_prompt
|
||||
if [[ "${install_prompt,,}" =~ ^(y|yes)$ ]]; then
|
||||
msg_info "Installing ${APP} on ${OS}"
|
||||
$PKG_MANAGER curl ffmpeg &>/dev/null
|
||||
curl -fsSL https://github.com/gtsteffaniak/filebrowser/releases/latest/download/linux-amd64-filebrowser -o "$INSTALL_PATH"
|
||||
chmod +x "$INSTALL_PATH"
|
||||
msg_ok "Installed ${APP}"
|
||||
if ! [[ "${install_prompt,,}" =~ ^(y|yes)$ ]]; then
|
||||
echo -e "${YW}⚠️ Installation skipped. Exiting.${CL}"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
msg_info "Preparing configuration directory"
|
||||
mkdir -p /usr/local/community-scripts
|
||||
chown root:root /usr/local/community-scripts
|
||||
chmod 755 /usr/local/community-scripts
|
||||
msg_ok "Directory prepared"
|
||||
msg_info "Installing ${APP} on ${OS}"
|
||||
$PKG_MANAGER curl ffmpeg &>/dev/null
|
||||
curl -fsSL https://github.com/gtsteffaniak/filebrowser/releases/latest/download/linux-amd64-filebrowser -o "$INSTALL_PATH"
|
||||
chmod +x "$INSTALL_PATH"
|
||||
msg_ok "Installed ${APP}"
|
||||
|
||||
echo -n "Use No Authentication? (y/N): "
|
||||
read -r noauth_prompt
|
||||
msg_info "Preparing configuration directory"
|
||||
mkdir -p /usr/local/community-scripts
|
||||
chown root:root /usr/local/community-scripts
|
||||
chmod 755 /usr/local/community-scripts
|
||||
msg_ok "Directory prepared"
|
||||
|
||||
if [[ "${noauth_prompt,,}" =~ ^(y|yes)$ ]]; then
|
||||
cat <<EOF >"$CONFIG_PATH"
|
||||
echo -n "Use No Authentication? (y/N): "
|
||||
read -r noauth_prompt
|
||||
|
||||
# === YAML CONFIG GENERATION ===
|
||||
if [[ "${noauth_prompt,,}" =~ ^(y|yes)$ ]]; then
|
||||
cat <<EOF >"$CONFIG_PATH"
|
||||
server:
|
||||
port: $PORT
|
||||
sources:
|
||||
- path: "$SRC_DIR"
|
||||
- path: "$SRC_DIR"
|
||||
name: "RootFS"
|
||||
config:
|
||||
denyByDefault: false
|
||||
disableIndexing: false
|
||||
indexingIntervalMinutes: 240
|
||||
exclude:
|
||||
folderPaths:
|
||||
- "/proc"
|
||||
- "/sys"
|
||||
- "/dev"
|
||||
- "/run"
|
||||
- "/tmp"
|
||||
- "/lost+found"
|
||||
conditionals:
|
||||
rules:
|
||||
- neverWatchPath: "/proc"
|
||||
- neverWatchPath: "/sys"
|
||||
- neverWatchPath: "/dev"
|
||||
- neverWatchPath: "/run"
|
||||
- neverWatchPath: "/tmp"
|
||||
- neverWatchPath: "/lost+found"
|
||||
auth:
|
||||
methods:
|
||||
noauth: true
|
||||
EOF
|
||||
msg_ok "Configured with no authentication"
|
||||
else
|
||||
cat <<EOF >"$CONFIG_PATH"
|
||||
msg_ok "Configured with no authentication"
|
||||
else
|
||||
cat <<EOF >"$CONFIG_PATH"
|
||||
server:
|
||||
port: $PORT
|
||||
sources:
|
||||
- path: "$SRC_DIR"
|
||||
name: "RootFS"
|
||||
config:
|
||||
denyByDefault: false
|
||||
disableIndexing: false
|
||||
indexingIntervalMinutes: 240
|
||||
exclude:
|
||||
folderPaths:
|
||||
- "/proc"
|
||||
- "/sys"
|
||||
- "/dev"
|
||||
- "/run"
|
||||
- "/tmp"
|
||||
- "/lost+found"
|
||||
conditionals:
|
||||
rules:
|
||||
- neverWatchPath: "/proc"
|
||||
- neverWatchPath: "/sys"
|
||||
- neverWatchPath: "/dev"
|
||||
- neverWatchPath: "/run"
|
||||
- neverWatchPath: "/tmp"
|
||||
- neverWatchPath: "/lost+found"
|
||||
auth:
|
||||
adminUsername: admin
|
||||
adminPassword: helper-scripts.com
|
||||
EOF
|
||||
msg_ok "Configured with default admin (admin / helper-scripts.com)"
|
||||
fi
|
||||
msg_ok "Configured with default admin (admin / helper-scripts.com)"
|
||||
fi
|
||||
|
||||
msg_info "Creating service"
|
||||
|
||||
if [[ "$OS" == "Debian" ]]; then
|
||||
cat <<EOF >"$SERVICE_PATH"
|
||||
msg_info "Creating service"
|
||||
if [[ "$OS" == "Debian" ]]; then
|
||||
cat <<EOF >"$SERVICE_PATH"
|
||||
[Unit]
|
||||
Description=FileBrowser Quantum
|
||||
After=network.target
|
||||
@@ -226,9 +213,9 @@ Restart=always
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable --now filebrowser &>/dev/null
|
||||
else
|
||||
cat <<EOF >"$SERVICE_PATH"
|
||||
systemctl enable --now filebrowser &>/dev/null
|
||||
else
|
||||
cat <<EOF >"$SERVICE_PATH"
|
||||
#!/sbin/openrc-run
|
||||
|
||||
command="/usr/local/bin/filebrowser"
|
||||
@@ -241,14 +228,10 @@ depend() {
|
||||
need net
|
||||
}
|
||||
EOF
|
||||
chmod +x "$SERVICE_PATH"
|
||||
rc-update add filebrowser default &>/dev/null
|
||||
rc-service filebrowser start &>/dev/null
|
||||
fi
|
||||
|
||||
msg_ok "Service created successfully"
|
||||
echo -e "${CM} ${GN}${APP} is reachable at: ${BL}http://$IP:$PORT${CL}"
|
||||
else
|
||||
echo -e "${YW}⚠️ Installation skipped. Exiting.${CL}"
|
||||
exit 0
|
||||
chmod +x "$SERVICE_PATH"
|
||||
rc-update add filebrowser default &>/dev/null
|
||||
rc-service filebrowser start &>/dev/null
|
||||
fi
|
||||
|
||||
msg_ok "Service created successfully"
|
||||
echo -e "${CM} ${GN}${APP} is reachable at: ${BL}http://$IP:$PORT${CL}"
|
||||
|
||||
@@ -204,7 +204,13 @@ You normally need a valid subscription for this.
|
||||
Disable it (recommended)?" 14 58 2 "yes" " " "no" " " 3>&2 2>&1 1>&3)
|
||||
case $CHOICE in
|
||||
yes)
|
||||
sed -i '/pbs-enterprise/ s/^/# /' /etc/apt/sources.list.d/pbs-enterprise.sources
|
||||
msg_info "Disabling 'pbs-enterprise' repository"
|
||||
# Use Enabled: false instead of commenting to avoid malformed entry
|
||||
if grep -q "^Enabled:" /etc/apt/sources.list.d/pbs-enterprise.sources 2>/dev/null; then
|
||||
sed -i 's/^Enabled:.*/Enabled: false/' /etc/apt/sources.list.d/pbs-enterprise.sources
|
||||
else
|
||||
echo "Enabled: false" >>/etc/apt/sources.list.d/pbs-enterprise.sources
|
||||
fi
|
||||
msg_ok "Disabled 'pbs-enterprise' repository"
|
||||
;;
|
||||
no)
|
||||
@@ -213,11 +219,12 @@ Disable it (recommended)?" 14 58 2 "yes" " " "no" " " 3>&2 2>&1 1>&3)
|
||||
esac
|
||||
else
|
||||
cat >/etc/apt/sources.list.d/pbs-enterprise.sources <<EOF
|
||||
# Types: deb
|
||||
# URIs: https://enterprise.proxmox.com/debian/pbs
|
||||
# Suites: trixie
|
||||
# Components: pbs-enterprise
|
||||
# Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
|
||||
Types: deb
|
||||
URIs: https://enterprise.proxmox.com/debian/pbs
|
||||
Suites: trixie
|
||||
Components: pbs-enterprise
|
||||
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
|
||||
Enabled: false
|
||||
EOF
|
||||
msg_ok "Added 'pbs-enterprise' repository (disabled)"
|
||||
fi
|
||||
@@ -239,11 +246,12 @@ EOF
|
||||
# --- Test repo (pbs-test, renamed) ---
|
||||
if ! component_exists_in_sources "pbs-test"; then
|
||||
cat >/etc/apt/sources.list.d/pbs-test.sources <<EOF
|
||||
# Types: deb
|
||||
# URIs: http://download.proxmox.com/debian/pbs
|
||||
# Suites: trixie
|
||||
# Components: pbs-test
|
||||
# Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
|
||||
Types: deb
|
||||
URIs: http://download.proxmox.com/debian/pbs
|
||||
Suites: trixie
|
||||
Components: pbs-test
|
||||
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
|
||||
Enabled: false
|
||||
EOF
|
||||
msg_ok "Added 'pbs-test' repository (disabled)"
|
||||
else
|
||||
|
||||
@@ -197,7 +197,7 @@ start_routines_9() {
|
||||
|
||||
# Check sources.list
|
||||
if [[ -f "$listfile" ]] && grep -qE '^\s*deb ' "$listfile"; then
|
||||
(( ++LEGACY_COUNT ))
|
||||
((++LEGACY_COUNT))
|
||||
fi
|
||||
|
||||
# Check .list files
|
||||
@@ -289,11 +289,15 @@ EOF
|
||||
msg_ok "Kept 'pve-enterprise' repository"
|
||||
;;
|
||||
disable)
|
||||
msg_info "Disabling (commenting) 'pve-enterprise' repository"
|
||||
# Comment out every non-comment line in the file that has 'pve-enterprise' in Components
|
||||
msg_info "Disabling 'pve-enterprise' repository"
|
||||
# Use Enabled: false instead of commenting to avoid malformed entry
|
||||
for file in /etc/apt/sources.list.d/*.sources; do
|
||||
if grep -q "Components:.*pve-enterprise" "$file"; then
|
||||
sed -i '/^\s*Types:/,/^$/s/^\([^#].*\)$/# \1/' "$file"
|
||||
if grep -q "^Enabled:" "$file"; then
|
||||
sed -i 's/^Enabled:.*/Enabled: false/' "$file"
|
||||
else
|
||||
echo "Enabled: false" >>"$file"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
msg_ok "Disabled 'pve-enterprise' repository"
|
||||
@@ -346,10 +350,15 @@ EOF
|
||||
msg_ok "Kept 'ceph enterprise' repository"
|
||||
;;
|
||||
disable)
|
||||
msg_info "Disabling (commenting) 'ceph enterprise' repository"
|
||||
msg_info "Disabling 'ceph enterprise' repository"
|
||||
# Use Enabled: false instead of commenting to avoid malformed entry
|
||||
for file in /etc/apt/sources.list.d/*.sources; do
|
||||
if grep -q "enterprise.proxmox.com.*ceph" "$file"; then
|
||||
sed -i '/^\s*Types:/,/^$/s/^\([^#].*\)$/# \1/' "$file"
|
||||
if grep -q "^Enabled:" "$file"; then
|
||||
sed -i 's/^Enabled:.*/Enabled: false/' "$file"
|
||||
else
|
||||
echo "Enabled: false" >>"$file"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
msg_ok "Disabled 'ceph enterprise' repository"
|
||||
@@ -472,7 +481,17 @@ EOF
|
||||
;;
|
||||
no)
|
||||
msg_error "Selected no to Adding 'ceph package repositories'"
|
||||
find /etc/apt/sources.list.d/ -type f \( -name "*.sources" -o -name "*.list" \) \
|
||||
# Use Enabled: false for .sources files, comment for .list files
|
||||
for file in /etc/apt/sources.list.d/*.sources; do
|
||||
if grep -q "enterprise.proxmox.com.*ceph" "$file" 2>/dev/null; then
|
||||
if grep -q "^Enabled:" "$file"; then
|
||||
sed -i 's/^Enabled:.*/Enabled: false/' "$file"
|
||||
else
|
||||
echo "Enabled: false" >>"$file"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
find /etc/apt/sources.list.d/ -type f -name "*.list" \
|
||||
-exec sed -i '/enterprise.proxmox.com.*ceph/s/^/# /' {} \;
|
||||
msg_ok "Disabled all Ceph Enterprise repositories"
|
||||
;;
|
||||
@@ -491,11 +510,12 @@ EOF
|
||||
yes)
|
||||
msg_info "Adding 'pve-test' repository (deb822, disabled)"
|
||||
cat >/etc/apt/sources.list.d/pve-test.sources <<EOF
|
||||
# Types: deb
|
||||
# URIs: http://download.proxmox.com/debian/pve
|
||||
# Suites: trixie
|
||||
# Components: pve-test
|
||||
# Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
|
||||
Types: deb
|
||||
URIs: http://download.proxmox.com/debian/pve
|
||||
Suites: trixie
|
||||
Components: pve-test
|
||||
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
|
||||
Enabled: false
|
||||
EOF
|
||||
msg_ok "Added 'pve-test' repository"
|
||||
;;
|
||||
|
||||
Reference in New Issue
Block a user