Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New Script: calibre-server #960

Draft
wants to merge 3 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 67 additions & 0 deletions ct/calibre-server.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2024
# Author: thisisjeron
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://calibre-ebook.com

# App Default Values
APP="Calibre-Server"
var_tags="eBook"
var_cpu="2"
var_ram="1024"
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

# Check if installed
if [[ ! -f /etc/systemd/system/calibre-server.service ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi

msg_info "Stopping ${APP}"
systemctl stop calibre-server
msg_ok "Stopped ${APP}"

msg_info "Updating ${APP} container packages"
apt-get update &>/dev/null
apt-get -y upgrade &>/dev/null
msg_ok "Container packages updated"

# Potentially re-run the official calibre script to ensure most recent version
# to keep logic consistent with how other scripts handle updates.
msg_info "Updating Calibre (latest)"
wget -nv -O- https://download.calibre-ebook.com/linux-installer.sh | sh /dev/stdin &>/dev/null

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If possible check if there is a newer version wich needs to be installed. Have a look at the snipeit.sh file for reference.

msg_ok "Updated Calibre"

msg_info "Starting ${APP}"
systemctl start calibre-server
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}:8180${CL}"
58 changes: 58 additions & 0 deletions install/calibre-server-install.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
#!/usr/bin/env bash

# Copyright (c) 2021-2024
# Author: thisisjeron
# License: MIT
# https://github.com/community-scripts/ProxmoxVE/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 imagemagick xvfb libxcomposite1

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
$STD apt-get install -y imagemagick xvfb libxcomposite1
$STD apt-get install -y \
sudo \
curl \
mc \
imagemagick \
xvfb \
libxcomposite1

msg_ok "Installed Dependencies"

msg_info "Installing Calibre (latest)"

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
msg_info "Installing Calibre (latest)"
msg_info "Installing Calibre"

# If your container runs as root, you generally do not need to prefix with `sudo`.
# The official Calibre instructions:
wget -nv -O- https://download.calibre-ebook.com/linux-installer.sh | sh /dev/stdin

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Before Downloading, can you get the Version number somehow? Just so you can check during the update that it is needed. And is this operation truly silent?

msg_ok "Installed Calibre"

msg_info "Creating calibre system user & directories"
useradd -c "Calibre Server" -d /opt/calibre -s /bin/bash -m calibre
mkdir -p /opt/calibre/calibre-library
chown -R calibre:calibre /opt/calibre
msg_ok "Created calibre user & directories"
Comment on lines +24 to +30

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
msg_ok "Installed Calibre"
msg_info "Creating calibre system user & directories"
useradd -c "Calibre Server" -d /opt/calibre -s /bin/bash -m calibre
mkdir -p /opt/calibre/calibre-library
chown -R calibre:calibre /opt/calibre
msg_ok "Created calibre user & directories"
useradd -c "Calibre Server" -d /opt/calibre -s /bin/bash -m calibre
mkdir -p /opt/calibre/calibre-library
chown -R calibre:calibre /opt/calibre
msg_ok "Installed Calibre"


msg_info "Creating systemd service"

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
msg_info "Creating systemd service"
msg_info "Creating Service"

cat <<EOF >/etc/systemd/system/calibre-server.service
[Unit]
Description=Calibre Content Server
After=network.target

[Service]
Type=simple
User=calibre
Group=calibre
ExecStart=/opt/calibre/calibre-server --port=8180 --enable-local-write /opt/calibre/calibre-library
Restart=always

[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now calibre-server.service
msg_ok "Created Service"

motd_ssh
customize

msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

43 changes: 43 additions & 0 deletions json/calibre-server.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
{
"name": "Calibre-Server",
"slug": "calibre-server",
"categories": [
12
],
"date_created": "2024-05-02",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 8180,
"documentation": null,
"website": "https://calibre-ebook.com",
"logo": "https://calibre-ebook.com/resources/icons/calibre_icon.png",
"description": "Calibre content server is usedto manage and serve eBooks over the network.",

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"description": "Calibre content server is usedto manage and serve eBooks over the network.",
"description": "Calibre content server is used to manage and serve eBooks over the network.",

"install_methods": [
{
"type": "default",
"script": "ct/calibre-server.sh",
"resources": {
"cpu": 2,
"ram": 1024,
"hdd": 4,
"os": "debian",
"version": "12"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "By default, the Calibre Server runs on port 8180 with no username/password.",
"type": "info"
},
{
"text": "Use 'calibredb add' from the calibre user or run 'xvfb-run calibredb add ...' if you need to add books while the server is running.",
"type": "info"
}
Comment on lines +38 to +41

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove and write a guide in the disscusion section.

]
}
Loading