#!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) | Co-Author: remz1337 # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/janeczku/calibre-web # App Default Values APP="Calibre-Web" var_tags="eBook" var_cpu="2" var_ram="2048" var_disk="4" var_os="debian" var_version="12" var_unprivileged="1" # App Output & Base Settings header_info "$APP" base_settings # Core variables color catch_errors function update_script() { header_info check_container_storage check_container_resources if [[ ! -f /etc/systemd/system/cps.service ]]; then msg_error "No ${APP} Installation Found!" exit fi msg_info "Stopping ${APP}" systemctl stop cps msg_ok "Stopped ${APP}" msg_info "Updating ${APP}" cd /opt/kepubify rm -rf kepubify-linux-64bit curl -fsSLO https://github.com/pgaskin/kepubify/releases/latest/download/kepubify-linux-64bit chmod +x kepubify-linux-64bit menu_array=("1" "Enables gdrive as storage backend for your ebooks" OFF "2" "Enables sending emails via a googlemail account without enabling insecure apps" OFF "3" "Enables displaying of additional author infos on the authors page" OFF "4" "Enables login via LDAP server" OFF "5" "Enables login via google or github oauth" OFF "6" "Enables extracting of metadata from epub, fb2, pdf files, and also extraction of covers from cbr, cbz, cbt files" OFF "7" "Enables extracting of metadata from cbr, cbz, cbt files" OFF "8" "Enables syncing with your kobo reader" OFF) if [ -f "/opt/calibre-web/options.txt" ]; then cps_options="$(cat /opt/calibre-web/options.txt)" IFS=',' read -ra ADDR <<<"$cps_options" for i in "${ADDR[@]}"; do if [ $i == "gdrive" ]; then line=0 elif [ $i == "gmail" ]; then line=1 elif [ $i == "goodreads" ]; then line=2 elif [ $i == "ldap" ]; then line=3 elif [ $i == "oauth" ]; then line=4 elif [ $i == "metadata" ]; then line=5 elif [ $i == "comics" ]; then line=6 elif [ $i == "kobo" ]; then line=7 fi array_index=$((3 * line + 2)) menu_array[$array_index]=ON done fi if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID >/dev/null; then kill $SPINNER_PID >/dev/null; fi CHOICES=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "CALIBRE-WEB OPTIONS" --separate-output --checklist "Choose Additional Options" 15 125 8 "${menu_array[@]}" 3>&1 1>&2 2>&3) spinner & SPINNER_PID=$! options=() if [ ! -z "$CHOICES" ]; then for CHOICE in $CHOICES; do case "$CHOICE" in "1") options+=(gdrive) ;; "2") options+=(gmail) ;; "3") options+=(goodreads) ;; "4") options+=(ldap) apt-get install -qqy libldap2-dev libsasl2-dev ;; "5") options+=(oauth) ;; "6") options+=(metadata) ;; "7") options+=(comics) ;; "8") options+=(kobo) ;; *) echo "Unsupported item $CHOICE!" >&2 exit 1 ;; esac done fi if [ ${#options[@]} -gt 0 ]; then cps_options=$( IFS=, echo "${options[*]}" ) echo $cps_options >/opt/calibre-web/options.txt pip install --upgrade calibreweb[$cps_options] &>/dev/null else rm -rf /opt/calibre-web/options.txt pip install --upgrade calibreweb &>/dev/null fi msg_info "Starting ${APP}" systemctl start cps msg_ok "Started ${APP}" msg_ok "Updated Successfully" 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}:8083${CL}"