diff --git a/ct/discopanel.sh b/ct/discopanel.sh new file mode 100644 index 000000000..d51999a08 --- /dev/null +++ b/ct/discopanel.sh @@ -0,0 +1,80 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: DragoQC +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://discopanel.app/ + +APP="DiscoPanel" +var_tags="${var_tags:-gaming}" +var_cpu="${var_cpu:-4}" +var_ram="${var_ram:-4096}" +var_disk="${var_disk:-15}" +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/discopanel" ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + setup_docker + + if check_for_gh_release "discopanel" "nickheyer/discopanel"; then + msg_info "Stopping Service" + systemctl stop discopanel + msg_ok "Stopped Service" + + msg_info "Creating Backup" + mkdir -p /opt/discopanel_backup_temp + cp -r /opt/discopanel/data/discopanel.db \ + /opt/discopanel/data/.recovery_key \ + /opt/discopanel_backup_temp/ + if [[ -d /opt/discopanel/data/servers ]]; then + cp -r /opt/discopanel/data/servers /opt/discopanel_backup_temp/ + fi + msg_ok "Created Backup" + + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "discopanel" "nickheyer/discopanel" "tarball" "latest" "/opt/discopanel" + + msg_info "Setting up DiscoPanel" + cd /opt/discopanel/web/discopanel + $STD npm install + $STD npm run build + cd /opt/discopanel + $STD go build -o discopanel cmd/discopanel/main.go + msg_ok "Setup DiscoPanel" + + msg_info "Restoring Data" + mkdir -p /opt/discopanel/data + cp -a /opt/discopanel_backup_temp/. /opt/discopanel/data/ + rm -rf /opt/discopanel_backup_temp + msg_ok "Restored Data" + + msg_info "Starting Service" + systemctl start discopanel + 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}:8080${CL}" diff --git a/frontend/public/json/discopanel.json b/frontend/public/json/discopanel.json new file mode 100644 index 000000000..2265bd3e1 --- /dev/null +++ b/frontend/public/json/discopanel.json @@ -0,0 +1,35 @@ +{ + "name": "DiscoPanel", + "slug": "discopanel", + "categories": [ + 24 + ], + "date_created": "2025-12-10", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 8080, + "documentation": "https://discopanel.app/docs/", + "config_path": "", + "website": "https://discopanel.app/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/discopanel.webp", + "description": "The Minecraft Server Manager That *Actually* Works\nBuilt by someone who was done with bloated panels, endless menus, and tools that break the moment you need them most.\nSpin up servers in minutes, configure your proxy without headaches, and link your own DNS name effortlessly.\nFast setup, clean controls, zero nonsense—just a manager that gets out of your way and lets you play.", + "install_methods": [ + { + "type": "default", + "script": "ct/discopanel.sh", + "resources": { + "cpu": 4, + "ram": 4096, + "hdd": 15, + "os": "Debian", + "version": "13" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [] +} diff --git a/install/discopanel-install.sh b/install/discopanel-install.sh new file mode 100644 index 000000000..266fd20f3 --- /dev/null +++ b/install/discopanel-install.sh @@ -0,0 +1,51 @@ +#!/usr/bin/env bash +# Copyright (c) 2021-2025 community-scripts ORG +# Author: DragoQC +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://discopanel.app/ + +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 +msg_ok "Installed Dependencies" + +NODE_VERSION="22" setup_nodejs +setup_go +fetch_and_deploy_gh_release "discopanel" "nickheyer/discopanel" "tarball" "latest" "/opt/discopanel" +setup_docker + +msg_info "Setting up DiscoPanel" +cd /opt/discopanel/web/discopanel +$STD npm install +$STD npm run build +cd /opt/discopanel +$STD go build -o discopanel cmd/discopanel/main.go +msg_ok "Setup DiscoPanel" + +msg_info "Creating Service" +cat </etc/systemd/system/discopanel.service +[Unit] +Description=DiscoPanel Service +After=network.target + +[Service] +WorkingDirectory=/opt/discopanel +ExecStart=/opt/discopanel/discopanel +Restart=always + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now discopanel +msg_ok "Created Service" + +motd_ssh +customize +cleanup_lxc