Compare commits

...

13 Commits

Author SHA1 Message Date
community-scripts-pr-app[bot]
6fcca2bfdb Update CHANGELOG.md (#5923)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-11 01:16:20 +01:00
community-scripts-pr-app[bot]
295b419fbc Update versions.json (#5922)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-11 02:15:34 +02:00
CanbiZ
b9ac02e74f Update tools.func 2025-07-10 14:39:33 +02:00
community-scripts-pr-app[bot]
66d2f96b16 Update versions.json (#5916)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-10 14:08:52 +02:00
community-scripts-pr-app[bot]
1a66ca2683 Update CHANGELOG.md (#5915)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-10 13:01:54 +01:00
community-scripts-pr-app[bot]
b865be5e45 Update CHANGELOG.md (#5914)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-10 13:00:20 +01:00
CanbiZ
edb8ee5980 Refactor: Habitica (#5911) 2025-07-10 14:00:04 +02:00
community-scripts-pr-app[bot]
d30c0718da Update CHANGELOG.md (#5913)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-10 12:59:02 +01:00
CanbiZ
90b6712453 Refactor: EMQX + Update-Function + Improved NodeJS Crawling (#5907) 2025-07-10 13:58:20 +02:00
community-scripts-pr-app[bot]
3140438b2f Update CHANGELOG.md (#5908)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-10 10:17:31 +01:00
CanbiZ
bb00b9f545 core: fix breaking redownload for lxc containers (#5906) 2025-07-10 11:17:01 +02:00
community-scripts-pr-app[bot]
12b9e163bc Update CHANGELOG.md (#5905)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-10 06:35:30 +01:00
Slaviša Arežina
ee182fe867 Fix planka (#5900) 2025-07-10 07:35:03 +02:00
12 changed files with 228 additions and 161 deletions

View File

@@ -10,8 +10,23 @@
> [!CAUTION] > [!CAUTION]
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes. Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
## 2025-07-11
## 2025-07-10 ## 2025-07-10
### 🚀 Updated Scripts
- Refactor: Habitica [@MickLesk](https://github.com/MickLesk) ([#5911](https://github.com/community-scripts/ProxmoxVE/pull/5911))
- #### 🐞 Bug Fixes
- core: fix breaking re-download of lxc containers [@MickLesk](https://github.com/MickLesk) ([#5906](https://github.com/community-scripts/ProxmoxVE/pull/5906))
- PLANKA: Fix paths to application directory [@tremor021](https://github.com/tremor021) ([#5900](https://github.com/community-scripts/ProxmoxVE/pull/5900))
- #### 🔧 Refactor
- Refactor: EMQX + Update-Function + Improved NodeJS Crawling [@MickLesk](https://github.com/MickLesk) ([#5907](https://github.com/community-scripts/ProxmoxVE/pull/5907))
## 2025-07-09 ## 2025-07-09
### 🚀 Updated Scripts ### 🚀 Updated Scripts

View File

@@ -20,18 +20,39 @@ color
catch_errors catch_errors
function update_script() { function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -d /var ]]; then
msg_error "No ${APP} Installation Found!" RELEASE=$(curl -fsSL https://www.emqx.com/en/downloads/enterprise | grep -oP '/en/downloads/enterprise/v\K[0-9]+\.[0-9]+\.[0-9]+' | sort -V | tail -n1)
exit if [[ "$RELEASE" != "$(cat ~/.emqx 2>/dev/null)" ]] || [[ ! -f ~/.emqx ]]; then
fi msg_info "Stopping EMQX"
msg_info "Updating $APP LXC" systemctl stop emqx
$STD apt-get update msg_ok "Stopped EMQX"
$STD apt-get -y upgrade
msg_ok "Updated $APP LXC" msg_info "Downloading EMQX v${RELEASE}"
exit DEB_FILE="/tmp/emqx-enterprise-${RELEASE}-debian12-amd64.deb"
curl -fsSL -o "$DEB_FILE" "https://www.emqx.com/en/downloads/enterprise/v${RELEASE}/emqx-enterprise-${RELEASE}-debian12-amd64.deb"
msg_ok "Downloaded EMQX"
msg_info "Installing EMQX"
$STD apt-get install -y "$DEB_FILE"
msg_ok "Installed EMQX v${RELEASE}"
msg_info "Starting EMQX"
systemctl start emqx
echo "$RELEASE" >~/.emqx
msg_ok "Started EMQX"
msg_info "Cleaning Up"
rm -f "$DEB_FILE"
msg_ok "Cleanup Completed"
msg_ok "Update Successful"
else
msg_ok "No update required. EMQX is already at v${RELEASE}"
fi
exit
} }
start start
@@ -41,4 +62,4 @@ description
msg_ok "Completed Successfully!\n" msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:18083${CL}" echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:18083${CL}"

View File

@@ -20,48 +20,61 @@ color
catch_errors catch_errors
function update_script() { function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -d "/opt/habitica" ]]; then if [[ ! -d "/opt/habitica" ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit
fi
RELEASE=$(curl -fsSL https://api.github.com/repos/HabitRPG/habitica/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 habitica-mongodb
systemctl stop habitica
systemctl stop habitica-client
msg_ok "Stopped $APP"
msg_info "Updating $APP to ${RELEASE}"
temp_file=$(mktemp)
curl -fsSL "https://github.com/HabitRPG/habitica/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
tar zxf $temp_file
cp -rf habitica-${RELEASE}/* /opt/habitica
cd /opt/habitica
$STD npm i
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to ${RELEASE}"
msg_info "Starting $APP"
systemctl start habitica-mongodb
systemctl start habitica
systemctl start habitica-client
msg_ok "Started $APP"
msg_info "Cleaning Up"
rm -f $temp_file
rm -rf ~/habitica-${RELEASE}
msg_ok "Cleanup Completed"
msg_ok "Update Successful"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
exit exit
fi
NODE_VERSION="20" NODE_MODULE="gulp-cli,mocha" setup_nodejs
RELEASE=$(curl -fsSL https://api.github.com/repos/HabitRPG/habitica/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ "${RELEASE}" != "$(cat ~/.habitica 2>/dev/null)" ]] || [[ ! -f ~/.habitica ]]; then
msg_info "Stopping $APP"
systemctl stop habitica-mongodb
systemctl stop habitica
systemctl stop habitica-client
msg_ok "Stopped $APP"
msg_info "Save configuration"
if [[ -f /opt/habitica/config.json ]]; then
cp /opt/habitica/config.json ~/config.json
msg_ok "Saved configuration"
else
msg_warn "No configuration file found, skipping save"
fi
fetch_and_deploy_gh_release "habitica" "HabitRPG/habitica" "tarball" "latest" "/opt/habitica"
msg_info "Updating $APP to ${RELEASE}"
cd /opt/habitica
$STD npm i
$STD npm run postinstall
$STD npm run client:build
$STD gulp build:prod
msg_ok "Updated $APP to ${RELEASE}"
msg_info "Restoring configuration"
if [[ -f ~/config.json ]]; then
cp ~/config.json /opt/habitica/config.json
msg_ok "Restored configuration"
else
msg_warn "No configuration file found to restore"
fi
msg_info "Starting $APP"
systemctl start habitica-mongodb
systemctl start habitica
systemctl start habitica-client
msg_ok "Started $APP"
msg_ok "Update Successful"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
exit
} }
start start
@@ -71,4 +84,4 @@ description
msg_ok "Completed Successfully!\n" msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}" echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"

View File

@@ -40,20 +40,20 @@ function update_script() {
mkdir -p /opt/planka-backup/user-avatars mkdir -p /opt/planka-backup/user-avatars
mkdir -p /opt/planka-backup/background-images mkdir -p /opt/planka-backup/background-images
mkdir -p /opt/planka-backup/attachments mkdir -p /opt/planka-backup/attachments
mv /opt/planka/planka/.env /opt/planka-backup mv /opt/planka/.env /opt/planka-backup
[ -n "$(ls -A /opt/planka/planka/public/favicons 2>/dev/null)" ] && mv /opt/planka/planka/public/favicons/* /opt/planka-backup/favicons/ [ -n "$(ls -A /opt/planka/public/favicons 2>/dev/null)" ] && mv /opt/planka/public/favicons/* /opt/planka-backup/favicons/
[ -n "$(ls -A /opt/planka/planka/public/user-avatars 2>/dev/null)" ] && mv /opt/planka/planka/public/user-avatars/* /opt/planka-backup/user-avatars/ [ -n "$(ls -A /opt/planka/public/user-avatars 2>/dev/null)" ] && mv /opt/planka/public/user-avatars/* /opt/planka-backup/user-avatars/
[ -n "$(ls -A /opt/planka/planka/public/background-images 2>/dev/null)" ] && mv /opt/planka/planka/public/background-images/* /opt/planka-backup/background-images/ [ -n "$(ls -A /opt/planka/public/background-images 2>/dev/null)" ] && mv /opt/planka/public/background-images/* /opt/planka-backup/background-images/
[ -n "$(ls -A /opt/planka/planka/private/attachments 2>/dev/null)" ] && mv /opt/planka/planka/private/attachments/* /opt/planka-backup/attachments/ [ -n "$(ls -A /opt/planka/private/attachments 2>/dev/null)" ] && mv /opt/planka/private/attachments/* /opt/planka-backup/attachments/
rm -rf /opt/planka rm -rf /opt/planka
fetch_and_deploy_gh_release "planka" "plankanban/planka" "prebuild" "latest" "/opt/planka" "planka-prebuild.zip" fetch_and_deploy_gh_release "planka" "plankanban/planka" "prebuild" "latest" "/opt/planka" "planka-prebuild.zip"
cd /opt/planka/planka cd /opt/planka
$STD npm install $STD npm install
mv /opt/planka-backup/.env /opt/planka/planka/ mv /opt/planka-backup/.env /opt/planka/
[ -n "$(ls -A /opt/planka-backup/favicons 2>/dev/null)" ] && mv /opt/planka-backup/favicons/* /opt/planka/planka/public/favicons/ [ -n "$(ls -A /opt/planka-backup/favicons 2>/dev/null)" ] && mv /opt/planka-backup/favicons/* /opt/planka/public/favicons/
[ -n "$(ls -A /opt/planka-backup/user-avatars 2>/dev/null)" ] && mv /opt/planka-backup/user-avatars/* /opt/planka/planka/public/user-avatars/ [ -n "$(ls -A /opt/planka-backup/user-avatars 2>/dev/null)" ] && mv /opt/planka-backup/user-avatars/* /opt/planka/public/user-avatars/
[ -n "$(ls -A /opt/planka-backup/background-images 2>/dev/null)" ] && mv /opt/planka-backup/background-images/* /opt/planka/planka/public/background-images/ [ -n "$(ls -A /opt/planka-backup/background-images 2>/dev/null)" ] && mv /opt/planka-backup/background-images/* /opt/planka/public/background-images/
[ -n "$(ls -A /opt/planka-backup/attachments 2>/dev/null)" ] && mv /opt/planka-backup/attachments/* /opt/planka/planka/private/attachments/ [ -n "$(ls -A /opt/planka-backup/attachments 2>/dev/null)" ] && mv /opt/planka-backup/attachments/* /opt/planka/private/attachments/
msg_ok "Updated $APP to ${RELEASE}" msg_ok "Updated $APP to ${RELEASE}"
msg_info "Starting $APP" msg_info "Starting $APP"

View File

@@ -6,7 +6,7 @@
], ],
"date_created": "2024-05-02", "date_created": "2024-05-02",
"type": "ct", "type": "ct",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 18083, "interface_port": 18083,
"documentation": "https://docs.emqx.com/en/emqx/latest/", "documentation": "https://docs.emqx.com/en/emqx/latest/",

View File

@@ -8,7 +8,7 @@
"type": "ct", "type": "ct",
"updateable": true, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 8080, "interface_port": 3000,
"documentation": "https://github.com/HabitRPG/habitica/wiki", "documentation": "https://github.com/HabitRPG/habitica/wiki",
"website": "https://habitica.com/", "website": "https://habitica.com/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/habitica.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/habitica.webp",

View File

@@ -1,4 +1,74 @@
[ [
{
"name": "jenkinsci/jenkins",
"version": "jenkins-2.518",
"date": "2025-07-08T13:52:55Z"
},
{
"name": "rcourtman/Pulse",
"version": "v3.41.1",
"date": "2025-07-10T17:10:46Z"
},
{
"name": "LibreTranslate/LibreTranslate",
"version": "v1.7.2",
"date": "2025-07-10T19:29:26Z"
},
{
"name": "binwiederhier/ntfy",
"version": "v2.13.0",
"date": "2025-07-10T19:27:54Z"
},
{
"name": "ollama/ollama",
"version": "v0.9.6",
"date": "2025-07-08T01:26:29Z"
},
{
"name": "msgbyte/tianji",
"version": "v1.23.4",
"date": "2025-07-10T18:13:38Z"
},
{
"name": "mongodb/mongo",
"version": "r6.0.25",
"date": "2025-07-10T16:59:44Z"
},
{
"name": "forgejo/forgejo",
"version": "v11.0.3",
"date": "2025-07-10T13:12:00Z"
},
{
"name": "crowdsecurity/crowdsec",
"version": "v1.6.10",
"date": "2025-07-10T12:04:30Z"
},
{
"name": "neo4j/neo4j",
"version": "5.26.9",
"date": "2025-07-10T10:04:29Z"
},
{
"name": "meilisearch/meilisearch",
"version": "prototype-incremental-vector-store-3",
"date": "2025-07-07T10:27:19Z"
},
{
"name": "mattermost/mattermost",
"version": "preview-v0.1",
"date": "2025-06-27T14:35:47Z"
},
{
"name": "Jackett/Jackett",
"version": "v0.22.2140",
"date": "2025-07-10T05:54:59Z"
},
{
"name": "firefly-iii/firefly-iii",
"version": "v6.2.20",
"date": "2025-07-02T04:03:37Z"
},
{ {
"name": "steveiliop56/tinyauth", "name": "steveiliop56/tinyauth",
"version": "v3.6.0", "version": "v3.6.0",
@@ -29,11 +99,6 @@
"version": "v1.13.6", "version": "v1.13.6",
"date": "2025-07-09T17:23:01Z" "date": "2025-07-09T17:23:01Z"
}, },
{
"name": "msgbyte/tianji",
"version": "v1.23.3",
"date": "2025-07-09T16:39:30Z"
},
{ {
"name": "hargata/lubelog", "name": "hargata/lubelog",
"version": "v1.4.9", "version": "v1.4.9",
@@ -74,11 +139,6 @@
"version": "v0.107.63", "version": "v0.107.63",
"date": "2025-06-26T14:34:19Z" "date": "2025-06-26T14:34:19Z"
}, },
{
"name": "crowdsecurity/crowdsec",
"version": "v1.6.9",
"date": "2025-06-17T11:54:50Z"
},
{ {
"name": "n8n-io/n8n", "name": "n8n-io/n8n",
"version": "n8n@1.102.0", "version": "n8n@1.102.0",
@@ -99,11 +159,6 @@
"version": "2025.6.3", "version": "2025.6.3",
"date": "2025-07-03T01:07:26Z" "date": "2025-07-03T01:07:26Z"
}, },
{
"name": "Jackett/Jackett",
"version": "v0.22.2135",
"date": "2025-07-09T05:58:50Z"
},
{ {
"name": "MediaBrowser/Emby.Releases", "name": "MediaBrowser/Emby.Releases",
"version": "4.9.1.2", "version": "4.9.1.2",
@@ -129,11 +184,6 @@
"version": "v0.35.0", "version": "v0.35.0",
"date": "2025-05-21T18:00:32Z" "date": "2025-05-21T18:00:32Z"
}, },
{
"name": "rcourtman/Pulse",
"version": "v3.40.1",
"date": "2025-07-08T21:06:54Z"
},
{ {
"name": "grokability/snipe-it", "name": "grokability/snipe-it",
"version": "v8.1.18", "version": "v8.1.18",
@@ -149,11 +199,6 @@
"version": "v5.20.0", "version": "v5.20.0",
"date": "2025-07-08T16:27:11Z" "date": "2025-07-08T16:27:11Z"
}, },
{
"name": "jenkinsci/jenkins",
"version": "jenkins-2.518",
"date": "2025-07-08T13:52:55Z"
},
{ {
"name": "bunkerity/bunkerweb", "name": "bunkerity/bunkerweb",
"version": "v1.6.2", "version": "v1.6.2",
@@ -164,11 +209,6 @@
"version": "coverity-w28-4.13.0", "version": "coverity-w28-4.13.0",
"date": "2025-07-08T11:25:24Z" "date": "2025-07-08T11:25:24Z"
}, },
{
"name": "mattermost/mattermost",
"version": "preview-v0.1",
"date": "2025-06-27T14:35:47Z"
},
{ {
"name": "docker/compose", "name": "docker/compose",
"version": "v2.38.2", "version": "v2.38.2",
@@ -179,16 +219,6 @@
"version": "v2.4.0p7", "version": "v2.4.0p7",
"date": "2025-07-08T05:51:08Z" "date": "2025-07-08T05:51:08Z"
}, },
{
"name": "ollama/ollama",
"version": "v0.9.6",
"date": "2025-07-08T01:26:29Z"
},
{
"name": "mongodb/mongo",
"version": "r8.0.12-rc0",
"date": "2025-07-07T23:35:35Z"
},
{ {
"name": "TandoorRecipes/recipes", "name": "TandoorRecipes/recipes",
"version": "1.5.35", "version": "1.5.35",
@@ -214,11 +244,6 @@
"version": "v25.05.2", "version": "v25.05.2",
"date": "2025-07-07T14:08:25Z" "date": "2025-07-07T14:08:25Z"
}, },
{
"name": "meilisearch/meilisearch",
"version": "prototype-incremental-vector-store-3",
"date": "2025-07-07T10:27:19Z"
},
{ {
"name": "Paymenter/Paymenter", "name": "Paymenter/Paymenter",
"version": "v1.2.1", "version": "v1.2.1",
@@ -239,11 +264,6 @@
"version": "v1.5.2", "version": "v1.5.2",
"date": "2025-05-11T16:40:55Z" "date": "2025-05-11T16:40:55Z"
}, },
{
"name": "firefly-iii/firefly-iii",
"version": "v6.2.20",
"date": "2025-07-02T04:03:37Z"
},
{ {
"name": "slskd/slskd", "name": "slskd/slskd",
"version": "0.23.1", "version": "0.23.1",
@@ -619,11 +639,6 @@
"version": "v0.21.0", "version": "v0.21.0",
"date": "2025-06-19T11:54:59Z" "date": "2025-06-19T11:54:59Z"
}, },
{
"name": "neo4j/neo4j",
"version": "2025.05.1",
"date": "2025-06-19T11:28:36Z"
},
{ {
"name": "prometheus-pve/prometheus-pve-exporter", "name": "prometheus-pve/prometheus-pve-exporter",
"version": "v3.5.5", "version": "v3.5.5",
@@ -654,11 +669,6 @@
"version": "v5.6.0", "version": "v5.6.0",
"date": "2025-06-18T12:19:54Z" "date": "2025-06-18T12:19:54Z"
}, },
{
"name": "forgejo/forgejo",
"version": "v11.0.2",
"date": "2025-06-18T09:38:19Z"
},
{ {
"name": "silverbulletmd/silverbullet", "name": "silverbulletmd/silverbullet",
"version": "2.0.0-pre3", "version": "2.0.0-pre3",
@@ -849,11 +859,6 @@
"version": "v0.14.1", "version": "v0.14.1",
"date": "2024-08-29T22:32:51Z" "date": "2024-08-29T22:32:51Z"
}, },
{
"name": "binwiederhier/ntfy",
"version": "v2.12.0",
"date": "2025-05-30T00:26:27Z"
},
{ {
"name": "release-argus/Argus", "name": "release-argus/Argus",
"version": "0.26.3", "version": "0.26.3",
@@ -1099,11 +1104,6 @@
"version": "v1.34.0", "version": "v1.34.0",
"date": "2025-03-26T08:48:34Z" "date": "2025-03-26T08:48:34Z"
}, },
{
"name": "LibreTranslate/LibreTranslate",
"version": "v1.6.5",
"date": "2025-03-25T20:27:29Z"
},
{ {
"name": "nextcloud/nextcloudpi", "name": "nextcloud/nextcloudpi",
"version": "v1.55.4", "version": "v1.55.4",

View File

@@ -14,22 +14,38 @@ network_check
update_os update_os
msg_info "Installing dependencies" msg_info "Installing dependencies"
$STD apt-get install -y \ $STD apt-get install -y ca-certificates
apt-transport-https \
ca-certificates \
lsb-release
msg_ok "Installed dependencies" msg_ok "Installed dependencies"
msg_info "Fetching latest EMQX Enterprise version"
LATEST_VERSION=$(curl -fsSL https://www.emqx.com/en/downloads/enterprise | grep -oP '/en/downloads/enterprise/v\K[0-9]+\.[0-9]+\.[0-9]+' | sort -V | tail -n1)
if [[ -z "$LATEST_VERSION" ]]; then
msg_error "Failed to determine latest EMQX version"
exit 1
fi
msg_ok "Latest version: v$LATEST_VERSION"
DOWNLOAD_URL="https://www.emqx.com/en/downloads/enterprise/v$LATEST_VERSION/emqx-enterprise-${LATEST_VERSION}-debian12-amd64.deb"
DEB_FILE="/tmp/emqx-enterprise-${LATEST_VERSION}-debian12-amd64.deb"
msg_info "Downloading EMQX v$LATEST_VERSION"
$STD curl -fsSL -o "$DEB_FILE" "$DOWNLOAD_URL"
msg_ok "Downloaded EMQX"
msg_info "Installing EMQX" msg_info "Installing EMQX"
curl -fsSL https://packagecloud.io/emqx/emqx/gpgkey | gpg --dearmor -o /usr/share/keyrings/emqx-archive-keyring.gpg $STD apt-get install -y "$DEB_FILE"
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/emqx-archive-keyring.gpg] https://packagecloud.io/emqx/emqx/debian/ bookworm main" >/etc/apt/sources.list.d/emqx.list echo "$LATEST_VERSION" >~/.emqx
$STD apt-get install -y emqx
msg_ok "Installed EMQX" msg_ok "Installed EMQX"
msg_info "Starting EMQX service"
$STD systemctl enable -q --now emqx
msg_ok "Enabled EMQX service"
motd_ssh motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -f "$DEB_FILE"
$STD apt-get autoremove $STD apt-get autoremove
$STD apt-get autoclean $STD apt-get autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -22,18 +22,16 @@ curl -fsSL "http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1
$STD dpkg -i libssl1.1_1.1.1f-1ubuntu2_amd64.deb $STD dpkg -i libssl1.1_1.1.1f-1ubuntu2_amd64.deb
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
NODE_VERSION="20" setup_nodejs NODE_VERSION="20" NODE_MODULE="gulp-cli,mocha" setup_nodejs
fetch_and_deploy_gh_release "habitica" "HabitRPG/habitica" "tarball" "latest" "/opt/habitica"
msg_info "Setup ${APPLICATION}" msg_info "Setup ${APPLICATION}"
temp_file=$(mktemp)
RELEASE=$(curl -fsSL https://api.github.com/repos/HabitRPG/habitica/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
curl -fsSL "https://github.com/HabitRPG/habitica/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
tar zxf $temp_file
mv habitica-${RELEASE}/ /opt/habitica
cd /opt/habitica cd /opt/habitica
$STD npm i $STD npm i
$STD npm run postinstall
$STD npm run client:build
$STD gulp build:prod
cp config.json.example config.json cp config.json.example config.json
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
msg_ok "Setup ${APPLICATION}" msg_ok "Setup ${APPLICATION}"
msg_info "Creating Service" msg_info "Creating Service"
@@ -91,7 +89,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -f $temp_file
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -45,12 +45,12 @@ fetch_and_deploy_gh_release "planka" "plankanban/planka" "prebuild" "latest" "/o
msg_info "Configuring PLANKA" msg_info "Configuring PLANKA"
LOCAL_IP=$(hostname -I | awk '{print $1}') LOCAL_IP=$(hostname -I | awk '{print $1}')
SECRET_KEY=$(openssl rand -hex 64) SECRET_KEY=$(openssl rand -hex 64)
cd /opt/planka/planka cd /opt/planka
$STD npm install $STD npm install
cp .env.sample .env cp .env.sample .env
sed -i "s#http://localhost:1337#http://$LOCAL_IP:1337#g" /opt/planka/planka/.env sed -i "s#http://localhost:1337#http://$LOCAL_IP:1337#g" /opt/planka/.env
sed -i "s#postgres@localhost#planka:$DB_PASS@localhost#g" /opt/planka/planka/.env sed -i "s#postgres@localhost#planka:$DB_PASS@localhost#g" /opt/planka/.env
sed -i "s#notsecretkey#$SECRET_KEY#g" /opt/planka/planka/.env sed -i "s#notsecretkey#$SECRET_KEY#g" /opt/planka/.env
$STD npm run db:init $STD npm run db:init
msg_ok "Configured PLANKA" msg_ok "Configured PLANKA"
@@ -84,7 +84,7 @@ Description=planka Service
After=network.target After=network.target
[Service] [Service]
WorkingDirectory=/opt/planka/planka WorkingDirectory=/opt/planka
ExecStart=/usr/bin/npm start --prod ExecStart=/usr/bin/npm start --prod
Restart=always Restart=always

View File

@@ -253,7 +253,7 @@ fi
TEMPLATE_SEARCH="${PCT_OSTYPE}-${PCT_OSVERSION:-}" TEMPLATE_SEARCH="${PCT_OSTYPE}-${PCT_OSVERSION:-}"
msg_info "Updating LXC Template List" msg_info "Updating LXC Template List"
if ! timeout 15 pveam update >/dev/null 2>&1; then if ! pveam update >/dev/null 2>&1; then
TEMPLATE_FALLBACK=$(pveam list "$TEMPLATE_STORAGE" | awk "/$TEMPLATE_SEARCH/ {print \$2}" | sort -t - -k 2 -V | tail -n1) TEMPLATE_FALLBACK=$(pveam list "$TEMPLATE_STORAGE" | awk "/$TEMPLATE_SEARCH/ {print \$2}" | sort -t - -k 2 -V | tail -n1)
if [[ -z "$TEMPLATE_FALLBACK" ]]; then if [[ -z "$TEMPLATE_FALLBACK" ]]; then
msg_error "Failed to update LXC template list and no local template matching '$TEMPLATE_SEARCH' found." msg_error "Failed to update LXC template list and no local template matching '$TEMPLATE_SEARCH' found."
@@ -284,7 +284,7 @@ if ! pveam list "$TEMPLATE_STORAGE" | grep -q "$TEMPLATE" || ! zstdcat "$TEMPLAT
for attempt in {1..3}; do for attempt in {1..3}; do
msg_info "Attempt $attempt: Downloading LXC template..." msg_info "Attempt $attempt: Downloading LXC template..."
if timeout 120 pveam download "$TEMPLATE_STORAGE" "$TEMPLATE" >/dev/null 2>&1; then if pveam download "$TEMPLATE_STORAGE" "$TEMPLATE" >/dev/null 2>&1; then
msg_ok "Template download successful." msg_ok "Template download successful."
break break
fi fi

View File

@@ -54,9 +54,14 @@ function setup_nodejs() {
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_${NODE_VERSION}.x nodistro main" \ echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_${NODE_VERSION}.x nodistro main" \
>/etc/apt/sources.list.d/nodesource.list >/etc/apt/sources.list.d/nodesource.list
sleep 2
if ! apt-get update >/dev/null 2>&1; then if ! apt-get update >/dev/null 2>&1; then
msg_error "Failed to update APT repositories after adding NodeSource" msg_warn "APT update failed retrying in 5s"
exit 1 sleep 5
if ! apt-get update >/dev/null 2>&1; then
msg_error "Failed to update APT repositories after adding NodeSource"
exit 1
fi
fi fi
if ! apt-get install -y nodejs >/dev/null 2>&1; then if ! apt-get install -y nodejs >/dev/null 2>&1; then