Compare commits

...

55 Commits

Author SHA1 Message Date
connorjfarrell
7846c3855d
Merge b6b5748e9a into cecf179b34 2025-01-28 19:41:01 +01:00
community-scripts-pr-app[bot]
cecf179b34
Update CHANGELOG.md (#1829)
Some checks are pending
Auto Update .app-files / update-app-files (push) Waiting to run
Shellcheck / Shellcheck (push) Waiting to run
Create Changelog Pull Request / update-changelog-pull-request (push) Waiting to run
Frontend CI/CD / build (push) Waiting to run
Frontend CI/CD / deploy (push) Blocked by required conditions
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-01-28 19:34:32 +01:00
Bram Suurd
1f39208c1c
Filter out duplicate scripts in LatestScripts component and sort by creation date (#1828) 2025-01-28 19:33:22 +01:00
CanbiZ
63061942b9
Aktualisieren von homarr-install.sh 2025-01-28 18:24:06 +01:00
CanbiZ
87a987ba35
remove env 2025-01-28 17:08:31 +01:00
CanbiZ
0680fbfac7
Update homarr-install.sh 2025-01-28 16:59:27 +01:00
CanbiZ
41a836f990
add pnpm install 2025-01-28 16:53:33 +01:00
CanbiZ
ad14b1b1d6
Update homarr-install.sh 2025-01-28 16:50:30 +01:00
CanbiZ
94d60a79d6
bump homarr v1 to new date 2025-01-28 16:36:23 +01:00
community-scripts-pr-app[bot]
f10e625e41
Update CHANGELOG.md (#1826)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-01-28 16:34:22 +01:00
CanbiZ
dae705056c
Breaking Change: Homarr (#1825) 2025-01-28 16:32:44 +01:00
community-scripts-pr-app[bot]
b973ca9d8d
Update CHANGELOG.md (#1824)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-01-28 15:52:00 +01:00
community-scripts-pr-app[bot]
1cf8f80c71
Update CHANGELOG.md (#1823)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-01-28 15:49:00 +01:00
Michel Roegl-Brunner
97002e7047
Update pingvin.sh and pingvin-install.sh (#1819) 2025-01-28 15:46:50 +01:00
CanbiZ
d366d24dea
fix date for pocketid 2025-01-28 15:19:00 +01:00
CanbiZ
05e46a07cd
fix date & logo for monica 2025-01-28 15:18:34 +01:00
community-scripts-pr-app[bot]
af166e3346
Update CHANGELOG.md (#1816)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-01-28 15:16:48 +01:00
github-actions[bot]
8221614cab
Update .app files (#1817)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-01-28 15:14:28 +01:00
bvdberg01
b70cd00764
New script: Monica LXC (#1813)
* New script: Monica LXC

* Update monica.json
2025-01-28 15:04:52 +01:00
community-scripts-pr-app[bot]
31473b2170
Update CHANGELOG.md (#1807)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-01-28 14:35:58 +01:00
github-actions[bot]
690d6d42d4
Update .app files (#1814)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-01-28 14:35:14 +01:00
CanbiZ
3be6824844
New Script: NodeBB (#1811) 2025-01-28 14:31:20 +01:00
CanbiZ
f903cfd97a
[Standardization] Fix Spelling for "Setup Python3" (#1810) 2025-01-28 13:49:53 +01:00
Michel Roegl-Brunner
901db73d78
Update AppName.md: Make it clear where to change the URLs (#1809) 2025-01-28 13:46:41 +01:00
github-actions[bot]
67b80306a1
Update .app files (#1808)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-01-28 13:10:54 +01:00
CanbiZ
7dc446c8ac
Update auto-update-app-headers.yml 2025-01-28 13:10:03 +01:00
CanbiZ
9435b9d046
Update pocketid.json 2025-01-28 13:07:25 +01:00
Michael Casey
2b1b517f20
New Script: Pocket ID (#1779)
* Add pocket-id scripts

* replace whiptail with read

* remove git dependency

* Add missing sed

* fix indentation

* remove assert replace after source update
2025-01-28 13:04:39 +01:00
community-scripts-pr-app[bot]
7c297d3dac
Update CHANGELOG.md (#1804)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-01-28 12:55:18 +01:00
CanbiZ
dbb9b66355
Update Alpine Packages to 3.21 (#1803) 2025-01-28 12:53:41 +01:00
CanbiZ
ff06d417b5
[core]: Remove Figlet | Get Headers by Repo & Store Local (#1802)
Some checks are pending
Shellcheck / Shellcheck (push) Waiting to run
Create Changelog Pull Request / update-changelog-pull-request (push) Waiting to run
* [core]: Remove Figlet | Get Headers by Repo & Store Local

* change repo
2025-01-28 12:07:39 +01:00
connorjfarrell
b6b5748e9a
Merge branch 'community-scripts:main' into connorjfarrell/zoneminder 2025-01-27 10:26:22 -06:00
connorjfarrell
31ef2e8592
add license url 2025-01-27 10:26:04 -06:00
connorjfarrell
64861d0221
Update install/zoneminder-install.sh
Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com>
2025-01-27 10:24:13 -06:00
connorjfarrell
364ead3b56
Update ct/zoneminder.sh
Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com>
2025-01-27 10:23:53 -06:00
connorjfarrell
4e0af7f49b
Merge branch 'community-scripts:main' into connorjfarrell/zoneminder 2025-01-24 10:29:46 -06:00
connorjfarrell
2ff64bdc37
remove comments 2025-01-24 10:27:54 -06:00
connorjfarrell
17b23ba04b
clean up update function 2025-01-24 10:26:18 -06:00
connorjfarrell
691c9209dd
remove comments 2025-01-24 10:24:38 -06:00
connorjfarrell
b74d275b3e
Update zoneminder-install.sh
update header metadata
2025-01-23 20:39:22 -06:00
connorjfarrell
e8e0f10cf7
Update zoneminder.sh
Update header metadata
2025-01-23 20:38:55 -06:00
connorjfarrell
b105a16562
Merge branch 'community-scripts:main' into connorjfarrell/zoneminder 2025-01-23 20:37:55 -06:00
Connor J. Farrell
ff72a6af26 Revert "modified: misc/build.func"
This reverts commit 215b605099.
2025-01-21 22:58:03 -06:00
connorjfarrell
3a28e39cd3
Update zoneminder.sh
Change build.func ref back to public repo
2025-01-21 22:51:34 -06:00
connorjfarrell
3b4b895361
Update zoneminder-install.sh
Fix mysql crash
2025-01-21 22:01:29 -06:00
connorjfarrell
445baab1ef
Update zoneminder.sh
Remove extra bit from before reading instructions
2025-01-21 21:38:00 -06:00
connorjfarrell
2fd156686e
Update zoneminder.sh
Change build.func ref.... rtfm!
2025-01-21 21:36:05 -06:00
connorjfarrell
b7a99e6bae
Update zoneminder.sh
Fix tags
2025-01-21 21:28:26 -06:00
connorjfarrell
7691253739
Update zoneminder.json
Update categories
2025-01-21 21:25:29 -06:00
connorjfarrell
0b6fe6e5e3
Update zoneminder.sh
actually call the function
2025-01-21 21:22:52 -06:00
Connor J. Farrell
90d8ee2a38 Need to actually run zoneminder-install.sh 2025-01-21 21:19:15 -06:00
Connor J. Farrell
215b605099 modified: misc/build.func 2025-01-21 21:08:10 -06:00
Connor J. Farrell
d5c28b632b Create zoneminder-install.sh 2025-01-21 21:07:33 -06:00
Connor J. Farrell
5023b8468d create zoneminder.sh 2025-01-21 20:57:56 -06:00
Connor J. Farrell
0da98be2ef Create json file 2025-01-21 20:53:39 -06:00
51 changed files with 1153 additions and 178 deletions

View File

@ -40,8 +40,8 @@
- Import the build.func file.
- When developing your own script, change the URL to your own repository.
> [!CAUTION]
> Before opening a Pull Request, change the URL to point to the community-scripts repo.
> [!IMPORTANT]
> You also need to change all apperances of this URL in `misc/build.func` and `misc/install.func`
Example for development:
@ -55,6 +55,9 @@ Final script:
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
```
> [!CAUTION]
> Before opening a Pull Request, change the URLs to point to the community-scripts repo.
### 1.3 **Metadata**
- Add clear comments for script metadata, including author, copyright, and license information.

View File

@ -45,28 +45,26 @@ jobs:
# Step 6: Check if there are any changes
- name: Check if there are any changes
id: verify-diff
run: |
echo "Checking for changes..."
git add -A # Untracked Dateien aufnehmen
git status
if git diff --quiet; then
if git diff --cached --quiet; then
echo "No changes detected."
echo "changed=false" >> $GITHUB_OUTPUT
echo "changed=false" >> "$GITHUB_ENV"
else
echo "Changes detected:"
git diff --stat
echo "changed=true" >> $GITHUB_OUTPUT
git diff --stat --cached
echo "changed=true" >> "$GITHUB_ENV"
fi
# Step 7: Commit changes (if any) and create a PR
# Step 7: Commit and create PR if changes exist
- name: Commit and create PR if changes exist
if: steps.verify-diff.outputs.changed == 'true'
if: env.changed == 'true'
run: |
git add -A
git commit -m "Update .app files"
git checkout -b pr-update-app-files
git push origin pr-update-app-files --force
gh pr create --title "[core] update .app files" \
--body "This PR is auto-generated by a GitHub Action to update the .app files." \
--head pr-update-app-files \
@ -77,6 +75,5 @@ jobs:
# Step 8: Output success message when no changes
- name: No changes detected
if: steps.verify-diff.outputs.changed == 'false'
if: env.changed == 'false'
run: echo "No changes to commit. Workflow completed successfully."

View File

@ -17,6 +17,35 @@ All LXC instances created using this repository come pre-installed with Midnight
Do not break established syntax in this file, as it is automatically updated by a Github Workflow
## 2025-01-28
### Changed
### 💥 Breaking Changes
- Breaking Change: Homarr v1 (Read Guide) [@MickLesk](https://github.com/MickLesk) ([#1825](https://github.com/community-scripts/ProxmoxVE/pull/1825))
- Update PingVin: Fix problem with update und switch to new method of getting files. [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1819](https://github.com/community-scripts/ProxmoxVE/pull/1819))
### ✨ New Scripts
- New script: Monica LXC [@bvdberg01](https://github.com/bvdberg01) ([#1813](https://github.com/community-scripts/ProxmoxVE/pull/1813))
- New Script: NodeBB [@MickLesk](https://github.com/MickLesk) ([#1811](https://github.com/community-scripts/ProxmoxVE/pull/1811))
- New Script: Pocket ID [@Snarkenfaugister](https://github.com/Snarkenfaugister) ([#1779](https://github.com/community-scripts/ProxmoxVE/pull/1779))
### 🚀 Updated Scripts
- Update all Alpine LXC's to 3.21 (Docker, Grafana, Nextcloud, Vaultwarden, Zigbee2Mqtt, Alpine) [@MickLesk](https://github.com/MickLesk) ([#1803](https://github.com/community-scripts/ProxmoxVE/pull/1803))
- [Standardization] Fix Spelling for "Setup Python3" [@MickLesk](https://github.com/MickLesk) ([#1810](https://github.com/community-scripts/ProxmoxVE/pull/1810))
### 🌐 Website
- Filter out duplicate scripts in LatestScripts component and sort by creation date [@BramSuurdje](https://github.com/BramSuurdje) ([#1828](https://github.com/community-scripts/ProxmoxVE/pull/1828))
### 🧰 Maintenance
- [core]: Remove Figlet | Get Headers by Repo & Store Local [@MickLesk](https://github.com/MickLesk) ([#1802](https://github.com/community-scripts/ProxmoxVE/pull/1802))
- [docs] Update AppName.md: Make it clear where to change the URLs [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1809](https://github.com/community-scripts/ProxmoxVE/pull/1809))
## 2025-01-27
### Changed

View File

@ -11,7 +11,7 @@ var_cpu="1"
var_ram="1024"
var_disk="2"
var_os="alpine"
var_version="3.20"
var_version="3.21"
var_unprivileged="1"
# App Output & Base Settings

View File

@ -11,7 +11,7 @@ var_cpu="1"
var_ram="256"
var_disk="1"
var_os="alpine"
var_version="3.20"
var_version="3.21"
var_unprivileged="1"
# App Output & Base Settings

View File

@ -11,7 +11,7 @@ var_cpu="2"
var_ram="1024"
var_disk="2"
var_os="alpine"
var_version="3.20"
var_version="3.21"
var_unprivileged="1"
# App Output & Base Settings

View File

@ -11,7 +11,7 @@ var_cpu="1"
var_ram="256"
var_disk="0.5"
var_os="alpine"
var_version="3.20"
var_version="3.21"
var_unprivileged="1"
# App Output & Base Settings

View File

@ -11,7 +11,7 @@ var_disk="0.3"
var_cpu="1"
var_ram="256"
var_os="alpine"
var_version="3.20"
var_version="3.21"
var_unprivileged="0"
# App Output & Base Settings

View File

@ -11,7 +11,7 @@ var_cpu="1"
var_ram="512"
var_disk="0.1"
var_os="alpine"
var_version="3.20"
var_version="3.21"
var_unprivileged="1"
# App Output & Base Settings

6
ct/headers/monica Normal file
View File

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

6
ct/headers/nodebb Normal file
View File

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

6
ct/headers/pocketid Normal file
View File

@ -0,0 +1,6 @@
____ __ __ ________
/ __ \____ _____/ /_____ / /_/ _/ __ \
/ /_/ / __ \/ ___/ //_/ _ \/ __// // / / /
/ ____/ /_/ / /__/ ,< / __/ /__/ // /_/ /
/_/ \____/\___/_/|_|\___/\__/___/_____/

View File

@ -32,46 +32,47 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
RELEASE=$(curl -s https://api.github.com/repos/ajnart/homarr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ -f /opt/homarr/database/db.sqlite ]]; then
msg_error "Old Homarr detected due to existing database file (/opt/homarr/database/db.sqlite)."
msg_error "Update not supported. Refer to:"
msg_error " - https://github.com/community-scripts/ProxmoxVE/discussions/1551"
msg_error " - https://homarr.dev/docs/getting-started/after-the-installation/#importing-a-zip-from-version-before-100"
exit 1
fi
RELEASE=$(curl -s https://api.github.com/repos/homarr-labs/homarr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
msg_info "Stopping Services"
systemctl stop homarr
msg_ok "Services Stopped"
msg_info "Backing up Data"
msg_info "Backup Data"
mkdir -p /opt/homarr-data-backup
cp /opt/homarr/.env /opt/homarr-data-backup/.env
cp /opt/homarr/database/db.sqlite /opt/homarr-data-backup/db.sqlite
cp -r /opt/homarr/data/configs /opt/homarr-data-backup/configs
msg_ok "Backed up Data"
msg_ok "Backup Data"
msg_info "Updating ${APP} to ${RELEASE}"
wget -q "https://github.com/ajnart/homarr/archive/refs/tags/v${RELEASE}.zip"
msg_info "Updating ${APP} to v${RELEASE}"
wget -q "https://github.com/homarr-labs/homarr/archive/refs/tags/v${RELEASE}.zip"
unzip -q v${RELEASE}.zip
rm -rf v${RELEASE}.zip
rm -rf /opt/homarr
mv homarr-${RELEASE} /opt/homarr
mv /opt/homarr-data-backup/.env /opt/homarr/.env
cd /opt/homarr
yarn install &>/dev/null
yarn build &>/dev/null
pnpm install &>/dev/null
pnpm run db:migration:sqlite:run &>/dev/null
pnpm build &>/dev/null
mkdir build
cp ./node_modules/better-sqlite3/build/Release/better_sqlite3.node ./build/better_sqlite3.node
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP}"
msg_info "Restoring Data"
rm -rf /opt/homarr/data/configs
mv /opt/homarr-data-backup/configs /opt/homarr/data/configs
mv /opt/homarr-data-backup/db.sqlite /opt/homarr/database/db.sqlite
yarn db:migrate &>/dev/null
rm -rf /opt/homarr-data-backup
msg_ok "Restored Data"
msg_info "Starting Services"
systemctl start homarr
msg_ok "Started Services"
msg_ok "Updated Successfully"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
msg_ok "No update required. ${APP} is already at v${RELEASE}"
fi
exit
}

81
ct/monica.sh Normal file
View File

@ -0,0 +1,81 @@
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: bvdberg01
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://www.monicahq.com/
# App Default Values
APP="Monica"
var_tags="network"
var_cpu="2"
var_ram="2048"
var_disk="8"
var_os="debian"
var_version="12"
var_unprivileged="1"
# App Output & Base Settings
header_info "$APP"
base_settings
# Core
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/monica ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
RELEASE=$(curl -s https://api.github.com/repos/monicahq/monica/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
msg_info "Stopping Service"
systemctl stop apache2
msg_ok "Stopped Service"
msg_info "Updating ${APP} to v${RELEASE}"
cd /opt
mv /opt/monica/ /opt/monica-backup
wget -q "https://github.com/monicahq/monica/releases/download/v${RELEASE}/monica-v${RELEASE}.tar.bz2"
tar -xjf "monica-v${RELEASE}.tar.bz2"
mv "/opt/monica-v${RELEASE}" /opt/monica
cd /opt/monica/
cp -r /opt/monica-backup/.env /opt/monica
cp -r /opt/monica-backup/storage/* /opt/monica/storage/
composer install --no-interaction --no-dev &>/dev/null
yarn install &>/dev/null
yarn run production &>/dev/null
php artisan monica:update --force &>/dev/null
chown -R www-data:www-data /opt/monica
chmod -R 775 /opt/monica/storage
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to v${RELEASE}"
msg_info "Starting Service"
systemctl start apache2
msg_ok "Started Service"
msg_info "Cleaning up"
rm -r "/opt/monica-v${RELEASE}.tar.bz2"
rm -r /opt/monica-backup
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}"

63
ct/nodebb.sh Normal file
View File

@ -0,0 +1,63 @@
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: MickLesk (Canbiz)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# App Default Values
APP="NodeBB"
var_tags="forum"
var_disk="10"
var_cpu="4"
var_ram="2048"
var_os="ubuntu"
var_version="24.04"
var_unprivileged="1"
# App Output & Base Settings
header_info "$APP"
# Core
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/nodebb ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
RELEASE=$(curl -s https://api.github.com/repos/NodeBB/NodeBB/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
msg_info "Stopping ${APP}"
systemctl stop nodebb
msg_ok "Stopped ${APP}"
msg_info "Updating ${APP} to v${RELEASE}"
cd /opt/nodebb
./nodebb upgrade >/dev/null 2>&1
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP} to v${RELEASE}"
msg_info "Starting ${APP}"
systemctl start nodebb
msg_ok "Started ${APP}"
msg_ok "Updated Successfully"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}."
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:4567${CL}"

View File

@ -32,21 +32,29 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
RELEASE=$(curl -s https://api.github.com/repos/stonith404/pingvin-share/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/$pingvin_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/pingvin_version.txt)" ]]; then
msg_info "Stopping Pingvin Share"
systemctl stop pm2-root.service
msg_ok "Stopped Pingvin Share"
msg_info "Updating Pingvin Share"
msg_info "Updating Pingvin Share to v${RELEASE}"
cd /opt
wget -q "https://github.com/stonith404/pingvin-share/archive/refs/tags/v${RELEASE}.zip"
unzip -q v${RELEASE}.zip
mv pingvin-share-${RELEASE} /opt/pingvin-share
cd /opt/pingvin-share
git fetch --tags
git checkout $(git describe --tags $(git rev-list --tags --max-count=1)) &>/dev/null
cd backend
npm install &>/dev/null
npm run build &>/dev/null
cd ../frontend
npm install &>/dev/null
npm run build &>/dev/null
msg_ok "Updated Pingvin Share"
echo "${RELEASE}" >"/opt/pingvin_version.txt"
rm -rf /opt/v${RELEASE}.zip
msg_ok "Updated Pingvin Share to v${RELEASE}"
msg_info "Starting Pingvin Share"
systemctl start pm2-root.service
@ -54,8 +62,12 @@ function update_script() {
msg_ok "Updated Successfully"
exit
else
msg_ok "No update required. Pingvin Share is already at v${RELEASE}."
fi
}
start
build_container
description

95
ct/pocketid.sh Executable file
View File

@ -0,0 +1,95 @@
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: Snarkenfaugister
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/stonith404/pocket-id
# App Default Values
APP="PocketID"
TAGS="identity-provider"
var_cpu="2"
var_ram="2048"
var_disk="4"
var_os="debian"
var_version="12"
var_unprivileged="1"
# App Output & Base Settings
header_info "$APP"
base_settings
# Core
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/pocket-id ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
RELEASE=$(curl -fsSL https://api.github.com/repos/stonith404/pocket-id/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
msg_info "Updating $APP"
msg_info "Stopping $APP"
systemctl stop pocketid-backend.service
systemctl stop pocketid-frontend.service
systemctl stop caddy.service
msg_ok "Stopped $APP"
msg_info "Updating $APP to v${RELEASE}"
cd /opt
cp -r /opt/pocket-id/backend/data /opt/data
cp /opt/pocket-id/backend/.env /opt/backend.env
cp /opt/pocket-id/frontend/.env /opt/frontend.env
rm -r /opt/pocket-id
wget -q "https://github.com/stonith404/pocket-id/archive/refs/tags/v${RELEASE}.zip"
unzip -q v${RELEASE}.zip
mv pocket-id-${RELEASE} /opt/pocket-id
mv /opt/data /opt/pocket-id/backend/data
mv /opt/backend.env /opt/pocket-id/backend/.env
mv /opt/frontend.env /opt/pocket-id/frontend/.env
cd /opt/pocket-id/backend/cmd
go build -o ../pocket-id-backend
cd ../../frontend
npm install
npm run build
msg_ok "Updated $APP to ${RELEASE}"
msg_info "Starting $APP"
systemctl start pocketid-backend.service
systemctl start pocketid-frontend.service
systemctl start caddy.service
sleep 2
msg_ok "Started $APP"
# Cleaning up
msg_info "Cleaning Up"
rm -f /opt/v${RELEASE}.zip
msg_ok "Cleanup Completed"
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Update Successful"
else
msg_ok "No update required. ${APP} is already at ${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} Configure your reverse proxy to point to:${BGN} ${IP}:80${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}https://{PUBLIC_URL}/login/setup${CL}"

60
ct/zoneminder.sh Normal file
View File

@ -0,0 +1,60 @@
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2024 community-scripts ORG
# Author: connorjfarrell
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://zoneminder.readthedocs.io
APP="ZoneMinder"
var_tags="nvr"
var_cpu="2"
var_ram="2048"
var_disk="16"
var_os="ubuntu"
var_version="22.04"
var_unprivileged="1"
header_info "$APP"
base_settings
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -f /usr/bin/zmpkg.pl ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
RELEASE=$(curl -fsSL https://api.github.com/repos/ZoneMinder/zoneminder/releases/latest | grep -Po '"tag_name": "\K.*?(?=")')
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt 2>/dev/null || echo 'none')" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
msg_info "Updating to v${RELEASE}"
systemctl stop zoneminder
apt-get update && apt-get install --only-upgrade zoneminder -y
systemctl start zoneminder
sleep 2
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Update Successful"
else
msg_ok "${APP} is already 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}:80/zm${CL}"

View File

@ -35,8 +35,18 @@ export function LatestScripts({ items }: { items: Category[] }) {
const latestScripts = useMemo(() => {
if (!items) return [];
const scripts = items.flatMap((category) => category.scripts || []);
return scripts.sort(
// Filter out duplicates by slug
const uniqueScriptsMap = new Map<string, Script>();
scripts.forEach((script) => {
if (!uniqueScriptsMap.has(script.slug)) {
uniqueScriptsMap.set(script.slug, script);
}
});
return Array.from(uniqueScriptsMap.values()).sort(
(a, b) =>
new Date(b.date_created).getTime() - new Date(a.date_created).getTime(),
);

View File

@ -19,13 +19,13 @@ $STD apt-get install -y sudo
$STD apt-get install -y mc
msg_ok "Installed Dependencies"
msg_info "Updating Python3"
msg_info "Setup Python3"
$STD apt-get install -y \
python3 \
python3-dev \
python3-pip
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
msg_ok "Updated Python3"
msg_ok "Setup Python3"
msg_info "Installing Bazarr"
mkdir -p /var/lib/bazarr/

View File

@ -47,13 +47,13 @@ $STD apt-get install -y \
gnupg
msg_ok "Installed Dependencies"
msg_info "Updating Python3"
msg_info "Setup Python3"
$STD apt-get install -y \
python3 \
python3-dev \
python3-pip
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
msg_ok "Updated Python3"
msg_ok "Setup Python3"
msg_info "Setting up Node.js Repository"
mkdir -p /etc/apt/keyrings

View File

@ -20,13 +20,13 @@ $STD apt-get install -y mc
$STD apt-get install -y python3-libtorrent
msg_ok "Installed Dependencies"
msg_info "Updating Python3"
msg_info "Setup Python3"
$STD apt-get install -y \
python3 \
python3-dev \
python3-pip
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
msg_ok "Updated Python3"
msg_ok "Setup Python3"
msg_info "Installing Deluge"
$STD pip install deluge[all]

View File

@ -20,14 +20,14 @@ $STD apt-get install -y mc
$STD apt-get install -y git
msg_ok "Installed Dependencies"
msg_info "Updating Python3"
msg_info "Setup Python3"
$STD apt-get install -y \
python3 \
python3-dev \
python3-pip \
python3-venv
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
msg_ok "Updated Python3"
msg_ok "Setup Python3"
msg_info "Installing ESPHome"
mkdir /root/config

View File

@ -18,10 +18,10 @@ msg_info "Installing Dependencies (Patience)"
$STD apt-get install -y {curl,sudo,mc,git,gpg,ca-certificates,automake,build-essential,xz-utils,libtool,ccache,pkg-config,libgtk-3-dev,libavcodec-dev,libavformat-dev,libswscale-dev,libv4l-dev,libxvidcore-dev,libx264-dev,libjpeg-dev,libpng-dev,libtiff-dev,gfortran,openexr,libatlas-base-dev,libssl-dev,libtbb2,libtbb-dev,libdc1394-22-dev,libopenexr-dev,libgstreamer-plugins-base1.0-dev,libgstreamer1.0-dev,gcc,gfortran,libopenblas-dev,liblapack-dev,libusb-1.0-0-dev,jq,moreutils}
msg_ok "Installed Dependencies"
msg_info "Installing Python3 Dependencies"
msg_info "Setup Python3"
$STD apt-get install -y {python3,python3-dev,python3-setuptools,python3-distutils,python3-pip}
$STD pip install --upgrade pip
msg_ok "Installed Python3 Dependencies"
msg_ok "Setup Python3"
msg_info "Installing Node.js"
mkdir -p /etc/apt/keyrings

View File

@ -1,10 +1,8 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 tteck
# Author: tteck (tteckster)
# Co-Author: MickLesk (Canbiz)
# License: MIT
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# 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/ajnart/homarr
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
@ -20,6 +18,7 @@ $STD apt-get install -y \
sudo \
mc \
curl \
redis-server \
ca-certificates \
gnupg \
make \
@ -30,32 +29,40 @@ msg_ok "Installed Dependencies"
msg_info "Setting up Node.js Repository"
mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
msg_ok "Set up Node.js Repository"
msg_info "Installing Node.js/Yarn"
msg_info "Installing Node.js/pnpm"
$STD apt-get update
$STD apt-get install -y nodejs
$STD npm install -g yarn
msg_ok "Installed Node.js/Yarn"
$STD npm install -g pnpm@latest
msg_ok "Installed Node.js/pnpm"
msg_info "Installing Homarr (Patience)"
RELEASE=$(curl -s https://api.github.com/repos/ajnart/homarr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
wget -q "https://github.com/ajnart/homarr/archive/refs/tags/v${RELEASE}.zip"
cd /opt
RELEASE=$(curl -s https://api.github.com/repos/homarr-labs/homarr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
wget -q "https://github.com/homarr-labs/homarr/archive/refs/tags/v${RELEASE}.zip"
unzip -q v${RELEASE}.zip
rm -rf v${RELEASE}.zip
mv homarr-${RELEASE} /opt/homarr
mkdir -p /opt/homarr_db
touch /opt/homarr_db/db.sqlite
AUTH_SECRET="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)"
SECRET_ENCRYPTION_KEY="$(openssl rand -hex 32)"
cat <<EOF >/opt/homarr/.env
DATABASE_URL="file:./database/db.sqlite"
NEXTAUTH_URL="http://localhost:3000"
NEXTAUTH_SECRET="$(openssl rand -base64 32)"
NEXT_PUBLIC_DISABLE_ANALYTICS="true"
DEFAULT_COLOR_SCHEME="dark"
AUTH_SECRET='${AUTH_SECRET}'
DB_DRIVER='better-sqlite3'
SECRET_ENCRYPTION_KEY='${SECRET_ENCRYPTION_KEY}'
DB_URL='/opt/homarr_db/db.sqlite'
TURBO_TELEMETRY_DISABLED=1
EOF
cd /opt/homarr
$STD yarn install
$STD yarn build
$STD yarn db:migrate
$STD pnpm install
$STD pnpm run db:migration:sqlite:run
$STD pnpm build
mkdir build
cp ./node_modules/better-sqlite3/build/Release/better_sqlite3.node ./build/better_sqlite3.node
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
msg_ok "Installed Homarr"
@ -69,18 +76,19 @@ After=network.target
Type=exec
WorkingDirectory=/opt/homarr
EnvironmentFile=-/opt/homarr/.env
ExecStart=/usr/bin/yarn start
ExecStart=/usr/bin/pnpm start
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now homarr.service
systemctl enable -q --now homarr
msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
rm -rf /opt/v${RELEASE}.zip
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@ -49,7 +49,7 @@ $STD apt-get install -y \
pkg-config
msg_ok "Installed Dependencies"
msg_info "Setup Python3/pip"
msg_info "Setup Python3"
$STD apt-get update
$STD rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
$STD apt-get remove --purge -y python3.12 python3.12-dev python3.12-venv

View File

@ -19,14 +19,14 @@ $STD apt-get install -y sudo
$STD apt-get install -y mc
msg_ok "Installed Dependencies"
msg_info "Updating Python3"
msg_info "Setup Python3"
$STD apt-get install -y \
python3 \
python3-dev \
python3-pip \
python3-venv
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
msg_ok "Updated Python3"
msg_ok "Setup Python3"
msg_info "Installing runlike"
$STD pip install runlike

104
install/monica-install.sh Normal file
View File

@ -0,0 +1,104 @@
#!/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 /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 \
curl \
sudo \
mc \
gnupg2\
mariadb-server \
apache2 \
libapache2-mod-php \
php-{bcmath,curl,dom,gd,gmp,iconv,intl,json,mbstring,mysqli,opcache,pdo-mysql,redis,tokenizer,xml,zip} \
composer
msg_ok "Installed Dependencies"
msg_info "Setting up MariaDB"
DB_NAME=monica
DB_USER=monica
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
$STD mysql -u root -e "CREATE DATABASE $DB_NAME;"
$STD mysql -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED WITH mysql_native_password AS PASSWORD('$DB_PASS');"
$STD mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
{
echo "monica-Credentials"
echo "monica Database User: $DB_USER"
echo "monica Database Password: $DB_PASS"
echo "monica Database Name: $DB_NAME"
} >> ~/monica.creds
msg_ok "Set up MariaDB"
msg_info "Setting up Node.js/Yarn"
mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
$STD apt-get update
$STD apt-get install -y nodejs
$STD npm install -g npm@latest
$STD npm install -g yarn
msg_ok "Installed Node.js/Yarn"
msg_info "Installing monica"
RELEASE=$(curl -s https://api.github.com/repos/monicahq/monica/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
cd /opt
wget -q "https://github.com/monicahq/monica/releases/download/v${RELEASE}/monica-v${RELEASE}.tar.bz2"
tar -xjf "monica-v${RELEASE}.tar.bz2"
mv "/opt/monica-v${RELEASE}" /opt/monica
cd /opt/monica
cp /opt/monica/.env.example /opt/monica/.env
HASH_SALT=$(openssl rand -base64 32)
sed -i -e "s|^DB_USERNAME=.*|DB_USERNAME=${DB_USER}|" \
-e "s|^DB_PASSWORD=.*|DB_PASSWORD=${DB_PASS}|" \
-e "s|^HASH_SALT=.*|HASH_SALT=${HASH_SALT}|" \
/opt/monica/.env
$STD composer install --no-dev -o --no-interaction
$STD yarn install
$STD yarn run production
$STD php artisan key:generate
$STD php artisan setup:production --email=admin@helper-scripts.com --password=helper-scripts.com --force
chown -R www-data:www-data /opt/monica
chmod -R 775 /opt/monica/storage
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
msg_ok "Installed monica"
msg_info "Creating Service"
cat <<EOF >/etc/apache2/sites-available/monica.conf
<VirtualHost *:80>
ServerName monica
DocumentRoot /opt/monica/public
<Directory /opt/monica/public>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/apache2/monica_error.log
CustomLog /var/log/apache2/monica_access.log combined
</VirtualHost>
EOF
$STD a2ensite monica
$STD a2enmod rewrite
$STD a2dissite 000-default.conf
$STD systemctl reload apache2
msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
rm -rf "/opt/monica-v${RELEASE}.tar.bz2"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@ -21,13 +21,13 @@ $STD apt-get install -y git
$STD apt-get install -y cifs-utils
msg_ok "Installed Dependencies"
msg_info "Updating Python3"
msg_info "Setup Python3"
$STD apt-get install -y \
python3 \
python3-dev \
python3-pip
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
msg_ok "Updated Python3"
msg_ok "Setup Python3"
msg_info "Installing Motion"
$STD apt-get install -y motion

View File

@ -26,11 +26,11 @@ $STD apt-get install -y unrar
rm /etc/apt/sources.list.d/non-free.list
msg_ok "Installed Dependencies"
msg_info "Updating Python3"
msg_info "Setup Python3"
$STD apt-get install -y python3-pip
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
$STD pip install -U --no-cache-dir pip
msg_ok "Updated Python3"
msg_ok "Setup Python3"
msg_info "Installing ${APPLICATION}"
mkdir -p /opt/mylar3

164
install/nodebb-install.sh Normal file
View File

@ -0,0 +1,164 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2024 tteck
# Author: MickLesk (Canbiz)
# License: MIT | https://github.com/tteck/Proxmox/raw/main/LICENSE
# Source: https://github.com/NodeBB/NodeBB
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies (Patience)"
$STD apt-get install -y \
build-essential \
curl \
sudo \
make \
redis-server \
expect \
gnupg \
ca-certificates \
mc
msg_ok "Installed Dependencies"
msg_info "Setting up Node.js & MongoDB Repository"
mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | gpg --dearmor -o /etc/apt/keyrings/mongodb-server-8.0.gpg
echo "deb [arch=amd64,arm64 signed-by=/etc/apt/keyrings/mongodb-server-8.0.gpg] https://repo.mongodb.org/apt/ubuntu noble/mongodb-org/8.0 multiverse" > /etc/apt/sources.list.d/mongodb-org-8.0.list
$STD apt-get update
msg_ok "Set up Repositories"
msg_info "Installing Node.js"
$STD apt-get install -y nodejs
msg_ok "Installed Node.js"
msg_info "Installing MongoDB"
$STD apt-get install -y mongodb-org
systemctl enable -q --now mongod
sleep 10 # MongoDB needs some secounds to start, if not sleep it collide with following mongosh
msg_ok "Installed MongoDB"
msg_info "Configure MongoDB"
MONGO_ADMIN_USER="admin"
MONGO_ADMIN_PWD="$(openssl rand -base64 18 | cut -c1-13)"
NODEBB_USER="nodebb"
NODEBB_PWD="$(openssl rand -base64 18 | cut -c1-13)"
MONGO_CONNECTION_STRING="mongodb://${NODEBB_USER}:${NODEBB_PWD}@localhost:27017/nodebb"
NODEBB_SECRET=$(uuidgen)
{
echo "NodeBB-Credentials"
echo "Mongo Database User: $MONGO_ADMIN_USER"
echo "Mongo Database Password: $MONGO_ADMIN_PWD"
echo "NodeBB User: $NODEBB_USER"
echo "NodeBB Password: $NODEBB_PWD"
echo "NodeBB Secret: $NODEBB_SECRET"
} >> ~/nodebb.creds
$STD mongosh <<EOF
use admin
db.createUser({
user: "$MONGO_ADMIN_USER",
pwd: "$MONGO_ADMIN_PWD",
roles: [{ role: "root", db: "admin" }]
})
use nodebb
db.createUser({
user: "$NODEBB_USER",
pwd: "$NODEBB_PWD",
roles: [
{ role: "readWrite", db: "nodebb" },
{ role: "clusterMonitor", db: "admin" }
]
})
quit()
EOF
sed -i 's/bindIp: 127.0.0.1/bindIp: 0.0.0.0/' /etc/mongod.conf
sed -i '/security:/d' /etc/mongod.conf
bash -c 'echo -e "\nsecurity:\n authorization: enabled" >> /etc/mongod.conf'
systemctl restart mongod
msg_ok "MongoDB successfully configurated"
msg_info "Install NodeBB"
cd /opt
RELEASE=$(curl -s https://api.github.com/repos/NodeBB/NodeBB/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
wget -q "https://github.com/NodeBB/NodeBB/archive/refs/tags/v${RELEASE}.zip"
unzip -q v${RELEASE}.zip
mv NodeBB-${RELEASE} /opt/nodebb
cd /opt/nodebb
touch pidfile
expect <<EOF > /dev/null 2>&1
log_file /dev/null
set timeout -1
spawn ./nodebb setup
expect "URL used to access this NodeBB" {
send "http://localhost:4567\r"
}
expect "Please enter a NodeBB secret" {
send "$NODEBB_SECRET\r"
}
expect "Would you like to submit anonymous plugin usage to nbbpm? (yes)" {
send "no\r"
}
expect "Which database to use (mongo)" {
send "mongo\r"
}
expect "Format: mongodb://*" {
send "$MONGO_CONNECTION_STRING\r"
}
expect "Administrator username" {
send "helper-scripts\r"
}
expect "Administrator email address" {
send "helper-scripts@local.com\r"
}
expect "Password" {
send "helper-scripts\r"
}
expect "Confirm Password" {
send "helper-scripts\r"
}
expect eof
EOF
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
msg_ok "Installed NodeBB"
msg_info "Creating Services"
cat <<EOF >/etc/systemd/system/nodebb.service
[Unit]
Description=NodeBB
Documentation=https://docs.nodebb.org
After=system.slice multi-user.target mongod.service
[Service]
Type=forking
User=root
WorkingDirectory=/opt/nodebb
PIDFile=/opt/nodebb/pidfile
ExecStart=/usr/bin/node /opt/nodebb/loader.js
Restart=always
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now nodebb
msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
rm -R /opt/v${RELEASE}.zip
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@ -22,7 +22,7 @@ $STD apt-get install -y libyaml-dev
$STD apt-get install -y build-essential
msg_ok "Installed Dependencies"
msg_info "Updating Python3"
msg_info "Setup Python3"
$STD apt-get install -y \
python3 \
python3-dev \
@ -31,7 +31,7 @@ $STD apt-get install -y \
$STD apt-get install -y python3-setuptools
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
msg_ok "Updated Python3"
msg_ok "Setup Python3"
msg_info "Creating user octoprint"
useradd -m -s /bin/bash -p $(openssl passwd -1 octoprint) octoprint

View File

@ -2,6 +2,7 @@
# Copyright (c) 2021-2025 tteck
# Author: tteck (tteckster)
# Co-Author: michelroegl-brunner
# License: MIT
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
@ -14,11 +15,12 @@ network_check
update_os
msg_info "Installing Dependencies"
$STD apt-get install -y curl
$STD apt-get install -y sudo
$STD apt-get install -y mc
$STD apt-get install -y git
$STD apt-get install -y gnupg
$STD apt-get install -y \
curl \
sudo \
mc \
git \
gnupg
msg_ok "Installed Dependencies"
msg_info "Setting up Node.js Repository"
@ -34,11 +36,14 @@ $STD npm install pm2 -g
msg_ok "Installed Node.js"
msg_info "Installing Pingvin Share (Patience)"
git clone -q https://github.com/stonith404/pingvin-share /opt/pingvin-share
cd /opt/pingvin-share
$STD git fetch --tags
$STD git checkout $(git describe --tags `git rev-list --tags --max-count=1`)
cd backend
cd /opt
RELEASE=$(curl -s https://api.github.com/repos/stonith404/pingvin-share/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
wget -q "https://github.com/stonith404/pingvin-share/archive/refs/tags/v${RELEASE}.zip"
unzip -q v${RELEASE}.zip
echo "${RELEASE}" >"/opt/pingvin_version.txt"
mv pingvin-share-${RELEASE} /opt/pingvin-share
cd /opt/pingvin-share/backend
$STD npm install
$STD npm run build
$STD pm2 start --name="pingvin-share-backend" npm -- run prod
@ -57,6 +62,7 @@ motd_ssh
customize
msg_info "Cleaning up"
rm -rf /opt/v${RELEASE}.zip
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

130
install/pocketid-install.sh Normal file
View File

@ -0,0 +1,130 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: Snarkenfaugister
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/stonith404/pocket-id
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 \
curl \
sudo \
mc \
gpg \
caddy \
gcc
msg_ok "Installed Dependencies"
msg_info "Setting up Node.js Repository"
mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
msg_ok "Set up Node.js Repository"
msg_info "Installing Node.js"
$STD apt-get update
$STD apt-get install -y nodejs
msg_ok "Installed Node.js"
msg_info "Installing Golang"
cd /tmp
set +o pipefail
GO_RELEASE=$(curl -s https://go.dev/dl/ | grep -o -m 1 "go.*\linux-amd64.tar.gz")
wget -q https://golang.org/dl/${GO_RELEASE}
tar -xzf ${GO_RELEASE} -C /usr/local
ln -s /usr/local/go/bin/go /usr/bin/go
set -o pipefail
msg_ok "Installed Golang"
read -r -p "What public URL do you want to use (e.g. pocketid.mydomain.com)? " public_url
msg_info "Setup Pocket ID"
cd /opt
RELEASE=$(curl -s https://api.github.com/repos/stonith404/pocket-id/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
wget -q "https://github.com/stonith404/pocket-id/archive/refs/tags/v${RELEASE}.zip"
unzip -q v${RELEASE}.zip
mv pocket-id-${RELEASE}/ /opt/pocket-id
cd /opt/pocket-id/backend
cp .env.example .env
sed -i "s/PUBLIC_APP_URL=http:\/\/localhost/PUBLIC_APP_URL=https:\/\/${public_url}/" .env
cd cmd
CGO_ENABLED=1
GOOS=linux
$STD go build -o ../pocket-id-backend
cd ../../frontend
cp .env.example .env
sed -i "s/PUBLIC_APP_URL=http:\/\/localhost/PUBLIC_APP_URL=https:\/\/${public_url}/" .env
$STD npm install
$STD npm run build
cd ..
cp reverse-proxy/Caddyfile /etc/caddy/Caddyfile
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
msg_ok "Setup Pocket ID"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/pocketid-backend.service
[Unit]
Description=Pocket ID Backend
After=network.target
[Service]
Type=simple
User=root
Group=root
WorkingDirectory=/opt/pocket-id/backend
EnvironmentFile=/opt/pocket-id/backend/.env
ExecStart=/opt/pocket-id/backend/pocket-id-backend
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
cat <<EOF >/etc/systemd/system/pocketid-frontend.service
[Unit]
Description=Pocket ID Frontend
After=network.target
[Service]
Type=simple
User=root
Group=root
WorkingDirectory=/opt/pocket-id/frontend
EnvironmentFile=/opt/pocket-id/frontend/.env
ExecStart=/usr/bin/node build/index.js
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
msg_ok "Created Service"
msg_info "Starting Services"
systemctl enable -q --now pocketid-backend
systemctl enable -q --now pocketid-frontend
systemctl restart caddy
msg_ok "Started Services"
motd_ssh
customize
msg_info "Cleaning up"
rm -f /opt/v${RELEASE}.zip
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"
motd_ssh
customize

View File

@ -27,13 +27,13 @@ $STD apt-get install -y unrar
rm /etc/apt/sources.list.d/non-free.list
msg_ok "Installed Dependencies"
msg_info "Updating Python3"
msg_info "Setup Python3"
$STD apt-get install -y \
python3-dev \
python3-pip
$STD apt-get install -y python3-setuptools
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
msg_ok "Updated Python3"
msg_ok "Setup Python3"
msg_info "Installing SABnzbd"
RELEASE=$(curl -s https://api.github.com/repos/sabnzbd/sabnzbd/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')

View File

@ -32,14 +32,14 @@ $STD apt-get install -y --no-install-recommends \
mc
msg_ok "Installed Dependencies"
msg_info "Updating Python3"
msg_info "Setup Python3"
$STD apt-get install -y \
python3 \
python3-dev \
python3-setuptools \
python3-pip
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
msg_ok "Updated Python3"
msg_ok "Setup Python3"
msg_info "Setting up Node.js Repository"
mkdir -p /etc/apt/keyrings

View File

@ -21,13 +21,13 @@ $STD apt-get install -y git
$STD apt-get install -y pip
msg_ok "Installed Dependencies"
msg_info "Updating Python3"
msg_info "Setup Python3"
$STD apt-get install -y \
python3 \
python3-dev \
python3-pip
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
msg_ok "Updated Python3"
msg_ok "Setup Python3"
msg_info "Installing Tautulli"
cd /opt

View File

@ -19,13 +19,13 @@ $STD apt-get install -y sudo
$STD apt-get install -y mc
msg_ok "Installed Dependencies"
msg_info "Updating Python3"
msg_info "Setup Python3"
$STD apt-get install -y \
python3 \
python3-dev \
python3-pip
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
msg_ok "Updated Python3"
msg_ok "Setup Python3"
msg_info "Installing Whoogle"
$STD pip install brotli

View File

@ -0,0 +1,67 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2024 community-scripts ORG
# Author: connorjfarrell
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://zoneminder.readthedocs.io
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 \
curl \
sudo \
mc \
apache2 \
mariadb-server \
libapache2-mod-php
msg_ok "Installed Dependencies"
msg_info "Pre-seeding dbconfig-common for ZoneMinder"
ROOT_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
ZMPASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
export DEBIAN_FRONTEND=noninteractive
echo "zoneminder zoneminder/dbconfig-install boolean true" | debconf-set-selections
echo "zoneminder zoneminder/dbconfig-reinstall boolean false" | debconf-set-selections
echo "zoneminder zoneminder/mysql/admin-user string root" | debconf-set-selections
echo "zoneminder zoneminder/mysql/admin-pass password $ROOT_PASS" | debconf-set-selections
echo "zoneminder zoneminder/mysql/app-pass password $ZMPASS" | debconf-set-selections
echo "zoneminder zoneminder/app-password-confirm password $ZMPASS"| debconf-set-selections
{
echo "ZoneMinder Database Credentials"
echo "MySQL Root Password: $ROOT_PASS"
echo "ZoneMinder DB User: zmuser"
echo "ZoneMinder DB Pass: $ZMPASS"
echo "ZoneMinder DB Name: zm"
} >> ~/zoneminder.creds
msg_ok "dbconfig pre-seeding complete"
msg_info "Enabling ZoneMinder PPA and installing ZoneMinder"
$STD apt install -y software-properties-common
$STD add-apt-repository ppa:iconnor/zoneminder-1.36 -y
$STD apt update
$STD apt-get install -y zoneminder
msg_ok "ZoneMinder installed"
msg_info "Configuring Apache and ZoneMinder"
a2enmod rewrite
a2enconf zoneminder
systemctl restart apache2
systemctl enable zoneminder
systemctl start zoneminder
msg_ok "Apache and ZoneMinder configured and running"
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@ -22,7 +22,7 @@
"ram": 512,
"hdd": 0.1,
"os": "alpine",
"version": "3.19"
"version": "3.21"
}
}
],

View File

@ -33,7 +33,7 @@
"ram": 1024,
"hdd": 2,
"os": "alpine",
"version": "3.19"
"version": "3.21"
}
}
],

View File

@ -33,7 +33,7 @@
"ram": 256,
"hdd": 1,
"os": "alpine",
"version": "3.19"
"version": "3.21"
}
}
],

View File

@ -4,7 +4,7 @@
"categories": [
10
],
"date_created": "2024-05-02",
"date_created": "2025-01-28",
"type": "ct",
"updateable": true,
"privileged": false,

34
json/monica.json Normal file
View File

@ -0,0 +1,34 @@
{
"name": "Monica",
"slug": "monica",
"categories": [
24
],
"date_created": "2025-01-28",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 80,
"documentation": "https://github.com/monicahq/monica/tree/4.x/docs",
"website": "https://www.monicahq.com/",
"logo": "https://raw.githubusercontent.com/monicahq/monica/0400350b4f9bf02300b030b9924b66ef2960b188/public/img/favicon.svg",
"description": "Monica is an open-source personal CRM designed to help you manage and strengthen your relationships. It allows you to store important details about your contacts, track interactions, set reminders for special dates, and log activities—all in one secure, private place. Perfect for busy individuals, Monica helps you stay organized, remember meaningful moments, and nurture your connections without ads or data mining. Install it on your own server for full control!",
"install_methods": [
{
"type": "default",
"script": "ct/monica.sh",
"resources": {
"cpu": 2,
"ram": 2048,
"hdd": 8,
"os": "debian",
"version": "12"
}
}
],
"default_credentials": {
"username": "admin@helper-scripts.com",
"password": "helper-scripts.com"
},
"notes": []
}

View File

@ -33,7 +33,7 @@
"ram": 1024,
"hdd": 2,
"os": "alpine",
"version": "3.19"
"version": "3.21"
}
}
],

40
json/nodebb.json Normal file
View File

@ -0,0 +1,40 @@
{
"name": "NodeBB",
"slug": "nodebb",
"categories": [
10,
25
],
"date_created": "2025-01-28",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 4567,
"documentation": "https://docs.nodebb.org/",
"website": "https://nodebb.org/",
"logo": "https://raw.githubusercontent.com/NodeBB/NodeBB/refs/heads/master/public/logo.png",
"description": "NodeBB Forum Software is powered by Node.js and supports either Redis, MongoDB, or a PostgreSQL database. It utilizes web sockets for instant interactions and real-time notifications. NodeBB takes the best of the modern web: real-time streaming discussions, mobile responsiveness, and rich RESTful read/write APIs, while staying true to the original bulletin board/forum format → categorical hierarchies, local user accounts, and asynchronous messaging.",
"install_methods": [
{
"type": "default",
"script": "ct/nodebb.sh",
"resources": {
"cpu": 4,
"ram": 2048,
"hdd": 10,
"os": "Ubuntu",
"version": "24.04"
}
}
],
"default_credentials": {
"username": "helper-scripts",
"password": "helper-scripts"
},
"notes": [
{
"text": "Only use Ubuntu 24.04!",
"type": "warning"
}
]
}

43
json/pocketid.json Normal file
View File

@ -0,0 +1,43 @@
{
"name": "Pocket ID",
"slug": "pocketid",
"categories": [
6
],
"date_created": "2025-01-28",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 80,
"documentation": "https://stonith404.github.io/pocket-id/introduction",
"website": "https://github.com/stonith404/pocket-id",
"logo": "https://raw.githubusercontent.com/stonith404/pocket-id/refs/heads/main/docs/static/img/pocket-id.png",
"description": "Pocket ID is a simple OIDC provider that allows users to authenticate with their passkeys to your services.",
"install_methods": [
{
"type": "default",
"script": "ct/pocketid.sh",
"resources": {
"cpu": 2,
"ram": 2048,
"hdd": 4,
"os": "Debian",
"version": "12"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "Pocket ID requires https to work.",
"type": "warning"
},
{
"text": "Configuration Path: `/opt/pocket-id/backend/.env`, `/opt/pocket-id/frontend/.env`.",
"type": "info"
}
]
}

View File

@ -33,7 +33,7 @@
"ram": 256,
"hdd": 0.5,
"os": "alpine",
"version": "3.20"
"version": "3.21"
}
}
],

View File

@ -33,7 +33,7 @@
"ram": 256,
"hdd": 0.3,
"os": "alpine",
"version": "3.19"
"version": "3.21"
}
}
],

34
json/zoneminder.json Normal file
View File

@ -0,0 +1,34 @@
{
"name": "ZoneMinder",
"slug": "zoneminder",
"categories": [
15
],
"date_created": "2025-01-21",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 80,
"documentation": null,
"website": "https://zoneminder.com",
"logo": "https://raw.githubusercontent.com/ZoneMinder/ZoneMinder/master/web/graphics/icon_zoneminder.png",
"description": "ZoneMinder is an open source video surveillance solution for Linux.",
"install_methods": [
{
"type": "default",
"script": "ct/ZoneMinder.sh",
"resources": {
"cpu": 2,
"ram": 2048,
"hdd": 16,
"os": "ubuntu",
"version": "22.04"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": []
}

View File

@ -233,65 +233,41 @@ update_motd_ip() {
fi
}
# This function sets the APP-Name into an ASCII Header in Slant, figlet needed on proxmox main node.
header_info() {
# Helper function: Install FIGlet and download fonts
install_figlet() {
echo -e "${INFO}${BOLD}${DGN}Installing FIGlet...${CL}"
# Function to download & save header files
get_header() {
local app_name=$(echo ${APP,,} | tr -d ' ')
local header_url="https://github.com/community-scripts/ProxmoxVE/raw/main/ct/headers/${app_name}"
local local_header_path="/usr/local/community-scripts/headers/${app_name}"
temp_dir=$(mktemp -d)
curl -sL https://github.com/community-scripts/ProxmoxVE/raw/refs/heads/main/misc/figlet.tar.xz -o "$temp_dir/figlet.tar.xz"
mkdir -p /tmp/figlet
tar -xf "$temp_dir/figlet.tar.xz" -C /tmp/figlet --strip-components=1
cd /tmp/figlet
make >/dev/null
mkdir -p "/usr/local/community-scripts/headers"
if [ -f "figlet" ]; then
chmod +x figlet
mv figlet /usr/local/bin/
mkdir -p /usr/local/share/figlet
cp -r /tmp/figlet/fonts/*.flf /usr/local/share/figlet/
echo -e "${CM}${BOLD}${DGN}FIGlet successfully installed.${CL}"
else
echo -e "${ERR}${BOLD}${RED}Failed to install FIGlet.${CL}"
# Check if local file already present
if [ ! -f "$local_header_path" ]; then
wget -qO "$local_header_path" "$header_url"
if [ $? -ne 0 ]; then
echo -e "${WARN}${BOLD}${YLW}Failed to download header for ${app_name}. No header will be displayed.${CL}"
return 1
fi
rm -rf "$temp_dir"
fi
cat "$local_header_path"
}
# Check if figlet and the slant font are available
if ! figlet -f slant "Test" &>/dev/null; then
echo -e "${INFO}${BOLD}${DGN}FIGlet or the slant font is missing. Installing...${CL}"
# This function sets the APP-Name into an ASCII Header in Slant, figlet needed on proxmox main node.
header_info() {
local app_name=$(echo ${APP,,} | tr -d ' ')
local header_content
if [ -f /etc/debian_version ] || [ -f /etc/lsb-release ]; then
# Debian/Ubuntu-based systems
apt-get update -y &>/dev/null
apt-get install -y wget build-essential &>/dev/null
install_figlet
elif [ -f /etc/alpine-release ]; then
# Alpine-based systems
apk add --no-cache tar xz build-base wget &>/dev/null
export TERM=xterm
install_figlet
else
echo -e "${ERR}${BOLD}${RED}Unsupported operating system.${CL}"
return 1
# Download & save Header-File locally
header_content=$(get_header "$app_name")
if [ $? -ne 0 ]; then
# Fallback: Doesn't show Header
return 0
fi
# Ensure the slant font is available
if [ ! -f "/usr/share/figlet/slant.flf" ]; then
echo -e "${INFO}${BOLD}${DGN}Downloading slant font...${CL}"
wget -qO /usr/share/figlet/slant.flf "http://www.figlet.org/fonts/slant.flf"
fi
fi
# Display ASCII header
# Show ASCII-Header
term_width=$(tput cols 2>/dev/null || echo 120)
ascii_art=$(figlet -f slant -w "$term_width" "$APP")
clear
echo "$ascii_art"
echo "$header_content"
}
# This function checks if the script is running through SSH and prompts the user to confirm if they want to proceed or exit.