mirror of
https://github.com/community-scripts/ProxmoxVE
synced 2025-02-06 07:49:17 +00:00
Compare commits
55 Commits
bdafc76ff9
...
7846c3855d
Author | SHA1 | Date | |
---|---|---|---|
|
7846c3855d | ||
|
cecf179b34 | ||
|
1f39208c1c | ||
|
63061942b9 | ||
|
87a987ba35 | ||
|
0680fbfac7 | ||
|
41a836f990 | ||
|
ad14b1b1d6 | ||
|
94d60a79d6 | ||
|
f10e625e41 | ||
|
dae705056c | ||
|
b973ca9d8d | ||
|
1cf8f80c71 | ||
|
97002e7047 | ||
|
d366d24dea | ||
|
05e46a07cd | ||
|
af166e3346 | ||
|
8221614cab | ||
|
b70cd00764 | ||
|
31473b2170 | ||
|
690d6d42d4 | ||
|
3be6824844 | ||
|
f903cfd97a | ||
|
901db73d78 | ||
|
67b80306a1 | ||
|
7dc446c8ac | ||
|
9435b9d046 | ||
|
2b1b517f20 | ||
|
7c297d3dac | ||
|
dbb9b66355 | ||
|
ff06d417b5 | ||
|
b6b5748e9a | ||
|
31ef2e8592 | ||
|
64861d0221 | ||
|
364ead3b56 | ||
|
4e0af7f49b | ||
|
2ff64bdc37 | ||
|
17b23ba04b | ||
|
691c9209dd | ||
|
b74d275b3e | ||
|
e8e0f10cf7 | ||
|
b105a16562 | ||
|
ff72a6af26 | ||
|
3a28e39cd3 | ||
|
3b4b895361 | ||
|
445baab1ef | ||
|
2fd156686e | ||
|
b7a99e6bae | ||
|
7691253739 | ||
|
0b6fe6e5e3 | ||
|
90d8ee2a38 | ||
|
215b605099 | ||
|
d5c28b632b | ||
|
5023b8468d | ||
|
0da98be2ef |
7
.github/CONTRIBUTOR_GUIDE/ct/AppName.md
vendored
7
.github/CONTRIBUTOR_GUIDE/ct/AppName.md
vendored
@ -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.
|
||||
|
19
.github/workflows/auto-update-app-headers.yml
vendored
19
.github/workflows/auto-update-app-headers.yml
vendored
@ -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."
|
||||
|
||||
|
29
CHANGELOG.md
29
CHANGELOG.md
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
6
ct/headers/monica
Normal file
@ -0,0 +1,6 @@
|
||||
__ ___ _
|
||||
/ |/ /___ ____ (_)________ _
|
||||
/ /|_/ / __ \/ __ \/ / ___/ __ `/
|
||||
/ / / / /_/ / / / / / /__/ /_/ /
|
||||
/_/ /_/\____/_/ /_/_/\___/\__,_/
|
||||
|
6
ct/headers/nodebb
Normal file
6
ct/headers/nodebb
Normal file
@ -0,0 +1,6 @@
|
||||
_ __ __ ____ ____
|
||||
/ | / /___ ____/ /__ / __ )/ __ )
|
||||
/ |/ / __ \/ __ / _ \/ __ / __ |
|
||||
/ /| / /_/ / /_/ / __/ /_/ / /_/ /
|
||||
/_/ |_/\____/\__,_/\___/_____/_____/
|
||||
|
6
ct/headers/pocketid
Normal file
6
ct/headers/pocketid
Normal file
@ -0,0 +1,6 @@
|
||||
____ __ __ ________
|
||||
/ __ \____ _____/ /_____ / /_/ _/ __ \
|
||||
/ /_/ / __ \/ ___/ //_/ _ \/ __// // / / /
|
||||
/ ____/ /_/ / /__/ ,< / __/ /__/ // /_/ /
|
||||
/_/ \____/\___/_/|_|\___/\__/___/_____/
|
||||
|
37
ct/homarr.sh
37
ct/homarr.sh
@ -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
81
ct/monica.sh
Normal 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
63
ct/nodebb.sh
Normal 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}"
|
@ -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
95
ct/pocketid.sh
Executable 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
60
ct/zoneminder.sh
Normal 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}"
|
@ -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(),
|
||||
);
|
||||
|
@ -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/
|
||||
|
@ -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
|
||||
|
@ -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]
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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"
|
||||
|
@ -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
|
||||
|
@ -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
104
install/monica-install.sh
Normal 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"
|
@ -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
|
||||
|
@ -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
164
install/nodebb-install.sh
Normal 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"
|
@ -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
|
||||
|
@ -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
130
install/pocketid-install.sh
Normal 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
|
@ -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) }')
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
67
install/zoneminder-install.sh
Normal file
67
install/zoneminder-install.sh
Normal 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"
|
@ -22,7 +22,7 @@
|
||||
"ram": 512,
|
||||
"hdd": 0.1,
|
||||
"os": "alpine",
|
||||
"version": "3.19"
|
||||
"version": "3.21"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
@ -33,7 +33,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 2,
|
||||
"os": "alpine",
|
||||
"version": "3.19"
|
||||
"version": "3.21"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
@ -33,7 +33,7 @@
|
||||
"ram": 256,
|
||||
"hdd": 1,
|
||||
"os": "alpine",
|
||||
"version": "3.19"
|
||||
"version": "3.21"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
@ -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
34
json/monica.json
Normal 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": []
|
||||
}
|
@ -33,7 +33,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 2,
|
||||
"os": "alpine",
|
||||
"version": "3.19"
|
||||
"version": "3.21"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
40
json/nodebb.json
Normal file
40
json/nodebb.json
Normal 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
43
json/pocketid.json
Normal 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"
|
||||
}
|
||||
]
|
||||
}
|
@ -33,7 +33,7 @@
|
||||
"ram": 256,
|
||||
"hdd": 0.5,
|
||||
"os": "alpine",
|
||||
"version": "3.20"
|
||||
"version": "3.21"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
@ -33,7 +33,7 @@
|
||||
"ram": 256,
|
||||
"hdd": 0.3,
|
||||
"os": "alpine",
|
||||
"version": "3.19"
|
||||
"version": "3.21"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
34
json/zoneminder.json
Normal file
34
json/zoneminder.json
Normal 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": []
|
||||
}
|
@ -233,65 +233,41 @@ update_motd_ip() {
|
||||
fi
|
||||
}
|
||||
|
||||
# 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}"
|
||||
|
||||
mkdir -p "/usr/local/community-scripts/headers"
|
||||
|
||||
# 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
|
||||
fi
|
||||
cat "$local_header_path"
|
||||
}
|
||||
|
||||
# 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}"
|
||||
local app_name=$(echo ${APP,,} | tr -d ' ')
|
||||
local header_content
|
||||
|
||||
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
|
||||
|
||||
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}"
|
||||
return 1
|
||||
fi
|
||||
rm -rf "$temp_dir"
|
||||
}
|
||||
|
||||
# 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}"
|
||||
|
||||
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.
|
||||
|
Loading…
Reference in New Issue
Block a user