refactor: Harmonize scripts and fix Booklore environment variables (#10742)

- apache-tomcat: Migrate to setup_java from tools.func
- apache-tomcat: Add update script with version detection from RELEASE-NOTES
- booklore: Fix environment variables (APP_PATH_CONFIG, APP_BOOKDROP_FOLDER)
- booklore: Remove unused variables (BOOKLORE_BOOKS_PATH, BOOKLORE_PORT)
- booklore: Refactor to use setup_mariadb_db and get_latest_github_release
- booklore: Add migration for old env vars in update script
- booklore: Add Node.js setup in update (was missing)
- booklore: Remove default nginx site to prevent conflicts
- jellystat: Replace custom get_ip() with import_local_ip
- jellystat: Remove unnecessary mkdir and simplify cd command
- jellystat: Use version variables for Node.js and PostgreSQL

Fixes #7499 (Booklore bookdrop issue)
This commit is contained in:
CanbiZ (MickLesk)
2026-01-12 16:50:30 +01:00
committed by GitHub
parent a1b381e920
commit 7e464cfdb0
3 changed files with 39 additions and 41 deletions

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-3}"
var_ram="${var_ram:-3072}" var_ram="${var_ram:-3072}"
var_disk="${var_disk:-7}" var_disk="${var_disk:-7}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -28,15 +28,29 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
setup_mariadb
if check_for_gh_release "booklore" "booklore-app/BookLore"; then if check_for_gh_release "booklore" "booklore-app/BookLore"; then
JAVA_VERSION="21" setup_java
NODE_VERSION="22" setup_nodejs
setup_mariadb
setup_yq
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop booklore systemctl stop booklore
msg_info "Stopped Service" msg_ok "Stopped Service"
msg_info "backup old install" if grep -qE "^BOOKLORE_(DATA_PATH|BOOKDROP_PATH|BOOKS_PATH|PORT)=" /opt/booklore_storage/.env 2>/dev/null; then
msg_info "Migrating old environment variables"
sed -i 's/^BOOKLORE_DATA_PATH=/APP_PATH_CONFIG=/g' /opt/booklore_storage/.env
sed -i 's/^BOOKLORE_BOOKDROP_PATH=/APP_BOOKDROP_FOLDER=/g' /opt/booklore_storage/.env
sed -i '/^BOOKLORE_BOOKS_PATH=/d' /opt/booklore_storage/.env
sed -i '/^BOOKLORE_PORT=/d' /opt/booklore_storage/.env
msg_ok "Migrated old environment variables"
fi
msg_info "Backing up old installation"
mv /opt/booklore /opt/booklore_bak mv /opt/booklore /opt/booklore_bak
msg_ok "backup done" msg_ok "Backed up old installation"
fetch_and_deploy_gh_release "booklore" "booklore-app/BookLore" "tarball" fetch_and_deploy_gh_release "booklore" "booklore-app/BookLore" "tarball"
@@ -46,12 +60,9 @@ function update_script() {
$STD npm run build --configuration=production $STD npm run build --configuration=production
msg_ok "Built Frontend" msg_ok "Built Frontend"
JAVA_VERSION="21" setup_java
setup_yq
msg_info "Building Backend" msg_info "Building Backend"
cd /opt/booklore/booklore-api cd /opt/booklore/booklore-api
APP_VERSION=$(curl -fsSL https://api.github.com/repos/booklore-app/BookLore/releases/latest | yq '.tag_name' | sed 's/^v//') APP_VERSION=$(get_latest_github_release "booklore-app/BookLore")
yq eval ".app.version = \"${APP_VERSION}\"" -i src/main/resources/application.yaml yq eval ".app.version = \"${APP_VERSION}\"" -i src/main/resources/application.yaml
$STD ./gradlew clean build --no-daemon $STD ./gradlew clean build --no-daemon
mkdir -p /opt/booklore/dist mkdir -p /opt/booklore/dist

View File

@@ -23,7 +23,7 @@
"ram": 3072, "ram": 3072,
"hdd": 7, "hdd": 7,
"os": "debian", "os": "debian",
"version": "12" "version": "13"
} }
} }
], ],

View File

