ProxmoxVE/ct/calibre-web.sh

143 lines
3.9 KiB
Bash
Raw Normal View History

2024-04-20 07:17:37 +00:00
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
2024-04-20 07:17:37 +00:00
# Copyright (c) 2021-2024 tteck
2024-12-06 14:19:58 +00:00
# Author: tteck (tteckster) | Co-Author: remz1337
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/janeczku/calibre-web
2024-04-20 07:17:37 +00:00
2024-12-06 14:19:58 +00:00
# App Default Values
2024-04-20 07:38:40 +00:00
APP="Calibre-Web"
2024-12-06 14:19:58 +00:00
TAGS="eBook"
2024-04-20 07:17:37 +00:00
var_cpu="2"
var_ram="2048"
2024-12-06 14:19:58 +00:00
var_disk="4"
2024-04-20 07:17:37 +00:00
var_os="debian"
var_version="12"
2024-12-06 14:19:58 +00:00
var_unprivileged="1"
# App Output & Base Settings
header_info "$APP"
base_settings
# Core
2024-04-20 07:17:37 +00:00
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
2024-04-20 07:17:37 +00:00
if [[ ! -f /etc/systemd/system/cps.service ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
2024-11-25 23:45:45 +00:00
msg_info "Stopping ${APP}"
2024-04-20 07:17:37 +00:00
systemctl stop cps
2024-11-25 23:45:45 +00:00
msg_ok "Stopped ${APP}"
msg_info "Updating ${APP}"
2024-04-20 07:17:37 +00:00
cd /opt/kepubify
2024-11-25 23:45:45 +00:00
rm -rf kepubify-linux-64bit
curl -fsSLO https://github.com/pgaskin/kepubify/releases/latest/download/kepubify-linux-64bit
2024-04-20 07:17:37 +00:00
chmod +x kepubify-linux-64bit
2024-12-06 14:19:58 +00:00
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)
2024-04-20 07:17:37 +00:00
if [ -f "/opt/calibre-web/options.txt" ]; then
cps_options="$(cat /opt/calibre-web/options.txt)"
2024-12-06 14:19:58 +00:00
IFS=',' read -ra ADDR <<<"$cps_options"
2024-04-20 07:17:37 +00:00
for i in "${ADDR[@]}"; do
2024-12-06 14:19:58 +00:00
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))
2024-04-20 07:17:37 +00:00
menu_array[$array_index]=ON
done
fi
2024-12-06 14:19:58 +00:00
if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID >/dev/null; then kill $SPINNER_PID >/dev/null; fi
2024-04-20 07:17:37 +00:00
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=()
2024-04-20 07:17:37 +00:00
if [ ! -z "$CHOICES" ]; then
for CHOICE in $CHOICES; do
case "$CHOICE" in
"1")
2024-12-06 14:19:58 +00:00
options+=(gdrive)
2024-04-20 07:17:37 +00:00
;;
"2")
2024-12-06 14:19:58 +00:00
options+=(gmail)
2024-04-20 07:17:37 +00:00
;;
"3")
2024-12-06 14:19:58 +00:00
options+=(goodreads)
2024-04-20 07:17:37 +00:00
;;
"4")
2024-12-06 14:19:58 +00:00
options+=(ldap)
2024-04-20 07:17:37 +00:00
apt-get install -qqy libldap2-dev libsasl2-dev
;;
"5")
2024-12-06 14:19:58 +00:00
options+=(oauth)
2024-04-20 07:17:37 +00:00
;;
"6")
2024-12-06 14:19:58 +00:00
options+=(metadata)
2024-04-20 07:17:37 +00:00
;;
"7")
2024-12-06 14:19:58 +00:00
options+=(comics)
2024-04-20 07:17:37 +00:00
;;
"8")
2024-12-06 14:19:58 +00:00
options+=(kobo)
2024-04-20 07:17:37 +00:00
;;
*)
echo "Unsupported item $CHOICE!" >&2
exit 1
;;
esac
done
fi
2024-11-25 23:45:45 +00:00
if [ ${#options[@]} -gt 0 ]; then
2024-12-06 14:19:58 +00:00
cps_options=$(
IFS=,
echo "${options[*]}"
)
echo $cps_options >/opt/calibre-web/options.txt
2024-11-25 23:45:45 +00:00
pip install --upgrade calibreweb[$cps_options] &>/dev/null
2024-04-20 07:17:37 +00:00
else
2024-11-25 23:45:45 +00:00
rm -rf /opt/calibre-web/options.txt
pip install --upgrade calibreweb &>/dev/null
2024-04-20 07:17:37 +00:00
fi
2024-12-06 14:19:58 +00:00
2024-11-25 23:45:45 +00:00
msg_info "Starting ${APP}"
2024-04-20 07:17:37 +00:00
systemctl start cps
2024-11-25 23:45:45 +00:00
msg_ok "Started ${APP}"
msg_ok "Updated Successfully"
2024-04-20 07:17:37 +00:00
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
2024-12-06 14:19:58 +00:00
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}"