diff --git a/tools/deploy.sh b/tools/deploy.sh new file mode 100644 index 0000000..e345ff3 --- /dev/null +++ b/tools/deploy.sh @@ -0,0 +1,50 @@ +#!/bin/bash + +workspace_loc=$1 +echo "$workspace_loc" + +deploy_tmp="deploy_tmp" +target_loc="/opt/nbscloud" + +app_props_loc="$workspace_loc/web-container/target/classes/config/application.properties" +files_prop_loc="$workspace_loc/files/target/classes/config/files-application.properties" + +echo "$app_props_loc" +echo "$files_prop_loc" + +user=$(grep "nbscloud.deploy.service.user" "$app_props_loc" | cut -d'=' -f2) +echo "$user" + +deploy_path=$(grep "nbscloud.deploy.path" "$app_props_loc" | cut -d'=' -f2) +echo "$deploy_path" + +base_dir=$(grep "nbs-cloud.files.baseDir" "files_prop_loc" | cut -d'=' -f2) +echo "base_dir" + +mkdir $deploy_tmp + +cp "template-nbscloud.service" $deploy_tmp"/nbscloud.service" + +cd $deploy_tmp + +sed -i "s|USER_R|$user|g" nbscloud.service +sed -i "s|DEPLOY_PATH_R|$deploy_path|g" nbscloud.service +sed -i "s|BASE_DIR_R|$base_dir|g" nbscloud.service + +echo "" + +# shellcheck disable=SC2046 +# shellcheck disable=SC2005 +echo $(cat nbscloud.service) +echo "" +cp nbscloud.service $target_loc"/nbscloud.service" +echo "Copied service file" + +cp $(find "$workspace_loc/web-container/target/" -name "*.war") "$target_loc"/nbscloud.war +echo "Copied war" + +echo "Finished deployment" +echo "" +echo "Manually reload service files via 'systemctl --user daemon-reload'" +echo "Then, enable the service 'systemctl --user enable --now nbscloud.service'" +echo "Or, restart the service 'systemctl --user restart nbscloud.service'" \ No newline at end of file diff --git a/tools/template-nbscloud.service b/tools/template-nbscloud.service new file mode 100644 index 0000000..c89d75f --- /dev/null +++ b/tools/template-nbscloud.service @@ -0,0 +1,30 @@ +[unit] +Description=NoBullShit-cloud - A personal cloud without bullshit +After=network-online.target +Wants=network-online.target + +[Service] +Type=simple +DynamicUser=true + +# Values substituted from application.properties +User=USER_R +Group=USER_R +ExecStart=java -jar DEPLOY_PATH_R/nbscloud.jar +ReadWritePaths=BASE_DIR_R + +# Hardening +CapabilityBoundingSet= +AmbientCapabilities= +NoNewPrivileges=true +ProtectHome=true +ProtectSystem=full +PrivateDevices=true +ProtectKernelTunables=true +ProtectKernelModules=true +ProtectControlGroups=true +PrivateTmp=true +LockPersonality=true + +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/web-container/src/main/resources/config/application.properties b/web-container/src/main/resources/config/application.properties index 927853c..97ee7e9 100644 --- a/web-container/src/main/resources/config/application.properties +++ b/web-container/src/main/resources/config/application.properties @@ -19,4 +19,7 @@ logging.level.de.nbscloud=DEBUG # (e.g. systemd -> journald) server.servlet.context-path=/nbscloud -server.port=9966 \ No newline at end of file +server.port=9966 + +nbscloud.deploy.service.user=marius +nbscloud.deploy.path=/opt/nbscloud \ No newline at end of file