mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-11-20 04:25:16 +00:00
Compare commits
94 Commits
michelroeg
...
update_ver
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7c4e526673 | ||
|
|
2ff85e7aeb | ||
|
|
2d5c3f9f6d | ||
|
|
ff00e90746 | ||
|
|
acb1c4efbd | ||
|
|
26444515d4 | ||
|
|
5b39f2931e | ||
|
|
73490605c5 | ||
|
|
abc0f261fa | ||
|
|
18f474c4e7 | ||
|
|
c7342399f3 | ||
|
|
988ad7e624 | ||
|
|
e3164f6ea5 | ||
|
|
783db6630a | ||
|
|
e5db2c6eb9 | ||
|
|
29d0d98fa2 | ||
|
|
f3af0f6c34 | ||
|
|
ae8c3002ab | ||
|
|
868218a5d6 | ||
|
|
a065d1fe8f | ||
|
|
71985f47b4 | ||
|
|
cd3ceeb245 | ||
|
|
d702dcf0bb | ||
|
|
3279bc48b9 | ||
|
|
a900ebdce5 | ||
|
|
06316c2bde | ||
|
|
14c3bac046 | ||
|
|
52a18af573 | ||
|
|
97a5b21394 | ||
|
|
1f1a41e5c7 | ||
|
|
5ccc5227d7 | ||
|
|
69d9baac1f | ||
|
|
cec5c40e4a | ||
|
|
e93c4f90d9 | ||
|
|
a7b21b40fd | ||
|
|
28dc130c4a | ||
|
|
5dc53965b6 | ||
|
|
eae070cc6c | ||
|
|
c1f12b4e3f | ||
|
|
251c842cd5 | ||
|
|
d7b8474af1 | ||
|
|
44fbd31eb7 | ||
|
|
f229e6910c | ||
|
|
18c2e22de5 | ||
|
|
4074fb67e1 | ||
|
|
ee2f5ef9b3 | ||
|
|
9fc45c1929 | ||
|
|
5f31313422 | ||
|
|
99d441e37c | ||
|
|
55c21416de | ||
|
|
0296bd63c3 | ||
|
|
36630a7e4b | ||
|
|
5c0f6b282a | ||
|
|
9937bceb17 | ||
|
|
fbb807bf97 | ||
|
|
1df161b8e0 | ||
|
|
ca2903b1ff | ||
|
|
1405e28247 | ||
|
|
3257d4e9bc | ||
|
|
55166a5d6c | ||
|
|
c1c4c35732 | ||
|
|
5cc11c27d2 | ||
|
|
a8ae43f59f | ||
|
|
122e475a4a | ||
|
|
45ae66d474 | ||
|
|
6e053f2c39 | ||
|
|
71cd680db9 | ||
|
|
c65c434f01 | ||
|
|
e7f2a2b377 | ||
|
|
da3846935a | ||
|
|
8522928e14 | ||
|
|
65b8180707 | ||
|
|
37cc47126e | ||
|
|
2bbc779497 | ||
|
|
dba8fc630e | ||
|
|
fa9b815474 | ||
|
|
2eacce169c | ||
|
|
e40ed2bd80 | ||
|
|
8ffa3d6edb | ||
|
|
4087b4b0b6 | ||
|
|
ca04688b69 | ||
|
|
914584b7b8 | ||
|
|
cd2b2aade1 | ||
|
|
886213e134 | ||
|
|
022abe7ba4 | ||
|
|
e373648787 | ||
|
|
6fa77cfe99 | ||
|
|
be383e941f | ||
|
|
8d6845d90b | ||
|
|
8f82229b29 | ||
|
|
9710f32a16 | ||
|
|
fd5c07971a | ||
|
|
2ff9471d65 | ||
|
|
8edab22d32 |
12
.github/ISSUE_TEMPLATE/bug_report.yml
generated
vendored
12
.github/ISSUE_TEMPLATE/bug_report.yml
generated
vendored
@@ -22,6 +22,18 @@ body:
|
|||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
|
- type: dropdown
|
||||||
|
id: verbose_run
|
||||||
|
attributes:
|
||||||
|
label: 🔎 Did you run the script with verbose mode enabled?
|
||||||
|
description: "Required for debugging any script issue. A verbose log is mandatory."
|
||||||
|
options:
|
||||||
|
- ""
|
||||||
|
- "Yes, verbose mode was enabled and the output is included below"
|
||||||
|
- "No (this issue will likely be closed automatically)"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
- type: input
|
- type: input
|
||||||
id: script_name
|
id: script_name
|
||||||
attributes:
|
attributes:
|
||||||
|
|||||||
111
CHANGELOG.md
111
CHANGELOG.md
@@ -10,6 +10,116 @@
|
|||||||
> [!CAUTION]
|
> [!CAUTION]
|
||||||
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
|
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
|
||||||
|
|
||||||
|
## 2025-11-19
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- HotFix: Fix NetVisor env var [@vhsdream](https://github.com/vhsdream) ([#9286](https://github.com/community-scripts/ProxmoxVE/pull/9286))
|
||||||
|
- Jotty: reduce RAM requirement [@vhsdream](https://github.com/vhsdream) ([#9272](https://github.com/community-scripts/ProxmoxVE/pull/9272))
|
||||||
|
- Nginx Proxy Manager: Pin version to v2.13.4 [@tremor021](https://github.com/tremor021) ([#9259](https://github.com/community-scripts/ProxmoxVE/pull/9259))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- PVE 9.1 version support [@MickLesk](https://github.com/MickLesk) ([#9280](https://github.com/community-scripts/ProxmoxVE/pull/9280))
|
||||||
|
- force disable IPv6 if IPV6_METHOD = none [@MickLesk](https://github.com/MickLesk) ([#9277](https://github.com/community-scripts/ProxmoxVE/pull/9277))
|
||||||
|
|
||||||
|
- #### 💥 Breaking Changes
|
||||||
|
|
||||||
|
- NetVisor: v0.10.0 fixes [@vhsdream](https://github.com/vhsdream) ([#9255](https://github.com/community-scripts/ProxmoxVE/pull/9255))
|
||||||
|
|
||||||
|
## 2025-11-18
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- librenms: Fix password to short [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#9236](https://github.com/community-scripts/ProxmoxVE/pull/9236))
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Huntarr: Downgrade Python to 3.12 [@MickLesk](https://github.com/MickLesk) ([#9246](https://github.com/community-scripts/ProxmoxVE/pull/9246))
|
||||||
|
- kasm: fix release fetching [@MickLesk](https://github.com/MickLesk) ([#9244](https://github.com/community-scripts/ProxmoxVE/pull/9244))
|
||||||
|
|
||||||
|
## 2025-11-17
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Passbolt ([#9226](https://github.com/community-scripts/ProxmoxVE/pull/9226))
|
||||||
|
- Domain-Locker ([#9214](https://github.com/community-scripts/ProxmoxVE/pull/9214))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Domain Monitor: Fix encryption key length in install script [@tremor021](https://github.com/tremor021) ([#9239](https://github.com/community-scripts/ProxmoxVE/pull/9239))
|
||||||
|
- NetVisor: add build deps, increase RAM [@vhsdream](https://github.com/vhsdream) ([#9205](https://github.com/community-scripts/ProxmoxVE/pull/9205))
|
||||||
|
- fix: restart apache2 after installing zabbix config [@AlphaLawless](https://github.com/AlphaLawless) ([#9206](https://github.com/community-scripts/ProxmoxVE/pull/9206))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- [core]: harmonize app_name for creds [@MickLesk](https://github.com/MickLesk) ([#9224](https://github.com/community-scripts/ProxmoxVE/pull/9224))
|
||||||
|
|
||||||
|
- #### 💥 Breaking Changes
|
||||||
|
|
||||||
|
- Refactor: paperless-ngx (Breaking Change Inside) [@MickLesk](https://github.com/MickLesk) ([#9223](https://github.com/community-scripts/ProxmoxVE/pull/9223))
|
||||||
|
|
||||||
|
### 🧰 Maintenance
|
||||||
|
|
||||||
|
- #### 📂 Github
|
||||||
|
|
||||||
|
- github: add verbose mode check to bug report template [@MickLesk](https://github.com/MickLesk) ([#9234](https://github.com/community-scripts/ProxmoxVE/pull/9234))
|
||||||
|
|
||||||
|
## 2025-11-16
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Metabase ([#9190](https://github.com/community-scripts/ProxmoxVE/pull/9190))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Change backup directory to /opt for paperless-ngx [@ProfDrYoMan](https://github.com/ProfDrYoMan) ([#9195](https://github.com/community-scripts/ProxmoxVE/pull/9195))
|
||||||
|
- Kimai: remove deprecated admin_lte section [@MickLesk](https://github.com/MickLesk) ([#9182](https://github.com/community-scripts/ProxmoxVE/pull/9182))
|
||||||
|
- healthchecks: bump python to 3.13 [@MickLesk](https://github.com/MickLesk) ([#9175](https://github.com/community-scripts/ProxmoxVE/pull/9175))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- #### 📝 Script Information
|
||||||
|
|
||||||
|
- fixed config_path for donetick [@TazztheMonster](https://github.com/TazztheMonster) ([#9203](https://github.com/community-scripts/ProxmoxVE/pull/9203))
|
||||||
|
|
||||||
|
## 2025-11-15
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- privatebin: fix: syntax error in chmod command [@CrazyWolf13](https://github.com/CrazyWolf13) ([#9169](https://github.com/community-scripts/ProxmoxVE/pull/9169))
|
||||||
|
- phpIPHAM: patch db and add fping [@MickLesk](https://github.com/MickLesk) ([#9177](https://github.com/community-scripts/ProxmoxVE/pull/9177))
|
||||||
|
- changedetection: fix: increase ressources [@CrazyWolf13](https://github.com/CrazyWolf13) ([#9171](https://github.com/community-scripts/ProxmoxVE/pull/9171))
|
||||||
|
- 2fauth: update composer command [@CrazyWolf13](https://github.com/CrazyWolf13) ([#9168](https://github.com/community-scripts/ProxmoxVE/pull/9168))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- firefly: refactor update_script and add dataimporter update [@MickLesk](https://github.com/MickLesk) ([#9178](https://github.com/community-scripts/ProxmoxVE/pull/9178))
|
||||||
|
|
||||||
|
## 2025-11-14
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- LibreNMS ([#9148](https://github.com/community-scripts/ProxmoxVE/pull/9148))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- karakeep: clean install after every update [@MickLesk](https://github.com/MickLesk) ([#9144](https://github.com/community-scripts/ProxmoxVE/pull/9144))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- bump grafana to debian 13 [@mschabhuettl](https://github.com/mschabhuettl) ([#9141](https://github.com/community-scripts/ProxmoxVE/pull/9141))
|
||||||
|
|
||||||
## 2025-11-13
|
## 2025-11-13
|
||||||
|
|
||||||
### 🆕 New Scripts
|
### 🆕 New Scripts
|
||||||
@@ -31,6 +141,7 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
|||||||
|
|
||||||
- #### 💥 Breaking Changes
|
- #### 💥 Breaking Changes
|
||||||
|
|
||||||
|
- Remove Barcodebuddy [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#9135](https://github.com/community-scripts/ProxmoxVE/pull/9135))
|
||||||
- Downgrade Swizzin to Debian 12 Bookworm [@MickLesk](https://github.com/MickLesk) ([#9116](https://github.com/community-scripts/ProxmoxVE/pull/9116))
|
- Downgrade Swizzin to Debian 12 Bookworm [@MickLesk](https://github.com/MickLesk) ([#9116](https://github.com/community-scripts/ProxmoxVE/pull/9116))
|
||||||
|
|
||||||
## 2025-11-12
|
## 2025-11-12
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ function update_script() {
|
|||||||
chown -R www-data: "/opt/2fauth"
|
chown -R www-data: "/opt/2fauth"
|
||||||
chmod -R 755 "/opt/2fauth"
|
chmod -R 755 "/opt/2fauth"
|
||||||
export COMPOSER_ALLOW_SUPERUSER=1
|
export COMPOSER_ALLOW_SUPERUSER=1
|
||||||
$STD composer install --no-dev --prefer-source
|
$STD composer install --no-dev --prefer-dist
|
||||||
php artisan 2fauth:install
|
php artisan 2fauth:install
|
||||||
$STD systemctl restart nginx
|
$STD systemctl restart nginx
|
||||||
|
|
||||||
|
|||||||
@@ -1,69 +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: bvdberg01
|
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
# Source: https://github.com/Forceu/barcodebuddy
|
|
||||||
|
|
||||||
APP="Barcode-Buddy"
|
|
||||||
var_tags="${var_tags:-grocery;household}"
|
|
||||||
var_cpu="${var_cpu:-1}"
|
|
||||||
var_ram="${var_ram:-512}"
|
|
||||||
var_disk="${var_disk:-3}"
|
|
||||||
var_os="${var_os:-debian}"
|
|
||||||
var_version="${var_version:-12}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
header_info
|
|
||||||
check_container_storage
|
|
||||||
check_container_resources
|
|
||||||
|
|
||||||
if [[ ! -d /opt/barcodebuddy ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
if check_for_gh_release "barcodebuddy" "Forceu/barcodebuddy"; then
|
|
||||||
msg_info "Stopping Service"
|
|
||||||
systemctl stop apache2
|
|
||||||
systemctl stop barcodebuddy
|
|
||||||
msg_ok "Stopped Service"
|
|
||||||
|
|
||||||
msg_info "Backing up data"
|
|
||||||
mv /opt/barcodebuddy/ /opt/barcodebuddy-backup
|
|
||||||
msg_ok "Backed up data"
|
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "barcodebuddy" "Forceu/barcodebuddy"
|
|
||||||
|
|
||||||
msg_info "Configuring ${APP}"
|
|
||||||
cp -r /opt/barcodebuddy-backup/data/. /opt/barcodebuddy/data
|
|
||||||
chown -R www-data:www-data /opt/barcodebuddy/data
|
|
||||||
msg_ok "Configured ${APP}"
|
|
||||||
|
|
||||||
msg_info "Starting Service"
|
|
||||||
systemctl start apache2
|
|
||||||
systemctl start barcodebuddy
|
|
||||||
msg_ok "Started Service"
|
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -r /opt/barcodebuddy-backup
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
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}"
|
|
||||||
@@ -7,8 +7,8 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
|||||||
|
|
||||||
APP="Change Detection"
|
APP="Change Detection"
|
||||||
var_tags="${var_tags:-monitoring;crawler}"
|
var_tags="${var_tags:-monitoring;crawler}"
|
||||||
var_cpu="${var_cpu:-2}"
|
var_cpu="${var_cpu:-4}"
|
||||||
var_ram="${var_ram:-2048}"
|
var_ram="${var_ram:-4096}"
|
||||||
var_disk="${var_disk:-10}"
|
var_disk="${var_disk:-10}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-12}"
|
var_version="${var_version:-12}"
|
||||||
|
|||||||
67
ct/domain-locker.sh
Normal file
67
ct/domain-locker.sh
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: CrazyWolf13
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/Lissy93/domain-locker
|
||||||
|
|
||||||
|
APP="Domain-Locker"
|
||||||
|
var_tags="${var_tags:-Monitoring}"
|
||||||
|
var_cpu="${var_cpu:-4}"
|
||||||
|
var_ram="${var_ram:-10240}"
|
||||||
|
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/domain-locker ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if check_for_gh_release "domain-locker" "Lissy93/domain-locker"; then
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop domain-locker
|
||||||
|
msg_info "Service stopped"
|
||||||
|
|
||||||
|
PG_VERSION="17" setup_postgresql
|
||||||
|
setup_nodejs
|
||||||
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "domain-locker" "Lissy93/domain-locker"
|
||||||
|
|
||||||
|
msg_info "Installing Modules (patience)"
|
||||||
|
cd /opt/domain-locker
|
||||||
|
$STD npm install
|
||||||
|
msg_ok "Installed Modules"
|
||||||
|
|
||||||
|
msg_info "Building Domain-Locker (a lot of patience)"
|
||||||
|
set -a
|
||||||
|
source /opt/domain-locker.env
|
||||||
|
set +a
|
||||||
|
$STD npm run build
|
||||||
|
msg_info "Built Domain-Locker"
|
||||||
|
|
||||||
|
msg_info "Restarting Services"
|
||||||
|
systemctl start domain-locker
|
||||||
|
msg_ok "Restarted 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}"
|
||||||
@@ -28,40 +28,65 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
if check_for_gh_release "firefly" "firefly-iii/firefly-iii"; then
|
|
||||||
msg_info "Stopping Apache2"
|
|
||||||
systemctl stop apache2
|
|
||||||
msg_ok "Stopped Apache2"
|
|
||||||
|
|
||||||
msg_info "Backing up data"
|
if check_for_gh_release "firefly" "firefly-iii/firefly-iii"; then
|
||||||
|
systemctl stop apache2
|
||||||
cp /opt/firefly/.env /opt/.env
|
cp /opt/firefly/.env /opt/.env
|
||||||
cp -r /opt/firefly/storage /opt/storage
|
cp -r /opt/firefly/storage /opt/storage
|
||||||
msg_ok "Backed up data"
|
|
||||||
|
if [[ -d /opt/firefly/dataimporter ]]; then
|
||||||
|
cp /opt/firefly/dataimporter/.env /opt/dataimporter.env
|
||||||
|
IMPORTER_INSTALLED=1
|
||||||
|
fi
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "firefly" "firefly-iii/firefly-iii" "prebuild" "latest" "/opt/firefly" "FireflyIII-*.zip"
|
fetch_and_deploy_gh_release "firefly" "firefly-iii/firefly-iii" "prebuild" "latest" "/opt/firefly" "FireflyIII-*.zip"
|
||||||
setup_composer
|
setup_composer
|
||||||
|
|
||||||
msg_info "Updating ${APP}"
|
msg_info "Updating Firefly"
|
||||||
rm -rf /opt/firefly/storage
|
rm -rf /opt/firefly/storage
|
||||||
cp /opt/.env /opt/firefly/.env
|
|
||||||
cp -r /opt/storage /opt/firefly/storage
|
cp -r /opt/storage /opt/firefly/storage
|
||||||
|
cp /opt/.env /opt/firefly/.env
|
||||||
|
|
||||||
chown -R www-data:www-data /opt/firefly
|
chown -R www-data:www-data /opt/firefly
|
||||||
find /opt/firefly/storage -type d -exec chmod 775 {} \;
|
chmod -R 775 /opt/firefly/storage
|
||||||
find /opt/firefly/storage -type f -exec chmod 664 {} \;
|
mkdir -p /opt/firefly/storage/framework/cache/data
|
||||||
mkdir -p /opt/firefly/storage/framework/{cache/data,sessions,views}
|
mkdir -p /opt/firefly/storage/framework/sessions
|
||||||
$STD sudo -u www-data php /opt/firefly/artisan cache:clear
|
mkdir -p /opt/firefly/storage/framework/views
|
||||||
|
mkdir -p /opt/firefly/storage/logs
|
||||||
|
mkdir -p /opt/firefly/bootstrap/cache
|
||||||
|
chown -R www-data:www-data /opt/firefly/{storage,bootstrap/cache}
|
||||||
cd /opt/firefly
|
cd /opt/firefly
|
||||||
$STD php artisan migrate --seed --force
|
$STD runuser -u www-data -- composer install --no-dev --optimize-autoloader
|
||||||
$STD php artisan cache:clear
|
$STD runuser -u www-data -- composer dump-autoload -o
|
||||||
$STD php artisan view:clear
|
|
||||||
$STD php artisan firefly-iii:upgrade-database
|
|
||||||
$STD php artisan firefly-iii:laravel-passport-keys
|
|
||||||
msg_ok "Updated ${APP}"
|
|
||||||
|
|
||||||
msg_info "Starting Apache2"
|
$STD runuser -u www-data -- php artisan cache:clear
|
||||||
|
$STD runuser -u www-data -- php artisan config:clear
|
||||||
|
$STD runuser -u www-data -- php artisan route:clear
|
||||||
|
$STD runuser -u www-data -- php artisan view:clear
|
||||||
|
|
||||||
|
$STD runuser -u www-data -- php artisan migrate --seed --force
|
||||||
|
$STD runuser -u www-data -- php artisan firefly-iii:upgrade-database
|
||||||
|
$STD runuser -u www-data -- php artisan firefly-iii:laravel-passport-keys
|
||||||
|
|
||||||
|
$STD runuser -u www-data -- php artisan storage:link || true
|
||||||
|
$STD runuser -u www-data -- php artisan optimize
|
||||||
|
msg_ok "Updated Firefly"
|
||||||
|
|
||||||
|
if [[ "${IMPORTER_INSTALLED:-0}" -eq 1 ]]; then
|
||||||
|
msg_info "Updating Firefly Importer"
|
||||||
|
IMPORTER_RELEASE=$(curl -fsSL https://api.github.com/repos/firefly-iii/data-importer/releases/latest | grep tag_name | cut -d '"' -f 4 | sed 's/v//')
|
||||||
|
rm -rf /opt/firefly/dataimporter
|
||||||
|
mkdir -p /opt/firefly/dataimporter
|
||||||
|
curl -fsSL "https://github.com/firefly-iii/data-importer/releases/download/v${IMPORTER_RELEASE}/DataImporter-v${IMPORTER_RELEASE}.tar.gz" -o "/opt/DataImporter.tar.gz"
|
||||||
|
tar -xzf /opt/DataImporter.tar.gz -C /opt/firefly/dataimporter
|
||||||
|
if [[ -f /opt/dataimporter.env ]]; then
|
||||||
|
cp /opt/dataimporter.env /opt/firefly/dataimporter/.env
|
||||||
|
fi
|
||||||
|
chown -R www-data:www-data /opt/firefly/dataimporter
|
||||||
|
rm -f /opt/DataImporter.tar.gz
|
||||||
|
msg_ok "Updated Firefly Importer"
|
||||||
|
fi
|
||||||
systemctl start apache2
|
systemctl start apache2
|
||||||
msg_ok "Started Apache2"
|
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
|||||||
var_ram="${var_ram:-512}"
|
var_ram="${var_ram:-512}"
|
||||||
var_disk="${var_disk:-2}"
|
var_disk="${var_disk:-2}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-12}"
|
var_version="${var_version:-13}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@@ -20,19 +20,29 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -f /etc/apt/sources.list.d/grafana.list ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
msg_info "Updating ${APP}"
|
if ! dpkg -s grafana >/dev/null 2>&1; then
|
||||||
$STD apt-get update
|
msg_error "No ${APP} Installation Found!"
|
||||||
$STD apt-get -y upgrade
|
exit 1
|
||||||
msg_ok "Updated successfully!"
|
fi
|
||||||
exit
|
|
||||||
|
if [[ -f /etc/apt/sources.list.d/grafana.list ]] || [[ ! -f /etc/apt/sources.list.d/grafana.sources ]]; then
|
||||||
|
setup_deb822_repo \
|
||||||
|
"grafana" \
|
||||||
|
"https://apt.grafana.com/gpg.key" \
|
||||||
|
"https://apt.grafana.com" \
|
||||||
|
"stable" \
|
||||||
|
"main"
|
||||||
|
fi
|
||||||
|
|
||||||
|
msg_info "Updating Grafana LXC"
|
||||||
|
$STD apt update
|
||||||
|
$STD apt --only-upgrade install -y grafana
|
||||||
|
msg_ok "Updated successfully!"
|
||||||
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
____ __ ____ __ __
|
|
||||||
/ __ )____ _______________ ____/ /__ / __ )__ ______/ /___/ /_ __
|
|
||||||
/ __ / __ `/ ___/ ___/ __ \/ __ / _ \______/ __ / / / / __ / __ / / / /
|
|
||||||
/ /_/ / /_/ / / / /__/ /_/ / /_/ / __/_____/ /_/ / /_/ / /_/ / /_/ / /_/ /
|
|
||||||
/_____/\__,_/_/ \___/\____/\__,_/\___/ /_____/\__,_/\__,_/\__,_/\__, /
|
|
||||||
/____/
|
|
||||||
6
ct/headers/domain-locker
Normal file
6
ct/headers/domain-locker
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
____ _ __ __
|
||||||
|
/ __ \____ ____ ___ ____ _(_)___ / / ____ _____/ /_____ _____
|
||||||
|
/ / / / __ \/ __ `__ \/ __ `/ / __ \______/ / / __ \/ ___/ //_/ _ \/ ___/
|
||||||
|
/ /_/ / /_/ / / / / / / /_/ / / / / /_____/ /___/ /_/ / /__/ ,< / __/ /
|
||||||
|
/_____/\____/_/ /_/ /_/\__,_/_/_/ /_/ /_____/\____/\___/_/|_|\___/_/
|
||||||
|
|
||||||
6
ct/headers/librenms
Normal file
6
ct/headers/librenms
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
__ _ __ _ ____ ________
|
||||||
|
/ / (_) /_ ________ / | / / |/ / ___/
|
||||||
|
/ / / / __ \/ ___/ _ \/ |/ / /|_/ /\__ \
|
||||||
|
/ /___/ / /_/ / / / __/ /| / / / /___/ /
|
||||||
|
/_____/_/_.___/_/ \___/_/ |_/_/ /_//____/
|
||||||
|
|
||||||
6
ct/headers/metabase
Normal file
6
ct/headers/metabase
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
__ ___ __ __
|
||||||
|
/ |/ /__ / /_____ _/ /_ ____ _________
|
||||||
|
/ /|_/ / _ \/ __/ __ `/ __ \/ __ `/ ___/ _ \
|
||||||
|
/ / / / __/ /_/ /_/ / /_/ / /_/ (__ ) __/
|
||||||
|
/_/ /_/\___/\__/\__,_/_.___/\__,_/____/\___/
|
||||||
|
|
||||||
6
ct/headers/passbolt
Normal file
6
ct/headers/passbolt
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
____ __ ____
|
||||||
|
/ __ \____ ___________/ /_ ____ / / /_
|
||||||
|
/ /_/ / __ `/ ___/ ___/ __ \/ __ \/ / __/
|
||||||
|
/ ____/ /_/ (__ |__ ) /_/ / /_/ / / /_
|
||||||
|
/_/ \__,_/____/____/_.___/\____/_/\__/
|
||||||
|
|
||||||
@@ -33,7 +33,7 @@ function update_script() {
|
|||||||
systemctl stop healthchecks
|
systemctl stop healthchecks
|
||||||
msg_ok "Stopped Services"
|
msg_ok "Stopped Services"
|
||||||
|
|
||||||
PYTHON_VERSION="3.12" setup_uv
|
PYTHON_VERSION="3.13" setup_uv
|
||||||
fetch_and_deploy_gh_release "healthchecks" "healthchecks/healthchecks"
|
fetch_and_deploy_gh_release "healthchecks" "healthchecks/healthchecks"
|
||||||
|
|
||||||
msg_info "Updating healthchecks"
|
msg_info "Updating healthchecks"
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
|
|||||||
var_ram="${var_ram:-1024}"
|
var_ram="${var_ram:-1024}"
|
||||||
var_disk="${var_disk:-4}"
|
var_disk="${var_disk:-4}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-12}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@@ -29,7 +29,7 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
setup_uv
|
PYTHON_VERSION="3.12" setup_uv
|
||||||
|
|
||||||
if check_for_gh_release "huntarr" "plexguide/Huntarr.io"; then
|
if check_for_gh_release "huntarr" "plexguide/Huntarr.io"; then
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
|
|||||||
APP="jotty"
|
APP="jotty"
|
||||||
var_tags="${var_tags:-tasks;notes}"
|
var_tags="${var_tags:-tasks;notes}"
|
||||||
var_cpu="${var_cpu:-2}"
|
var_cpu="${var_cpu:-2}"
|
||||||
var_ram="${var_ram:-4096}"
|
var_ram="${var_ram:-3072}"
|
||||||
var_disk="${var_disk:-6}"
|
var_disk="${var_disk:-6}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ function update_script() {
|
|||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
fi
|
fi
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "karakeep" "karakeep-app/karakeep"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "karakeep" "karakeep-app/karakeep"
|
||||||
if command -v corepack >/dev/null; then
|
if command -v corepack >/dev/null; then
|
||||||
$STD corepack disable
|
$STD corepack disable
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ function update_script() {
|
|||||||
[ -f "$BACKUP_DIR/local.yaml" ] && cp "$BACKUP_DIR/local.yaml" /opt/kimai/config/packages/
|
[ -f "$BACKUP_DIR/local.yaml" ] && cp "$BACKUP_DIR/local.yaml" /opt/kimai/config/packages/
|
||||||
rm -rf "$BACKUP_DIR"
|
rm -rf "$BACKUP_DIR"
|
||||||
cd /opt/kimai
|
cd /opt/kimai
|
||||||
|
sed -i '/^admin_lte:/,/^[^[:space:]]/d' config/local.yaml
|
||||||
$STD composer install --no-dev --optimize-autoloader
|
$STD composer install --no-dev --optimize-autoloader
|
||||||
$STD bin/console kimai:update
|
$STD bin/console kimai:update
|
||||||
msg_ok "Updated Kimai"
|
msg_ok "Updated Kimai"
|
||||||
|
|||||||
45
ct/librenms.sh
Normal file
45
ct/librenms.sh
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
#!/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: michelroegl-brunner
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://librenms.org
|
||||||
|
|
||||||
|
APP="LibreNMS"
|
||||||
|
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/librenms ]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
msg_info "Updating LibreNMS"
|
||||||
|
su librenms
|
||||||
|
cd /opt/librenms
|
||||||
|
./daily.sh
|
||||||
|
msg_ok "Updated LibreNMS"
|
||||||
|
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}"
|
||||||
65
ct/metabase.sh
Normal file
65
ct/metabase.sh
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
#!/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://www.metabase.com/
|
||||||
|
|
||||||
|
APP="Metabase"
|
||||||
|
var_tags="${var_tags:-analytics}"
|
||||||
|
var_cpu="${var_cpu:-2}"
|
||||||
|
var_ram="${var_ram:-2048}"
|
||||||
|
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/metabase ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if check_for_gh_release "metabase" "metabase/metabase"; then
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop metabase
|
||||||
|
msg_info "Stopped Service"
|
||||||
|
|
||||||
|
msg_info "Creating backup"
|
||||||
|
mv /opt/metabase/.env /opt
|
||||||
|
msg_ok "Created backup"
|
||||||
|
|
||||||
|
msg_info "Updating Metabase"
|
||||||
|
RELEASE=$(get_latest_github_release "metabase/metabase")
|
||||||
|
curl -fsSL "https://downloads.metabase.com/v${RELEASE}.x/metabase.jar" -o /opt/metabase/metabase.jar
|
||||||
|
echo $RELEASE >~/.metabase
|
||||||
|
msg_ok "Updated Metabase"
|
||||||
|
|
||||||
|
msg_info "Restoring backup"
|
||||||
|
mv /opt/.env /opt/metabase
|
||||||
|
msg_ok "Restored backup"
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start metabase
|
||||||
|
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}:3000${CL}"
|
||||||
@@ -8,7 +8,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
|||||||
APP="NetVisor"
|
APP="NetVisor"
|
||||||
var_tags="${var_tags:-analytics}"
|
var_tags="${var_tags:-analytics}"
|
||||||
var_cpu="${var_cpu:-2}"
|
var_cpu="${var_cpu:-2}"
|
||||||
var_ram="${var_ram:-2048}"
|
var_ram="${var_ram:-3072}"
|
||||||
var_disk="${var_disk:-6}"
|
var_disk="${var_disk:-6}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
@@ -35,18 +35,30 @@ function update_script() {
|
|||||||
msg_ok "Stopped services"
|
msg_ok "Stopped services"
|
||||||
|
|
||||||
msg_info "Backing up configurations"
|
msg_info "Backing up configurations"
|
||||||
cp /opt/netvisor/.env /opt/netvisor.env
|
cp /opt/netvisor/.env /opt/netvisor.env.bak
|
||||||
msg_ok "Backed up configurations"
|
msg_ok "Backed up configurations"
|
||||||
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "netvisor" "mayanayza/netvisor" "tarball" "latest" "/opt/netvisor"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "netvisor" "mayanayza/netvisor" "tarball" "latest" "/opt/netvisor"
|
||||||
|
|
||||||
|
if ! dpkg -l | grep -q "pkg-config"; then
|
||||||
|
$STD apt install -y pkg-config
|
||||||
|
fi
|
||||||
|
if ! dpkg -l | grep -q "libssl-dev"; then
|
||||||
|
$STD apt install -y libssl-dev
|
||||||
|
fi
|
||||||
TOOLCHAIN="$(grep "channel" /opt/netvisor/backend/rust-toolchain.toml | awk -F\" '{print $2}')"
|
TOOLCHAIN="$(grep "channel" /opt/netvisor/backend/rust-toolchain.toml | awk -F\" '{print $2}')"
|
||||||
RUST_TOOLCHAIN=$TOOLCHAIN setup_rust
|
RUST_TOOLCHAIN=$TOOLCHAIN setup_rust
|
||||||
|
|
||||||
mv /opt/netvisor.env /opt/netvisor/.env
|
cp /opt/netvisor.env.bak /opt/netvisor/.env
|
||||||
|
LOCAL_IP="$(hostname -I | awk '{print $1}')"
|
||||||
|
if ! grep -q "PUBLIC_URL"; then
|
||||||
|
sed -i "\|_PATH=|a\NETVISOR_PUBLIC_URL=http://${LOCAL_IP}:60072" /opt/netvisor/.env
|
||||||
|
fi
|
||||||
|
sed -i 's|_TARGET=.*$|_URL=http://127.0.0.1:60072|' /opt/netvisor/.env
|
||||||
|
|
||||||
msg_info "Creating frontend UI"
|
msg_info "Creating frontend UI"
|
||||||
export PUBLIC_SERVER_HOSTNAME=default
|
export PUBLIC_SERVER_HOSTNAME=default
|
||||||
export PUBLIC_SERVER_PORT=60072
|
export PUBLIC_SERVER_PORT=""
|
||||||
cd /opt/netvisor/ui
|
cd /opt/netvisor/ui
|
||||||
$STD npm ci --no-fund --no-audit
|
$STD npm ci --no-fund --no-audit
|
||||||
$STD npm run build
|
$STD npm run build
|
||||||
@@ -58,10 +70,16 @@ function update_script() {
|
|||||||
mv ./target/release/server /usr/bin/netvisor-server
|
mv ./target/release/server /usr/bin/netvisor-server
|
||||||
msg_ok "Built Netvisor-server"
|
msg_ok "Built Netvisor-server"
|
||||||
|
|
||||||
msg_info "Building Netvisor-daemon (amd64 version)"
|
msg_info "Building Netvisor-daemon"
|
||||||
$STD cargo build --release --bin daemon
|
$STD cargo build --release --bin daemon
|
||||||
cp ./target/release/daemon /usr/bin/netvisor-daemon
|
cp ./target/release/daemon /usr/bin/netvisor-daemon
|
||||||
msg_ok "Built Netvisor-daemon (amd64 version)"
|
msg_ok "Built Netvisor-daemon"
|
||||||
|
|
||||||
|
sed -i -e 's|-target|-url|' \
|
||||||
|
-e 's| --server-port |:|' \
|
||||||
|
/etc/systemd/system/netvisor-daemon.service
|
||||||
|
sed -i '/^ \"server_target.*$/d' /root/.config/daemon/config.json
|
||||||
|
systemctl daemon-reload
|
||||||
|
|
||||||
msg_info "Starting services"
|
msg_info "Starting services"
|
||||||
systemctl start netvisor-server netvisor-daemon
|
systemctl start netvisor-server netvisor-daemon
|
||||||
|
|||||||
@@ -49,12 +49,13 @@ function update_script() {
|
|||||||
|
|
||||||
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/NginxProxyManager/nginx-proxy-manager/releases/latest |
|
#RELEASE=$(curl -fsSL https://api.github.com/repos/NginxProxyManager/nginx-proxy-manager/releases/latest |
|
||||||
grep "tag_name" |
|
#grep "tag_name" |
|
||||||
awk '{print substr($2, 3, length($2)-4) }')
|
#awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "nginxproxymanager" "NginxProxyManager/nginx-proxy-manager"
|
|
||||||
|
|
||||||
|
RELEASE="2.13.4"
|
||||||
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "nginxproxymanager" "NginxProxyManager/nginx-proxy-manager" "tarball" "v${RELEASE}" "/opt/nginxproxymanager"
|
||||||
|
|
||||||
msg_info "Stopping Services"
|
msg_info "Stopping Services"
|
||||||
systemctl stop openresty
|
systemctl stop openresty
|
||||||
systemctl stop npm
|
systemctl stop npm
|
||||||
|
|||||||
@@ -27,6 +27,27 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Check for old data structure and prompt migration
|
||||||
|
if [[ -f /opt/paperless/paperless.conf ]]; then
|
||||||
|
local OLD_DIRS=()
|
||||||
|
[[ -d /opt/paperless/consume ]] && OLD_DIRS+=("consume")
|
||||||
|
[[ -d /opt/paperless/data ]] && OLD_DIRS+=("data")
|
||||||
|
[[ -d /opt/paperless/media ]] && OLD_DIRS+=("media")
|
||||||
|
|
||||||
|
if [[ ${#OLD_DIRS[@]} -gt 0 ]]; then
|
||||||
|
msg_error "Old data structure detected in /opt/paperless/"
|
||||||
|
msg_custom "📂" "Found directories: ${OLD_DIRS[*]}"
|
||||||
|
echo -e ""
|
||||||
|
msg_custom "🔄" "Migration required to new data structure (/opt/paperless_data/)"
|
||||||
|
msg_custom "📖" "Please follow the migration guide:"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}https://github.com/community-scripts/ProxmoxVE/discussions/9223${CL}"
|
||||||
|
echo -e ""
|
||||||
|
msg_custom "⚠️" "Update aborted. Please migrate your data first."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
if check_for_gh_release "paperless" "paperless-ngx/paperless-ngx"; then
|
if check_for_gh_release "paperless" "paperless-ngx/paperless-ngx"; then
|
||||||
msg_info "Stopping all Paperless-ngx Services"
|
msg_info "Stopping all Paperless-ngx Services"
|
||||||
systemctl stop paperless-consumer paperless-webserver paperless-scheduler paperless-task-queue
|
systemctl stop paperless-consumer paperless-webserver paperless-scheduler paperless-task-queue
|
||||||
@@ -34,15 +55,9 @@ function update_script() {
|
|||||||
|
|
||||||
if grep -q "uv run" /etc/systemd/system/paperless-webserver.service; then
|
if grep -q "uv run" /etc/systemd/system/paperless-webserver.service; then
|
||||||
|
|
||||||
msg_info "Backing up user data and configuration"
|
msg_info "Backing up configuration"
|
||||||
local BACKUP_DIR="/tmp/paperless_backup_$$"
|
local BACKUP_DIR="/opt/paperless_backup_$$"
|
||||||
mkdir -p "$BACKUP_DIR"
|
mkdir -p "$BACKUP_DIR"
|
||||||
for dir in /opt/paperless/*/; do
|
|
||||||
dir_name=$(basename "$dir")
|
|
||||||
if [[ ! "$dir_name" =~ ^(docker|docs|scripts|src|static)$ ]]; then
|
|
||||||
cp -r "/opt/paperless/$dir_name" "$BACKUP_DIR/" 2>/dev/null || true
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
[[ -f /opt/paperless/paperless.conf ]] && cp /opt/paperless/paperless.conf "$BACKUP_DIR/"
|
[[ -f /opt/paperless/paperless.conf ]] && cp /opt/paperless/paperless.conf "$BACKUP_DIR/"
|
||||||
msg_ok "Backup completed to $BACKUP_DIR"
|
msg_ok "Backup completed to $BACKUP_DIR"
|
||||||
|
|
||||||
@@ -83,16 +98,9 @@ function update_script() {
|
|||||||
rm -rf /opt/paperless/venv
|
rm -rf /opt/paperless/venv
|
||||||
find /opt/paperless -name "__pycache__" -type d -exec rm -rf {} +
|
find /opt/paperless -name "__pycache__" -type d -exec rm -rf {} +
|
||||||
|
|
||||||
msg_info "Backing up user data and configuration"
|
msg_info "Backing up configuration"
|
||||||
local BACKUP_DIR="/tmp/paperless_backup_$$"
|
local BACKUP_DIR="/opt/paperless_backup_$$"
|
||||||
mkdir -p "$BACKUP_DIR"
|
mkdir -p "$BACKUP_DIR"
|
||||||
|
|
||||||
for dir in /opt/paperless/*/; do
|
|
||||||
dir_name=$(basename "$dir")
|
|
||||||
if [[ ! "$dir_name" =~ ^(docker|docs|scripts|src|static)$ ]]; then
|
|
||||||
cp -r "/opt/paperless/$dir_name" "$BACKUP_DIR/" 2>/dev/null || true
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
[[ -f /opt/paperless/paperless.conf ]] && cp /opt/paperless/paperless.conf "$BACKUP_DIR/"
|
[[ -f /opt/paperless/paperless.conf ]] && cp /opt/paperless/paperless.conf "$BACKUP_DIR/"
|
||||||
msg_ok "Backup completed to $BACKUP_DIR"
|
msg_ok "Backup completed to $BACKUP_DIR"
|
||||||
|
|
||||||
@@ -121,16 +129,9 @@ function update_script() {
|
|||||||
done
|
done
|
||||||
|
|
||||||
$STD systemctl daemon-reload
|
$STD systemctl daemon-reload
|
||||||
msg_info "Backing up user data and configuration"
|
msg_info "Backing up configuration"
|
||||||
BACKUP_DIR="/tmp/paperless_backup_$$"
|
BACKUP_DIR="/opt/paperless_backup_$$"
|
||||||
mkdir -p "$BACKUP_DIR"
|
mkdir -p "$BACKUP_DIR"
|
||||||
|
|
||||||
for dir in /opt/paperless/*/; do
|
|
||||||
dir_name=$(basename "$dir")
|
|
||||||
if [[ ! "$dir_name" =~ ^(docker|docs|scripts|src|static)$ ]]; then
|
|
||||||
cp -r "/opt/paperless/$dir_name" "$BACKUP_DIR/" 2>/dev/null || true
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
[[ -f /opt/paperless/paperless.conf ]] && cp /opt/paperless/paperless.conf "$BACKUP_DIR/"
|
[[ -f /opt/paperless/paperless.conf ]] && cp /opt/paperless/paperless.conf "$BACKUP_DIR/"
|
||||||
msg_ok "Backup completed to $BACKUP_DIR"
|
msg_ok "Backup completed to $BACKUP_DIR"
|
||||||
|
|
||||||
|
|||||||
44
ct/passbolt.sh
Normal file
44
ct/passbolt.sh
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
#!/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://www.passbolt.com/
|
||||||
|
|
||||||
|
APP="Passbolt"
|
||||||
|
var_tags="${var_tags:-auth}"
|
||||||
|
var_cpu="${var_cpu:-2}"
|
||||||
|
var_ram="${var_ram:-2048}"
|
||||||
|
var_disk="${var_disk:-2}"
|
||||||
|
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 /var ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
msg_info "Updating $APP LXC"
|
||||||
|
$STD apt update
|
||||||
|
$STD apt upgrade -y
|
||||||
|
msg_ok "Updated $APP LXC"
|
||||||
|
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}https://${IP}${CL}"
|
||||||
@@ -39,7 +39,7 @@ function update_script() {
|
|||||||
mkdir -p /opt/privatebin/data
|
mkdir -p /opt/privatebin/data
|
||||||
mv /tmp/privatebin_conf.bak /opt/privatebin/cfg/conf.php
|
mv /tmp/privatebin_conf.bak /opt/privatebin/cfg/conf.php
|
||||||
chown -R www-data:www-data /opt/privatebin
|
chown -R www-data:www-data /opt/privatebin
|
||||||
chmod -R 0755 /opt/privatebin/data}
|
chmod -R 0755 /opt/privatebin/data
|
||||||
systemctl reload nginx php8.2-fpm
|
systemctl reload nginx php8.2-fpm
|
||||||
msg_ok "Configured ${APP}"
|
msg_ok "Configured ${APP}"
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
|
|||||||
@@ -1,40 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Barcode Buddy",
|
|
||||||
"slug": "barcode-buddy",
|
|
||||||
"categories": [
|
|
||||||
24
|
|
||||||
],
|
|
||||||
"date_created": "2025-02-08",
|
|
||||||
"type": "ct",
|
|
||||||
"updateable": true,
|
|
||||||
"privileged": false,
|
|
||||||
"interface_port": 80,
|
|
||||||
"documentation": "https://barcodebuddy-documentation.readthedocs.io/en/latest/",
|
|
||||||
"website": "https://github.com/Forceu/barcodebuddy",
|
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/barcode-buddy.webp",
|
|
||||||
"config_path": "/opt/barcodebuddy/data/config.php",
|
|
||||||
"description": "Barcode Buddy for Grocy is an extension for Grocy, allowing to pass barcodes to Grocy. It supports barcodes for products and chores. If you own a physical barcode scanner, it can be integrated, so that all barcodes scanned are automatically pushed to BarcodeBuddy/Grocy.",
|
|
||||||
"install_methods": [
|
|
||||||
{
|
|
||||||
"type": "default",
|
|
||||||
"script": "ct/barcode-buddy.sh",
|
|
||||||
"resources": {
|
|
||||||
"cpu": 1,
|
|
||||||
"ram": 512,
|
|
||||||
"hdd": 3,
|
|
||||||
"os": "debian",
|
|
||||||
"version": "12"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"default_credentials": {
|
|
||||||
"username": null,
|
|
||||||
"password": null
|
|
||||||
},
|
|
||||||
"notes": [
|
|
||||||
{
|
|
||||||
"text": "After install enable the option \"Use Redis cache\" on the settings page.",
|
|
||||||
"type": "info"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -19,8 +19,8 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/changedetection.sh",
|
"script": "ct/changedetection.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": 2,
|
"cpu": 4,
|
||||||
"ram": 2048,
|
"ram": 4096,
|
||||||
"hdd": 10,
|
"hdd": 10,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
|
|||||||
44
frontend/public/json/domain-locker.json
Normal file
44
frontend/public/json/domain-locker.json
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
{
|
||||||
|
"name": "Domain Locker",
|
||||||
|
"slug": "domain-locker",
|
||||||
|
"categories": [
|
||||||
|
9
|
||||||
|
],
|
||||||
|
"date_created": "2025-11-17",
|
||||||
|
"type": "ct",
|
||||||
|
"updateable": true,
|
||||||
|
"privileged": false,
|
||||||
|
"interface_port": 3000,
|
||||||
|
"documentation": "https://domain-locker.com/about",
|
||||||
|
"config_path": "/opt/domain-locker.env",
|
||||||
|
"website": "https://github.com/Lissy93/domain-locker",
|
||||||
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/domain-locker.webp",
|
||||||
|
"description": "The all-in-one tool, for keeping track of your domain name portfolio. Got domain names? Get Domain Locker! ",
|
||||||
|
"install_methods": [
|
||||||
|
{
|
||||||
|
"type": "default",
|
||||||
|
"script": "ct/domain-locker.sh",
|
||||||
|
"resources": {
|
||||||
|
"cpu": 2,
|
||||||
|
"ram": 4096,
|
||||||
|
"hdd": 8,
|
||||||
|
"os": "Debian",
|
||||||
|
"version": "13"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"default_credentials": {
|
||||||
|
"username": null,
|
||||||
|
"password": null
|
||||||
|
},
|
||||||
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "Show DB credentials: `cat ~/Domain-Locker.creds`",
|
||||||
|
"type": "info"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "Domain-locker takes quite some time to build and a lot of ressources, RAM and Cores can be lowered after install.",
|
||||||
|
"type": "info"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 2021,
|
"interface_port": 2021,
|
||||||
"documentation": "https://docs.donetick.com/getting-started/",
|
"documentation": "https://docs.donetick.com/getting-started/",
|
||||||
"config_path": "/opt/donetick/config/selfhosted.yml",
|
"config_path": "/opt/donetick/config/selfhosted.yaml",
|
||||||
"website": "https://donetick.com",
|
"website": "https://donetick.com",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/donetick.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/donetick.webp",
|
||||||
"description": "Donetick an open-source, user-friendly app for managing tasks and chores, featuring customizable options to help you and others stay organized",
|
"description": "Donetick an open-source, user-friendly app for managing tasks and chores, featuring customizable options to help you and others stay organized",
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 512,
|
"ram": 512,
|
||||||
"hdd": 2,
|
"hdd": 2,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 1024,
|
"ram": 1024,
|
||||||
"hdd": 4,
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "13"
|
"version": "12"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
"script": "ct/jotty.sh",
|
"script": "ct/jotty.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": 2,
|
"cpu": 2,
|
||||||
"ram": 4096,
|
"ram": 3072,
|
||||||
"hdd": 6,
|
"hdd": 6,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "13"
|
"version": "13"
|
||||||
|
|||||||
40
frontend/public/json/librenms.json
Normal file
40
frontend/public/json/librenms.json
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
{
|
||||||
|
"name": "LibreNMS",
|
||||||
|
"slug": "librenms",
|
||||||
|
"categories": [
|
||||||
|
9
|
||||||
|
],
|
||||||
|
"date_created": "2025-11-14",
|
||||||
|
"type": "ct",
|
||||||
|
"updateable": false,
|
||||||
|
"privileged": false,
|
||||||
|
"interface_port": 80,
|
||||||
|
"documentation": "https://docs.librenms.org/",
|
||||||
|
"website": "https://librenms.org/",
|
||||||
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/librenms.webp",
|
||||||
|
"config_path": "/opt/librenms/config.php and /opt/librenms/.env",
|
||||||
|
"description": "LibreNMS is an open-source, community-driven network monitoring system that provides automatic discovery, alerting, and performance tracking for network devices. It supports a wide range of hardware and integrates with various notification and logging platforms.",
|
||||||
|
"install_methods": [
|
||||||
|
{
|
||||||
|
"type": "default",
|
||||||
|
"script": "ct/librenms.sh",
|
||||||
|
"resources": {
|
||||||
|
"cpu": 2,
|
||||||
|
"ram": 2048,
|
||||||
|
"hdd": 4,
|
||||||
|
"os": "Debian",
|
||||||
|
"version": "12"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"default_credentials": {
|
||||||
|
"username": null,
|
||||||
|
"password": null
|
||||||
|
},
|
||||||
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "After installation, the admin user credentials are saved in the file ~/librenms.creds inside the container.",
|
||||||
|
"type": "info"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
35
frontend/public/json/metabase.json
Normal file
35
frontend/public/json/metabase.json
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
"name": "Metabase",
|
||||||
|
"slug": "metabase",
|
||||||
|
"categories": [
|
||||||
|
9
|
||||||
|
],
|
||||||
|
"date_created": "2025-11-16",
|
||||||
|
"type": "ct",
|
||||||
|
"updateable": true,
|
||||||
|
"privileged": false,
|
||||||
|
"interface_port": 3000,
|
||||||
|
"documentation": "https://www.metabase.com/docs/latest/",
|
||||||
|
"config_path": "/opt/metabase/.env",
|
||||||
|
"website": "https://www.metabase.com/",
|
||||||
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/metabase.webp",
|
||||||
|
"description": "Metabase is an open-source business intelligence platform. You can use Metabase to ask questions about your data, or embed Metabase in your app to let your customers explore their data on their own.",
|
||||||
|
"install_methods": [
|
||||||
|
{
|
||||||
|
"type": "default",
|
||||||
|
"script": "ct/metabase.sh",
|
||||||
|
"resources": {
|
||||||
|
"cpu": 2,
|
||||||
|
"ram": 2048,
|
||||||
|
"hdd": 6,
|
||||||
|
"os": "Debian",
|
||||||
|
"version": "13"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"default_credentials": {
|
||||||
|
"username": null,
|
||||||
|
"password": null
|
||||||
|
},
|
||||||
|
"notes": []
|
||||||
|
}
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
"script": "ct/netvisor.sh",
|
"script": "ct/netvisor.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": 2,
|
"cpu": 2,
|
||||||
"ram": 2048,
|
"ram": 3072,
|
||||||
"hdd": 6,
|
"hdd": 6,
|
||||||
"os": "Debian",
|
"os": "Debian",
|
||||||
"version": "13"
|
"version": "13"
|
||||||
@@ -35,6 +35,10 @@
|
|||||||
{
|
{
|
||||||
"text": "The integrated daemon config is located at `/root/.config/daemon/config.json`",
|
"text": "The integrated daemon config is located at `/root/.config/daemon/config.json`",
|
||||||
"type": "info"
|
"type": "info"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "When using a reverse proxy, edit `/opt/netvisor/ui/build/_app/env.js`: add 443 to `PUBLIC_SERVER_PORT` and remove 'default' from `PUBLIC_SERVER_HOSTNAME`.",
|
||||||
|
"type": "info"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
44
frontend/public/json/passbolt.json
Normal file
44
frontend/public/json/passbolt.json
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
{
|
||||||
|
"name": "Passbolt",
|
||||||
|
"slug": "passbolt",
|
||||||
|
"categories": [
|
||||||
|
6
|
||||||
|
],
|
||||||
|
"date_created": "2025-11-17",
|
||||||
|
"type": "ct",
|
||||||
|
"updateable": true,
|
||||||
|
"privileged": false,
|
||||||
|
"interface_port": 443,
|
||||||
|
"documentation": "https://www.passbolt.com/docs/",
|
||||||
|
"config_path": "/etc/passbolt/passbolt.php",
|
||||||
|
"website": "https://www.passbolt.com/",
|
||||||
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/passbolt.webp",
|
||||||
|
"description": "Passbolt is a hybrid credential platform. It is built-first for modern IT teams, yet simple enough for everyone. A sovereign, battle-tested solution that delivers for a team of 5, or an organisation of 5000.",
|
||||||
|
"install_methods": [
|
||||||
|
{
|
||||||
|
"type": "default",
|
||||||
|
"script": "ct/passbolt.sh",
|
||||||
|
"resources": {
|
||||||
|
"cpu": 2,
|
||||||
|
"ram": 2048,
|
||||||
|
"hdd": 2,
|
||||||
|
"os": "Debian",
|
||||||
|
"version": "13"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"default_credentials": {
|
||||||
|
"username": null,
|
||||||
|
"password": null
|
||||||
|
},
|
||||||
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "Type `cat ~/passbolt.creds` to see MariaDB database credentials. You will need those to setup Passbolt.",
|
||||||
|
"type": "info"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "The application uses self-signed certificates. You can also use Let's Encrypt to get a valid certificate for your domain. Please read the documentation for more information.",
|
||||||
|
"type": "info"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -53,7 +53,7 @@ sed -i -e "s|^APP_URL=.*|APP_URL=http://$IPADDRESS|" \
|
|||||||
-e "s|^DB_PASSWORD=$|DB_PASSWORD=$DB_PASS|" .env
|
-e "s|^DB_PASSWORD=$|DB_PASSWORD=$DB_PASS|" .env
|
||||||
export COMPOSER_ALLOW_SUPERUSER=1
|
export COMPOSER_ALLOW_SUPERUSER=1
|
||||||
$STD composer update --no-plugins --no-scripts
|
$STD composer update --no-plugins --no-scripts
|
||||||
$STD composer install --no-dev --prefer-source --no-plugins --no-scripts
|
$STD composer install --no-dev --prefer-dist --no-plugins --no-scripts
|
||||||
$STD php artisan key:generate --force
|
$STD php artisan key:generate --force
|
||||||
$STD php artisan migrate:refresh
|
$STD php artisan migrate:refresh
|
||||||
$STD php artisan passport:install -q -n
|
$STD php artisan passport:install -q -n
|
||||||
|
|||||||
@@ -1,73 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: bvdberg01
|
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
# Source: https://github.com/Forceu/barcodebuddy
|
|
||||||
|
|
||||||
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 \
|
|
||||||
redis \
|
|
||||||
sqlite3
|
|
||||||
msg_ok "Installed Dependencies"
|
|
||||||
|
|
||||||
PHP_VERSION="8.2" PHP_APACHE="YES" PHP_MODULE="redis, sqlite3" setup_php
|
|
||||||
fetch_and_deploy_gh_release "barcodebuddy" "Forceu/barcodebuddy"
|
|
||||||
|
|
||||||
msg_info "Configuring barcodebuddy"
|
|
||||||
chown -R www-data:www-data /opt/barcodebuddy/data
|
|
||||||
msg_ok "Configured barcodebuddy"
|
|
||||||
|
|
||||||
msg_info "Creating Services"
|
|
||||||
cat <<EOF >/etc/systemd/system/barcodebuddy.service
|
|
||||||
[Unit]
|
|
||||||
Description=Run websocket server for barcodebuddy screen feature
|
|
||||||
After=network.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=simple
|
|
||||||
ExecStart=/usr/bin/php /opt/barcodebuddy/wsserver.php
|
|
||||||
StandardOutput=null
|
|
||||||
Restart=on-failure
|
|
||||||
User=www-data
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
EOF
|
|
||||||
cat <<EOF >/etc/apache2/sites-available/barcodebuddy.conf
|
|
||||||
<VirtualHost *:80>
|
|
||||||
ServerName barcodebuddy
|
|
||||||
DocumentRoot /opt/barcodebuddy
|
|
||||||
|
|
||||||
<Directory /opt/barcodebuddy>
|
|
||||||
Options FollowSymLinks
|
|
||||||
AllowOverride All
|
|
||||||
Require all granted
|
|
||||||
</Directory>
|
|
||||||
|
|
||||||
ErrorLog /var/log/apache2/barcodebuddy_error.log
|
|
||||||
CustomLog /var/log/apache2/barcodebuddy_access.log combined
|
|
||||||
</VirtualHost>
|
|
||||||
EOF
|
|
||||||
systemctl enable -q --now barcodebuddy
|
|
||||||
$STD a2ensite barcodebuddy
|
|
||||||
$STD a2enmod rewrite
|
|
||||||
$STD a2dissite 000-default.conf
|
|
||||||
$STD systemctl reload apache2
|
|
||||||
msg_ok "Created Services"
|
|
||||||
|
|
||||||
motd_ssh
|
|
||||||
customize
|
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
$STD apt-get -y autoremove
|
|
||||||
$STD apt-get -y autoclean
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
72
install/domain-locker-install.sh
Normal file
72
install/domain-locker-install.sh
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: CrazyWolf13
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/CrazyWolf13/domain-locker
|
||||||
|
|
||||||
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||||
|
color
|
||||||
|
verb_ip6
|
||||||
|
catch_errors
|
||||||
|
setting_up_container
|
||||||
|
network_check
|
||||||
|
update_os
|
||||||
|
|
||||||
|
PG_VERSION="17" setup_postgresql
|
||||||
|
PG_DB_NAME="domainlocker_db" PG_DB_USER="domainlocker" setup_postgresql_db
|
||||||
|
NODE_VERSION="22" setup_nodejs
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "domain-locker" "Lissy93/domain-locker"
|
||||||
|
|
||||||
|
msg_info "Installing Modules (patience)"
|
||||||
|
cd /opt/domain-locker
|
||||||
|
$STD npm install
|
||||||
|
msg_ok "Installed Modules"
|
||||||
|
|
||||||
|
msg_info "Building Domain-Locker (a lot of patience)"
|
||||||
|
cat <<EOF >/opt/domain-locker.env
|
||||||
|
# Database connection
|
||||||
|
DL_PG_HOST=localhost
|
||||||
|
DL_PG_PORT=5432
|
||||||
|
DL_PG_USER=$PG_DB_USER
|
||||||
|
DL_PG_PASSWORD=$PG_DB_PASS
|
||||||
|
DL_PG_NAME=$PG_DB_NAME
|
||||||
|
|
||||||
|
# Build + Runtime
|
||||||
|
DL_ENV_TYPE=selfHosted
|
||||||
|
NITRO_PRESET=node_server
|
||||||
|
NODE_ENV=production
|
||||||
|
EOF
|
||||||
|
set -a
|
||||||
|
source /opt/domain-locker.env
|
||||||
|
set +a
|
||||||
|
$STD npm run build
|
||||||
|
msg_info "Built Domain-Locker"
|
||||||
|
|
||||||
|
msg_info "Building Database schema"
|
||||||
|
export PGPASSWORD="$DL_PG_PASSWORD"
|
||||||
|
$STD psql -h "$DL_PG_HOST" -p "$DL_PG_PORT" -U "$DL_PG_USER" -d "$DL_PG_NAME" -f "/opt/domain-locker/db/schema.sql"
|
||||||
|
msg_ok "Built Database schema"
|
||||||
|
|
||||||
|
msg_info "Creating Service"
|
||||||
|
cat <<EOF >/etc/systemd/system/domain-locker.service
|
||||||
|
[Unit]
|
||||||
|
Description=Domain-Locker Service
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
EnvironmentFile=/opt/domain-locker.env
|
||||||
|
WorkingDirectory=/opt/domain-locker
|
||||||
|
ExecStart=/opt/domain-locker/start.sh
|
||||||
|
Restart=always
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
systemctl start --now -q domain-locker
|
||||||
|
msg_info "Created Service"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
cleanup_lxc
|
||||||
@@ -33,7 +33,7 @@ MARIADB_DB_NAME="domain_monitor" MARIADB_DB_USER="domainmonitor" setup_mariadb_d
|
|||||||
fetch_and_deploy_gh_release "domain-monitor" "Hosteroid/domain-monitor" "prebuild" "latest" "/opt/domain-monitor" "domain-monitor-v*.zip"
|
fetch_and_deploy_gh_release "domain-monitor" "Hosteroid/domain-monitor" "prebuild" "latest" "/opt/domain-monitor" "domain-monitor-v*.zip"
|
||||||
|
|
||||||
msg_info "Setting up Domain Monitor"
|
msg_info "Setting up Domain Monitor"
|
||||||
ENC_KEY=$(openssl rand -base64 48 | tr -dc 'A-Za-z0-9' | head -c 32)
|
ENC_KEY=$(openssl rand -base64 32 | tr -d '\n')
|
||||||
cd /opt/domain-monitor
|
cd /opt/domain-monitor
|
||||||
$STD composer install
|
$STD composer install
|
||||||
cp env.example.txt .env
|
cp env.example.txt .env
|
||||||
|
|||||||
@@ -14,26 +14,23 @@ network_check
|
|||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt-get install -y \
|
$STD apt install -y apt-transport-https
|
||||||
apt-transport-https \
|
|
||||||
software-properties-common
|
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Setting up Grafana Repository"
|
msg_info "Setting up Grafana Repository"
|
||||||
curl -fsSL "https://apt.grafana.com/gpg.key" -o "/usr/share/keyrings/grafana.key"
|
setup_deb822_repo \
|
||||||
echo "deb [signed-by=/usr/share/keyrings/grafana.key] https://apt.grafana.com stable main" >/etc/apt/sources.list.d/grafana.list
|
"grafana" \
|
||||||
msg_ok "Set up Grafana Repository"
|
"https://apt.grafana.com/gpg.key" \
|
||||||
|
"https://apt.grafana.com" \
|
||||||
|
"stable" \
|
||||||
|
"main"
|
||||||
|
msg_ok "Grafana Repository setup sucessfully"
|
||||||
|
|
||||||
msg_info "Installing Grafana"
|
msg_info "Installing Grafana"
|
||||||
$STD apt-get update
|
$STD apt install -y grafana
|
||||||
$STD apt-get install -y grafana
|
systemctl enable -q --now grafana-server
|
||||||
systemctl enable -q --now grafana-server
|
|
||||||
msg_ok "Installed Grafana"
|
msg_ok "Installed Grafana"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
|
cleanup_lxc
|
||||||
msg_info "Cleaning up"
|
|
||||||
$STD apt-get -y autoremove
|
|
||||||
$STD apt-get -y autoclean
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ $STD apt install -y \
|
|||||||
caddy
|
caddy
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
PYTHON_VERSION="3.12" setup_python
|
PYTHON_VERSION="3.13" setup_uv
|
||||||
PG_VERSION=16 setup_postgresql
|
PG_VERSION=16 setup_postgresql
|
||||||
|
|
||||||
msg_info "Setup Database"
|
msg_info "Setup Database"
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
setup_uv
|
PYTHON_VERSION="3.12" setup_uv
|
||||||
fetch_and_deploy_gh_release "huntarr" "plexguide/Huntarr.io"
|
fetch_and_deploy_gh_release "huntarr" "plexguide/Huntarr.io"
|
||||||
|
|
||||||
msg_info "Configure Huntarr"
|
msg_info "Configure Huntarr"
|
||||||
|
|||||||
@@ -13,12 +13,26 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
KASM_VERSION=$(curl -fsSL 'https://www.kasmweb.com/downloads' | grep -o 'https://kasm-static-content.s3.amazonaws.com/kasm_release_[^"]*\.tar\.gz' | head -n 1 | sed -E 's/.*release_(.*)\.tar\.gz/\1/')
|
msg_info "Detecting latest Kasm Workspaces release"
|
||||||
|
KASM_URL=$(
|
||||||
|
curl -fsSL "https://www.kasm.com/downloads" \
|
||||||
|
| tr '\n' ' ' \
|
||||||
|
| grep -oE 'https://kasm-static-content[^"]*kasm_release_[0-9]+\.[0-9]+\.[0-9]+\.[a-z0-9]+\.tar\.gz' \
|
||||||
|
| head -n 1
|
||||||
|
)
|
||||||
|
|
||||||
|
if [[ -z "$KASM_URL" ]]; then
|
||||||
|
msg_error "Unable to detect latest Kasm release URL."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
KASM_VERSION=$(echo "$KASM_URL" | sed -E 's/.*kasm_release_([0-9]+\.[0-9]+\.[0-9]+).*/\1/')
|
||||||
|
msg_ok "Detected Kasm Workspaces version $KASM_VERSION"
|
||||||
|
|
||||||
msg_warn "WARNING: This script will run an external installer from a third-party source (https://www.kasmweb.com/)."
|
msg_warn "WARNING: This script will run an external installer from a third-party source (https://www.kasmweb.com/)."
|
||||||
msg_warn "The following code is NOT maintained or audited by our repository."
|
msg_warn "The following code is NOT maintained or audited by our repository."
|
||||||
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
|
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
|
||||||
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ install.sh inside tar.gz https://kasm-static-content.s3.amazonaws.com/kasm_release_${KASM_VERSION}.tar.gz"
|
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ install.sh inside tar.gz $KASM_URL"
|
||||||
echo
|
echo
|
||||||
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
|
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
|
||||||
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
|
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
|
||||||
@@ -27,7 +41,7 @@ if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
msg_info "Installing Kasm Workspaces"
|
msg_info "Installing Kasm Workspaces"
|
||||||
curl -fsSL -o "/opt/kasm_release_${KASM_VERSION}.tar.gz" "https://kasm-static-content.s3.amazonaws.com/kasm_release_${KASM_VERSION}.tar.gz"
|
curl -fsSL -o "/opt/kasm_release_${KASM_VERSION}.tar.gz" "$KASM_URL"
|
||||||
cd /opt
|
cd /opt
|
||||||
tar -xf "kasm_release_${KASM_VERSION}.tar.gz"
|
tar -xf "kasm_release_${KASM_VERSION}.tar.gz"
|
||||||
chmod +x /opt/kasm_release/install.sh
|
chmod +x /opt/kasm_release/install.sh
|
||||||
@@ -39,10 +53,10 @@ awk '
|
|||||||
in_token && /^-+$/ {dash_count++}
|
in_token && /^-+$/ {dash_count++}
|
||||||
in_token && dash_count==2 {exit}
|
in_token && dash_count==2 {exit}
|
||||||
' ~/kasm-install.output >~/kasm.creds
|
' ~/kasm-install.output >~/kasm.creds
|
||||||
|
rm -f /opt/kasm_release_${KASM_VERSION}.tar.gz
|
||||||
|
rm -f ~/kasm-install.output
|
||||||
msg_ok "Installed Kasm Workspaces"
|
msg_ok "Installed Kasm Workspaces"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
rm -f /opt/kasm_release_${KASM_VERSION}.tar.gz
|
|
||||||
rm -f ~/kasm-install.output
|
|
||||||
cleanup_lxc
|
cleanup_lxc
|
||||||
|
|||||||
@@ -71,9 +71,6 @@ kimai:
|
|||||||
begin: 15
|
begin: 15
|
||||||
end: 15
|
end: 15
|
||||||
|
|
||||||
admin_lte:
|
|
||||||
options:
|
|
||||||
default_avatar: build/apple-touch-icon.png
|
|
||||||
EOF
|
EOF
|
||||||
msg_ok "Installed Kimai"
|
msg_ok "Installed Kimai"
|
||||||
|
|
||||||
|
|||||||
146
install/librenms-install.sh
Normal file
146
install/librenms-install.sh
Normal file
@@ -0,0 +1,146 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: michelroegl-brunner
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://www.librenms.org/
|
||||||
|
|
||||||
|
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 \
|
||||||
|
acl \
|
||||||
|
fping \
|
||||||
|
graphviz \
|
||||||
|
imagemagick \
|
||||||
|
mtr-tiny \
|
||||||
|
nginx \
|
||||||
|
nmap \
|
||||||
|
rrdtool \
|
||||||
|
snmp \
|
||||||
|
snmpd \
|
||||||
|
whois
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
msg_info "Installing Python Dependencies"
|
||||||
|
$STD apt install -y \
|
||||||
|
python3-dotenv \
|
||||||
|
python3-pymysql \
|
||||||
|
python3-redis \
|
||||||
|
python3-setuptools \
|
||||||
|
python3-systemd \
|
||||||
|
python3-pip
|
||||||
|
msg_ok "Installed Python Dependencies"
|
||||||
|
|
||||||
|
PHP_VERSION="8.4" PHP_FPM="YES" PHP_MODULE="gmp,mysql,snmp" setup_php
|
||||||
|
setup_mariadb
|
||||||
|
setup_composer
|
||||||
|
PYTHON_VERSION="3.13" setup_uv
|
||||||
|
MARIADB_DB_NAME="librenms" MARIADB_DB_USER="librenms" MARIADB_DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)" setup_mariadb_db
|
||||||
|
fetch_and_deploy_gh_release "librenms" "librenms/librenms"
|
||||||
|
|
||||||
|
msg_info "Configuring LibreNMS"
|
||||||
|
$STD useradd librenms -d /opt/librenms -M -r -s "$(which bash)"
|
||||||
|
mkdir -p /opt/librenms/{rrd,logs,bootstrap/cache,storage,html}
|
||||||
|
cd /opt/librenms
|
||||||
|
APP_KEY=$(openssl rand -base64 40 | tr -dc 'a-zA-Z0-9')
|
||||||
|
$STD uv venv .venv
|
||||||
|
$STD source .venv/bin/activate
|
||||||
|
$STD uv pip install -r requirements.txt
|
||||||
|
cat <<EOF >/opt/librenms/.env
|
||||||
|
DB_DATABASE=${MARIADB_DB_NAME}
|
||||||
|
DB_USERNAME=${MARIADB_DB_USER}
|
||||||
|
DB_PASSWORD=${MARIADB_DB_PASS}
|
||||||
|
APP_KEY=${APP_KEY}
|
||||||
|
EOF
|
||||||
|
chown -R librenms:librenms /opt/librenms
|
||||||
|
chmod 771 /opt/librenms
|
||||||
|
chmod -R ug=rwX /opt/librenms/bootstrap/cache /opt/librenms/storage /opt/librenms/logs /opt/librenms/rrd
|
||||||
|
msg_ok "Configured LibreNMS"
|
||||||
|
|
||||||
|
msg_info "Configure MariaDB"
|
||||||
|
sed -i "/\[mysqld\]/a innodb_file_per_table=1\nlower_case_table_names=0" /etc/mysql/mariadb.conf.d/50-server.cnf
|
||||||
|
systemctl enable -q --now mariadb
|
||||||
|
msg_ok "Configured MariaDB"
|
||||||
|
|
||||||
|
msg_info "Configure PHP-FPM"
|
||||||
|
cp /etc/php/8.4/fpm/pool.d/www.conf /etc/php/8.4/fpm/pool.d/librenms.conf
|
||||||
|
sed -i "s/\[www\]/\[librenms\]/g" /etc/php/8.4/fpm/pool.d/librenms.conf
|
||||||
|
sed -i "s/user = www-data/user = librenms/g" /etc/php/8.4/fpm/pool.d/librenms.conf
|
||||||
|
sed -i "s/group = www-data/group = librenms/g" /etc/php/8.4/fpm/pool.d/librenms.conf
|
||||||
|
sed -i "s/listen = \/run\/php\/php8.4-fpm.sock/listen = \/run\/php-fpm-librenms.sock/g" /etc/php/8.4/fpm/pool.d/librenms.conf
|
||||||
|
msg_ok "Configured PHP-FPM"
|
||||||
|
|
||||||
|
msg_info "Configure Nginx"
|
||||||
|
IP_ADDR=$(hostname -I | awk '{print $1}')
|
||||||
|
cat >/etc/nginx/sites-enabled/librenms <<'EOF'
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name ${IP_ADDR};
|
||||||
|
root /opt/librenms/html;
|
||||||
|
index index.php;
|
||||||
|
|
||||||
|
charset utf-8;
|
||||||
|
gzip on;
|
||||||
|
gzip_types text/css application/javascript text/javascript application/x-javascript image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon;
|
||||||
|
location / {
|
||||||
|
try_files $uri $uri/ /index.php?$query_string;
|
||||||
|
}
|
||||||
|
location ~ [^/]\.php(/|$) {
|
||||||
|
fastcgi_pass unix:/run/php-fpm-librenms.sock;
|
||||||
|
fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
||||||
|
include fastcgi.conf;
|
||||||
|
}
|
||||||
|
location ~ /\.(?!well-known).* {
|
||||||
|
deny all;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
rm /etc/nginx/sites-enabled/default
|
||||||
|
$STD systemctl reload nginx
|
||||||
|
systemctl restart php8.4-fpm
|
||||||
|
msg_ok "Configured Nginx"
|
||||||
|
|
||||||
|
msg_info "Configure Services"
|
||||||
|
ln -s /opt/librenms/lnms /usr/bin/lnms
|
||||||
|
mkdir -p /etc/bash_completion.d/
|
||||||
|
cp /opt/librenms/misc/lnms-completion.bash /etc/bash_completion.d/
|
||||||
|
cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf
|
||||||
|
|
||||||
|
APP_PASSWORD=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||||
|
APP_USER="admin"
|
||||||
|
{
|
||||||
|
echo "LibreNMS Credentials"
|
||||||
|
echo "Username: ${APP_USER}"
|
||||||
|
echo "Password: ${APP_PASSWORD}"
|
||||||
|
} >>~/librenms.creds
|
||||||
|
|
||||||
|
$STD su - librenms -s /bin/bash -c "cd /opt/librenms && COMPOSER_ALLOW_SUPERUSER=1 composer install --no-dev"
|
||||||
|
$STD su - librenms -s /bin/bash -c "cd /opt/librenms && php8.4 artisan migrate --force"
|
||||||
|
$STD su - librenms -s /bin/bash -c "cd /opt/librenms && php8.4 artisan key:generate --force"
|
||||||
|
$STD su - librenms -s /bin/bash -c "cd /opt/librenms && lnms db:seed --force"
|
||||||
|
$STD su - librenms -s /bin/bash -c "cd /opt/librenms && lnms user:add -p ${APP_PASSWORD} ${APP_USER} --role=admin"
|
||||||
|
|
||||||
|
RANDOM_STRING=$(openssl rand -base64 16 | tr -dc 'a-zA-Z0-9')
|
||||||
|
sed -i "s/RANDOMSTRINGHERE/$RANDOM_STRING/g" /etc/snmp/snmpd.conf
|
||||||
|
echo "SNMP Community String: $RANDOM_STRING" >>~/librenms.creds
|
||||||
|
curl -qso /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro
|
||||||
|
chmod +x /usr/bin/distro
|
||||||
|
systemctl enable -q --now snmpd
|
||||||
|
|
||||||
|
cp /opt/librenms/dist/librenms.cron /etc/cron.d/librenms
|
||||||
|
cp /opt/librenms/dist/librenms-scheduler.service /opt/librenms/dist/librenms-scheduler.timer /etc/systemd/system/
|
||||||
|
|
||||||
|
systemctl enable -q --now librenms-scheduler.timer
|
||||||
|
cp /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms
|
||||||
|
msg_ok "Configured Services"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
cleanup_lxc
|
||||||
59
install/metabase-install.sh
Normal file
59
install/metabase-install.sh
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
#!/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://www.metabase.com/
|
||||||
|
|
||||||
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||||
|
color
|
||||||
|
verb_ip6
|
||||||
|
catch_errors
|
||||||
|
setting_up_container
|
||||||
|
network_check
|
||||||
|
update_os
|
||||||
|
|
||||||
|
JAVA_VERSION="21" setup_java
|
||||||
|
PG_VERSION="17" setup_postgresql
|
||||||
|
PG_DB_NAME="metabase_db" PG_DB_USER="metabase" setup_postgresql_db
|
||||||
|
|
||||||
|
msg_info "Setting up Metabase"
|
||||||
|
mkdir -p /opt/metabase
|
||||||
|
RELEASE=$(get_latest_github_release "metabase/metabase")
|
||||||
|
curl -fsSL "https://downloads.metabase.com/v${RELEASE}.x/metabase.jar" -o /opt/metabase/metabase.jar
|
||||||
|
cd /opt/metabase
|
||||||
|
|
||||||
|
cat <<EOF >/opt/metabase/.env
|
||||||
|
MB_DB_TYPE=postgres
|
||||||
|
MB_DB_DBNAME=$PG_DB_NAME
|
||||||
|
MB_DB_PORT=5432
|
||||||
|
MB_DB_USER=$PG_DB_USER
|
||||||
|
MB_DB_PASS=$PG_DB_PASS
|
||||||
|
MB_DB_HOST=localhost
|
||||||
|
EOF
|
||||||
|
echo $RELEASE >~/.metabase
|
||||||
|
msg_ok "Setup Metabase"
|
||||||
|
|
||||||
|
msg_info "Creating Service"
|
||||||
|
cat <<EOF >/etc/systemd/system/metabase.service
|
||||||
|
[Unit]
|
||||||
|
Description=Metabase Service
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
EnvironmentFile=/opt/metabase/.env
|
||||||
|
WorkingDirectory=/opt/metabase
|
||||||
|
ExecStart=/usr/bin/java --add-opens java.base/java.nio=ALL-UNNAMED -jar metabase.jar
|
||||||
|
Restart=always
|
||||||
|
SuccessExitStatus=143
|
||||||
|
TimeoutStopSec=120
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
systemctl enable -q --now metabase
|
||||||
|
msg_ok "Created Service"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
cleanup_lxc
|
||||||
@@ -15,7 +15,9 @@ update_os
|
|||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt install -y \
|
$STD apt install -y \
|
||||||
build-essential
|
build-essential \
|
||||||
|
libssl-dev \
|
||||||
|
pkg-config
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
PG_VERSION=17 setup_postgresql
|
PG_VERSION=17 setup_postgresql
|
||||||
@@ -29,7 +31,7 @@ RUST_TOOLCHAIN=$TOOLCHAIN setup_rust
|
|||||||
|
|
||||||
msg_info "Creating frontend UI"
|
msg_info "Creating frontend UI"
|
||||||
export PUBLIC_SERVER_HOSTNAME=default
|
export PUBLIC_SERVER_HOSTNAME=default
|
||||||
export PUBLIC_SERVER_PORT=60072
|
export PUBLIC_SERVER_PORT=""
|
||||||
cd /opt/netvisor/ui
|
cd /opt/netvisor/ui
|
||||||
$STD npm ci --no-fund --no-audit
|
$STD npm ci --no-fund --no-audit
|
||||||
$STD npm run build
|
$STD npm run build
|
||||||
@@ -47,20 +49,18 @@ cp ./target/release/daemon /usr/bin/netvisor-daemon
|
|||||||
msg_ok "Built Netvisor-daemon"
|
msg_ok "Built Netvisor-daemon"
|
||||||
|
|
||||||
msg_info "Configuring server & daemon for first-run"
|
msg_info "Configuring server & daemon for first-run"
|
||||||
|
LOCAL_IP="$(hostname -I | awk '{print $1}')"
|
||||||
cat <<EOF >/opt/netvisor/.env
|
cat <<EOF >/opt/netvisor/.env
|
||||||
### - UI
|
|
||||||
PUBLIC_SERVER_HOSTNAME=default
|
|
||||||
PUBLIC_SERVER_PORT=60072
|
|
||||||
|
|
||||||
### - SERVER
|
### - SERVER
|
||||||
NETVISOR_DATABASE_URL=postgresql://$PG_DB_USER:$PG_DB_PASS@localhost:5432/$PG_DB_NAME
|
NETVISOR_DATABASE_URL=postgresql://$PG_DB_USER:$PG_DB_PASS@localhost:5432/$PG_DB_NAME
|
||||||
NETVISOR_WEB_EXTERNAL_PATH="/opt/netvisor/ui/build"
|
NETVISOR_WEB_EXTERNAL_PATH="/opt/netvisor/ui/build"
|
||||||
|
NETVISOR_PUBLIC_URL=http://${LOCAL_IP}:60072
|
||||||
NETVISOR_SERVER_PORT=60072
|
NETVISOR_SERVER_PORT=60072
|
||||||
NETVISOR_LOG_LEVEL=info
|
NETVISOR_LOG_LEVEL=info
|
||||||
NETVISOR_INTEGRATED_DAEMON_URL=http://127.0.0.1:60073
|
NETVISOR_INTEGRATED_DAEMON_URL=http://127.0.0.1:60073
|
||||||
## - uncomment to disable signups
|
## - uncomment to disable signups
|
||||||
# NETVISOR_DISABLE_REGISTRATION=true
|
# NETVISOR_DISABLE_REGISTRATION=true
|
||||||
## - uncomment when behind reverse proxy
|
## - uncomment when using TLS
|
||||||
# NETVISOR_USE_SECURE_SESSION_COOKIES=true
|
# NETVISOR_USE_SECURE_SESSION_COOKIES=true
|
||||||
|
|
||||||
### - OIDC (optional)
|
### - OIDC (optional)
|
||||||
@@ -72,8 +72,14 @@ NETVISOR_INTEGRATED_DAEMON_URL=http://127.0.0.1:60073
|
|||||||
## - Callback URL for reference
|
## - Callback URL for reference
|
||||||
# http://your-netvisor-domain:60072/api/auth/oidc/callback
|
# http://your-netvisor-domain:60072/api/auth/oidc/callback
|
||||||
|
|
||||||
|
### - SMTP (password reset and notifications - optional)
|
||||||
|
# NETVISOR_SMTP_RELAY=smtp.gmail.com:587
|
||||||
|
# NETVISOR_SMTP_USERNAME=your-email@gmail.com
|
||||||
|
# NETVISOR_SMTP_PASSWORD=your-app-password
|
||||||
|
# NETVISOR_SMTP_EMAIL=netvisor@yourdomain.tld
|
||||||
|
|
||||||
### - INTEGRATED DAEMON
|
### - INTEGRATED DAEMON
|
||||||
NETVISOR_SERVER_TARGET=127.0.0.1
|
NETVISOR_SERVER_URL=http://127.0.0.1:60072
|
||||||
NETVISOR_BIND_ADDRESS=0.0.0.0
|
NETVISOR_BIND_ADDRESS=0.0.0.0
|
||||||
NETVISOR_NAME="netvisor-daemon"
|
NETVISOR_NAME="netvisor-daemon"
|
||||||
NETVISOR_HEARTBEAT_INTERVAL=30
|
NETVISOR_HEARTBEAT_INTERVAL=30
|
||||||
@@ -110,7 +116,7 @@ After=network.target netvisor-server.service
|
|||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
Type=simple
|
||||||
EnvironmentFile=/opt/netvisor/.env
|
EnvironmentFile=/opt/netvisor/.env
|
||||||
ExecStart=/usr/bin/netvisor-daemon --server-target http://127.0.0.1 --server-port 60072 --network-id ${NETWORK_ID} --daemon-api-key ${API_KEY}
|
ExecStart=/usr/bin/netvisor-daemon --server-url http://127.0.0.1:60072 --network-id ${NETWORK_ID} --daemon-api-key ${API_KEY}
|
||||||
Restart=always
|
Restart=always
|
||||||
RestartSec=10
|
RestartSec=10
|
||||||
StandardOutput=journal
|
StandardOutput=journal
|
||||||
@@ -119,7 +125,7 @@ StandardError=journal
|
|||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
EOF
|
EOF
|
||||||
systemctl enable -q --now netvisor-daemon
|
systemctl enable -q --now netvisor-daemon
|
||||||
msg_ok "Netvisor server & daemon configured and running"
|
msg_ok "Netvisor server & daemon configured and running"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@@ -54,11 +54,12 @@ msg_ok "Installed Openresty"
|
|||||||
|
|
||||||
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/NginxProxyManager/nginx-proxy-manager/releases/latest |
|
# RELEASE=$(curl -fsSL https://api.github.com/repos/NginxProxyManager/nginx-proxy-manager/releases/latest |
|
||||||
grep "tag_name" |
|
# grep "tag_name" |
|
||||||
awk '{print substr($2, 3, length($2)-4) }')
|
# awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
RELEASE="2.13.4"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "nginxproxymanager" "NginxProxyManager/nginx-proxy-manager"
|
fetch_and_deploy_gh_release "nginxproxymanager" "NginxProxyManager/nginx-proxy-manager" "tarball" "v2.13.4"
|
||||||
|
|
||||||
msg_info "Setting up Environment"
|
msg_info "Setting up Environment"
|
||||||
ln -sf /usr/bin/python3 /usr/bin/python
|
ln -sf /usr/bin/python3 /usr/bin/python
|
||||||
|
|||||||
@@ -44,46 +44,36 @@ $STD apt install -y \
|
|||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
PG_VERSION="16" setup_postgresql
|
PG_VERSION="16" setup_postgresql
|
||||||
|
PG_DB_NAME="paperlessdb" PG_DB_USER="paperless" setup_postgresql_db
|
||||||
PYTHON_VERSION="3.13" setup_uv
|
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 "paperless" "paperless-ngx/paperless-ngx" "prebuild" "latest" "/opt/paperless" "paperless*tar.xz"
|
||||||
|
|
||||||
msg_info "Setting up PostgreSQL database"
|
|
||||||
DB_NAME=paperlessdb
|
|
||||||
DB_USER=paperless
|
|
||||||
DB_PASS="$(openssl rand -base64 18 | cut -c1-13)"
|
|
||||||
SECRET_KEY="$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 32)"
|
|
||||||
$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 "Paperless-ngx-Credentials"
|
|
||||||
echo "Paperless-ngx Database Name: $DB_NAME"
|
|
||||||
echo "Paperless-ngx Database User: $DB_USER"
|
|
||||||
echo "Paperless-ngx Database Password: $DB_PASS"
|
|
||||||
echo "Paperless-ngx Secret Key: $SECRET_KEY\n"
|
|
||||||
echo "Paperless-ngx WebUI User: admin"
|
|
||||||
echo "Paperless-ngx WebUI Password: $DB_PASS"
|
|
||||||
} >>~/paperless-ngx.creds
|
|
||||||
msg_ok "Setup PostgreSQL database"
|
|
||||||
|
|
||||||
msg_info "Setup Paperless-ngx"
|
msg_info "Setup Paperless-ngx"
|
||||||
cd /opt/paperless
|
cd /opt/paperless
|
||||||
|
rm -rf /opt/paperless/docker
|
||||||
$STD uv sync --all-extras
|
$STD uv sync --all-extras
|
||||||
curl -fsSL "https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/paperless.conf.example" -o /opt/paperless/paperless.conf
|
curl -fsSL "https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/paperless.conf.example" -o /opt/paperless/paperless.conf
|
||||||
mkdir -p {consume,data,media,static}
|
mkdir -p /opt/paperless_data/{consume,data,media,trash}
|
||||||
|
mkdir -p /opt/paperless/static
|
||||||
|
SECRET_KEY="$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 32)"
|
||||||
|
{
|
||||||
|
echo ""
|
||||||
|
echo "Paperless-ngx Secret Key: $SECRET_KEY"
|
||||||
|
echo "Paperless-ngx WebUI User: admin"
|
||||||
|
echo "Paperless-ngx WebUI Password: $PG_DB_PASS"
|
||||||
|
} >>~/paperless-ngx.creds
|
||||||
sed -i \
|
sed -i \
|
||||||
-e 's|#PAPERLESS_REDIS=redis://localhost:6379|PAPERLESS_REDIS=redis://localhost:6379|' \
|
-e 's|#PAPERLESS_REDIS=redis://localhost:6379|PAPERLESS_REDIS=redis://localhost:6379|' \
|
||||||
-e "s|#PAPERLESS_CONSUMPTION_DIR=../consume|PAPERLESS_CONSUMPTION_DIR=/opt/paperless/consume|" \
|
-e "s|#PAPERLESS_CONSUMPTION_DIR=../consume|PAPERLESS_CONSUMPTION_DIR=/opt/paperless_data/consume|" \
|
||||||
-e "s|#PAPERLESS_DATA_DIR=../data|PAPERLESS_DATA_DIR=/opt/paperless/data|" \
|
-e "s|#PAPERLESS_DATA_DIR=../data|PAPERLESS_DATA_DIR=/opt/paperless_data/data|" \
|
||||||
-e "s|#PAPERLESS_MEDIA_ROOT=../media|PAPERLESS_MEDIA_ROOT=/opt/paperless/media|" \
|
-e "s|#PAPERLESS_MEDIA_ROOT=../media|PAPERLESS_MEDIA_ROOT=/opt/paperless_data/media|" \
|
||||||
|
-e "s|#PAPERLESS_EMPTY_TRASH_DIR=|PAPERLESS_EMPTY_TRASH_DIR=/opt/paperless_data/trash|" \
|
||||||
-e "s|#PAPERLESS_STATICDIR=../static|PAPERLESS_STATICDIR=/opt/paperless/static|" \
|
-e "s|#PAPERLESS_STATICDIR=../static|PAPERLESS_STATICDIR=/opt/paperless/static|" \
|
||||||
-e 's|#PAPERLESS_DBHOST=localhost|PAPERLESS_DBHOST=localhost|' \
|
-e 's|#PAPERLESS_DBHOST=localhost|PAPERLESS_DBHOST=localhost|' \
|
||||||
-e 's|#PAPERLESS_DBPORT=5432|PAPERLESS_DBPORT=5432|' \
|
-e 's|#PAPERLESS_DBPORT=5432|PAPERLESS_DBPORT=5432|' \
|
||||||
-e "s|#PAPERLESS_DBNAME=paperless|PAPERLESS_DBNAME=$DB_NAME|" \
|
-e "s|#PAPERLESS_DBNAME=paperless|PAPERLESS_DBNAME=$PG_DB_NAME|" \
|
||||||
-e "s|#PAPERLESS_DBUSER=paperless|PAPERLESS_DBUSER=$DB_USER|" \
|
-e "s|#PAPERLESS_DBUSER=paperless|PAPERLESS_DBUSER=$PG_DB_USER|" \
|
||||||
-e "s|#PAPERLESS_DBPASS=paperless|PAPERLESS_DBPASS=$DB_PASS|" \
|
-e "s|#PAPERLESS_DBPASS=paperless|PAPERLESS_DBPASS=$PG_DB_PASS|" \
|
||||||
-e "s|#PAPERLESS_SECRET_KEY=change-me|PAPERLESS_SECRET_KEY=$SECRET_KEY|" \
|
-e "s|#PAPERLESS_SECRET_KEY=change-me|PAPERLESS_SECRET_KEY=$SECRET_KEY|" \
|
||||||
/opt/paperless/paperless.conf
|
/opt/paperless/paperless.conf
|
||||||
cd /opt/paperless/src
|
cd /opt/paperless/src
|
||||||
@@ -97,7 +87,7 @@ msg_info "Setting up admin Paperless-ngx User & Password"
|
|||||||
cat <<EOF | uv run -- python /opt/paperless/src/manage.py shell
|
cat <<EOF | uv run -- python /opt/paperless/src/manage.py shell
|
||||||
from django.contrib.auth import get_user_model
|
from django.contrib.auth import get_user_model
|
||||||
UserModel = get_user_model()
|
UserModel = get_user_model()
|
||||||
user = UserModel.objects.create_user('admin', password='$DB_PASS')
|
user = UserModel.objects.create_user('admin', password='$PG_DB_PASS')
|
||||||
user.is_superuser = True
|
user.is_superuser = True
|
||||||
user.is_staff = True
|
user.is_staff = True
|
||||||
user.save()
|
user.save()
|
||||||
@@ -108,8 +98,8 @@ msg_info "Installing Natural Language Toolkit (Patience)"
|
|||||||
cd /opt/paperless
|
cd /opt/paperless
|
||||||
$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 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 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_tab ||
|
||||||
$STD uv run python -m nltk.downloader -d /usr/share/nltk_data punkt
|
$STD uv run python -m nltk.downloader -d /usr/share/nltk_data punkt
|
||||||
for policy_file in /etc/ImageMagick-6/policy.xml /etc/ImageMagick-7/policy.xml; do
|
for policy_file in /etc/ImageMagick-6/policy.xml /etc/ImageMagick-7/policy.xml; do
|
||||||
if [[ -f "$policy_file" ]]; then
|
if [[ -f "$policy_file" ]]; then
|
||||||
sed -i -e 's/rights="none" pattern="PDF"/rights="read|write" pattern="PDF"/' "$policy_file"
|
sed -i -e 's/rights="none" pattern="PDF"/rights="read|write" pattern="PDF"/' "$policy_file"
|
||||||
@@ -186,11 +176,4 @@ fi
|
|||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
|
cleanup_lxc
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -rf /opt/paperless/docker
|
|
||||||
rm -rf /tmp/ghostscript*
|
|
||||||
$STD apt -y autoremove
|
|
||||||
$STD apt -y autoclean
|
|
||||||
$STD apt -y clean
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
|
|||||||
51
install/passbolt-install.sh
Normal file
51
install/passbolt-install.sh
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
#!/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://www.passbolt.com/
|
||||||
|
|
||||||
|
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 \
|
||||||
|
apt-transport-https \
|
||||||
|
python3-certbot-nginx \
|
||||||
|
debconf-utils
|
||||||
|
msg_ok "Installed dependencies"
|
||||||
|
|
||||||
|
setup_mariadb
|
||||||
|
MARIADB_DB_NAME="passboltdb" MARIADB_DB_USER="passbolt" MARIADB_DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)" setup_mariadb_db
|
||||||
|
setup_deb822_repo \
|
||||||
|
"passbolt" \
|
||||||
|
"https://keys.openpgp.org/pks/lookup?op=get&options=mr&search=0x3D1A0346C8E1802F774AEF21DE8B853FC155581D" \
|
||||||
|
"https://download.passbolt.com/ce/debian" \
|
||||||
|
"buster" \
|
||||||
|
"stable"
|
||||||
|
create_self_signed_cert "passbolt"
|
||||||
|
|
||||||
|
msg_info "Setting up Passbolt (Patience)"
|
||||||
|
export DEBIAN_FRONTEND=noninteractive
|
||||||
|
IP_ADDR=$(hostname -I | awk '{print $1}')
|
||||||
|
echo passbolt-ce-server passbolt/mysql-configuration boolean true | debconf-set-selections
|
||||||
|
echo passbolt-ce-server passbolt/mysql-passbolt-username string $MARIADB_DB_USER | debconf-set-selections
|
||||||
|
echo passbolt-ce-server passbolt/mysql-passbolt-password password $MARIADB_DB_PASS | debconf-set-selections
|
||||||
|
echo passbolt-ce-server passbolt/mysql-passbolt-password-repeat password $MARIADB_DB_PASS | debconf-set-selections
|
||||||
|
echo passbolt-ce-server passbolt/mysql-passbolt-dbname string $MARIADB_DB_NAME | debconf-set-selections
|
||||||
|
echo passbolt-ce-server passbolt/nginx-configuration boolean true | debconf-set-selections
|
||||||
|
echo passbolt-ce-server passbolt/nginx-configuration-three-choices select manual | debconf-set-selections
|
||||||
|
echo passbolt-ce-server passbolt/nginx-domain string $IP_ADDR | debconf-set-selections
|
||||||
|
echo passbolt-ce-server passbolt/nginx-certificate-file string /etc/ssl/passbolt/passbolt.crt | debconf-set-selections
|
||||||
|
echo passbolt-ce-server passbolt/nginx-certificate-key-file string /etc/ssl/passbolt/passbolt.key | debconf-set-selections
|
||||||
|
$STD apt install -y --no-install-recommends passbolt-ce-server
|
||||||
|
msg_ok "Setup Passbolt"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
cleanup_lxc
|
||||||
@@ -13,6 +13,10 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
|
msg_info "Installing Dependencies"
|
||||||
|
$STD apt install -y fping
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
PHP_VERSION="8.3" PHP_APACHE="YES" PHP_FPM="YES" PHP_MODULE="mysql,gmp,snmp,ldap,apcu" setup_php
|
PHP_VERSION="8.3" PHP_APACHE="YES" PHP_FPM="YES" PHP_MODULE="mysql,gmp,snmp,ldap,apcu" setup_php
|
||||||
|
|
||||||
msg_info "Installing PHP-PEAR"
|
msg_info "Installing PHP-PEAR"
|
||||||
@@ -26,6 +30,8 @@ MARIADB_DB_NAME="phpipam" MARIADB_DB_USER="phpipam" setup_mariadb_db
|
|||||||
fetch_and_deploy_gh_release "phpipam" "phpipam/phpipam" "prebuild" "latest" "/opt/phpipam" "phpipam-v*.zip"
|
fetch_and_deploy_gh_release "phpipam" "phpipam/phpipam" "prebuild" "latest" "/opt/phpipam" "phpipam-v*.zip"
|
||||||
|
|
||||||
msg_info "Installing phpIPAM"
|
msg_info "Installing phpIPAM"
|
||||||
|
# patch SCHEMA, during varchar l_name is to short in upstream (2025-11-15)
|
||||||
|
sed -i -E 's/`l_name`\s+varchar\([0-9]+\)/`l_name` varchar(128)/' /opt/phpipam/db/SCHEMA.sql
|
||||||
$STD mariadb -u root "${MARIADB_DB_NAME}" </opt/phpipam/db/SCHEMA.sql
|
$STD mariadb -u root "${MARIADB_DB_NAME}" </opt/phpipam/db/SCHEMA.sql
|
||||||
cp /opt/phpipam/config.dist.php /opt/phpipam/config.php
|
cp /opt/phpipam/config.dist.php /opt/phpipam/config.php
|
||||||
sed -i -e "s/\(\$disable_installer = \).*/\1true;/" \
|
sed -i -e "s/\(\$disable_installer = \).*/\1true;/" \
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ else
|
|||||||
AGENT_SERVICE="zabbix-agent"
|
AGENT_SERVICE="zabbix-agent"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
systemctl restart zabbix-server
|
systemctl restart zabbix-server apache2
|
||||||
systemctl enable -q --now zabbix-server $AGENT_SERVICE apache2
|
systemctl enable -q --now zabbix-server $AGENT_SERVICE apache2
|
||||||
msg_ok "Started Services"
|
msg_ok "Started Services"
|
||||||
|
|
||||||
|
|||||||
@@ -13,10 +13,16 @@ load_functions
|
|||||||
verb_ip6() {
|
verb_ip6() {
|
||||||
set_std_mode # Set STD mode based on VERBOSE
|
set_std_mode # Set STD mode based on VERBOSE
|
||||||
|
|
||||||
if [ "$DISABLEIPV6" == "yes" ]; then
|
if [ "$IPV6_METHOD" == "none" ] || [ "$DISABLEIPV6" == "yes" ]; then
|
||||||
|
msg_info "Disabling IPv6"
|
||||||
$STD sysctl -w net.ipv6.conf.all.disable_ipv6=1
|
$STD sysctl -w net.ipv6.conf.all.disable_ipv6=1
|
||||||
|
$STD sysctl -w net.ipv6.conf.default.disable_ipv6=1
|
||||||
|
$STD sysctl -w net.ipv6.conf.lo.disable_ipv6=1
|
||||||
echo "net.ipv6.conf.all.disable_ipv6 = 1" >>/etc/sysctl.conf
|
echo "net.ipv6.conf.all.disable_ipv6 = 1" >>/etc/sysctl.conf
|
||||||
|
echo "net.ipv6.conf.default.disable_ipv6 = 1" >>/etc/sysctl.conf
|
||||||
|
echo "net.ipv6.conf.lo.disable_ipv6 = 1" >>/etc/sysctl.conf
|
||||||
$STD rc-update add sysctl default
|
$STD rc-update add sysctl default
|
||||||
|
msg_ok "Disabled IPv6"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ post_to_api() {
|
|||||||
"ram_size": $RAM_SIZE,
|
"ram_size": $RAM_SIZE,
|
||||||
"os_type": "$var_os",
|
"os_type": "$var_os",
|
||||||
"os_version": "$var_version",
|
"os_version": "$var_version",
|
||||||
"disableip6": "",
|
|
||||||
"nsapp": "$NSAPP",
|
"nsapp": "$NSAPP",
|
||||||
"method": "$METHOD",
|
"method": "$METHOD",
|
||||||
"pve_version": "$pve_version",
|
"pve_version": "$pve_version",
|
||||||
@@ -81,7 +80,6 @@ post_to_api_vm() {
|
|||||||
"ram_size": $RAM_SIZE,
|
"ram_size": $RAM_SIZE,
|
||||||
"os_type": "$var_os",
|
"os_type": "$var_os",
|
||||||
"os_version": "$var_version",
|
"os_version": "$var_version",
|
||||||
"disableip6": "",
|
|
||||||
"nsapp": "$NSAPP",
|
"nsapp": "$NSAPP",
|
||||||
"method": "$METHOD",
|
"method": "$METHOD",
|
||||||
"pve_version": "$pve_version",
|
"pve_version": "$pve_version",
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ root_check() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# This function checks the version of Proxmox Virtual Environment (PVE) and exits if the version is not supported.
|
# This function checks the version of Proxmox Virtual Environment (PVE) and exits if the version is not supported.
|
||||||
# Supported: Proxmox VE 8.0.x – 8.9.x and 9.0 (NOT 9.1+)
|
# Supported: Proxmox VE 8.0.x – 8.9.x, 9.0 and 9.1
|
||||||
pve_check() {
|
pve_check() {
|
||||||
local PVE_VER
|
local PVE_VER
|
||||||
PVE_VER="$(pveversion | awk -F'/' '{print $2}' | awk -F'-' '{print $1}')"
|
PVE_VER="$(pveversion | awk -F'/' '{print $2}' | awk -F'-' '{print $1}')"
|
||||||
@@ -81,12 +81,12 @@ pve_check() {
|
|||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check for Proxmox VE 9.x: allow ONLY 9.0
|
# Check for Proxmox VE 9.x: allow 9.0 and 9.1
|
||||||
if [[ "$PVE_VER" =~ ^9\.([0-9]+) ]]; then
|
if [[ "$PVE_VER" =~ ^9\.([0-9]+) ]]; then
|
||||||
local MINOR="${BASH_REMATCH[1]}"
|
local MINOR="${BASH_REMATCH[1]}"
|
||||||
if ((MINOR != 0)); then
|
if ((MINOR < 0 || MINOR > 1)); then
|
||||||
msg_error "This version of Proxmox VE is not yet supported."
|
msg_error "This version of Proxmox VE is not supported."
|
||||||
msg_error "Supported: Proxmox VE version 9.0"
|
msg_error "Supported: Proxmox VE version 9.0 – 9.1"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
return 0
|
return 0
|
||||||
@@ -94,7 +94,7 @@ pve_check() {
|
|||||||
|
|
||||||
# All other unsupported versions
|
# All other unsupported versions
|
||||||
msg_error "This version of Proxmox VE is not supported."
|
msg_error "This version of Proxmox VE is not supported."
|
||||||
msg_error "Supported versions: Proxmox VE 8.0 – 8.x or 9.0"
|
msg_error "Supported versions: Proxmox VE 8.0 – 8.x or 9.0 – 9.1"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -200,7 +200,6 @@ if qm status "$CTID" &>/dev/null || pct status "$CTID" &>/dev/null; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# This checks for the presence of valid Container Storage and Template Storage locations
|
# This checks for the presence of valid Container Storage and Template Storage locations
|
||||||
msg_info "Validating storage"
|
|
||||||
if ! check_storage_support "rootdir"; then
|
if ! check_storage_support "rootdir"; then
|
||||||
msg_error "No valid storage found for 'rootdir' [Container]"
|
msg_error "No valid storage found for 'rootdir' [Container]"
|
||||||
exit 1
|
exit 1
|
||||||
@@ -210,7 +209,6 @@ if ! check_storage_support "vztmpl"; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#msg_info "Checking template storage"
|
|
||||||
while true; do
|
while true; do
|
||||||
if select_storage template; then
|
if select_storage template; then
|
||||||
TEMPLATE_STORAGE="$STORAGE_RESULT"
|
TEMPLATE_STORAGE="$STORAGE_RESULT"
|
||||||
|
|||||||
@@ -15,9 +15,13 @@ load_functions
|
|||||||
verb_ip6() {
|
verb_ip6() {
|
||||||
set_std_mode # Set STD mode based on VERBOSE
|
set_std_mode # Set STD mode based on VERBOSE
|
||||||
|
|
||||||
if [ "$DISABLEIPV6" == "yes" ]; then
|
if [ "$IPV6_METHOD" == "none" ] || [ "$DISABLEIPV6" == "yes" ]; then
|
||||||
echo "net.ipv6.conf.all.disable_ipv6 = 1" >>/etc/sysctl.conf
|
msg_info "Disabling IPv6"
|
||||||
|
$STD echo "net.ipv6.conf.all.disable_ipv6 = 1" >>/etc/sysctl.conf
|
||||||
|
$STD echo "net.ipv6.conf.default.disable_ipv6 = 1" >>/etc/sysctl.conf
|
||||||
|
$STD echo "net.ipv6.conf.lo.disable_ipv6 = 1" >>/etc/sysctl.conf
|
||||||
$STD sysctl -p
|
$STD sysctl -p
|
||||||
|
msg_ok "Disabled IPv6"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3117,7 +3117,8 @@ function setup_mariadb_db() {
|
|||||||
|
|
||||||
$STD mariadb -u root -e "FLUSH PRIVILEGES;"
|
$STD mariadb -u root -e "FLUSH PRIVILEGES;"
|
||||||
|
|
||||||
local CREDS_FILE="${MARIADB_DB_CREDS_FILE:-${HOME}/${APPLICATION}.creds}"
|
local app_name="${APPLICATION,,}"
|
||||||
|
local CREDS_FILE="${MARIADB_DB_CREDS_FILE:-${HOME}/${app_name}.creds}"
|
||||||
{
|
{
|
||||||
echo "MariaDB Credentials"
|
echo "MariaDB Credentials"
|
||||||
echo "Database: $MARIADB_DB_NAME"
|
echo "Database: $MARIADB_DB_NAME"
|
||||||
@@ -3805,10 +3806,73 @@ function setup_postgresql() {
|
|||||||
local SUITE
|
local SUITE
|
||||||
case "$DISTRO_CODENAME" in
|
case "$DISTRO_CODENAME" in
|
||||||
trixie | forky | sid)
|
trixie | forky | sid)
|
||||||
|
# For Debian Testing/Unstable, try PostgreSQL repo first, fallback to native packages
|
||||||
if verify_repo_available "https://apt.postgresql.org/pub/repos/apt" "trixie-pgdg"; then
|
if verify_repo_available "https://apt.postgresql.org/pub/repos/apt" "trixie-pgdg"; then
|
||||||
SUITE="trixie-pgdg"
|
SUITE="trixie-pgdg"
|
||||||
|
|
||||||
|
setup_deb822_repo \
|
||||||
|
"pgdg" \
|
||||||
|
"https://www.postgresql.org/media/keys/ACCC4CF8.asc" \
|
||||||
|
"https://apt.postgresql.org/pub/repos/apt" \
|
||||||
|
"$SUITE" \
|
||||||
|
"main"
|
||||||
|
|
||||||
|
if ! $STD apt update; then
|
||||||
|
msg_warn "Failed to update PostgreSQL repository, falling back to native packages"
|
||||||
|
SUITE=""
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
SUITE="bookworm-pgdg"
|
SUITE=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If no repo or packages not installable, use native Debian packages
|
||||||
|
if [[ -z "$SUITE" ]] || ! apt-cache show "postgresql-${PG_VERSION}" 2>/dev/null | grep -q "Version:"; then
|
||||||
|
msg_info "Using native Debian packages for $DISTRO_CODENAME"
|
||||||
|
|
||||||
|
# Install ssl-cert dependency if available
|
||||||
|
if apt-cache search "^ssl-cert$" 2>/dev/null | grep -q .; then
|
||||||
|
$STD apt install -y ssl-cert 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! $STD apt install -y postgresql postgresql-client 2>/dev/null; then
|
||||||
|
msg_error "Failed to install native PostgreSQL packages"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! command -v psql >/dev/null 2>&1; then
|
||||||
|
msg_error "PostgreSQL installed but psql command not found"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Restore database backup if we upgraded from previous version
|
||||||
|
if [[ -n "$CURRENT_PG_VERSION" ]]; then
|
||||||
|
msg_info "Restoring PostgreSQL databases from backup..."
|
||||||
|
$STD runuser -u postgres -- psql </var/lib/postgresql/backup_$(date +%F)_v${CURRENT_PG_VERSION}.sql 2>/dev/null || {
|
||||||
|
msg_warn "Failed to restore database backup - this may be expected for major version upgrades"
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
|
||||||
|
$STD systemctl enable --now postgresql 2>/dev/null || true
|
||||||
|
|
||||||
|
# Get actual installed version
|
||||||
|
INSTALLED_VERSION="$(psql -V 2>/dev/null | awk '{print $3}' | cut -d. -f1)"
|
||||||
|
|
||||||
|
# Add PostgreSQL binaries to PATH
|
||||||
|
if ! grep -q '/usr/lib/postgresql' /etc/environment 2>/dev/null; then
|
||||||
|
echo 'PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/postgresql/'"${INSTALLED_VERSION}"'/bin"' >/etc/environment
|
||||||
|
fi
|
||||||
|
|
||||||
|
cache_installed_version "postgresql" "$INSTALLED_VERSION"
|
||||||
|
msg_ok "Setup PostgreSQL $INSTALLED_VERSION (native)"
|
||||||
|
|
||||||
|
# Install optional modules if specified
|
||||||
|
if [[ -n "$PG_MODULES" ]]; then
|
||||||
|
IFS=',' read -ra MODULES <<<"$PG_MODULES"
|
||||||
|
for module in "${MODULES[@]}"; do
|
||||||
|
$STD apt install -y "postgresql-${INSTALLED_VERSION}-${module}" 2>/dev/null || true
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
return 0
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
@@ -3972,7 +4036,8 @@ function setup_postgresql_db() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Save credentials
|
# Save credentials
|
||||||
local CREDS_FILE="${PG_DB_CREDS_FILE:-${HOME}/${APPLICATION}.creds}"
|
local app_name="${APPLICATION,,}"
|
||||||
|
local CREDS_FILE="${PG_DB_CREDS_FILE:-${HOME}/${app_name}.creds}"
|
||||||
{
|
{
|
||||||
echo "PostgreSQL Credentials"
|
echo "PostgreSQL Credentials"
|
||||||
echo "Database: $PG_DB_NAME"
|
echo "Database: $PG_DB_NAME"
|
||||||
|
|||||||
Reference in New Issue
Block a user