diff --git a/ct/lyrionmusicserver.sh b/ct/lyrionmusicserver.sh deleted file mode 100644 index 392a87c6..00000000 --- a/ct/lyrionmusicserver.sh +++ /dev/null @@ -1,60 +0,0 @@ -#!/usr/bin/env bash -source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/refs/heads/main/misc/build.func) -# Copyright (c) 2021-2025 community-scripts ORG -# Author: Omar Minaya -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://lyrion.org/getting-started/ - -APP="Lyrion Music Server" -var_tags="${var_tags:-media}" -var_cpu="${var_cpu:-1}" -var_ram="${var_ram:-1024}" -var_disk="${var_disk:-3}" -var_os="${var_os:-debian}" -var_version="${var_version:-12}" -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 /lib/systemd/system/lyrionmusicserver.service ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - - DEB_URL=$(curl -s 'https://lyrion.org/getting-started/' | grep -oP ']*href="\K[^"]*amd64\.deb(?="[^>]*>)' | head -n 1) - RELEASE=$(echo "$DEB_URL" | grep -oP 'lyrionmusicserver_\K[0-9.]+(?=_amd64\.deb)') - DEB_FILE="/tmp/lyrionmusicserver_${RELEASE}_amd64.deb" - if [[ ! -f /opt/lyrion_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/lyrion_version.txt)" ]]; then - msg_info "Updating $APP to ${RELEASE}" - curl -fsSL -o "$DEB_FILE" "$DEB_URL" - $STD apt install "$DEB_FILE" -y - systemctl restart lyrion - echo "${RELEASE}" >/opt/${APP}_version.txt - msg_ok "Updated $APP to ${RELEASE}" - - msg_info "Cleaning up" - $STD rm -f "$DEB_FILE" - $STD apt-get -y autoremove - $STD apt-get -y autoclean - msg_ok "Cleaned" - else - msg_ok "$APP is already up to date (${RELEASE})" - fi -} - -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 the web interface at:${CL}" -echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9000${CL}" diff --git a/frontend/public/json/nic-offloading-fix.json b/frontend/public/json/nic-offloading-fix.json deleted file mode 100644 index 7d976e29..00000000 --- a/frontend/public/json/nic-offloading-fix.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "NIC Offloading Fix", - "slug": "nic-offloading-fix", - "categories": [ - 1 - ], - "date_created": "2025-05-25", - "type": "pve", - "updateable": false, - "privileged": false, - "interface_port": null, - "documentation": null, - "config_path": "", - "website": null, - "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/proxmox.webp", - "description": "This script automates the process of disabling network interface card (NIC) offloading features specifically for Intel e1000e network interfaces on Linux systems.", - "install_methods": [ - { - "type": "default", - "script": "tools/pve/nic-offloading-fix.sh", - "resources": { - "cpu": null, - "ram": null, - "hdd": null, - "os": null, - "version": null - } - } - ], - "default_credentials": { - "username": null, - "password": null - }, - "notes": [ - { - "text": "Execute within the Proxmox shell", - "type": "info" - } - ] -} diff --git a/install/alpine-homarr-install.sh b/install/alpine-homarr-install.sh deleted file mode 100644 index 69cabf23..00000000 --- a/install/alpine-homarr-install.sh +++ /dev/null @@ -1,105 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) 2021-2025 community-scripts ORG -# Author: MickLesk (Canbiz) -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://github.com/homarr-labs/homarr - -source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" -color -verb_ip6 -catch_errors -setting_up_container -network_check -update_os - -msg_info "Installing Dependencies" -$STD apk add --no-cache \ - redis \ - nginx \ - ca-certificates \ - openssl \ - jq \ - make \ - g++ \ - gettext \ - libstdc++ \ - libgcc \ - python3 \ - py3-pip -msg_ok "Installed Dependencies" - -NODE_VERSION=$(curl -s https://raw.githubusercontent.com/homarr-labs/homarr/dev/package.json | jq -r '.engines.node | split(">=")[1] | split(".")[0]') -NODE_MODULE="pnpm@$(curl -s https://raw.githubusercontent.com/homarr-labs/homarr/dev/package.json | jq -r '.packageManager | split("@")[1]')" -install_node_and_modules -fetch_and_deploy_gh_release "homarr-labs/homarr" - -msg_info "Installing Homarr" -mkdir -p /opt/homarr_db -touch /opt/homarr_db/db.sqlite -SECRET_ENCRYPTION_KEY="$(openssl rand -hex 32)" -cd /opt/homarr -cat </opt/homarr/.env -DB_DRIVER='better-sqlite3' -DB_DIALECT='sqlite' -SECRET_ENCRYPTION_KEY='${SECRET_ENCRYPTION_KEY}' -DB_URL='/opt/homarr_db/db.sqlite' -TURBO_TELEMETRY_DISABLED=1 -AUTH_PROVIDERS='credentials' -NODE_ENV='production' -EOF - -$STD pnpm install -$STD pnpm build -msg_ok "Installed Homarr" - -msg_info "Copying build and config files" -cp /opt/homarr/apps/nextjs/next.config.ts . -cp /opt/homarr/apps/nextjs/package.json . -cp -r /opt/homarr/packages/db/migrations /opt/homarr_db/migrations -cp -r /opt/homarr/apps/nextjs/.next/standalone/* /opt/homarr -mkdir -p /appdata/redis -cp /opt/homarr/packages/redis/redis.conf /opt/homarr/redis.conf -mkdir -p /etc/nginx/templates -cp /opt/homarr/nginx.conf /etc/nginx/templates/nginx.conf -mkdir -p /opt/homarr/apps/cli -cp /opt/homarr/packages/cli/cli.cjs /opt/homarr/apps/cli/cli.cjs -echo -e '#!/bin/sh\ncd /opt/homarr/apps/cli && node ./cli.cjs "$@"' >/usr/bin/homarr -chmod +x /usr/bin/homarr -mkdir -p /opt/homarr/build -cp ./node_modules/better-sqlite3/build/Release/better_sqlite3.node ./build/better_sqlite3.node -echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" -msg_ok "Finished copying" - -msg_info "Creating run script" -cat <<'EOF' >/opt/run_homarr.sh -#!/bin/sh -set -a -. /opt/homarr/.env -set +a -export DB_DIALECT='sqlite' -export AUTH_SECRET=$(openssl rand -base64 32) -node /opt/homarr_db/migrations/$DB_DIALECT/migrate.cjs /opt/homarr_db/migrations/$DB_DIALECT -for dir in $(find /opt/homarr_db/migrations/migrations -mindepth 1 -maxdepth 1 -type d); do - dirname=$(basename "$dir") - mkdir -p "/opt/homarr_db/migrations/$dirname" - cp -r "$dir"/* "/opt/homarr_db/migrations/$dirname/" 2>/dev/null || true -done -export HOSTNAME=$(ip route get 1.1.1.1 | awk '/src/ { print $7 }') -envsubst '${HOSTNAME}' < /etc/nginx/templates/nginx.conf > /etc/nginx/nginx.conf -nginx -g 'daemon off;' & -redis-server /opt/homarr/redis.conf & -node apps/tasks/tasks.cjs & -node apps/websocket/wssServer.cjs & -node apps/nextjs/server.js & PID=$! -wait $PID -EOF -chmod +x /opt/run_homarr.sh -msg_ok "Created run script" - -motd_ssh -customize - -msg_info "Cleaning up" -rm -rf /opt/v${RELEASE}.zip -msg_ok "Cleaned" diff --git a/install/lyrionmusicserver-install.sh b/install/lyrionmusicserver-install.sh deleted file mode 100644 index 9061c4dd..00000000 --- a/install/lyrionmusicserver-install.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) 2021-2025 community-scripts ORG -# Author: Omar Minaya -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://lyrion.org/getting-started/ - -source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" -color -verb_ip6 -catch_errors -setting_up_container -network_check -update_os - -msg_info "Setup Lyrion Music Server" -DEB_URL=$(curl -fsSL 'https://lyrion.org/getting-started/' | grep -oP ']*href="\K[^"]*amd64\.deb(?="[^>]*>)' | head -n 1) -RELEASE=$(echo "$DEB_URL" | grep -oP 'lyrionmusicserver_\K[0-9.]+(?=_amd64\.deb)') -DEB_FILE="/tmp/lyrionmusicserver_${RELEASE}_amd64.deb" -curl -fsSL -o "$DEB_FILE" "$DEB_URL" -$STD apt install "$DEB_FILE" -y -echo "${RELEASE}" >"/opt/lyrion_version.txt" -msg_ok "Setup Lyrion Music Server v${RELEASE}" - -motd_ssh -customize - -msg_info "Cleaning up" -$STD rm -f "$DEB_FILE" -$STD apt-get -y autoremove -$STD apt-get -y autoclean -msg_ok "Cleaned" diff --git a/tools/pve/nic-offloading-fix.sh b/tools/pve/nic-offloading-fix.sh deleted file mode 100644 index 91a97fbb..00000000 --- a/tools/pve/nic-offloading-fix.sh +++ /dev/null @@ -1,227 +0,0 @@ -#!/usr/bin/env bash - -# Creates a systemd service to disable NIC offloading features for Intel e1000e interfaces -# Author: rcastley -# License: MIT - -YW=$(echo "\033[33m") -YWB=$'\e[93m' -BL=$(echo "\033[36m") -RD=$(echo "\033[01;31m") -BGN=$(echo "\033[4;92m") -GN=$(echo "\033[1;92m") -DGN=$(echo "\033[32m") -CL=$(echo "\033[m") -TAB=" " -CM="${TAB}✔️${TAB}" -CROSS="${TAB}✖️${TAB}" -INFO="${TAB}ℹ️${TAB}${CL}" -WARN="${TAB}⚠️${TAB}${CL}" - -function header_info { - clear - cat <<"EOF" - - _ ____________ ____ __________ ___ ____ _ __ __ - / | / / _/ ____/ / __ \/ __/ __/ /___ ____ _____/ (_)___ ____ _ / __ \(_)________ _/ /_ / /__ _____ - / |/ // // / / / / / /_/ /_/ / __ \/ __ `/ __ / / __ \/ __ `/ / / / / / ___/ __ `/ __ \/ / _ \/ ___/ - / /| // // /___ / /_/ / __/ __/ / /_/ / /_/ / /_/ / / / / / /_/ / / /_/ / (__ ) /_/ / /_/ / / __/ / -/_/ |_/___/\____/ \____/_/ /_/ /_/\____/\__,_/\__,_/_/_/ /_/\__, / /_____/_/____/\__,_/_.___/_/\___/_/ - /____/ - -EOF -} - -header_info - -function msg_info() { echo -e "${INFO} ${YW}${1}...${CL}"; } -function msg_ok() { echo -e "${CM} ${GN}${1}${CL}"; } -function msg_error() { echo -e "${CROSS} ${RD}${1}${CL}"; } -function msg_warn() { echo -e "${WARN} ${YWB}${1}"; } - -# Check for root privileges -if [ "$(id -u)" -ne 0 ]; then - msg_error "Error: This script must be run as root." - exit 1 -fi - -if ! command -v ethtool >/dev/null 2>&1; then - msg_info "Installing ethtool" - apt-get update &>/dev/null - apt-get install -y ethtool &>/dev/null || { msg_error "Failed to install ethtool. Exiting."; exit 1; } - msg_ok "ethtool installed successfully" -fi - -# Get list of network interfaces using Intel e1000e driver -INTERFACES=() -COUNT=0 - -msg_info "Searching for Intel e1000e interfaces" - -for device in /sys/class/net/*; do - interface="$(basename "$device")" # or adjust the rest of the usages below, as mostly you'll use the path anyway - # Skip loopback interface and virtual interfaces - if [[ "$interface" != "lo" ]] && [[ ! "$interface" =~ ^(tap|fwbr|veth|vmbr|bonding_masters) ]]; then - # Check if the interface uses the e1000e driver - driver=$(basename $(readlink -f /sys/class/net/$interface/device/driver 2>/dev/null) 2>/dev/null) - - if [[ "$driver" == "e1000e" ]]; then - # Get MAC address for additional identification - mac=$(cat /sys/class/net/$interface/address 2>/dev/null) - INTERFACES+=("$interface" "Intel e1000e NIC ($mac)") - ((COUNT++)) - fi - fi -done - -# Check if any Intel e1000e interfaces were found -if [ ${#INTERFACES[@]} -eq 0 ]; then - whiptail --title "Error" --msgbox "No Intel e1000e network interfaces found!" 10 60 - msg_error "No Intel e1000e network interfaces found! Exiting." - exit 1 -fi - -msg_ok "Found ${BL}$COUNT${GN} Intel e1000e interfaces" - -# Create a checklist for interface selection with all interfaces initially checked -INTERFACES_CHECKLIST=() -for ((i=0; i<${#INTERFACES[@]}; i+=2)); do - INTERFACES_CHECKLIST+=("${INTERFACES[i]}" "${INTERFACES[i+1]}" "ON") -done - -# Show interface selection checklist -SELECTED_INTERFACES=$(whiptail --backtitle "Intel e1000e NIC Offloading Disabler" --title "Network Interfaces" \ - --separate-output --checklist "Select Intel e1000e network interfaces\n(Space to toggle, Enter to confirm):" 15 80 6 \ - "${INTERFACES_CHECKLIST[@]}" 3>&1 1>&2 2>&3) - -exitstatus=$? -if [ $exitstatus != 0 ]; then - msg_info "User canceled. Exiting." - exit 0 -fi - -# Check if any interfaces were selected -if [ -z "$SELECTED_INTERFACES" ]; then - msg_error "No interfaces selected. Exiting." - exit 0 -fi - -# Convert the selected interfaces into an array -readarray -t INTERFACE_ARRAY <<< "$SELECTED_INTERFACES" - -# Show the number of selected interfaces -INTERFACE_COUNT=${#INTERFACE_ARRAY[@]} - -# Print selected interfaces -for iface in "${INTERFACE_ARRAY[@]}"; do - msg_ok "Selected interface: ${BL}$iface${CL}" -done - -# Ask for confirmation with the list of selected interfaces -CONFIRMATION_MSG="You have selected the following interface(s):\n\n" -for iface in "${INTERFACE_ARRAY[@]}"; do - SPEED=$(cat /sys/class/net/$iface/speed 2>/dev/null) - MAC=$(cat /sys/class/net/$iface/address 2>/dev/null) - CONFIRMATION_MSG+="- $iface (MAC: $MAC, Speed: ${SPEED}Mbps)\n" -done -CONFIRMATION_MSG+="\nThis will create systemd service(s) to disable offloading features.\n\nProceed?" - -if ! whiptail --backtitle "Intel e1000e NIC Offloading Disabler" --title "Confirmation" \ - --yesno "$CONFIRMATION_MSG" 20 80; then - msg_info "User canceled. Exiting." - exit 0 -fi - -# Loop through all selected interfaces and create services for each -for SELECTED_INTERFACE in "${INTERFACE_ARRAY[@]}"; do - # Create service name for this interface - SERVICE_NAME="disable-nic-offload-$SELECTED_INTERFACE.service" - SERVICE_PATH="/etc/systemd/system/$SERVICE_NAME" - - # Create the service file with e1000e specific optimizations - msg_info "Creating systemd service for interface: ${BL}$SELECTED_INTERFACE${YW}" - - # Start with the common part of the service file - cat > "$SERVICE_PATH" << EOF -[Unit] -Description=Disable NIC offloading for Intel e1000e interface $SELECTED_INTERFACE -After=network.target - -[Service] -Type=oneshot -# Disable all offloading features for Intel e1000e -ExecStart=/sbin/ethtool -K $SELECTED_INTERFACE gso off gro off tso off tx off rx off rxvlan off txvlan off sg off -RemainAfterExit=true - -[Install] -WantedBy=multi-user.target -EOF - - # Check if service file was created successfully - if [ ! -f "$SERVICE_PATH" ]; then - whiptail --title "Error" --msgbox "Failed to create service file for $SELECTED_INTERFACE!" 10 50 - msg_error "Failed to create service file for $SELECTED_INTERFACE! Skipping to next interface." - continue - fi - - # Configure this service - { - echo "25"; sleep 0.2 - # Reload systemd to recognize the new service - systemctl daemon-reload - echo "50"; sleep 0.2 - # Start the service - systemctl start "$SERVICE_NAME" - echo "75"; sleep 0.2 - # Enable the service to start on boot - systemctl enable "$SERVICE_NAME" - echo "100"; sleep 0.2 - } | whiptail --backtitle "Intel e1000e NIC Offloading Disabler" --gauge "Configuring service for $SELECTED_INTERFACE..." 10 80 0 - - # Individual service status - if systemctl is-active --quiet "$SERVICE_NAME"; then - SERVICE_STATUS="Active" - else - SERVICE_STATUS="Inactive" - fi - - if systemctl is-enabled --quiet "$SERVICE_NAME"; then - BOOT_STATUS="Enabled" - else - BOOT_STATUS="Disabled" - fi - - # Show individual service results - msg_ok "Service for ${BL}$SELECTED_INTERFACE${GN} created and enabled!" - msg_info "${TAB}Service: ${BL}$SERVICE_NAME${YW}" - msg_info "${TAB}Status: ${BL}$SERVICE_STATUS${YW}" - msg_info "${TAB}Start on boot: ${BL}$BOOT_STATUS${YW}" -done - -# Prepare summary of all interfaces -SUMMARY_MSG="Services created successfully!\n\n" -SUMMARY_MSG+="Configured Interfaces:\n" - -for iface in "${INTERFACE_ARRAY[@]}"; do - SERVICE_NAME="disable-nic-offload-$iface.service" - if systemctl is-active --quiet "$SERVICE_NAME"; then - SVC_STATUS="Active" - else - SVC_STATUS="Inactive" - fi - - if systemctl is-enabled --quiet "$SERVICE_NAME"; then - BOOT_SVC_STATUS="Enabled" - else - BOOT_SVC_STATUS="Disabled" - fi - - SUMMARY_MSG+="- $iface: $SVC_STATUS, Boot: $BOOT_SVC_STATUS\n" -done - -# Show summary results -whiptail --backtitle "Intel e1000e NIC Offloading Disabler" --title "Success" --msgbox "$SUMMARY_MSG" 20 80 - -msg_ok "Intel e1000e optimization complete for ${#INTERFACE_ARRAY[@]} interface(s)!" - -exit 0