diff --git a/install.sh b/install.sh index 934ff2f..b9b965a 100755 --- a/install.sh +++ b/install.sh @@ -1,8 +1,9 @@ -#!/bin/bash +#!/bin/env bash cd /tmp/ git clone https://github.com/th3r00t/pyShelf.git cd /tmp/pyShelf/ + # 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 pyshelfA @@ -24,24 +25,38 @@ git checkout 0.8.0--dev-zipapp # if on arch linux, install python3-uv if [ -f /etc/arch-release ]; then sudo pacman --noconfirm -Syy python-uv - sudo mkdir /etc/pyShelf - sudo cp -avR . /etc/pyShelf - cd /etc/pyShelf - sudo uv sync - sudo mkdir release - cd /etc/pyShelf/src/frontend - sudo npm install - cd /etc/pyShelf - 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/ - # sudo -u pyshelf direnv allow else sudo apt-get update sudo apt-get install -y python3-uv python3 python3-pip nodejs npm libxml2 libxslt1-dev zlib1g-dev libjpeg-turbo8-dev build-essential - sudo pip install -r requirements.txt fi + +sudo mkdir /etc/pyShelf +sudo cp -avR . /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 at http://localhost:8000" +echo "If your books are not at /mnt/books, please edit the config file at \ + /etc/pyShelf/config.json" + diff --git a/pyShelf.service b/pyShelf.service new file mode 100644 index 0000000..86cd6a6 --- /dev/null +++ b/pyShelf.service @@ -0,0 +1,10 @@ +[Unit] +Description=pyShelf Ebook Server +After=network.target + +[Service] +ExecStart=/usr/local/bin/pyshelf.sh +Restart=on-failure + +[Install] +WantedBy=multi-user.target