mirror of https://github.com/tteck/Proxmox
Add scripts for Calibre-web (#2812)
parent
45205da9a6
commit
da964fcacc
2 changed files with 230 additions and 0 deletions
@ -0,0 +1,166 @@ |
||||
#!/usr/bin/env bash |
||||
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func) |
||||
# Copyright (c) 2021-2024 tteck |
||||
# Author: tteck (tteckster) |
||||
# Co-Author: remz1337 |
||||
# License: MIT |
||||
# https://github.com/tteck/Proxmox/raw/main/LICENSE |
||||
|
||||
function header_info { |
||||
clear |
||||
cat <<"EOF" |
||||
______ ___ __ __ |
||||
/ ____/___ _/ (_) /_ ________ _ _____ / /_ |
||||
/ / / __ `/ / / __ \/ ___/ _ \_____| | /| / / _ \/ __ \ |
||||
/ /___/ /_/ / / / /_/ / / / __/_____/ |/ |/ / __/ /_/ / |
||||
\____/\__,_/_/_/_.___/_/ \___/ |__/|__/\___/_.___/ |
||||
|
||||
EOF |
||||
} |
||||
header_info |
||||
echo -e "Loading..." |
||||
APP="Calibre-web" |
||||
var_disk="4" |
||||
var_cpu="2" |
||||
var_ram="2048" |
||||
var_os="debian" |
||||
var_version="12" |
||||
variables |
||||
color |
||||
catch_errors |
||||
|
||||
function default_settings() { |
||||
CT_TYPE="1" |
||||
PW="" |
||||
CT_ID=$NEXTID |
||||
HN=$NSAPP |
||||
DISK_SIZE="$var_disk" |
||||
CORE_COUNT="$var_cpu" |
||||
RAM_SIZE="$var_ram" |
||||
BRG="vmbr0" |
||||
NET="dhcp" |
||||
GATE="" |
||||
APT_CACHER="" |
||||
APT_CACHER_IP="" |
||||
DISABLEIP6="no" |
||||
MTU="" |
||||
SD="" |
||||
NS="" |
||||
MAC="" |
||||
VLAN="" |
||||
SSH="no" |
||||
VERB="no" |
||||
echo_default |
||||
} |
||||
|
||||
function update_script() { |
||||
if [[ ! -f /etc/systemd/system/cps.service ]]; then |
||||
msg_error "No ${APP} Installation Found!" |
||||
exit |
||||
fi |
||||
header_info |
||||
msg_info "Updating $APP LXC" |
||||
systemctl stop cps |
||||
cd /opt/kepubify |
||||
rm kepubify-linux-64bit |
||||
curl -fsSLO https://github.com/pgaskin/kepubify/releases/latest/download/kepubify-linux-64bit &>/dev/null |
||||
chmod +x kepubify-linux-64bit |
||||
rm /opt/calibre-web/metadata.db |
||||
wget https://github.com/janeczku/calibre-web/raw/master/library/metadata.db -P /opt/calibre-web |
||||
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=$! |
||||
if [ ! -z "$CHOICES" ]; then |
||||
declare -a options |
||||
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 [ ! -z "$options" ] && [ ${#options[@]} -gt 0 ]; then |
||||
cps_options=$(IFS=, ; echo "${options[*]}") |
||||
echo $cps_options > /opt/calibre-web/options.txt |
||||
pip install --upgrade calibreweb[$cps_options] |
||||
else |
||||
rm /opt/calibre-web/options.txt 2> /dev/null |
||||
pip install --upgrade calibreweb |
||||
fi |
||||
systemctl start cps |
||||
msg_ok "Updated $APP LXC" |
||||
exit |
||||
} |
||||
|
||||
start |
||||
build_container |
||||
description |
||||
|
||||
msg_info "Setting Container to Normal Resources" |
||||
pct set $CTID -memory 512 |
||||
pct set $CTID -cores 1 |
||||
msg_ok "Set Container to Normal Resources" |
||||
msg_ok "Completed Successfully!\n" |
||||
echo -e "${APP} should be reachable by going to the following URL. |
||||
${BL}http://${IP}:8083${CL} \n" |
@ -0,0 +1,64 @@ |
||||
#!/usr/bin/env bash |
||||
|
||||
# Copyright (c) 2021-2024 tteck |
||||
# Author: tteck (tteckster) |
||||
# Co-Author: remz1337 |
||||
# License: MIT |
||||
# https://github.com/tteck/Proxmox/raw/main/LICENSE |
||||
|
||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" |
||||
color |
||||
verb_ip6 |
||||
catch_errors |
||||
setting_up_container |
||||
network_check |
||||
update_os |
||||
|
||||
msg_info "Installing Dependencies" |
||||
$STD apt-get install -y curl |
||||
$STD apt-get install -y sudo |
||||
$STD apt-get install -y mc |
||||
$STD apt-get install -y python3 python3-pip imagemagick |
||||
msg_ok "Installed Dependencies" |
||||
|
||||
msg_info "Installing calibre-web" |
||||
mkdir -p /opt/kepubify |
||||
cd /opt/kepubify |
||||
curl -fsSLO https://github.com/pgaskin/kepubify/releases/latest/download/kepubify-linux-64bit &>/dev/null |
||||
chmod +x kepubify-linux-64bit |
||||
mkdir -p /opt/calibre-web |
||||
$STD wget https://github.com/janeczku/calibre-web/raw/master/library/metadata.db -P /opt/calibre-web |
||||
$STD pip install calibreweb |
||||
msg_ok "Installed calibre-web" |
||||
|
||||
msg_info "Creating Service" |
||||
service_path="/etc/systemd/system/cps.service" |
||||
echo "[Unit] |
||||
Description=Calibre-Web Server |
||||
After=network.target |
||||
|
||||
[Service] |
||||
Type=simple |
||||
WorkingDirectory=/opt/calibre-web |
||||
ExecStart=/usr/local/bin/cps |
||||
TimeoutStopSec=20 |
||||
KillMode=process |
||||
Restart=on-failure |
||||
|
||||
[Install] |
||||
WantedBy=multi-user.target" >$service_path |
||||
systemctl enable --now -q cps.service |
||||
msg_ok "Created Service" |
||||
|
||||
motd_ssh |
||||
customize |
||||
|
||||
msg_info "Cleaning up" |
||||
$STD apt-get autoremove |
||||
$STD apt-get autoclean |
||||
msg_ok "Cleaned" |
||||
|
||||
echo -e "Default login for Calibre-web: |
||||
user: ${BL}admin${CL} |
||||
password: ${BL}admin123${CL}" |
||||
echo -e "${YW}Run the update script inside the container to install calibre-web optional dependencies (such as ldap or kobo support).${CL}" |
Loading…
Reference in new issue