Compare commits

..

16 Commits

Author SHA1 Message Date
community-scripts-pr-app[bot]
bd3b022b08 Update CHANGELOG.md (#4638)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-05-22 01:15:11 +01:00
community-scripts-pr-app[bot]
49fcd68f42 Update versions.json (#4637)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-05-22 02:14:33 +02:00
community-scripts-pr-app[bot]
1382742c26 Update CHANGELOG.md (#4634)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-05-21 20:12:29 +01:00
Jason Bolla
9e2441ff53 Tandoor Recipes: Capture version information when installing (#4633)
* Capture version information when installing Tandoor

When installing Tandoor, run the version.py script to record version information.

* Set up Tandoor version earlier

Move Tandoor's version script execution into main install block.
2025-05-21 21:12:03 +02:00
community-scripts-pr-app[bot]
490dbc725e Update CHANGELOG.md (#4629)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-05-21 14:03:16 +01:00
CanbiZ
d9201e2cac Alpine-Node-RED: Update Service File (#4628)
* Update alpine-node-red-install.sh

* Update alpine-node-red-install.sh
2025-05-21 15:02:38 +02:00
community-scripts-pr-app[bot]
52c09646b2 Update versions.json (#4626)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-05-21 14:07:43 +02:00
community-scripts-pr-app[bot]
b5d70d5201 Update CHANGELOG.md (#4625)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-05-21 12:01:04 +01:00
community-scripts-pr-app[bot]
7089b9ef7b Update CHANGELOG.md (#4624)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-05-21 12:00:45 +01:00
community-scripts-pr-app[bot]
034d7df9cd Update date in json (#4623)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-05-21 11:59:40 +01:00
community-scripts-pr-app[bot]
f41ac673a3 Update CHANGELOG.md (#4622)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-05-21 11:59:26 +01:00
community-scripts-pr-app[bot]
a7382f9273 Update date in json (#4621)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-05-21 11:59:20 +01:00
push-app-to-main[bot]
cb1465544d 'Add new script' (#4620)
Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
2025-05-21 12:59:12 +02:00
push-app-to-main[bot]
796c31eae4 babybuddy (#4619)
* 'Add new script'

* Update babybuddy.sh

* add license

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
2025-05-21 12:58:47 +02:00
community-scripts-pr-app[bot]
047c2c44d6 Update CHANGELOG.md (#4618)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-05-21 07:02:38 +01:00
Slaviša Arežina
1baa841963 Fix update for older installs (#4612) 2025-05-21 08:02:03 +02:00
13 changed files with 568 additions and 118 deletions

View File

@@ -14,8 +14,26 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
All LXC instances created using this repository come pre-installed with Midnight Commander, which is a command-line tool (`mc`) that offers a user-friendly file and directory management interface for the terminal environment.
## 2025-05-22
## 2025-05-21
### 🆕 New Scripts
- configarr ([#4620](https://github.com/community-scripts/ProxmoxVE/pull/4620))
- babybuddy ([#4619](https://github.com/community-scripts/ProxmoxVE/pull/4619))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Alpine-Node-RED: Update Service File [@MickLesk](https://github.com/MickLesk) ([#4628](https://github.com/community-scripts/ProxmoxVE/pull/4628))
- RustDesk Server: Fix update for older installs [@tremor021](https://github.com/tremor021) ([#4612](https://github.com/community-scripts/ProxmoxVE/pull/4612))
- #### ✨ New Features
- Tandoor Recipes: Capture version information when installing [@jbolla](https://github.com/jbolla) ([#4633](https://github.com/community-scripts/ProxmoxVE/pull/4633))
## 2025-05-20
### 🚀 Updated Scripts

86
ct/babybuddy.sh Normal file
View File

@@ -0,0 +1,86 @@
#!/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: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/babybuddy/babybuddy
APP="Baby Buddy"
var_tags="${var_tags:-baby}"
var_disk="${var_disk:-5}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
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/babybuddy ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
RELEASE=$(curl -fsSL https://api.github.com/repos/babybuddy/babybuddy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/babybuddy_version.txt)" ]]; then
setup_uv
msg_info "Stopping Services"
systemctl stop nginx
systemctl stop uwsgi
msg_ok "Services Stopped"
msg_info "Cleaning old files"
cp babybuddy/settings/production.py /tmp/production.py.bak
find . -mindepth 1 -maxdepth 1 ! -name '.venv' -exec rm -rf {} +
msg_ok "Cleaned old files"
msg_info "Updating ${APP} to v${RELEASE}"
temp_file=$(mktemp)
curl -fsSL "https://github.com/babybuddy/babybuddy/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
cd /opt/babybuddy
tar zxf "$temp_file" --strip-components=1 -C /opt/babybuddy
mv /tmp/production.py.bak babybuddy/settings/production.py
cd /opt/babybuddy
source .venv/bin/activate
$STD uv pip install -r requirements.txt
$STD python manage.py migrate
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP} to v${RELEASE}"
msg_info "Fixing permissions"
chown -R www-data:www-data /opt/data
chmod 640 /opt/data/db.sqlite3
chmod 750 /opt/data
msg_ok "Permissions fixed"
msg_info "Starting Services"
systemctl start uwsgi
systemctl start nginx
msg_ok "Services Started"
msg_info "Cleaning up"
rm -f "$temp_file"
msg_ok "Cleaned"
msg_ok "Updated Successfully"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"

66
ct/configarr.sh Normal file
View File

@@ -0,0 +1,66 @@
#!/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: finkerle
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/raydak-labs/configarr
APP="Configarr"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}"
var_disk="${var_disk:-4}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/configarr ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
RELEASE=$(curl -fsSL https://api.github.com/repos/raydak-labs/configarr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ "${RELEASE}" != "$(cat /opt/configarr_version.txt)" ]] || [[ ! -f /opt/configarr_version.txt ]]; then
msg_info "Stopping $APP"
systemctl stop configarr-task.timer
msg_ok "Stopped $APP"
msg_info "Updating $APP to v${RELEASE}"
mkdir -p /opt/backup/
mv /opt/configarr/{config.yml,secrets.yml,.env} "/opt/backup/"
rm -rf /opt/configarr
fetch_and_deploy_gh_release "raydak-labs/configarr"
mv /opt/backup/* /opt/configarr/
cd /opt/configarr
$STD pnpm install
$STD pnpm run build
msg_ok "Updated $APP to v${RELEASE}"
msg_info "Starting $APP"
systemctl start configarr-task.timer
msg_ok "Started configarr"
rm -rf /opt/backup
msg_ok "Update Successful"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL (no web-ui):${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8989${CL}"

6
ct/headers/babybuddy Normal file
View File

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

6
ct/headers/configarr Normal file
View File

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

View File

@@ -38,7 +38,9 @@ function update_script() {
msg_info "Stopping $APP"
systemctl stop rustdesk-hbbr
systemctl stop rustdesk-hbbs
systemctl stop rustdesk-api
if [[ -f /lib/systemd/system/rustdesk-api.service ]]; then
systemctl stop rustdesk-api
fi
msg_ok "Stopped $APP"
msg_info "Updating $APP to v${RELEASE}"

View File

@@ -0,0 +1,40 @@
{
"name": "Baby Buddy",
"slug": "babybuddy",
"categories": [
23
],
"date_created": "2025-05-21",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 80,
"documentation": "https://docs.baby-buddy.net/",
"website": "https://github.com/babybuddy/babybuddy",
"logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/baby-buddy.svg",
"config_path": "/opt/babybuddy/babybuddy/production.py",
"description": "Baby Buddy is an open-source web application designed to assist caregivers in tracking various aspects of a baby's daily routine, including sleep, feedings, diaper changes, tummy time, and more. By recording this data, caregivers can better understand and anticipate their baby's needs, reducing guesswork in daily care. The application offers a user-friendly dashboard for data entry and visualization, supports multiple users, and provides features like timers and reminders. Additionally, Baby Buddy can be integrated with platforms like Home Assistant and Grafana for enhanced functionality.",
"install_methods": [
{
"type": "default",
"script": "ct/babybuddy.sh",
"resources": {
"cpu": 2,
"ram": 2048,
"hdd": 5,
"os": "debian",
"version": "12"
}
}
],
"default_credentials": {
"username": "admin",
"password": "admin"
},
"notes": [
{
"text": "for private SSL setup visit: `https://github.com/babybuddy/babybuddy/blob/master/docs/setup/ssl.md`",
"type": "info"
}
]
}

View File

@@ -0,0 +1,40 @@
{
"name": "Configarr",
"slug": "configarr",
"categories": [
14
],
"date_created": "2025-05-21",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 8989,
"documentation": "https://configarr.raydak.de/docs/intro",
"config_path": "/opt/configarr/config.yml",
"website": "https://configarr.raydak.de/",
"logo": "https://github.com/raydak-labs/configarr/blob/main/docs/static/img/logo.webp",
"description": "Configarr is an open-source tool designed to simplify configuration and synchronization for Sonarr and Radarr (and other experimental). It integrates with TRaSH Guides to automate updates of custom formats, quality profiles, and other settings, while also supporting user-defined configurations.",
"install_methods": [
{
"type": "default",
"script": "ct/configarr.sh",
"resources": {
"cpu": 1,
"ram": 512,
"hdd": 4,
"os": "Debian",
"version": "12"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "change secrets file /opt/configarr/secrets.yml",
"type": "info"
}
]
}

View File

@@ -1,23 +1,118 @@
[
{
"name": "esphome/esphome",
"version": "2025.4.2",
"date": "2025-05-11T22:18:43Z"
"name": "tobychui/zoraxy",
"version": "v3.1.9",
"date": "2025-03-01T02:24:33Z"
},
{
"name": "mongodb/mongo",
"version": "r6.0.24-rc0",
"date": "2025-05-20T21:33:16Z"
"name": "ollama/ollama",
"version": "v0.7.0",
"date": "2025-05-14T23:42:30Z"
},
{
"name": "clusterzx/paperless-ai",
"version": "v3.0.3",
"date": "2025-05-20T19:37:45Z"
"name": "immich-app/immich",
"version": "v1.133.0",
"date": "2025-05-21T20:17:38Z"
},
{
"name": "apache/tika",
"version": "3.2.0-rc2",
"date": "2025-05-21T20:09:07Z"
},
{
"name": "0xERR0R/blocky",
"version": "v0.26",
"date": "2025-05-20T19:34:05Z"
"version": "v0.26.2",
"date": "2025-05-21T19:52:07Z"
},
{
"name": "tailscale/tailscale",
"version": "v1.84.0",
"date": "2025-05-21T19:39:53Z"
},
{
"name": "clusterzx/paperless-ai",
"version": "v3.0.4",
"date": "2025-05-21T19:03:53Z"
},
{
"name": "mongodb/mongo",
"version": "r8.0.10-rc0",
"date": "2025-05-21T18:22:25Z"
},
{
"name": "ipfs/kubo",
"version": "v0.35.0",
"date": "2025-05-21T18:00:32Z"
},
{
"name": "msgbyte/tianji",
"version": "v1.20.10",
"date": "2025-05-21T17:22:32Z"
},
{
"name": "cross-seed/cross-seed",
"version": "v6.12.5",
"date": "2025-05-17T02:52:33Z"
},
{
"name": "cockpit-project/cockpit",
"version": "339",
"date": "2025-05-21T14:49:36Z"
},
{
"name": "mattermost/mattermost",
"version": "v9.11.16",
"date": "2025-05-21T13:57:13Z"
},
{
"name": "theonedev/onedev",
"version": "v11.9.9",
"date": "2025-05-21T13:13:31Z"
},
{
"name": "glpi-project/glpi",
"version": "10.0.18",
"date": "2025-02-12T11:07:02Z"
},
{
"name": "zitadel/zitadel",
"version": "v3.1.0",
"date": "2025-05-21T12:40:54Z"
},
{
"name": "esphome/esphome",
"version": "2025.5.0",
"date": "2025-05-21T08:32:53Z"
},
{
"name": "wazuh/wazuh",
"version": "coverity-w21-4.13.0",
"date": "2025-05-21T08:15:52Z"
},
{
"name": "syncthing/syncthing",
"version": "v1.29.6",
"date": "2025-05-06T07:57:02Z"
},
{
"name": "Jackett/Jackett",
"version": "v0.22.1933",
"date": "2025-05-21T05:53:49Z"
},
{
"name": "inventree/InvenTree",
"version": "0.17.12",
"date": "2025-05-21T05:44:55Z"
},
{
"name": "diced/zipline",
"version": "v4.1.0",
"date": "2025-05-21T04:12:44Z"
},
{
"name": "icereed/paperless-gpt",
"version": "v0.19.0",
"date": "2025-05-21T03:46:14Z"
},
{
"name": "matze/wastebin",
@@ -29,6 +124,11 @@
"version": "4.8.11.0",
"date": "2025-03-10T06:39:11Z"
},
{
"name": "keycloak/keycloak",
"version": "26.0.12",
"date": "2025-05-15T14:06:52Z"
},
{
"name": "jenkinsci/jenkins",
"version": "jenkins-2.511",
@@ -39,11 +139,6 @@
"version": "v1.130.0",
"date": "2025-05-20T15:33:54Z"
},
{
"name": "syncthing/syncthing",
"version": "v1.29.6",
"date": "2025-05-06T07:57:02Z"
},
{
"name": "documenso/documenso",
"version": "v1.11.1",
@@ -59,21 +154,11 @@
"version": "7.2.7",
"date": "2025-05-20T11:00:56Z"
},
{
"name": "mattermost/mattermost",
"version": "server/public/v0.1.13",
"date": "2025-05-16T03:44:25Z"
},
{
"name": "Luligu/matterbridge",
"version": "3.0.3",
"date": "2025-05-20T06:51:42Z"
},
{
"name": "Jackett/Jackett",
"version": "v0.22.1930",
"date": "2025-05-20T06:38:17Z"
},
{
"name": "crafty-controller/crafty-4",
"version": "v4.4.9",
@@ -99,11 +184,6 @@
"version": "v0.8.3",
"date": "2025-05-19T20:45:10Z"
},
{
"name": "keycloak/keycloak",
"version": "26.0.12",
"date": "2025-05-15T14:06:52Z"
},
{
"name": "bunkerity/bunkerweb",
"version": "v1.6.1",
@@ -184,16 +264,6 @@
"version": "v1.35.1.5034",
"date": "2025-04-30T11:02:36Z"
},
{
"name": "theonedev/onedev",
"version": "v11.9.8",
"date": "2025-05-17T13:13:22Z"
},
{
"name": "inventree/InvenTree",
"version": "0.17.12",
"date": "2025-05-17T19:16:00Z"
},
{
"name": "Radarr/Radarr",
"version": "v5.23.3.9987",
@@ -224,11 +294,6 @@
"version": "v0.304.0",
"date": "2025-05-17T07:29:09Z"
},
{
"name": "cross-seed/cross-seed",
"version": "v6.12.5",
"date": "2025-05-17T02:52:33Z"
},
{
"name": "advplyr/audiobookshelf",
"version": "v2.23.0",
@@ -264,21 +329,11 @@
"version": "e5.10.0-alpha.1",
"date": "2025-05-16T13:30:53Z"
},
{
"name": "wazuh/wazuh",
"version": "coverity-w20-4.13.0",
"date": "2025-05-14T12:06:20Z"
},
{
"name": "gotson/komga",
"version": "1.21.3",
"date": "2025-05-16T04:31:05Z"
},
{
"name": "ipfs/kubo",
"version": "v0.34.1",
"date": "2025-03-25T18:11:12Z"
},
{
"name": "coder/code-server",
"version": "v4.100.2",
@@ -319,11 +374,6 @@
"version": "flowise@3.0.0",
"date": "2025-05-15T01:49:47Z"
},
{
"name": "ollama/ollama",
"version": "v0.7.0",
"date": "2025-05-14T23:42:30Z"
},
{
"name": "Ombi-app/Ombi",
"version": "v4.47.1",
@@ -379,11 +429,6 @@
"version": "8.0.1",
"date": "2025-05-13T13:31:53Z"
},
{
"name": "zitadel/zitadel",
"version": "v2.65.9",
"date": "2025-05-13T05:14:39Z"
},
{
"name": "go-gitea/gitea",
"version": "v1.23.8",
@@ -409,11 +454,6 @@
"version": "v0.24.3",
"date": "2025-05-12T15:23:21Z"
},
{
"name": "apache/tika",
"version": "3.2.0-rc1",
"date": "2025-05-12T13:06:47Z"
},
{
"name": "dgtlmoon/changedetection.io",
"version": "0.49.17",
@@ -484,6 +524,11 @@
"version": "0.18.2",
"date": "2025-05-07T19:22:22Z"
},
{
"name": "grafana/grafana",
"version": "v12.0.0+security-01",
"date": "2025-05-07T18:03:17Z"
},
{
"name": "donaldzou/WGDashboard",
"version": "v4.2.3",
@@ -499,11 +544,6 @@
"version": "v5.7.5",
"date": "2025-05-07T14:01:45Z"
},
{
"name": "glpi-project/glpi",
"version": "10.0.18",
"date": "2025-02-12T11:07:02Z"
},
{
"name": "ZoeyVid/NPMplus",
"version": "2025-05-07-r1",
@@ -519,11 +559,6 @@
"version": "v8.1.3",
"date": "2025-05-07T11:09:21Z"
},
{
"name": "cockpit-project/cockpit",
"version": "338",
"date": "2025-05-07T10:43:29Z"
},
{
"name": "jupyter/notebook",
"version": "@jupyter-notebook/ui-components@7.5.0-alpha.0",
@@ -569,26 +604,11 @@
"version": "REL_13_21",
"date": "2025-05-05T20:34:49Z"
},
{
"name": "msgbyte/tianji",
"version": "v1.20.9",
"date": "2025-05-05T19:24:09Z"
},
{
"name": "grafana/grafana",
"version": "v12.0.0",
"date": "2025-05-05T18:28:19Z"
},
{
"name": "apache/couchdb",
"version": "3.5.0",
"date": "2025-05-05T16:28:24Z"
},
{
"name": "icereed/paperless-gpt",
"version": "v0.18.0",
"date": "2025-05-05T15:34:40Z"
},
{
"name": "traefik/traefik",
"version": "v3.4.0",
@@ -684,11 +704,6 @@
"version": "v1.2.0",
"date": "2025-04-28T17:55:01Z"
},
{
"name": "immich-app/immich",
"version": "v1.132.3",
"date": "2025-04-28T14:11:06Z"
},
{
"name": "karakeep-app/karakeep",
"version": "v0.24.1",
@@ -704,11 +719,6 @@
"version": "release-5.1.0",
"date": "2025-04-27T08:53:48Z"
},
{
"name": "tobychui/zoraxy",
"version": "v3.1.9",
"date": "2025-03-01T02:24:33Z"
},
{
"name": "openhab/openhab-core",
"version": "4.3.5",
@@ -769,11 +779,6 @@
"version": "v2.10.0",
"date": "2025-04-18T20:46:28Z"
},
{
"name": "tailscale/tailscale",
"version": "v1.82.5",
"date": "2025-04-17T20:59:15Z"
},
{
"name": "TriliumNext/Notes",
"version": "v0.93.0",
@@ -864,11 +869,6 @@
"version": "v2.31.0",
"date": "2025-04-01T18:12:45Z"
},
{
"name": "diced/zipline",
"version": "v4.0.2",
"date": "2025-04-01T04:51:05Z"
},
{
"name": "Kometa-Team/Kometa",
"version": "v2.2.0",

View File

@@ -29,13 +29,19 @@ msg_info "Installing Node-RED"
npm install -g --unsafe-perm node-red
msg_ok "Installed Node-RED"
msg_info "Creating /home/nodered"
mkdir -p /home/nodered
chown -R nodered:users /home/nodered
chmod 750 /home/nodered
msg_ok "Created /home/nodered"
msg_info "Creating Node-RED Service"
service_path="/etc/init.d/nodered"
echo '#!/sbin/openrc-run
description="Node-RED Service"
command="/usr/bin/node-red"
command="/usr/local/bin/node-red"
command_args="--max-old-space-size=128 -v"
command_user="nodered"
pidfile="/var/run/nodered.pid"

View File

@@ -0,0 +1,108 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/babybuddy/babybuddy
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 \
uwsgi \
uwsgi-plugin-python3 \
libopenjp2-7-dev \
libpq-dev \
nginx \
python3
msg_ok "Installed Dependencies"
setup_uv
msg_info "Installing Babybuddy"
RELEASE=$(curl -fsSL https://api.github.com/repos/babybuddy/babybuddy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
temp_file=$(mktemp)
mkdir -p /opt/{babybuddy,data}
curl -fsSL "https://github.com/babybuddy/babybuddy/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
tar zxf "$temp_file" --strip-components=1 -C /opt/babybuddy
cd /opt/babybuddy
$STD uv venv .venv
$STD source .venv/bin/activate
$STD uv pip install -r requirements.txt
cp babybuddy/settings/production.example.py babybuddy/settings/production.py
SECRET_KEY=$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)
ALLOWED_HOSTS=$(hostname -I | tr ' ' ',' | sed 's/,$//')",127.0.0.1,localhost"
sed -i \
-e "s/^SECRET_KEY = \"\"/SECRET_KEY = \"$SECRET_KEY\"/" \
-e "s/^ALLOWED_HOSTS = \[\"\"\]/ALLOWED_HOSTS = \[$(echo \"$ALLOWED_HOSTS\" | sed 's/,/\",\"/g')\]/" \
babybuddy/settings/production.py
export DJANGO_SETTINGS_MODULE=babybuddy.settings.production
$STD python manage.py migrate
chown -R www-data:www-data /opt/data
chmod 640 /opt/data/db.sqlite3
chmod 750 /opt/data
msg_ok "Installed Babybuddy"
msg_info "Configuring uWSGI"
cat <<EOF >/etc/uwsgi/apps-available/babybuddy.ini
[uwsgi]
plugins = python3
project = babybuddy
base_dir = /opt/babybuddy
chdir = %(base_dir)
virtualenv = %(base_dir)/.venv
module = %(project).wsgi:application
env = DJANGO_SETTINGS_MODULE=%(project).settings.production
master = True
vacuum = True
socket = /var/run/uwsgi/app/babybuddy/socket
chmod-socket = 660
uid = www-data
gid = www-data
EOF
ln -sf /etc/uwsgi/apps-available/babybuddy.ini /etc/uwsgi/apps-enabled/babybuddy.ini
service uwsgi restart
msg_ok "Configured uWSGI"
msg_info "Configuring NGINX"
cat <<EOF >/etc/nginx/sites-available/babybuddy
upstream babybuddy {
server unix:///var/run/uwsgi/app/babybuddy/socket;
}
server {
listen 80;
server_name _;
location / {
uwsgi_pass babybuddy;
include uwsgi_params;
}
location /media {
alias /opt/data/media;
}
}
EOF
ln -sf /etc/nginx/sites-available/babybuddy /etc/nginx/sites-enabled/babybuddy
rm /etc/nginx/sites-enabled/default
systemctl enable -q --now nginx
service nginx reload
msg_ok "Configured NGINX"
motd_ssh
customize
msg_info "Cleaning up"
rm -f "$temp_file"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -0,0 +1,70 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: finkerle
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/raydak-labs/configarr
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 \
git
msg_ok "Installed Dependencies"
NODE_MODULE="pnpm@latest" install_node_and_modules
fetch_and_deploy_gh_release "raydak-labs/configarr"
msg_info "Setup ${APPLICATION}"
cat <<EOF >/opt/configarr/.env
ROOT_PATH=/opt/configarr
CUSTOM_REPO_ROOT=/opt/configarr/repos
CONFIG_LOCATION=/opt/configarr/config.yml
SECRETS_LOCATION=/opt/configarr/secrets.yml
EOF
mv /opt/configarr/secrets.yml.template /opt/configarr/secrets.yml
sed 's|#localConfigTemplatesPath: /app/templates|#localConfigTemplatesPath: /opt/configarr/templates|' /opt/configarr/config.yml.template >/opt/configarr/config.yml
cd /opt/configarr
$STD pnpm install
$STD pnpm run build
msg_ok "Setup ${APPLICATION}"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/configarr-task.service
[Unit]
Description=Run Configarr Task
[Service]
Type=oneshot
WorkingDirectory=/opt/configarr
ExecStart=/usr/bin/node /opt/configarr/bundle.cjs
EOF
cat <<EOF >/etc/systemd/system/configarr-task.timer
[Unit]
Description=Run Configarr every 5 minutes
[Timer]
OnBootSec=2min
OnUnitActiveSec=5min
Persistent=true
[Install]
WantedBy=timers.target
EOF
systemctl enable -q --now configarr-task.timer configarr-task.service
msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -75,6 +75,8 @@ sed -i -e "s|SECRET_KEY=.*|SECRET_KEY=$secret_key|g" \
-e "s|POSTGRES_DB=.*|POSTGRES_DB=$DB_NAME|g" \
-e "s|POSTGRES_USER=.*|POSTGRES_USER=$DB_USER|g" \
-e "\$a\STATIC_URL=/staticfiles/" /opt/tandoor/.env
cd /opt/tandoor
$STD python3 version.py
msg_ok "Installed Tandoor"
msg_info "Install/Set up PostgreSQL Database"