diff --git a/.github/workflows/build_push.yml b/.github/workflows/build_push.yml index 4151a1b2..be2dc501 100644 --- a/.github/workflows/build_push.yml +++ b/.github/workflows/build_push.yml @@ -72,8 +72,9 @@ jobs: cd master/scripts ./windows-bundler.sh win32 ./windows-bundler.sh win64 - ./unix-bundler.sh linux-x64 ./debian-packager.sh + ./unix-bundler.sh linux-all + ./unix-bundler.sh linux-x64 ./unix-bundler.sh macOS-x64 ./unix-bundler.sh macOS-arm64 diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index bff15c7e..33543638 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -63,8 +63,9 @@ jobs: cd master/scripts ./windows-bundler.sh win32 ./windows-bundler.sh win64 - ./unix-bundler.sh linux-x64 ./debian-packager.sh + ./unix-bundler.sh linux-all + ./unix-bundler.sh linux-x64 ./unix-bundler.sh macOS-x64 ./unix-bundler.sh macOS-arm64 diff --git a/scripts/debian-packager.sh b/scripts/debian-packager.sh index ca82de65..0d009f96 100755 --- a/scripts/debian-packager.sh +++ b/scripts/debian-packager.sh @@ -23,15 +23,16 @@ mkdir "$srcdir/" cp "$jar" "$srcdir/$pkgname.jar" cp "resources/$pkgname-browser-launcher.sh" "$srcdir/" cp "resources/$pkgname-debug-launcher.sh" "$srcdir/" -cp "resources/$pkgname-electron-launcher-debian.sh" "$srcdir/$pkgname-electron-launcher.sh" +cp "resources/$pkgname-electron-launcher.sh" "$srcdir/" cp "resources/$pkgname.desktop" "$srcdir/" cp "../server/src/main/resources/icon/faviconlogo.png" "$srcdir/$pkgname.png" +cp "resources/systemd"/* "$srcdir/" GZIP=-9 tar -cvzf "$srctgz" "$srcdir/" cp -r "resources/debian" "$srcdir/" -sed -i "s/\${pkgver}/$pkgver/" "$srcdir/debian/changelog" -sed -i "s/\${pkgrel}/$pkgrel/" "$srcdir/debian/changelog" +sed -i "s/\$pkgver/$pkgver/" "$srcdir/debian/changelog" +sed -i "s/\$pkgrel/$pkgrel/" "$srcdir/debian/changelog" # Build mkdir "debuild/" diff --git a/scripts/resources/debian/changelog b/scripts/resources/debian/changelog index 49cc4983..278436e4 100644 --- a/scripts/resources/debian/changelog +++ b/scripts/resources/debian/changelog @@ -1,5 +1,5 @@ -tachidesk-server (${pkgver}-${pkgrel}) unstable; urgency=medium +tachidesk-server ($pkgver-$pkgrel) unstable; urgency=medium * See CHANGELOG.md on https://github.com/Suwayomi/Tachidesk-Server - -- Mahor Foruzesh Fri, 14 Jan 2022 00:00:00 +0000 + -- Mahor1221 Fri, 14 Jan 2022 00:00:00 +0000 diff --git a/scripts/resources/debian/control b/scripts/resources/debian/control old mode 100755 new mode 100644 index 6aba0c91..2c9412f1 --- a/scripts/resources/debian/control +++ b/scripts/resources/debian/control @@ -1,7 +1,7 @@ Source: tachidesk-server Section: web Priority: optional -Maintainer: Mahor Foruzesh +Maintainer: Mahor1221 Build-Depends: debhelper-compat (= 12), dh-exec Standards-Version: 4.5.1 Homepage: https://github.com/Suwayomi/Tachidesk-Server diff --git a/scripts/resources/debian/copyright b/scripts/resources/debian/copyright old mode 100755 new mode 100644 diff --git a/scripts/resources/debian/install b/scripts/resources/debian/install index bf3c8921..dfdc2714 100755 --- a/scripts/resources/debian/install +++ b/scripts/resources/debian/install @@ -1,8 +1,12 @@ #!/usr/bin/dh-exec -tachidesk-server-browser-launcher.sh => usr/bin/tachidesk-server-browser -tachidesk-server-debug-launcher.sh => usr/bin/tachidesk-server-debug -tachidesk-server-electron-launcher.sh => usr/bin/tachidesk-server-electron -tachidesk-server.jar usr/share/java/tachidesk-server/ -tachidesk-server.png usr/share/pixmaps/ -tachidesk-server.desktop usr/share/applications/ +tachidesk-server.jar usr/share/java/tachidesk-server/ +tachidesk-server.png usr/share/pixmaps/ +tachidesk-server.desktop usr/share/applications/ +tachidesk-server.service usr/lib/systemd/system/ +tachidesk-server.sysusers => usr/lib/sysusers.d/tachidesk-server.conf +tachidesk-server.tmpfiles => usr/lib/tmpfiles.d/tachidesk-server.conf +tachidesk-server.conf => etc/tachidesk/server.conf +tachidesk-server-browser-launcher.sh => usr/bin/tachidesk-server-browser +tachidesk-server-debug-launcher.sh => usr/bin/tachidesk-server-debug +tachidesk-server-electron-launcher.sh => usr/bin/tachidesk-server-electron diff --git a/scripts/resources/debian/source/format b/scripts/resources/debian/source/format old mode 100755 new mode 100644 diff --git a/scripts/resources/debian/source/include-binaries b/scripts/resources/debian/source/include-binaries old mode 100755 new mode 100644 diff --git a/scripts/resources/systemd/tachidesk-server.conf b/scripts/resources/systemd/tachidesk-server.conf new file mode 100644 index 00000000..acc64b00 --- /dev/null +++ b/scripts/resources/systemd/tachidesk-server.conf @@ -0,0 +1,5 @@ +TACHIDESK_ROOT_DIR="/var/lib/tachidesk" + +# Extra arguments passed to the java command +# The default value disables the system tray icon, and launching a browser on service start. +JAVA_ARGS=-Dsuwayomi.tachidesk.config.server.initialOpenInBrowserEnabled=false -Dsuwayomi.tachidesk.config.server.systemTrayEnabled=false diff --git a/scripts/resources/systemd/tachidesk-server.service b/scripts/resources/systemd/tachidesk-server.service new file mode 100644 index 00000000..a72f4c49 --- /dev/null +++ b/scripts/resources/systemd/tachidesk-server.service @@ -0,0 +1,31 @@ +[Unit] +Description=A free and open source manga reader server that runs extensions built for Tachiyomi. +Wants=network-online.target +After=network-online.target + +[Service] +Type=simple +User=tachidesk +Group=tachidesk +SyslogIdentifier=tachidesk + +EnvironmentFile=/etc/tachidesk/server.conf +ExecStart=/usr/bin/java $JAVA_ARGS -Dsuwayomi.tachidesk.config.server.rootDir="${TACHIDESK_ROOT_DIR}" -jar /usr/share/java/tachidesk-server/tachidesk-server.jar +Restart=on-failure + +ProtectSystem=full +ProtectHome=true +PrivateTmp=yes +PrivateDevices=yes +ProtectClock=yes +ProtectKernelTunables=yes +ProtectKernelModules=yes +ProtectKernelLogs=yes +ProtectControlGroups=yes +RestrictSUIDSGID=yes +RestrictRealtime=yes +RestrictNamespaces=yes +NoNewPrivileges=yes + +[Install] +WantedBy=multi-user.target diff --git a/scripts/resources/systemd/tachidesk-server.sysusers b/scripts/resources/systemd/tachidesk-server.sysusers new file mode 100644 index 00000000..8a666c24 --- /dev/null +++ b/scripts/resources/systemd/tachidesk-server.sysusers @@ -0,0 +1,2 @@ +#Type Name ID GECOS Home directory Shell +u tachidesk - "Tachidesk Manga Server" /var/lib/tachidesk diff --git a/scripts/resources/systemd/tachidesk-server.tmpfiles b/scripts/resources/systemd/tachidesk-server.tmpfiles new file mode 100644 index 00000000..d967daa8 --- /dev/null +++ b/scripts/resources/systemd/tachidesk-server.tmpfiles @@ -0,0 +1,2 @@ +#Type Path Mode User Group Age Argument +d /var/lib/tachidesk 0755 tachidesk tachidesk diff --git a/scripts/resources/tachidesk-server-debug-launcher.sh b/scripts/resources/tachidesk-server-debug-launcher.sh index dabd62a0..617ed19a 100644 --- a/scripts/resources/tachidesk-server-debug-launcher.sh +++ b/scripts/resources/tachidesk-server-debug-launcher.sh @@ -1,2 +1,4 @@ #!/bin/sh -exec /usr/bin/java -Dsuwayomi.tachidesk.config.server.debugLogsEnabled=true -jar /usr/share/java/tachidesk-server/tachidesk-server.jar +exec /usr/bin/java \ + -Dsuwayomi.tachidesk.config.server.debugLogsEnabled=true \ + -jar /usr/share/java/tachidesk-server/tachidesk-server.jar diff --git a/scripts/resources/tachidesk-server-electron-launcher-debian.sh b/scripts/resources/tachidesk-server-electron-launcher-debian.sh deleted file mode 100644 index c221da9c..00000000 --- a/scripts/resources/tachidesk-server-electron-launcher-debian.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh -if [ ! -f /usr/bin/electron ]; then - echo "Electron executable was not found -In order to run this launcher, you need Electron installed. - -You can install it with these commands: -sudo apt install npm -sudo npm install electron -g" - exit 1 -fi - -exec /usr/bin/java -Dsuwayomi.tachidesk.config.server.webUIInterface=electron -Dsuwayomi.tachidesk.config.server.electronPath=/usr/bin/electron -jar /usr/share/java/tachidesk-server/tachidesk-server.jar diff --git a/scripts/resources/tachidesk-server-electron-launcher.sh b/scripts/resources/tachidesk-server-electron-launcher.sh index 8812f5c7..02bcb379 100644 --- a/scripts/resources/tachidesk-server-electron-launcher.sh +++ b/scripts/resources/tachidesk-server-electron-launcher.sh @@ -1,3 +1,12 @@ #!/bin/sh -exec /usr/bin/java -Dsuwayomi.tachidesk.config.server.webUIInterface=electron -Dsuwayomi.tachidesk.config.server.electronPath=/usr/bin/electron -jar /usr/share/java/tachidesk-server/tachidesk-server.jar +if [ ! -f /usr/bin/electron ]; then + echo "Electron executable was not found! +In order to run this launcher, you need Electron installed." + exit 1 +fi + +exec /usr/bin/java \ + -Dsuwayomi.tachidesk.config.server.webUIInterface=electron \ + -Dsuwayomi.tachidesk.config.server.electronPath=/usr/bin/electron \ + -jar /usr/share/java/tachidesk-server/tachidesk-server.jar diff --git a/scripts/unix-bundler.sh b/scripts/unix-bundler.sh index d92217c6..35995e48 100755 --- a/scripts/unix-bundler.sh +++ b/scripts/unix-bundler.sh @@ -8,80 +8,85 @@ electron_version="v14.0.0" -if [ $1 = "linux-x64" ]; then +arch="$1" +os="$(echo $arch | cut -d '-' -f1)" +if [ "$arch" = "linux-all" ]; then + continue +elif [ "$arch" = "linux-x64" ]; then jre="OpenJDK8U-jre_x64_linux_hotspot_8u302b08.tar.gz" jre_release="jdk8u302-b08" jre_url="https://github.com/adoptium/temurin8-binaries/releases/download/$jre_release/$jre" jre_dir="$jre_release-jre" electron="electron-$electron_version-linux-x64.zip" -elif [ $1 = "macOS-x64" ]; then +elif [ "$arch" = "macOS-x64" ]; then jre="OpenJDK8U-jre_x64_mac_hotspot_8u302b08.tar.gz" jre_release="jdk8u302-b08" jre_url="https://github.com/adoptium/temurin8-binaries/releases/download/$jre_release/$jre" jre_dir="$jre_release-jre" electron="electron-$electron_version-darwin-x64.zip" -elif [ $1 = "macOS-arm64" ]; then +elif [ "$arch" = "macOS-arm64" ]; then jre="zulu8.56.0.23-ca-jre8.0.302-macosx_aarch64.tar.gz" jre_release="zulu8.56.0.23-ca-jre8.0.302-macosx_aarch64" jre_url="https://cdn.azul.com/zulu/bin/$jre" jre_dir="$jre_release/zulu-8.jre" electron="electron-$electron_version-darwin-arm64.zip" else - echo "Unsupported arch value: $1" + echo "Unsupported arch value: $arch" exit 1 fi -arch="$1" -os=$(echo $arch | cut -d '-' -f1) - echo "creating $arch bundle" +jar="$(ls ../server/build/*.jar | tail -n1)" +jar_name="$(echo $jar | cut -d'/' -f4)" +release_name="$(echo $jar_name | sed 's/.jar//')-$arch" +mkdir "$release_name" -jar=$(ls ../server/build/*.jar | tail -n1) -jar_name=$(echo $jar | cut -d'/' -f4) -release_name=$(echo $jar_name | sed 's/.jar//')-$arch +# download jre and electron +if [ "$arch" != "linux-all" ]; then + echo "Dealing with jre..." + if [ ! -f "$jre" ]; then + curl -L "$jre_url" -o "$jre" + fi + tar xvf "$jre" + mv "$jre_dir" "$release_name/jre" -# make release dir -mkdir $release_name - -echo "Dealing with jre..." -if [ ! -f $jre ]; then - curl -L $jre_url -o $jre + echo "Dealing with electron" + if [ ! -f "$electron" ]; then + curl -L "https://github.com/electron/electron/releases/download/$electron_version/$electron" -o "$electron" + fi + unzip "$electron" -d "$release_name/electron" fi -tar xvf $jre -mv $jre_dir $release_name/jre - -echo "Dealing with electron" -if [ ! -f $electron ]; then - curl -L "https://github.com/electron/electron/releases/download/$electron_version/$electron" -o $electron -fi -unzip $electron -d $release_name/electron # copy artifacts -cp $jar $release_name/Tachidesk-Server.jar -if [ $os = linux ]; then - cp "resources/tachidesk-server-browser-launcher.sh" $release_name - cp "resources/tachidesk-server-debug-launcher.sh" $release_name - cp "resources/tachidesk-server-electron-launcher.sh" $release_name -elif [ $os = macOS ]; then - cp "resources/Tachidesk Browser Launcher.command" $release_name - cp "resources/Tachidesk Debug Launcher.command" $release_name - cp "resources/Tachidesk Electron Launcher.command" $release_name +if [ "$os" = "linux" ]; then + cp "$jar" "$release_name/tachidesk-server.jar" + cp "resources/tachidesk-server-browser-launcher.sh" "$release_name" + cp "resources/tachidesk-server-debug-launcher.sh" "$release_name" + cp "resources/tachidesk-server-electron-launcher.sh" "$release_name" + cp "resources/tachidesk-server.desktop" "$release_name" + cp "../server/src/main/resources/icon/faviconlogo.png" "$release_name/tachidesk-server.png" + cp "resources/systemd"/* "$release_name" +elif [ "$os" = "macOS" ]; then + cp "$jar" "$release_name/Tachidesk.jar" + cp "resources/Tachidesk Browser Launcher.command" "$release_name" + cp "resources/Tachidesk Debug Launcher.command" "$release_name" + cp "resources/Tachidesk Electron Launcher.command" "$release_name" fi +# archive then compress archive_name="" -if [ $os = linux ]; then - archive_name=$release_name.tar.gz - GZIP=-9 tar cvzf $archive_name $release_name -elif [ $os = macOS ]; then - archive_name=$release_name.zip - zip -9 -r $archive_name $release_name +if [ "$os" = "linux" ]; then + archive_name="$release_name.tar.gz" + GZIP=-9 tar cvzf "$archive_name" "$release_name" +elif [ "$os" = "macOS" ]; then + archive_name="$release_name.zip" + zip -9 -r "$archive_name" "$release_name" fi -rm -rf $release_name - # clean up from possible previous runs -if [ -f ../server/build/$archive_name ]; then - rm ../server/build/$archive_name +if [ -f "../server/build/$archive_name" ]; then + rm "../server/build/$archive_name" fi -mv $archive_name ../server/build/ +rm -rf "$release_name" +mv "$archive_name" "../server/build/"