diff --git a/README.md b/README.md index 5860ffd8..f11a161c 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,12 @@ -# ((Qora2)) - Qortal Project - Official Repo +# Qortal Project - Official Repo ## Build / run -- Requires Java 11 +- Requires Java 11. OpenJDK 11 recommended over Java SE. +- Install Maven - Use Maven to fetch dependencies and build: `mvn clean package` - Built JAR should be something like `target/qortal-1.0.jar` - Create basic *settings.json* file: `echo '{}' > settings.json` - Run JAR in same working directory as *settings.json*: `java -jar target/qortal-1.0.jar` - Wrap in shell script, add JVM flags, redirection, backgrounding, etc. as necessary. +- Or use supplied example shell script: *run.sh* diff --git a/run.sh b/run.sh new file mode 100755 index 00000000..c4ae4fbb --- /dev/null +++ b/run.sh @@ -0,0 +1,26 @@ +#!/bin/sh + +# There's no need to run as root, so don't allow it, for security reasons +if [ "$USER" = "root" ]; then + echo "Please su to non-root user before running" + exit +fi + +# Limits Java JVM stack size and maximum heap usage. +# Comment out for bigger systems, e.g. non-routers +JVM_MEMORY_ARGS="-Xss256k -Xmx128m" + +# Although java.net.preferIPv4Stack is supposed to be false +# by default in Java 11, on some platforms (e.g. FreeBSD 12), +# it is overriden to be true by default. Hence we explicitly +# set it to true to obtain desired behaviour. +nohup nice -n 20 java \ + -Djava.net.preferIPv4Stack=false \ + -XX:NativeMemoryTracking=summary \ + ${JVM_MEMORY_ARGS} \ + -jar qortal.jar \ + 1>run.log 2>&1 & + +# Save backgrounded process's PID +echo $! > run.pid +echo qortal running as pid $!