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": [] +}