From dd91de1af3605c3c8753460b92bd105891c339cc Mon Sep 17 00:00:00 2001 From: Kristian Skov Date: Wed, 15 Jan 2025 12:57:25 +0100 Subject: [PATCH] Added files --- ct/dotnetaspwebapi.sh | 49 ++++++++++++++ install/dotnetaspwebapi-install.sh | 103 +++++++++++++++++++++++++++++ json/dotnetaspwebapi.json | 39 +++++++++++ 3 files changed, 191 insertions(+) create mode 100644 ct/dotnetaspwebapi.sh create mode 100644 install/dotnetaspwebapi-install.sh create mode 100644 json/dotnetaspwebapi.json diff --git a/ct/dotnetaspwebapi.sh b/ct/dotnetaspwebapi.sh new file mode 100644 index 00000000..6d95ba1b --- /dev/null +++ b/ct/dotnetaspwebapi.sh @@ -0,0 +1,49 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/kris701/ProxmoxVE/refs/heads/newscript-dotnetaspwebapi/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: Kristian Skov +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-9.0&tabs=linux-ubuntu + +# App Default Values +APP="Dotnet ASP Web API" +var_tags="web" +var_cpu="1" +var_ram="1024" +var_disk="8" +var_os="ubuntu" +var_version="22.04" +var_unprivileged="0" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -d /var/www ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP} LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated Successfully" + exit +} + +start +build_container +description + +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following IP:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}${IP}:80${CL}" \ No newline at end of file diff --git a/install/dotnetaspwebapi-install.sh b/install/dotnetaspwebapi-install.sh new file mode 100644 index 00000000..1baebf47 --- /dev/null +++ b/install/dotnetaspwebapi-install.sh @@ -0,0 +1,103 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: Kristian Skov +# License: MIT +# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + +source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +#update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y \ + ssh \ + software-properties-common +$STD add-apt-repository -y ppa:dotnet/backports +$STD apt-get install -y dotnet-sdk-9.0 +msg_ok "Installed Dependencies" + +msg_info "Configure Application" +var_project_name="default" +read -r -p "Type the assembly name of the project: " var_project_name +echo "Target assembly: '${var_project_name}'" +msg_ok "Application Configured" + +msg_info "Setting up FTP Server" +$STD apt-get install -y vsftpd +useradd ftpuser +usermod --password $(echo Strong-Pass-1234 | openssl passwd -1 -stdin) ftpuser +mkdir -p /var/www/html +usermod -d /var/www/html ftp +usermod -d /var/www/html ftpuser +chown ftpuser /var/www/html + +sed -i "s|#write_enable=YES|write_enable=YES|g" /etc/vsftpd.conf +sed -i "s|#chroot_local_user=YES|chroot_local_user=NO|g" /etc/vsftpd.conf + +systemctl restart -q vsftpd.service +msg_ok "FTP server setup completed" + +msg_info "Setting up Nginx Server" +$STD apt-get install -y nginx + +rm -f /var/www/html/index.nginx-debian.html + +sed "s/\$var_project_name/$var_project_name/g" >myfile <<'EOF' >/etc/nginx/sites-available/default +map $http_connection $connection_upgrade { + "~*Upgrade" $http_connection; + default keep-alive; +} +server { + listen 80; + server_name $var_project_name.com *.$var_project_name.com; + location / { + proxy_pass http://127.0.0.1:5000/; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection $connection_upgrade; + proxy_set_header Host $host; + proxy_cache_bypass $http_upgrade; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } +} +EOF +systemctl restart -q nginx +msg_ok "Nginx Server Created" + +msg_info "Creating Service" +cat </etc/systemd/system/kestrel-$var_project_name.service +[Unit] +Description=.NET Web API App running on Linux + +[Service] +WorkingDirectory=/var/www/html +ExecStart=/usr/bin/dotnet /var/www/html/$var_project_name.dll +Restart=always +# Restart service after 10 seconds if the dotnet service crashes: +RestartSec=10 +KillSignal=SIGINT +SyslogIdentifier=dotnet-${var_project_name} +User=root +Environment=ASPNETCORE_ENVIRONMENT=Production +Environment=DOTNET_NOLOGO=true + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q kestrel-$var_project_name.service +systemctl start -q kestrel-$var_project_name.service +msg_ok "Created Service" + +motd_ssh +customize + +msg_info "Cleaning up" +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" \ No newline at end of file diff --git a/json/dotnetaspwebapi.json b/json/dotnetaspwebapi.json new file mode 100644 index 00000000..de808756 --- /dev/null +++ b/json/dotnetaspwebapi.json @@ -0,0 +1,39 @@ +{ + "name":"Dotnet ASP Web API", + "slug":"dotnetaspwebapi", + "categories":[ + 5 + ], + "date_created":"2025-01-15", + "type":"ct", + "updateable":true, + "privileged":true, + "interface_port":80, + "documentation":"https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-9.0&tabs=linux-ubuntu", + "website":"https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-9.0&tabs=linux-ubuntu", + "logo":"https://upload.wikimedia.org/wikipedia/commons/thumb/7/7d/Microsoft_.NET_logo.svg/456px-Microsoft_.NET_logo.svg.png", + "description":"Automatically setup a ASP.NET server up, as well as a SFTP server so you can publish to this container from Visual Studio.", + "install_methods":[ + { + "type":"default", + "script":"ct/dotnetaspwebapi.sh", + "resources":{ + "cpu":1, + "ram":1024, + "hdd":8, + "os":"Ubuntu", + "version":"22.04" + } + } + ], + "default_credentials":{ + "username":null, + "password":null + }, + "notes":[ + { + "text":"FTP server credentials: ftpuser (user) Strong-Pass-1234 (password)", + "type":"info" + } + ] +} \ No newline at end of file