diff --git a/ct/headers/koffan b/ct/headers/koffan new file mode 100644 index 00000000..72cc1138 --- /dev/null +++ b/ct/headers/koffan @@ -0,0 +1,5 @@ + __ __ ________ + / //_/___ / __/ __/___ _____ + / ,< / __ \/ /_/ /_/ __ `/ __ \ + / /| / /_/ / __/ __/ /_/ / / / / +/_/ |_\____/_/ /_/ \__,_/_/ /_/ diff --git a/ct/koffan.sh b/ct/koffan.sh new file mode 100644 index 00000000..50766151 --- /dev/null +++ b/ct/koffan.sh @@ -0,0 +1,68 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/AminGholizad/ProxmoxVED/main/misc/build.func) +# Copyright (c) 2021-2026 community-scripts ORG +# Author: (AminGholizad) +# License: MIT | https://github.com/AminGholizad/ProxmoxVED/raw/main/LICENSE +# Source: https://github.com/PanSalut/Koffan + +APP="Koffan" +var_tags="${var_tags:-productivity}" +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_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/koffan/koffan ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + if check_for_gh_release "koffan" "PanSalut/Koffan"; then + msg_info "Stopping Service" + systemctl stop koffan + msg_ok "Stopped Service" + + msg_info "Backing up Data" + cp -r /opt/koffan/data /opt/koffan_data_backup + msg_ok "Backed up Data" + + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "koffan" "PanSalut/Koffan" "tarball" + + msg_info "Rebuilding Koffan" + cd /opt/koffan + go build -o koffan main.go + msg_ok "Rebuild Koffan" + + msg_info "Restoring Data" + cp -r /opt/koffan_data_backup/. /opt/koffan/data/ + rm -rf /opt/koffan_data_backup + msg_ok "Restored Data" + + msg_info "Starting Service" + systemctl start koffan + 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/install/koffan-install.sh b/install/koffan-install.sh new file mode 100644 index 00000000..2b79fddd --- /dev/null +++ b/install/koffan-install.sh @@ -0,0 +1,63 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: (AminGholizad) +# License: MIT | https://github.com/AminGholizad/ProxmoxVED/raw/main/LICENSE +# Source: https://github.com/PanSalut/Koffan + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +ensure_dependencies build-essential +setup_go +msg_ok "Installed Dependencies" + +fetch_and_deploy_gh_release "koffan" "PanSalut/Koffan" "tarball" + +msg_info "Building Koffan" +cd /opt/koffan +go build -o koffan main.go +msg_ok "Built Koffan" + +msg_info "Configuring Koffan" +PASSWORD=$(openssl rand -base64 12) +mkdir /opt/koffan/data +cat </opt/koffan/data/.env +APP_ENV=production +APP_PASSWORD=${PASSWORD} +PORT=3000 +DB_PATH=/opt/koffan/data/shopping.db +EOF + +cat <~/koffan.creds +Password: ${PASSWORD} +EOF +msg_ok "Configured Koffan" + +msg_info "Creating systemd service" +cat </etc/systemd/system/koffan.service +[Unit] +Description=Koffan Service +After=network.target + +[Service] +EnvironmentFile=/opt/koffan/data/.env +WorkingDirectory=/opt/koffan +ExecStart=/opt/koffan/koffan +Restart=always + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now koffan +msg_ok "Created systemd service" + +motd_ssh +customize +cleanup_lxc diff --git a/json/koffan.json b/json/koffan.json new file mode 100644 index 00000000..7a1b2dbb --- /dev/null +++ b/json/koffan.json @@ -0,0 +1,40 @@ +{ + "name": "Koffan", + "slug": "koffan", + "categories": [ + 12 + ], + "date_created": "2026-05-25", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 3000, + "documentation": null, + "website": null, + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/koffan.webp", + "description": "Koffan is a lightweight web application for managing shopping lists, designed for couples and families. It allows real-time synchronization between multiple devices, so everyone knows what to buy and what's already in the cart.\n\nThe app works in any browser on both mobile and desktop. Just one password to log in - no complicated registration required.", + "install_methods": [ + { + "type": "default", + "script": "ct/koffan.sh", + "config_path": "/opt/koffan/data/.env", + "resources": { + "cpu": 1, + "ram": 1024, + "hdd": 4, + "os": "Debian", + "version": "13" + } + } + ], + "default_credentials": { + "username": null, + "password": "shopping123" + }, + "notes": [ + { + "text": "Credentials are saved to `~/koffan.creds`.", + "type": "info" + } + ] +}