From e3d2cbb56658b62066907cbdabcd618eb8c531b3 Mon Sep 17 00:00:00 2001 From: "CanbiZ (MickLesk)" <47820557+MickLesk@users.noreply.github.com> Date: Mon, 13 Apr 2026 16:30:41 +0200 Subject: [PATCH] Add container templates and installers for apps Add new ProxmoxVED container templates (ct/*.sh), install scripts (install/*.sh) and metadata (json/*.json) for multiple applications: Akaunting, Blinko, Certimate, Dagu, Gogs, InvoiceShelf, Matomo, Papermark, RSS-Bridge, SolidTime and WhoDB. Each ct script includes update logic and deployment helpers; install scripts handle dependency installation, service creation (systemd), DB setup, and Caddy/PHP/Node/Postgres configuration where applicable. JSON entries provide UI metadata, resource defaults and access ports for each app. --- ct/akaunting.sh | 76 +++++++++++++++++++++++++++++++++ ct/blinko.sh | 70 ++++++++++++++++++++++++++++++ ct/certimate.sh | 63 +++++++++++++++++++++++++++ ct/dagu.sh | 64 +++++++++++++++++++++++++++ ct/gogs.sh | 65 ++++++++++++++++++++++++++++ ct/invoiceshelf.sh | 76 +++++++++++++++++++++++++++++++++ ct/matomo.sh | 67 +++++++++++++++++++++++++++++ ct/papermark.sh | 70 ++++++++++++++++++++++++++++++ ct/rss-bridge.sh | 63 +++++++++++++++++++++++++++ ct/solidtime.sh | 76 +++++++++++++++++++++++++++++++++ ct/whodb.sh | 54 +++++++++++++++++++++++ install/akaunting-install.sh | 74 ++++++++++++++++++++++++++++++++ install/blinko-install.sh | 60 ++++++++++++++++++++++++++ install/certimate-install.sh | 40 +++++++++++++++++ install/dagu-install.sh | 47 ++++++++++++++++++++ install/gogs-install.sh | 50 ++++++++++++++++++++++ install/invoiceshelf-install.sh | 70 ++++++++++++++++++++++++++++++ install/matomo-install.sh | 49 +++++++++++++++++++++ install/papermark-install.sh | 60 ++++++++++++++++++++++++++ install/rss-bridge-install.sh | 50 ++++++++++++++++++++++ install/solidtime-install.sh | 69 ++++++++++++++++++++++++++++++ install/whodb-install.sh | 40 +++++++++++++++++ json/akaunting.json | 40 +++++++++++++++++ json/blinko.json | 40 +++++++++++++++++ json/certimate.json | 40 +++++++++++++++++ json/dagu.json | 35 +++++++++++++++ json/gogs.json | 40 +++++++++++++++++ json/invoiceshelf.json | 40 +++++++++++++++++ json/matomo.json | 40 +++++++++++++++++ json/papermark.json | 40 +++++++++++++++++ json/rss-bridge.json | 35 +++++++++++++++ json/solidtime.json | 40 +++++++++++++++++ json/whodb.json | 40 +++++++++++++++++ 33 files changed, 1783 insertions(+) create mode 100644 ct/akaunting.sh create mode 100644 ct/blinko.sh create mode 100644 ct/certimate.sh create mode 100644 ct/dagu.sh create mode 100644 ct/gogs.sh create mode 100644 ct/invoiceshelf.sh create mode 100644 ct/matomo.sh create mode 100644 ct/papermark.sh create mode 100644 ct/rss-bridge.sh create mode 100644 ct/solidtime.sh create mode 100644 ct/whodb.sh create mode 100644 install/akaunting-install.sh create mode 100644 install/blinko-install.sh create mode 100644 install/certimate-install.sh create mode 100644 install/dagu-install.sh create mode 100644 install/gogs-install.sh create mode 100644 install/invoiceshelf-install.sh create mode 100644 install/matomo-install.sh create mode 100644 install/papermark-install.sh create mode 100644 install/rss-bridge-install.sh create mode 100644 install/solidtime-install.sh create mode 100644 install/whodb-install.sh create mode 100644 json/akaunting.json create mode 100644 json/blinko.json create mode 100644 json/certimate.json create mode 100644 json/dagu.json create mode 100644 json/gogs.json create mode 100644 json/invoiceshelf.json create mode 100644 json/matomo.json create mode 100644 json/papermark.json create mode 100644 json/rss-bridge.json create mode 100644 json/solidtime.json create mode 100644 json/whodb.json diff --git a/ct/akaunting.sh b/ct/akaunting.sh new file mode 100644 index 00000000..bed5a808 --- /dev/null +++ b/ct/akaunting.sh @@ -0,0 +1,76 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/build.func) +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE +# Source: https://akaunting.com/ + +APP="Akaunting" +var_tags="${var_tags:-accounting;finance;erp}" +var_cpu="${var_cpu:-2}" +var_ram="${var_ram:-2048}" +var_disk="${var_disk:-8}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +var_unprivileged="${var_unprivileged:-1}" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -d /opt/akaunting ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + if check_for_gh_release "akaunting" "akaunting/akaunting"; then + msg_info "Stopping Services" + systemctl stop caddy + msg_ok "Stopped Services" + + msg_info "Backing up Data" + cp /opt/akaunting/.env /opt/akaunting.env.bak + cp -r /opt/akaunting/storage /opt/akaunting_storage_backup + msg_ok "Backed up Data" + + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "akaunting" "akaunting/akaunting" "tarball" + + msg_info "Restoring Data" + cp /opt/akaunting.env.bak /opt/akaunting/.env + rm -f /opt/akaunting.env.bak + cp -r /opt/akaunting_storage_backup/. /opt/akaunting/storage + rm -rf /opt/akaunting_storage_backup + msg_ok "Restored Data" + + msg_info "Updating Application" + cd /opt/akaunting + $STD composer install --no-dev --optimize-autoloader + $STD npm install + $STD npm run dev + $STD php artisan migrate --force + $STD php artisan optimize:clear + chown -R www-data:www-data /opt/akaunting + msg_ok "Updated Application" + + msg_info "Starting Services" + systemctl start caddy + msg_ok "Started Services" + msg_ok "Updated successfully!" + fi + exit +} + +start +build_container +description + +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}" diff --git a/ct/blinko.sh b/ct/blinko.sh new file mode 100644 index 00000000..260acf38 --- /dev/null +++ b/ct/blinko.sh @@ -0,0 +1,70 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/build.func) +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE +# Source: https://blinko.space/ + +APP="Blinko" +var_tags="${var_tags:-notes;ai;knowledge}" +var_cpu="${var_cpu:-2}" +var_ram="${var_ram:-2048}" +var_disk="${var_disk:-8}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +var_unprivileged="${var_unprivileged:-1}" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -d /opt/blinko ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + if check_for_gh_release "blinko" "blinkospace/blinko"; then + msg_info "Stopping Service" + systemctl stop blinko + msg_ok "Stopped Service" + + msg_info "Backing up Data" + cp /opt/blinko/.env /opt/blinko.env.bak + msg_ok "Backed up Data" + + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "blinko" "blinkospace/blinko" "tarball" + + msg_info "Restoring Data" + cp /opt/blinko.env.bak /opt/blinko/.env + rm -f /opt/blinko.env.bak + msg_ok "Restored Data" + + msg_info "Updating Application" + cd /opt/blinko + $STD npm install + $STD npx prisma migrate deploy + $STD npm run build + msg_ok "Updated Application" + + msg_info "Starting Service" + systemctl start blinko + msg_ok "Started Service" + msg_ok "Updated successfully!" + fi + exit +} + +start +build_container +description + +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:1111${CL}" diff --git a/ct/certimate.sh b/ct/certimate.sh new file mode 100644 index 00000000..cd430ca9 --- /dev/null +++ b/ct/certimate.sh @@ -0,0 +1,63 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/build.func) +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE +# Source: https://certimate.me/ + +APP="Certimate" +var_tags="${var_tags:-ssl;certificates;acme;automation}" +var_cpu="${var_cpu:-1}" +var_ram="${var_ram:-256}" +var_disk="${var_disk:-2}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +var_unprivileged="${var_unprivileged:-1}" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -f /opt/certimate/certimate ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + if check_for_gh_release "certimate" "certimate-go/certimate"; then + msg_info "Stopping Service" + systemctl stop certimate + msg_ok "Stopped Service" + + msg_info "Backing up Data" + cp -r /opt/certimate/pb_data /opt/certimate_pb_data_backup + msg_ok "Backed up Data" + + fetch_and_deploy_gh_release "certimate" "certimate-go/certimate" "prebuild" "latest" "/opt/certimate" "certimate_*_linux_amd64.zip" + + msg_info "Restoring Data" + cp -r /opt/certimate_pb_data_backup/. /opt/certimate/pb_data + rm -rf /opt/certimate_pb_data_backup + msg_ok "Restored Data" + + msg_info "Starting Service" + systemctl start certimate + msg_ok "Started Service" + msg_ok "Updated successfully!" + fi + exit +} + +start +build_container +description + +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8090${CL}" diff --git a/ct/dagu.sh b/ct/dagu.sh new file mode 100644 index 00000000..42997d91 --- /dev/null +++ b/ct/dagu.sh @@ -0,0 +1,64 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/build.func) +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE +# Source: https://dagu.sh/ + +APP="Dagu" +var_tags="${var_tags:-automation;workflow;scheduler}" +var_cpu="${var_cpu:-1}" +var_ram="${var_ram:-512}" +var_disk="${var_disk:-4}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +var_unprivileged="${var_unprivileged:-1}" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -f /opt/dagu/dagu ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + if check_for_gh_release "dagu" "dagucloud/dagu"; then + msg_info "Stopping Service" + systemctl stop dagu + msg_ok "Stopped Service" + + msg_info "Backing up Data" + cp -r /opt/dagu/data /opt/dagu_data_backup + msg_ok "Backed up Data" + + fetch_and_deploy_gh_release "dagu" "dagucloud/dagu" "prebuild" "latest" "/opt/dagu" "dagu_*_linux_amd64.tar.gz" + + msg_info "Restoring Data" + mkdir -p /opt/dagu/data + cp -r /opt/dagu_data_backup/. /opt/dagu/data + rm -rf /opt/dagu_data_backup + msg_ok "Restored Data" + + msg_info "Starting Service" + systemctl start dagu + msg_ok "Started Service" + msg_ok "Updated successfully!" + fi + exit +} + +start +build_container +description + +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}" diff --git a/ct/gogs.sh b/ct/gogs.sh new file mode 100644 index 00000000..e7150eed --- /dev/null +++ b/ct/gogs.sh @@ -0,0 +1,65 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/build.func) +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE +# Source: https://gogs.io/ + +APP="Gogs" +var_tags="${var_tags:-git;code;devops}" +var_cpu="${var_cpu:-2}" +var_ram="${var_ram:-1024}" +var_disk="${var_disk:-8}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +var_unprivileged="${var_unprivileged:-1}" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -f /opt/gogs/gogs ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + if check_for_gh_release "gogs" "gogs/gogs"; then + msg_info "Stopping Service" + systemctl stop gogs + msg_ok "Stopped Service" + + msg_info "Backing up Data" + cp -r /opt/gogs/custom /opt/gogs_custom_backup + cp -r /opt/gogs/data /opt/gogs_data_backup + msg_ok "Backed up Data" + + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "gogs" "gogs/gogs" "prebuild" "latest" "/opt/gogs" "gogs_*_linux_amd64.tar.gz" + + msg_info "Restoring Data" + cp -r /opt/gogs_custom_backup/. /opt/gogs/custom + cp -r /opt/gogs_data_backup/. /opt/gogs/data + rm -rf /opt/gogs_custom_backup /opt/gogs_data_backup + msg_ok "Restored Data" + + msg_info "Starting Service" + systemctl start gogs + msg_ok "Started Service" + msg_ok "Updated successfully!" + fi + exit +} + +start +build_container +description + +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}" diff --git a/ct/invoiceshelf.sh b/ct/invoiceshelf.sh new file mode 100644 index 00000000..ad6338db --- /dev/null +++ b/ct/invoiceshelf.sh @@ -0,0 +1,76 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/build.func) +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE +# Source: https://invoiceshelf.com/ + +APP="InvoiceShelf" +var_tags="${var_tags:-invoicing;finance;business}" +var_cpu="${var_cpu:-2}" +var_ram="${var_ram:-1024}" +var_disk="${var_disk:-4}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +var_unprivileged="${var_unprivileged:-1}" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -d /opt/invoiceshelf ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + if check_for_gh_release "invoiceshelf" "InvoiceShelf/InvoiceShelf"; then + msg_info "Stopping Services" + systemctl stop caddy + msg_ok "Stopped Services" + + msg_info "Backing up Data" + cp /opt/invoiceshelf/.env /opt/invoiceshelf.env.bak + cp -r /opt/invoiceshelf/storage /opt/invoiceshelf_storage_backup + msg_ok "Backed up Data" + + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "invoiceshelf" "InvoiceShelf/InvoiceShelf" "tarball" + + msg_info "Restoring Data" + cp /opt/invoiceshelf.env.bak /opt/invoiceshelf/.env + rm -f /opt/invoiceshelf.env.bak + cp -r /opt/invoiceshelf_storage_backup/. /opt/invoiceshelf/storage + rm -rf /opt/invoiceshelf_storage_backup + msg_ok "Restored Data" + + msg_info "Updating Application" + cd /opt/invoiceshelf + $STD composer install --no-dev --optimize-autoloader + $STD yarn install + $STD yarn build + $STD php artisan migrate --force + $STD php artisan optimize:clear + chown -R www-data:www-data /opt/invoiceshelf + msg_ok "Updated Application" + + msg_info "Starting Services" + systemctl start caddy + msg_ok "Started Services" + msg_ok "Updated successfully!" + fi + exit +} + +start +build_container +description + +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}" diff --git a/ct/matomo.sh b/ct/matomo.sh new file mode 100644 index 00000000..a1e3ceb5 --- /dev/null +++ b/ct/matomo.sh @@ -0,0 +1,67 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/build.func) +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE +# Source: https://matomo.org/ + +APP="Matomo" +var_tags="${var_tags:-analytics;tracking;privacy}" +var_cpu="${var_cpu:-2}" +var_ram="${var_ram:-2048}" +var_disk="${var_disk:-16}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +var_unprivileged="${var_unprivileged:-1}" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -d /opt/matomo ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + if check_for_gh_release "matomo" "matomo-org/matomo"; then + msg_info "Stopping Services" + systemctl stop caddy + msg_ok "Stopped Services" + + msg_info "Backing up Data" + cp /opt/matomo/config/config.ini.php /opt/matomo_config.bak + cp -r /opt/matomo/misc/user /opt/matomo_user_backup 2>/dev/null + msg_ok "Backed up Data" + + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "matomo" "matomo-org/matomo" "prebuild" "latest" "/opt/matomo" "matomo-*.zip" + + msg_info "Restoring Data" + cp /opt/matomo_config.bak /opt/matomo/config/config.ini.php + cp -r /opt/matomo_user_backup/. /opt/matomo/misc/user 2>/dev/null + rm -f /opt/matomo_config.bak + rm -rf /opt/matomo_user_backup + chown -R www-data:www-data /opt/matomo + msg_ok "Restored Data" + + msg_info "Starting Services" + systemctl start caddy + msg_ok "Started Services" + msg_ok "Updated successfully!" + fi + exit +} + +start +build_container +description + +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}" diff --git a/ct/papermark.sh b/ct/papermark.sh new file mode 100644 index 00000000..883e13e6 --- /dev/null +++ b/ct/papermark.sh @@ -0,0 +1,70 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/build.func) +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE +# Source: https://www.papermark.com/ + +APP="Papermark" +var_tags="${var_tags:-documents;sharing;analytics}" +var_cpu="${var_cpu:-2}" +var_ram="${var_ram:-2048}" +var_disk="${var_disk:-8}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +var_unprivileged="${var_unprivileged:-1}" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -d /opt/papermark ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + if check_for_gh_release "papermark" "mfts/papermark"; then + msg_info "Stopping Service" + systemctl stop papermark + msg_ok "Stopped Service" + + msg_info "Backing up Data" + cp /opt/papermark/.env /opt/papermark.env.bak + msg_ok "Backed up Data" + + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "papermark" "mfts/papermark" "tarball" + + msg_info "Restoring Data" + cp /opt/papermark.env.bak /opt/papermark/.env + rm -f /opt/papermark.env.bak + msg_ok "Restored Data" + + msg_info "Updating Application" + cd /opt/papermark + $STD npm install + $STD npx prisma migrate deploy + $STD npm run build + msg_ok "Updated Application" + + msg_info "Starting Service" + systemctl start papermark + msg_ok "Started Service" + msg_ok "Updated successfully!" + fi + exit +} + +start +build_container +description + +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}" diff --git a/ct/rss-bridge.sh b/ct/rss-bridge.sh new file mode 100644 index 00000000..8f4aa1f5 --- /dev/null +++ b/ct/rss-bridge.sh @@ -0,0 +1,63 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/build.func) +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE +# Source: https://rss-bridge.org/ + +APP="RSS-Bridge" +var_tags="${var_tags:-rss;feed;bridge}" +var_cpu="${var_cpu:-1}" +var_ram="${var_ram:-512}" +var_disk="${var_disk:-2}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +var_unprivileged="${var_unprivileged:-1}" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -d /opt/rss-bridge ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + if check_for_gh_release "rss-bridge" "RSS-Bridge/rss-bridge"; then + msg_info "Backing up Data" + cp /opt/rss-bridge/config.ini.php /opt/rss-bridge_config.bak 2>/dev/null + msg_ok "Backed up Data" + + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "rss-bridge" "RSS-Bridge/rss-bridge" "tarball" + + msg_info "Restoring Data" + cp /opt/rss-bridge_config.bak /opt/rss-bridge/config.ini.php 2>/dev/null + rm -f /opt/rss-bridge_config.bak + msg_ok "Restored Data" + + msg_info "Updating Application" + cd /opt/rss-bridge + $STD composer install --no-dev --optimize-autoloader + chown -R www-data:www-data /opt/rss-bridge + msg_ok "Updated Application" + + systemctl restart caddy + msg_ok "Updated successfully!" + fi + exit +} + +start +build_container +description + +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}" diff --git a/ct/solidtime.sh b/ct/solidtime.sh new file mode 100644 index 00000000..2296635c --- /dev/null +++ b/ct/solidtime.sh @@ -0,0 +1,76 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/build.func) +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE +# Source: https://www.solidtime.io/ + +APP="SolidTime" +var_tags="${var_tags:-time-tracking;productivity;business}" +var_cpu="${var_cpu:-2}" +var_ram="${var_ram:-2048}" +var_disk="${var_disk:-8}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +var_unprivileged="${var_unprivileged:-1}" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -d /opt/solidtime ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + if check_for_gh_release "solidtime" "solidtime-io/solidtime"; then + msg_info "Stopping Services" + systemctl stop caddy + msg_ok "Stopped Services" + + msg_info "Backing up Data" + cp /opt/solidtime/.env /opt/solidtime.env.bak + cp -r /opt/solidtime/storage /opt/solidtime_storage_backup + msg_ok "Backed up Data" + + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "solidtime" "solidtime-io/solidtime" "tarball" + + msg_info "Restoring Data" + cp /opt/solidtime.env.bak /opt/solidtime/.env + rm -f /opt/solidtime.env.bak + cp -r /opt/solidtime_storage_backup/. /opt/solidtime/storage + rm -rf /opt/solidtime_storage_backup + msg_ok "Restored Data" + + msg_info "Updating Application" + cd /opt/solidtime + $STD composer install --no-dev --optimize-autoloader + $STD npm install + $STD npm run build + $STD php artisan migrate --force + $STD php artisan optimize:clear + chown -R www-data:www-data /opt/solidtime + msg_ok "Updated Application" + + msg_info "Starting Services" + systemctl start caddy + msg_ok "Started Services" + msg_ok "Updated successfully!" + fi + exit +} + +start +build_container +description + +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}" diff --git a/ct/whodb.sh b/ct/whodb.sh new file mode 100644 index 00000000..59ab08e3 --- /dev/null +++ b/ct/whodb.sh @@ -0,0 +1,54 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/build.func) +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE +# Source: https://whodb.com/ + +APP="WhoDB" +var_tags="${var_tags:-database;management;gui}" +var_cpu="${var_cpu:-1}" +var_ram="${var_ram:-512}" +var_disk="${var_disk:-2}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +var_unprivileged="${var_unprivileged:-1}" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -f /opt/whodb/whodb ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + if check_for_gh_release "whodb" "clidey/whodb"; then + msg_info "Stopping Service" + systemctl stop whodb + msg_ok "Stopped Service" + + fetch_and_deploy_gh_release "whodb" "clidey/whodb" "singlefile" "latest" "/opt/whodb" "whodb-*-linux-amd64" + + msg_info "Starting Service" + systemctl start whodb + msg_ok "Started Service" + msg_ok "Updated ${APP}" + 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}:8080${CL}" diff --git a/install/akaunting-install.sh b/install/akaunting-install.sh new file mode 100644 index 00000000..bd43e3d4 --- /dev/null +++ b/install/akaunting-install.sh @@ -0,0 +1,74 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE +# Source: https://akaunting.com/ + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt install -y caddy +msg_ok "Installed Dependencies" + +PHP_VERSION="8.3" PHP_FPM="YES" PHP_MODULES="bcmath,gd,intl,xml,zip,pdo_mysql,mbstring,curl" setup_php +setup_composer +NODE_VERSION="22" setup_nodejs +MARIADB_DB_NAME="akaunting" MARIADB_DB_USER="akaunting" setup_mariadb_db + +fetch_and_deploy_gh_release "akaunting" "akaunting/akaunting" "tarball" + +msg_info "Setting up ${APP}" +cd /opt/akaunting +$STD composer install --no-dev --optimize-autoloader +$STD npm install +$STD npm run dev +cat </opt/akaunting/.env +APP_NAME=Akaunting +APP_ENV=production +APP_DEBUG=false +APP_URL=http://${LOCAL_IP} + +DB_CONNECTION=mysql +DB_HOST=127.0.0.1 +DB_PORT=3306 +DB_DATABASE=${MARIADB_DB_NAME} +DB_USERNAME=${MARIADB_DB_USER} +DB_PASSWORD=${MARIADB_DB_PASS} + +CACHE_DRIVER=file +SESSION_DRIVER=file +QUEUE_CONNECTION=sync +EOF +$STD php artisan key:generate +mkdir -p storage/framework/{cache,sessions,views} storage/logs bootstrap/cache +chown -R www-data:www-data /opt/akaunting +chmod -R 775 storage bootstrap/cache +$STD php artisan migrate --force --seed +msg_ok "Set up ${APP}" + +msg_info "Configuring Caddy" +PHP_VER=$(php -r 'echo PHP_MAJOR_VERSION . "." . PHP_MINOR_VERSION;') +cat </etc/caddy/Caddyfile +:80 { + root * /opt/akaunting/public + php_fastcgi unix//run/php/php${PHP_VER}-fpm.sock + file_server + encode gzip +} +EOF +usermod -aG www-data caddy +msg_ok "Configured Caddy" + +systemctl enable -q --now php${PHP_VER}-fpm +systemctl restart caddy + +motd_ssh +customize +cleanup_lxc diff --git a/install/blinko-install.sh b/install/blinko-install.sh new file mode 100644 index 00000000..4c4e1a04 --- /dev/null +++ b/install/blinko-install.sh @@ -0,0 +1,60 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE +# Source: https://blinko.space/ + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +NODE_VERSION="22" setup_nodejs +PG_VERSION="16" setup_postgresql +PG_DB_NAME="blinko" PG_DB_USER="blinko" setup_postgresql_db + +fetch_and_deploy_gh_release "blinko" "blinkospace/blinko" "tarball" + +msg_info "Setting up ${APP}" +cd /opt/blinko +cat </opt/blinko/.env +NODE_ENV=production +DATABASE_URL=postgresql://${PG_DB_USER}:${PG_DB_PASS}@127.0.0.1:5432/${PG_DB_NAME} +NEXT_PUBLIC_BASE_URL=http://${LOCAL_IP}:1111 +NEXTAUTH_URL=http://${LOCAL_IP}:1111 +NEXTAUTH_SECRET=$(openssl rand -base64 32) +EOF +$STD npm install +$STD npx prisma generate +$STD npx prisma migrate deploy +$STD npm run build +msg_ok "Set up ${APP}" + +msg_info "Creating Service" +cat </etc/systemd/system/blinko.service +[Unit] +Description=Blinko Note-Taking App +After=network.target postgresql.service + +[Service] +Type=simple +User=root +WorkingDirectory=/opt/blinko +EnvironmentFile=/opt/blinko/.env +ExecStart=/usr/bin/node /opt/blinko/.next/standalone/server.js +Restart=on-failure +RestartSec=5 + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now blinko +msg_ok "Created Service" + +motd_ssh +customize +cleanup_lxc diff --git a/install/certimate-install.sh b/install/certimate-install.sh new file mode 100644 index 00000000..287cbaeb --- /dev/null +++ b/install/certimate-install.sh @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE +# Source: https://certimate.me/ + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +fetch_and_deploy_gh_release "certimate" "certimate-go/certimate" "prebuild" "latest" "/opt/certimate" "certimate_*_linux_amd64.zip" + +msg_info "Creating Service" +cat </etc/systemd/system/certimate.service +[Unit] +Description=Certimate SSL Certificate Manager +After=network.target + +[Service] +Type=simple +User=root +WorkingDirectory=/opt/certimate +ExecStart=/opt/certimate/certimate serve +Restart=on-failure +RestartSec=5 + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now certimate +msg_ok "Created Service" + +motd_ssh +customize +cleanup_lxc diff --git a/install/dagu-install.sh b/install/dagu-install.sh new file mode 100644 index 00000000..0c70c677 --- /dev/null +++ b/install/dagu-install.sh @@ -0,0 +1,47 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE +# Source: https://dagu.sh/ + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +fetch_and_deploy_gh_release "dagu" "dagucloud/dagu" "prebuild" "latest" "/opt/dagu" "dagu_*_linux_amd64.tar.gz" + +msg_info "Setting up ${APP}" +mkdir -p /opt/dagu/data +msg_ok "Set up ${APP}" + +msg_info "Creating Service" +cat </etc/systemd/system/dagu.service +[Unit] +Description=Dagu Workflow Engine +After=network.target + +[Service] +Type=simple +User=root +WorkingDirectory=/opt/dagu +Environment=DAGU_HOME=/opt/dagu/data +Environment=DAGU_HOST=0.0.0.0 +Environment=DAGU_PORT=8080 +ExecStart=/opt/dagu/dagu start-all +Restart=on-failure +RestartSec=5 + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now dagu +msg_ok "Created Service" + +motd_ssh +customize +cleanup_lxc diff --git a/install/gogs-install.sh b/install/gogs-install.sh new file mode 100644 index 00000000..e5e75472 --- /dev/null +++ b/install/gogs-install.sh @@ -0,0 +1,50 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE +# Source: https://gogs.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 install -y git +msg_ok "Installed Dependencies" + +fetch_and_deploy_gh_release "gogs" "gogs/gogs" "prebuild" "latest" "/opt/gogs" "gogs_*_linux_amd64.tar.gz" + +msg_info "Setting up ${APP}" +mkdir -p /opt/gogs/{custom/conf,data,log} +msg_ok "Set up ${APP}" + +msg_info "Creating Service" +cat </etc/systemd/system/gogs.service +[Unit] +Description=Gogs Git Service +After=network.target + +[Service] +Type=simple +User=root +WorkingDirectory=/opt/gogs +ExecStart=/opt/gogs/gogs web +Restart=on-failure +RestartSec=5 +Environment=USER=root +Environment=HOME=/root + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now gogs +msg_ok "Created Service" + +motd_ssh +customize +cleanup_lxc diff --git a/install/invoiceshelf-install.sh b/install/invoiceshelf-install.sh new file mode 100644 index 00000000..f1e9c1ba --- /dev/null +++ b/install/invoiceshelf-install.sh @@ -0,0 +1,70 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE +# Source: https://invoiceshelf.com/ + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt install -y caddy +msg_ok "Installed Dependencies" + +PHP_VERSION="8.4" PHP_FPM="YES" PHP_MODULES="bcmath,gd,intl,xml,zip,pdo_pgsql,mbstring,curl,exif" setup_php +setup_composer +NODE_VERSION="24" NODE_MODULE="yarn" setup_nodejs +PG_VERSION="16" setup_postgresql +PG_DB_NAME="invoiceshelf" PG_DB_USER="invoiceshelf" setup_postgresql_db + +fetch_and_deploy_gh_release "invoiceshelf" "InvoiceShelf/InvoiceShelf" "tarball" + +msg_info "Setting up ${APP}" +cd /opt/invoiceshelf +cp .env.example .env +APP_KEY=$($STD php artisan key:generate --show) +sed -i "s|^APP_KEY=.*|APP_KEY=${APP_KEY}|" .env +sed -i "s|^APP_ENV=.*|APP_ENV=production|" .env +sed -i "s|^APP_DEBUG=.*|APP_DEBUG=false|" .env +sed -i "s|^APP_URL=.*|APP_URL=http://${LOCAL_IP}|" .env +sed -i "s|^DB_CONNECTION=.*|DB_CONNECTION=pgsql|" .env +sed -i "s|^DB_HOST=.*|DB_HOST=127.0.0.1|" .env +sed -i "s|^DB_PORT=.*|DB_PORT=5432|" .env +sed -i "s|^DB_DATABASE=.*|DB_DATABASE=${PG_DB_NAME}|" .env +sed -i "s|^DB_USERNAME=.*|DB_USERNAME=${PG_DB_USER}|" .env +sed -i "s|^DB_PASSWORD=.*|DB_PASSWORD=${PG_DB_PASS}|" .env +$STD composer install --no-dev --optimize-autoloader +$STD yarn install +$STD yarn build +mkdir -p storage/framework/{cache,sessions,views} storage/logs bootstrap/cache +chown -R www-data:www-data /opt/invoiceshelf +chmod -R 775 storage bootstrap/cache +$STD php artisan migrate --force +$STD php artisan storage:link +msg_ok "Set up ${APP}" + +msg_info "Configuring Caddy" +PHP_VER=$(php -r 'echo PHP_MAJOR_VERSION . "." . PHP_MINOR_VERSION;') +cat </etc/caddy/Caddyfile +:80 { + root * /opt/invoiceshelf/public + php_fastcgi unix//run/php/php${PHP_VER}-fpm.sock + file_server + encode gzip +} +EOF +usermod -aG www-data caddy +msg_ok "Configured Caddy" + +systemctl enable -q --now php${PHP_VER}-fpm +systemctl restart caddy + +motd_ssh +customize +cleanup_lxc diff --git a/install/matomo-install.sh b/install/matomo-install.sh new file mode 100644 index 00000000..0912e3d5 --- /dev/null +++ b/install/matomo-install.sh @@ -0,0 +1,49 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE +# Source: https://matomo.org/ + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt install -y caddy +msg_ok "Installed Dependencies" + +PHP_VERSION="8.3" PHP_FPM="YES" PHP_MODULES="pdo_mysql,gd,mbstring,xml,curl,intl,zip,ldap" setup_php +MARIADB_DB_NAME="matomo" MARIADB_DB_USER="matomo" setup_mariadb_db + +fetch_and_deploy_gh_release "matomo" "matomo-org/matomo" "prebuild" "latest" "/opt/matomo" "matomo-*.zip" + +msg_info "Setting up ${APP}" +mkdir -p /opt/matomo/tmp +chown -R www-data:www-data /opt/matomo +chmod -R 755 /opt/matomo/tmp +msg_ok "Set up ${APP}" + +msg_info "Configuring Caddy" +PHP_VER=$(php -r 'echo PHP_MAJOR_VERSION . "." . PHP_MINOR_VERSION;') +cat </etc/caddy/Caddyfile +:80 { + root * /opt/matomo + php_fastcgi unix//run/php/php${PHP_VER}-fpm.sock + file_server + encode gzip +} +EOF +usermod -aG www-data caddy +msg_ok "Configured Caddy" + +systemctl enable -q --now php${PHP_VER}-fpm +systemctl restart caddy + +motd_ssh +customize +cleanup_lxc diff --git a/install/papermark-install.sh b/install/papermark-install.sh new file mode 100644 index 00000000..fdb64d42 --- /dev/null +++ b/install/papermark-install.sh @@ -0,0 +1,60 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE +# Source: https://www.papermark.com/ + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +NODE_VERSION="22" setup_nodejs +PG_VERSION="16" setup_postgresql +PG_DB_NAME="papermark" PG_DB_USER="papermark" setup_postgresql_db + +fetch_and_deploy_gh_release "papermark" "mfts/papermark" "tarball" + +msg_info "Setting up ${APP}" +cd /opt/papermark +cat </opt/papermark/.env +DATABASE_URL=postgresql://${PG_DB_USER}:${PG_DB_PASS}@127.0.0.1:5432/${PG_DB_NAME} +NEXTAUTH_SECRET=$(openssl rand -base64 32) +NEXTAUTH_URL=http://${LOCAL_IP}:3000 +NEXT_PUBLIC_BASE_URL=http://${LOCAL_IP}:3000 +NODE_ENV=production +EOF +$STD npm install +$STD npx prisma generate +$STD npx prisma migrate deploy +$STD npm run build +msg_ok "Set up ${APP}" + +msg_info "Creating Service" +cat </etc/systemd/system/papermark.service +[Unit] +Description=Papermark Document Sharing +After=network.target postgresql.service + +[Service] +Type=simple +User=root +WorkingDirectory=/opt/papermark +EnvironmentFile=/opt/papermark/.env +ExecStart=/usr/bin/npm start +Restart=on-failure +RestartSec=5 + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now papermark +msg_ok "Created Service" + +motd_ssh +customize +cleanup_lxc diff --git a/install/rss-bridge-install.sh b/install/rss-bridge-install.sh new file mode 100644 index 00000000..718a2f2f --- /dev/null +++ b/install/rss-bridge-install.sh @@ -0,0 +1,50 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE +# Source: https://rss-bridge.org/ + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt install -y caddy +msg_ok "Installed Dependencies" + +PHP_VERSION="8.3" PHP_FPM="YES" PHP_MODULES="mbstring,simplexml,curl,intl,xml" setup_php +setup_composer + +fetch_and_deploy_gh_release "rss-bridge" "RSS-Bridge/rss-bridge" "tarball" + +msg_info "Setting up ${APP}" +cd /opt/rss-bridge +$STD composer install --no-dev --optimize-autoloader +cp config.default.ini.php config.ini.php +chown -R www-data:www-data /opt/rss-bridge +msg_ok "Set up ${APP}" + +msg_info "Configuring Caddy" +PHP_VER=$(php -r 'echo PHP_MAJOR_VERSION . "." . PHP_MINOR_VERSION;') +cat </etc/caddy/Caddyfile +:80 { + root * /opt/rss-bridge + php_fastcgi unix//run/php/php${PHP_VER}-fpm.sock + file_server + encode gzip +} +EOF +usermod -aG www-data caddy +msg_ok "Configured Caddy" + +systemctl enable -q --now php${PHP_VER}-fpm +systemctl restart caddy + +motd_ssh +customize +cleanup_lxc diff --git a/install/solidtime-install.sh b/install/solidtime-install.sh new file mode 100644 index 00000000..14a9163f --- /dev/null +++ b/install/solidtime-install.sh @@ -0,0 +1,69 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE +# Source: https://www.solidtime.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 install -y caddy +msg_ok "Installed Dependencies" + +PHP_VERSION="8.3" PHP_FPM="YES" PHP_MODULES="bcmath,gd,intl,xml,zip,pdo_pgsql,redis,mbstring,curl" setup_php +setup_composer +NODE_VERSION="22" setup_nodejs +PG_VERSION="16" setup_postgresql +PG_DB_NAME="solidtime" PG_DB_USER="solidtime" setup_postgresql_db + +fetch_and_deploy_gh_release "solidtime" "solidtime-io/solidtime" "tarball" + +msg_info "Setting up ${APP}" +cd /opt/solidtime +cp .env.example .env +APP_KEY=$($STD php artisan key:generate --show) +sed -i "s|^APP_KEY=.*|APP_KEY=${APP_KEY}|" .env +sed -i "s|^APP_ENV=.*|APP_ENV=production|" .env +sed -i "s|^APP_DEBUG=.*|APP_DEBUG=false|" .env +sed -i "s|^APP_URL=.*|APP_URL=http://${LOCAL_IP}|" .env +sed -i "s|^DB_CONNECTION=.*|DB_CONNECTION=pgsql|" .env +sed -i "s|^DB_HOST=.*|DB_HOST=127.0.0.1|" .env +sed -i "s|^DB_PORT=.*|DB_PORT=5432|" .env +sed -i "s|^DB_DATABASE=.*|DB_DATABASE=${PG_DB_NAME}|" .env +sed -i "s|^DB_USERNAME=.*|DB_USERNAME=${PG_DB_USER}|" .env +sed -i "s|^DB_PASSWORD=.*|DB_PASSWORD=${PG_DB_PASS}|" .env +$STD composer install --no-dev --optimize-autoloader +$STD npm install +$STD npm run build +mkdir -p storage/framework/{cache,sessions,views} storage/logs bootstrap/cache +chown -R www-data:www-data /opt/solidtime +chmod -R 775 storage bootstrap/cache +$STD php artisan migrate --force +msg_ok "Set up ${APP}" + +msg_info "Configuring Caddy" +PHP_VER=$(php -r 'echo PHP_MAJOR_VERSION . "." . PHP_MINOR_VERSION;') +cat </etc/caddy/Caddyfile +:80 { + root * /opt/solidtime/public + php_fastcgi unix//run/php/php${PHP_VER}-fpm.sock + file_server + encode gzip +} +EOF +usermod -aG www-data caddy +msg_ok "Configured Caddy" + +systemctl enable -q --now php${PHP_VER}-fpm +systemctl restart caddy + +motd_ssh +customize +cleanup_lxc diff --git a/install/whodb-install.sh b/install/whodb-install.sh new file mode 100644 index 00000000..46d204c2 --- /dev/null +++ b/install/whodb-install.sh @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE +# Source: https://whodb.com/ + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +fetch_and_deploy_gh_release "whodb" "clidey/whodb" "singlefile" "latest" "/opt/whodb" "whodb-*-linux-amd64" + +msg_info "Creating Service" +cat </etc/systemd/system/whodb.service +[Unit] +Description=WhoDB Database Management +After=network.target + +[Service] +Type=simple +User=root +WorkingDirectory=/opt/whodb +ExecStart=/opt/whodb/whodb +Restart=on-failure +RestartSec=5 + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now whodb +msg_ok "Created Service" + +motd_ssh +customize +cleanup_lxc diff --git a/json/akaunting.json b/json/akaunting.json new file mode 100644 index 00000000..b37d703f --- /dev/null +++ b/json/akaunting.json @@ -0,0 +1,40 @@ +{ + "name": "Akaunting", + "slug": "akaunting", + "categories": [ + 23 + ], + "date_created": "2026-07-13", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 80, + "documentation": "https://akaunting.com/hc/docs", + "website": "https://akaunting.com/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/akaunting.webp", + "config_path": "/opt/akaunting/.env", + "description": "Akaunting is a free, open-source online accounting software designed for small businesses and freelancers, featuring invoicing, expense tracking, and financial reporting.", + "install_methods": [ + { + "type": "default", + "script": "ct/akaunting.sh", + "resources": { + "cpu": 2, + "ram": 2048, + "hdd": 8, + "os": "Debian", + "version": "13" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "Complete the setup wizard via the web interface on first access.", + "type": "info" + } + ] +} \ No newline at end of file diff --git a/json/blinko.json b/json/blinko.json new file mode 100644 index 00000000..13b46819 --- /dev/null +++ b/json/blinko.json @@ -0,0 +1,40 @@ +{ + "name": "Blinko", + "slug": "blinko", + "categories": [ + 12 + ], + "date_created": "2026-07-13", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 1111, + "documentation": "https://docs.blinko.space/", + "website": "https://blinko.space/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/blinko.webp", + "config_path": "/opt/blinko/.env", + "description": "Blinko is an AI-powered card note-taking tool designed for capturing and organizing fleeting thoughts with natural language search powered by RAG technology.", + "install_methods": [ + { + "type": "default", + "script": "ct/blinko.sh", + "resources": { + "cpu": 2, + "ram": 2048, + "hdd": 8, + "os": "Debian", + "version": "13" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "Create your account on first access via the web interface.", + "type": "info" + } + ] +} \ No newline at end of file diff --git a/json/certimate.json b/json/certimate.json new file mode 100644 index 00000000..be4c4742 --- /dev/null +++ b/json/certimate.json @@ -0,0 +1,40 @@ +{ + "name": "Certimate", + "slug": "certimate", + "categories": [ + 6 + ], + "date_created": "2026-07-13", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 8090, + "documentation": "https://docs.certimate.me/", + "website": "https://certimate.me/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/certimate.webp", + "config_path": "", + "description": "Certimate is an open-source SSL certificate management tool that automates the application, deployment, and renewal of SSL certificates, supporting integration with various cloud providers and deployment targets.", + "install_methods": [ + { + "type": "default", + "script": "ct/certimate.sh", + "resources": { + "cpu": 1, + "ram": 256, + "hdd": 2, + "os": "Debian", + "version": "13" + } + } + ], + "default_credentials": { + "username": "admin@certimate.fun", + "password": "1234567890" + }, + "notes": [ + { + "text": "Change the default password after first login!", + "type": "warning" + } + ] +} \ No newline at end of file diff --git a/json/dagu.json b/json/dagu.json new file mode 100644 index 00000000..213ddb32 --- /dev/null +++ b/json/dagu.json @@ -0,0 +1,35 @@ +{ + "name": "Dagu", + "slug": "dagu", + "categories": [ + 19 + ], + "date_created": "2026-07-13", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 8080, + "documentation": "https://docs.dagu.sh/", + "website": "https://dagu.sh/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/dagu.webp", + "config_path": "", + "description": "Dagu is a powerful, developer-friendly workflow engine that allows you to define DAGs (Directed Acyclic Graphs) in a simple YAML format for scheduling and running complex job dependencies.", + "install_methods": [ + { + "type": "default", + "script": "ct/dagu.sh", + "resources": { + "cpu": 1, + "ram": 512, + "hdd": 4, + "os": "Debian", + "version": "13" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [] +} \ No newline at end of file diff --git a/json/gogs.json b/json/gogs.json new file mode 100644 index 00000000..280ffadc --- /dev/null +++ b/json/gogs.json @@ -0,0 +1,40 @@ +{ + "name": "Gogs", + "slug": "gogs", + "categories": [ + 20 + ], + "date_created": "2026-07-13", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 3000, + "documentation": "https://gogs.io/docs", + "website": "https://gogs.io/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/gogs.webp", + "config_path": "/opt/gogs/custom/conf/app.ini", + "description": "Gogs is a painless self-hosted Git service written in Go, designed to be the easiest, fastest, and most lightweight way to set up a self-hosted Git service.", + "install_methods": [ + { + "type": "default", + "script": "ct/gogs.sh", + "resources": { + "cpu": 2, + "ram": 1024, + "hdd": 8, + "os": "Debian", + "version": "13" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "Complete the initial setup via the web installer on first access.", + "type": "info" + } + ] +} \ No newline at end of file diff --git a/json/invoiceshelf.json b/json/invoiceshelf.json new file mode 100644 index 00000000..68fb1fe0 --- /dev/null +++ b/json/invoiceshelf.json @@ -0,0 +1,40 @@ +{ + "name": "InvoiceShelf", + "slug": "invoiceshelf", + "categories": [ + 23 + ], + "date_created": "2026-07-13", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 80, + "documentation": "https://docs.invoiceshelf.com/", + "website": "https://invoiceshelf.com/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/invoiceshelf.webp", + "config_path": "/opt/invoiceshelf/.env", + "description": "InvoiceShelf is an open-source web and mobile app that helps you track expenses, payments and create professional invoices and estimates.", + "install_methods": [ + { + "type": "default", + "script": "ct/invoiceshelf.sh", + "resources": { + "cpu": 2, + "ram": 1024, + "hdd": 4, + "os": "Debian", + "version": "13" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "Complete the initial setup wizard via the web interface on first access.", + "type": "info" + } + ] +} \ No newline at end of file diff --git a/json/matomo.json b/json/matomo.json new file mode 100644 index 00000000..21657e91 --- /dev/null +++ b/json/matomo.json @@ -0,0 +1,40 @@ +{ + "name": "Matomo", + "slug": "matomo", + "categories": [ + 9 + ], + "date_created": "2026-07-13", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 80, + "documentation": "https://matomo.org/docs/", + "website": "https://matomo.org/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/matomo.webp", + "config_path": "/opt/matomo/config/config.ini.php", + "description": "Matomo is the leading free and open-source web analytics platform, providing a privacy-respecting alternative to Google Analytics with full data ownership.", + "install_methods": [ + { + "type": "default", + "script": "ct/matomo.sh", + "resources": { + "cpu": 2, + "ram": 2048, + "hdd": 16, + "os": "Debian", + "version": "13" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "Complete the setup wizard via the web interface on first access. Database credentials are stored in /opt/matomo/.mariadb-creds.", + "type": "info" + } + ] +} \ No newline at end of file diff --git a/json/papermark.json b/json/papermark.json new file mode 100644 index 00000000..9ca2c559 --- /dev/null +++ b/json/papermark.json @@ -0,0 +1,40 @@ +{ + "name": "Papermark", + "slug": "papermark", + "categories": [ + 12 + ], + "date_created": "2026-07-13", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 3000, + "documentation": "https://www.papermark.com/docs", + "website": "https://www.papermark.com/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/papermark.webp", + "config_path": "/opt/papermark/.env", + "description": "Papermark is an open-source document sharing alternative to DocSend with built-in analytics, custom domains, and secure shareable links.", + "install_methods": [ + { + "type": "default", + "script": "ct/papermark.sh", + "resources": { + "cpu": 2, + "ram": 2048, + "hdd": 8, + "os": "Debian", + "version": "13" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "Requires external blob storage (S3 or compatible) and email service (Resend) configured in .env for full functionality.", + "type": "warning" + } + ] +} \ No newline at end of file diff --git a/json/rss-bridge.json b/json/rss-bridge.json new file mode 100644 index 00000000..57c159b0 --- /dev/null +++ b/json/rss-bridge.json @@ -0,0 +1,35 @@ +{ + "name": "RSS-Bridge", + "slug": "rss-bridge", + "categories": [ + 0 + ], + "date_created": "2026-07-13", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 80, + "documentation": "https://rss-bridge.github.io/rss-bridge/", + "website": "https://rss-bridge.org/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/rss-bridge.webp", + "config_path": "/opt/rss-bridge/config.ini.php", + "description": "RSS-Bridge is a PHP web application that generates web feeds for websites that don't have one, supporting over 400 bridges for various platforms and services.", + "install_methods": [ + { + "type": "default", + "script": "ct/rss-bridge.sh", + "resources": { + "cpu": 1, + "ram": 512, + "hdd": 2, + "os": "Debian", + "version": "13" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [] +} \ No newline at end of file diff --git a/json/solidtime.json b/json/solidtime.json new file mode 100644 index 00000000..a5a65dc4 --- /dev/null +++ b/json/solidtime.json @@ -0,0 +1,40 @@ +{ + "name": "SolidTime", + "slug": "solidtime", + "categories": [ + 25 + ], + "date_created": "2026-07-13", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 80, + "documentation": "https://docs.solidtime.io/", + "website": "https://www.solidtime.io/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/solidtime.webp", + "config_path": "/opt/solidtime/.env", + "description": "SolidTime is a modern open-source time tracking application for freelancers and agencies, featuring project management, task tracking, billable rates, and multiple organizations.", + "install_methods": [ + { + "type": "default", + "script": "ct/solidtime.sh", + "resources": { + "cpu": 2, + "ram": 2048, + "hdd": 8, + "os": "Debian", + "version": "13" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "Create your first account by registering via the web interface.", + "type": "info" + } + ] +} \ No newline at end of file diff --git a/json/whodb.json b/json/whodb.json new file mode 100644 index 00000000..6f6336d9 --- /dev/null +++ b/json/whodb.json @@ -0,0 +1,40 @@ +{ + "name": "WhoDB", + "slug": "whodb", + "categories": [ + 8 + ], + "date_created": "2026-04-13", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 8080, + "documentation": "https://docs.whodb.com/", + "website": "https://whodb.com/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/whodb.webp", + "config_path": "", + "description": "WhoDB is a lightweight next-gen database management tool built with Go and React, supporting PostgreSQL, MySQL, SQLite, MongoDB, Redis, MariaDB, ElasticSearch, and ClickHouse with AI-powered natural language queries.", + "install_methods": [ + { + "type": "default", + "script": "ct/whodb.sh", + "resources": { + "cpu": 1, + "ram": 512, + "hdd": 2, + "os": "Debian", + "version": "13" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "WhoDB connects to external databases — enter your database credentials on the login page.", + "type": "info" + } + ] +} \ No newline at end of file