Files
pyShelf/install.sh

69 lines
2.1 KiB
Bash
Executable File
Vendored

#!/bin/env bash
cd /tmp/
git clone https://github.com/th3r00t/pyShelf.git
cd /tmp/pyShelf/
# make home dir for pyshelf user if it doesn't exist
# Ensure the correct branch is checked out before installing dependencies
git fetch origin
# git checkout 0.8.0--dev
# if on arch linux, install python3-uv
if [ -f /etc/arch-release ]; then
# create pyshelf system user if it doesn't exist
if ! id -u pyshelf >/dev/null 2>&1; then
sudo useradd -r -s /usr/bin/nologin pyshelf
fi
sudo pacman --noconfirm -Syy python python-uv git nodejs npm base-devel --needed
else
# create pyshelf system user if it doesn't exist
echo "Installing dependencies for debian/ubuntu..."
if ! id -u pyshelf >/dev/null 2>&1; then
sudo useradd -r -s /usr/sbin/nologin pyshelf
fi
sudo apt-get update
sudo apt-get install -y git python3 python-is-python3 python3-pip nodejs npm libxml2 build-essential curl
curl -LsSf https://astral.sh/uv/install.sh | env UV_INSTALL_DIR="/usr/local/bin" sh
fi
if [ ! -d /home/pyshelf ]; then
sudo mkdir -p /home/pyshelf
sudo chown pyshelf:pyshelf /home/pyshelf
sudo chmod 755 /home/pyshelf
fi
sudo mkdir /etc/pyShelf
sudo cp -avR . /etc/pyShelf
sudo chown -R pyshelf:pyshelf /etc/pyShelf
cd /etc/pyShelf
sudo uv sync
# sudo mkdir release
cd /etc/pyShelf/src/frontend
echo "Installing frontend dependencies..."
sudo npm install
cd /etc/pyShelf
echo "Building frontend..."
if [ ! -d /etc/pyShelf/release ]; then
sudo mkdir release
fi
echo "Building release..."
sudo ./build.sh
echo "Linking executable..."
sudo ln -s /etc/pyShelf/pyshelf.sh /usr/local/bin/
echo "Installing systemd service..."
if [ -f /usr/lib/systemd/system/pyShelf.service ]; then
sudo rm /usr/lib/systemd/system/pyShelf.service
fi
sudo cp /tmp/pyShelf/pyShelf.service /usr/lib/systemd/system/
echo "Enabling systemd service..."
sudo systemctl daemon-reload
sudo systemctl enable --now pyShelf.service
echo "Installation complete."
echo "You can now access pyShelf on port 8080"
echo "If your books are not at /mnt/books, please edit the config file at \
/etc/pyShelf/config.json and restart the service with \
'sudo systemctl restart pyShelf.service'."