@@ -14,30 +14,15 @@ network_check
update_os update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt-get install -y nginx $STD apt install -y nginx
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
fetch_and_deploy_gh_release "booklore" "booklore-app/BookLore" "tarball"
JAVA_VERSION="21" setup_java JAVA_VERSION="21" setup_java
NODE_VERSION="22" setup_nodejs NODE_VERSION="22" setup_nodejs
setup_mariadb setup_mariadb
setup_yq setup_yq
MARIADB_DB_NAME="booklore_db" MARIADB_DB_USER="booklore_user" MARIADB_DB_EXTRA_GRANTS="GRANT SELECT ON \`mysql\`.\`time_zone_name\`" setup_mariadb_db
msg_info "Setting up database" fetch_and_deploy_gh_release "booklore" "booklore-app/BookLore" "tarball"
DB_NAME=booklore_db
DB_USER=booklore_user
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
$STD mariadb -u root -e "CREATE DATABASE $DB_NAME;"
$STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
$STD mariadb -u root -e "GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'localhost';"
$STD mariadb -u root -e "GRANT SELECT ON \`mysql\`.\`time_zone_name\` TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
{
echo "BookLore Database Credentials"
echo "Database: $DB_NAME"
echo "Username: $DB_USER"
echo "Password: $DB_PASS"
} >>~/booklore.creds
msg_ok "Set up database"
msg_info "Building Frontend" msg_info "Building Frontend"
cd /opt/booklore/booklore-ui cd /opt/booklore/booklore-ui
@@ -46,22 +31,22 @@ $STD npm run build --configuration=production
msg_ok "Built Frontend" msg_ok "Built Frontend"
msg_info "Creating Environment" msg_info "Creating Environment"
mkdir -p /opt/booklore_storage{/data,/books,/bookdrop} mkdir -p /opt/booklore_storage/{data,books,bookdrop}
cat <<EOF >/opt/booklore_storage/.env cat <<EOF >/opt/booklore_storage/.env
DATABASE_URL=jdbc:mariadb://localhost:3306/$DB_NAME # Database Configuration
DATABASE_USERNAME=$DB_USER DATABASE_URL=jdbc:mariadb://localhost:3306/${MARIADB_DB_NAME}
DATABASE_PASSWORD=$DB_PASS DATABASE_USERNAME=${MARIADB_DB_USER}
BOOKLORE_PORT=6060 DATABASE_PASSWORD=${MARIADB_DB_PASS}
BOOKLORE_DATA_PATH=/opt/booklore_storage/data # App Configuration (Spring Boot mapping from app.* properties)
BOOKLORE_BOOKS_PATH=/opt/booklore_storage/books APP_PATH_CONFIG=/opt/booklore_storage/data
BOOKLORE_BOOKDROP_PATH=/opt/booklore_storage/bookdrop APP_BOOKDROP_FOLDER=/opt/booklore_storage/bookdrop
EOF EOF
msg_ok "Created Environment" msg_ok "Created Environment"
msg_info "Building Backend" msg_info "Building Backend"
cd /opt/booklore/booklore-api cd /opt/booklore/booklore-api
APP_VERSION=$(curl -fsSL https://api.github.com/repos/booklore-app/BookLore/releases/latest | yq '.tag_name' | sed 's/^v//') APP_VERSION=$(get_latest_github_release "booklore-app/BookLore")
yq eval ".app.version = \"${APP_VERSION}\"" -i src/main/resources/application.yaml yq eval ".app.version = \"${APP_VERSION}\"" -i src/main/resources/application.yaml
$STD ./gradlew clean build --no-daemon $STD ./gradlew clean build --no-daemon
mkdir -p /opt/booklore/dist mkdir -p /opt/booklore/dist
@@ -73,22 +58,24 @@ fi
cp "$JAR_PATH" /opt/booklore/dist/app.jar cp "$JAR_PATH" /opt/booklore/dist/app.jar
msg_ok "Built Backend" msg_ok "Built Backend"
msg_info "Configure Nginx" msg_info "Configuring Nginx"
rm -rf /usr/share/nginx/html rm -rf /usr/share/nginx/html
ln -s /opt/booklore/booklore-ui/dist/booklore/browser /usr/share/nginx/html ln -s /opt/booklore/booklore-ui/dist/booklore/browser /usr/share/nginx/html
rm -f /etc/nginx/sites-enabled/default
cp /opt/booklore/nginx.conf /etc/nginx/nginx.conf cp /opt/booklore/nginx.conf /etc/nginx/nginx.conf
sed -i 's/listen \${BOOKLORE_PORT};/listen 6060;/' /etc/nginx/nginx.conf sed -i 's/listen \${BOOKLORE_PORT};/listen 6060;/' /etc/nginx/nginx.conf
sed -i 's/listen \[::\]:${BOOKLORE_PORT};/listen [::]:6060;/' /etc/nginx/nginx.conf sed -i 's/listen \[::\]:${BOOKLORE_PORT};/listen [::]:6060;/' /etc/nginx/nginx.conf
systemctl restart nginx systemctl restart nginx
msg_ok "Configured Nginx" msg_ok "Configured Nginx"
msg_info "Creating Systemd Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/booklore.service cat <<EOF >/etc/systemd/system/booklore.service
[Unit] [Unit]
Description=BookLore Java Service Description=BookLore Java Service
After=network.target After=network.target mariadb.service
[Service] [Service]
Type=simple
User=root User=root
WorkingDirectory=/opt/booklore/dist WorkingDirectory=/opt/booklore/dist
ExecStart=/usr/bin/java -jar /opt/booklore/dist/app.jar ExecStart=/usr/bin/java -jar /opt/booklore/dist/app.jar
@@ -102,7 +89,7 @@ RestartSec=5
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF
systemctl enable -q --now booklore systemctl enable -q --now booklore
msg_ok "Created BookLore Service" msg_ok "Created Service"
motd_ssh motd_ssh
customize customize