From 0487d242e2e339e9e7ac74b2844fac4504dd0726 Mon Sep 17 00:00:00 2001 From: tremor021 Date: Sat, 23 May 2026 21:42:14 +0200 Subject: [PATCH] add ezBookkeeping script --- ct/ezbookkeeping.sh | 70 ++++++++++++++++++++++++++++++++ install/ezbookkeeping-install.sh | 49 ++++++++++++++++++++++ json/ezbookkeeping.json | 36 ++++++++++++++++ 3 files changed, 155 insertions(+) create mode 100644 ct/ezbookkeeping.sh create mode 100644 install/ezbookkeeping-install.sh create mode 100644 json/ezbookkeeping.json diff --git a/ct/ezbookkeeping.sh b/ct/ezbookkeeping.sh new file mode 100644 index 00000000..48a40787 --- /dev/null +++ b/ct/ezbookkeeping.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: Slaviša Arežina (tremor021) +# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE +# Source: https://github.com/mayswind/ezbookkeeping + +APP="ezBookkeeping" +var_tags="${var_tags:-}" +var_cpu="${var_cpu:-1}" +var_ram="${var_ram:-1024}" +var_disk="${var_disk:-4}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" +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/ezbookkeeping ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + if check_for_gh_release "ezbookkeeping" "mayswind/ezbookkeeping"; then + msg_info "Stopping Service" + systemctl stop ezbookkeeping + msg_ok "Stopped Service" + + msg_info "Backing up configuration" + mkdir -p /opt/ezbookkeeping-backup + cp /opt/ezbookkeeping/conf/ezbookkeeping.ini /opt/ezbookkeeping-backup/ + cp -r /opt/ezbookkeeping/data /opt/ezbookkeeping-backup/data/ + cp -r /opt/ezbookkeeping/storage /opt/ezbookkeeping-backup/storage/ + msg_ok "Backed up configuration" + + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "ezbookkeeping" "mayswind/ezbookkeeping" "prebuild" "latest" "/opt/ezbookkeeping" "ezbookkeeping-*-linux-amd64.tar.gz" + + msg_info "Restoring configuration" + mv -f /opt/ezbookkeeping-backup/ezbookkeeping.ini /opt/ezbookkeeping/conf/ + mv -f /opt/ezbookkeeping-backup/data /opt/ezbookkeeping/data/ + mv -f /opt/ezbookkeeping-backup/storage /opt/ezbookkeeping/storage/ + rm -rf /opt/ezbookkeeping-backup + msg_ok "Restored configuration" + + msg_info "Starting Service" + systemctl start ezbookkeeping + msg_ok "Started Service" + msg_ok "Updated successfully!" + fi + cleanup_lxc + 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}https://${IP}${CL}" diff --git a/install/ezbookkeeping-install.sh b/install/ezbookkeeping-install.sh new file mode 100644 index 00000000..fdc7e78d --- /dev/null +++ b/install/ezbookkeeping-install.sh @@ -0,0 +1,49 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: Slaviša Arežina (tremor021) +# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE +# Source: https://ezbookkeeping.mayswind.net/ + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +fetch_and_deploy_gh_release "ezbookkeeping" "mayswind/ezbookkeeping" "prebuild" "latest" "/opt/ezbookkeeping" "ezbookkeeping-*-linux-amd64.tar.gz" +create_self_signed_cert + +msg_info "Configuring ezBookkeeping" +SECRET_KEY=$(openssl rand -base64 64 | tr -dc 'a-zA-Z0-9' | head -c50) +sed -i "s/enable_gzip = false/enable_gzip = true/" /opt/ezbookkeeping/conf/ezbookkeeping.ini +sed -i "s/protocol = http/protocol = https/" /opt/ezbookkeeping/conf/ezbookkeeping.ini +sed -i "s/http_port = 8080/http_port = 443/" /opt/ezbookkeeping/conf/ezbookkeeping.ini +sed -i "s/cert_file =/cert_file = \/etc\/ssl\/ezbookkeeping\/ezbookkeeping.crt/" /opt/ezbookkeeping/conf/ezbookkeeping.ini +sed -i "s/cert_key_file =/cert_key_file = \/etc\/ssl\/ezbookkeeping\/ezbookkeeping.key/" /opt/ezbookkeeping/conf/ezbookkeeping.ini +sed -i "s/domain = localhost/domain = ${LOCAL_IP}/" /opt/ezbookkeeping/conf/ezbookkeeping.ini +sed -i "s/secret_key =/secret_key = ${SECRET_KEY}/" /opt/ezbookkeeping/conf/ezbookkeeping.ini +msg_ok "Configured ezBookkeeping" + +msg_info "Creating service" +cat </etc/systemd/system/ezbookkeeping.service +[Unit] +Description=ezBookkeeping Service +After=network.target + +[Service] +WorkingDirectory=/opt/ezbookkeeping +ExecStart=/opt/ezbookkeeping/ezbookkeeping server run +Restart=always + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now ezbookkeeping +msg_ok "Created service" + +motd_ssh +customize +cleanup_lxc diff --git a/json/ezbookkeeping.json b/json/ezbookkeeping.json new file mode 100644 index 00000000..cc149ac5 --- /dev/null +++ b/json/ezbookkeeping.json @@ -0,0 +1,36 @@ +{ + "name": "ezBookkeeping", + "slug": "ezbookkeeping", + "categories": [ + 23 + ], + "date_created": "2026-02-11", + "type": "ct", + "updateable": true, + "privileged": false, + "has_arm": false, + "interface_port": 443, + "documentation": "https://ezbookkeeping.mayswind.net/installation/", + "website": "https://ezbookkeeping.mayswind.net", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/ezbookkeeping.webp", + "description": "ezBookkeeping is a lightweight, self-hosted personal finance app with a user-friendly interface and powerful bookkeeping features. It helps you record daily transactions, import data from various sources, and quickly search and filter your bills. You can analyze historical data using built-in charts or perform custom queries with your own chart dimensions to better understand spending patterns and financial trends.", + "install_methods": [ + { + "type": "default", + "script": "ct/ezbookkeeping.sh", + "config_path": "/opt/ezbookkeeping/conf/ezbookkeeping.ini", + "resources": { + "cpu": 1, + "ram": 512, + "hdd": 2, + "os": "Debian", + "version": "13" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [] +}