#!/usr/bin/env bash # Copyright (c) 2021-2026 community-scripts ORG # Author: vhsdream # License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE # Source: https://github.com/calibrain/shelfmark 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 \ unrar-free ln -sf /usr/bin/unrar-free /usr/bin/unrar msg_ok "Installed Dependencies" NODE_VERSION="22" setup_nodejs PYTHON_VERSION="3.12" setup_uv fetch_and_deploy_gh_release "shelfmark" "calibrain/shelfmark" "tarball" "latest" "/opt/shelfmark" RELEASE_VERSION=$(cat "$HOME/.shelfmark") read -r -p "${TAB3}Install FlareSolverr? Choose N|n if you have an external instance y/N " fs if [[ ${fs,,} =~ ^(y|Y|yes)$ ]]; then fetch_and_deploy_gh_release "flaresolverr" "FlareSolverr/FlareSolverr" "prebuild" "latest" "/opt/flaresolverr" "flaresolverr_linux_x64.tar.gz" msg_info "Installing FlareSolverr" $STD apt install -y xvfb setup_deb822_repo \ "google-chrome" \ "https://dl.google.com/linux/linux_signing_key.pub" \ "https://dl.google.com/linux/chrome/deb/" \ "stable" $STD apt update $STD apt install -y google-chrome-stable # remove google-chrome.list added by google-chrome-stable rm /etc/apt/sources.list.d/google-chrome.list cat </etc/systemd/system/flaresolverr.service [Unit] Description=FlareSolverr After=network.target [Service] SyslogIdentifier=flaresolverr Restart=always RestartSec=5 Type=simple Environment="LOG_LEVEL=info" Environment="CAPTCHA_SOLVER=none" WorkingDirectory=/opt/flaresolverr ExecStart=/opt/flaresolverr/flaresolverr TimeoutStopSec=30 [Install] WantedBy=multi-user.target EOF systemctl enable -q --now flaresolverr msg_ok "Installed FlareSolverr" fi msg_info "Building Shelfmark frontend" cd /opt/shelfmark/src/frontend $STD npm ci $STD npm run build mv /opt/shelfmark/src/frontend/dist /opt/shelfmark/frontend-dist msg_ok "Built Shelfmark frontend" msg_info "Configuring Shelfmark" cd /opt/shelfmark $STD uv venv ./venv $STD source ./venv/bin/activate $STD uv pip install -r requirements-base.txt mkdir -p {/var/log/shelfmark,/tmp/shelfmark,/etc/shelfmark} cat </etc/shelfmark/.env DOCKERMODE=false CONFIG_DIR=/etc/shelfmark TMP_DIR=/tmp/shelfmark ENABLE_LOGGING=true FLASK_HOST=0.0.0.0 FLASK_PORT=8084 RELEASE_VERSION=$RELEASE_VERSION # SESSION_COOKIES_SECURE=true # CWA_DB_PATH= # USE_CF_BYPASS=true # USING_EXTERNAL_BYPASSER=true # EXT_BYPASSER_URL= # EXT_BYPASSER_PATH= EOF msg_ok "Configured Shelfmark" msg_info "Creating Service and start script" cat </etc/systemd/system/shelfmark.service [Unit] Description=Shelfmark server After=network.target [Service] Type=simple WorkingDirectory=/opt/shelfmark EnvironmentFile=/etc/shelfmark/.env ExecStart=/usr/bin/bash /opt/shelfmark/start.sh Restart=always RestartSec=10 [Install] WantedBy=multi-user.target EOF cat </opt/shelfmark/start.sh #!/usr/bin/env bash source /opt/shelfmark/venv/bin/activate set -a source /etc/shelfmark/.env set +a gunicorn --worker-class geventwebsocket.gunicorn.workers.GeventWebSocketWorker --workers 1 -t 300 -b 0.0.0.0:8084 shelfmark.main:app EOF chmod +x /opt/shelfmark/start.sh systemctl enable -q --now shelfmark msg_ok "Created Services and start script" motd_ssh customize cleanup_lxc