diff --git a/ct/headers/wishlist b/ct/headers/wishlist new file mode 100644 index 000000000..9571bf8fe --- /dev/null +++ b/ct/headers/wishlist @@ -0,0 +1,6 @@ + _ ___ __ ___ __ +| | / (_)____/ /_ / (_)____/ /_ +| | /| / / / ___/ __ \/ / / ___/ __/ +| |/ |/ / (__ ) / / / / (__ ) /_ +|__/|__/_/____/_/ /_/_/_/____/\__/ + diff --git a/ct/wishlist.sh b/ct/wishlist.sh new file mode 100644 index 000000000..7ab5807f9 --- /dev/null +++ b/ct/wishlist.sh @@ -0,0 +1,78 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/build.func) +# Copyright (c) 2021-2025 tteck +# Author: Dunky13 +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/cmintey/wishlist + +APP="Wishlist" +var_tags="${var_tags:-sharing}" +var_cpu="${var_cpu:-1}" +var_ram="${var_ram:-1024}" +var_disk="${var_disk:-5}" +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/wishlist ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + NODE_VERSION="24" NODE_MODULE="pnpm" setup_nodejs + + if check_for_gh_release "wishlist" "cmintey/wishlist"; then + msg_info "Stopping Service" + systemctl stop wishlist + msg_ok "Service Stopped" + + cp /opt/wishlist/.env /opt/ + cp -R /opt/wishlist/uploads /opt/ + cp -R /opt/wishlist/data /opt/ + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "wishlist" "cmintey/wishlist" "tarball" + LATEST_APP_VERSION=$(get_latest_github_release "cmintey/wishlist") + + + msg_info "Updating ${APP}" + cd /opt/wishlist || exit + + $STD pnpm install + $STD pnpm svelte-kit sync + $STD pnpm prisma generate + $STD sed -i 's|/usr/src/app/|/opt/wishlist/|g' $(grep -rl '/usr/src/app/' /opt/wishlist) + export VERSION="${LATEST_APP_VERSION}" + export SHA="${LATEST_APP_VERSION}" + $STD pnpm run build + $STD pnpm prune --prod + $STD chmod +x /opt/wishlist/entrypoint.sh + + mv /opt/.env /opt/wishlist/.env + mv /opt/uploads /opt/wishlist/uploads + mv /opt/data /opt/wishlist/data + + msg_ok "Updated ${APP}" + + msg_info "Starting Service" + systemctl start wishlist + 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}:3280${CL}" diff --git a/frontend/public/json/wishlist.json b/frontend/public/json/wishlist.json new file mode 100644 index 000000000..fe802a0cf --- /dev/null +++ b/frontend/public/json/wishlist.json @@ -0,0 +1,33 @@ +{ + "name": "Wishlist", + "slug": "wishlist", + "categories": [0], + "date_created": "2025-12-29", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 3280, + "documentation": null, + "config_path": "/opt/wishlist/.env", + "website": "https://github.com/cmintey/wishlist", + "logo": "https://github.com/cmintey/wishlist/blob/main/static/android-chrome-512x512.png?raw=true", + "description": "Wishlist is a self-hosted wishlist application that you can share with your friends and family. You no longer have to wonder what to get your family for the holidays, simply check their wishlist and claim any available item!", + "install_methods": [ + { + "type": "default", + "script": "ct/wishlist.sh", + "resources": { + "cpu": 1, + "ram": 1024, + "hdd": 5, + "os": "Debian", + "version": "13" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [] +} diff --git a/install/wishlist-install.sh b/install/wishlist-install.sh new file mode 100644 index 000000000..a9f35ddaf --- /dev/null +++ b/install/wishlist-install.sh @@ -0,0 +1,68 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 tteck +# Author: Dunky13 +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/cmintey/wishlist + +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 build-essential python3 openssl git caddy +msg_ok "Installed dependencies" + +NODE_VERSION="24" NODE_MODULE="pnpm" setup_nodejs +fetch_and_deploy_gh_release "wishlist" "cmintey/wishlist" "tarball" +LATEST_APP_VERSION=$(get_latest_github_release "cmintey/wishlist") + +msg_info "Installing Wishlist" +cd /opt/wishlist || exit +cat </opt/wishlist/.env + NODE_ENV=production + BODY_SIZE_LIMIT=5000000 + ORIGIN="http://0.0.0.0:3280" # The URL your users will be connecting to + TOKEN_TIME=72 # hours until signup and password reset tokens expire + DEFAULT_CURRENCY=EUR + MAX_IMAGE_SIZE=5000000 # 5 megabytes +EOF +$STD pnpm install +$STD pnpm svelte-kit sync +$STD pnpm prisma generate +$STD sed -i 's|/usr/src/app/|/opt/wishlist/|g' $(grep -rl '/usr/src/app/' /opt/wishlist) +export VERSION="${LATEST_APP_VERSION}" +export SHA="${LATEST_APP_VERSION}" +$STD pnpm run build +$STD pnpm prune --prod +$STD chmod +x /opt/wishlist/entrypoint.sh +msg_ok "Installed Wishlist" + +mkdir -p /opt/wishlist/uploads +mkdir -p /opt/wishlist/data + +msg_info "Creating Service" +cat </etc/systemd/system/wishlist.service +[Unit] +Description=Wishlist Service +After=network.target + +[Service] +WorkingDirectory=/opt/wishlist +ExecStart=/usr/bin/env sh -c './entrypoint.sh' +Restart=on-failure + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now wishlist +msg_ok "Created Service" + +motd_ssh +customize +cleanup_lxc +echo "Edit /opt/wishlist/.env to customize settings"