Merge pull request #1837 from AminGholizad/submit/koffan

feat: add koffan
This commit is contained in:
Michel Roegl-Brunner
2026-06-01 14:06:00 +02:00
committed by GitHub
4 changed files with 176 additions and 0 deletions

5
ct/headers/koffan Normal file
View File

@@ -0,0 +1,5 @@
__ __ ________
/ //_/___ / __/ __/___ _____
/ ,< / __ \/ /_/ /_/ __ `/ __ \
/ /| / /_/ / __/ __/ /_/ / / / /
/_/ |_\____/_/ /_/ \__,_/_/ /_/

68
ct/koffan.sh Normal file
View File

@@ -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}"

63
install/koffan-install.sh Normal file
View File

@@ -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 <<EOF >/opt/koffan/data/.env
APP_ENV=production
APP_PASSWORD=${PASSWORD}
PORT=3000
DB_PATH=/opt/koffan/data/shopping.db
EOF
cat <<EOF >~/koffan.creds
Password: ${PASSWORD}
EOF
msg_ok "Configured Koffan"
msg_info "Creating systemd service"
cat <<EOF >/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

40
json/koffan.json Normal file
View File

@@ -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"
}
]
}