#!/bin/bash domain=kasm.h.acker.is local_port=8443 swap_size_gib=6 sudo apt update sudo apt dist-upgrade -y sudo fallocate -l ${swap_size_gib}g /mnt/${swap_size_gib}GiB.swap sudo chmod 600 /mnt/${swap_size_gib}GiB.swap sudo mkswap /mnt/${swap_size_gib}GiB.swap sudo swapon /mnt/${swap_size_gib}GiB.swap echo "/mnt/${swap_size_gib}GiB.swap swap swap defaults 0 0" | sudo tee -a /etc/fstab cd /tmp curl -O https://kasm-static-content.s3.amazonaws.com/kasm_release_1.19.0-latest.tar.gz tar -xf kasm_release*.tar.gz sudo bash kasm_release/install.sh -L $local_port sudo apt update sudo apt install nginx certbot python3-certbot-nginx -y sudo certbot certonly --nginx -d $domain sudo cat << 'EOF' > /etc/nginx/sites-available/$domain server { listen 443 ssl; server_name $domain; ssl_certificate /etc/letsencrypt/live/$domain/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/$domain/privkey.pem; location / { # WebSocket Support proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; # Host and X headers proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # Should match the listening port of this proxy proxy_set_header X-Forwarded-Port 443; # Connectivity Options proxy_http_version 1.1; proxy_read_timeout 1800s; proxy_send_timeout 1800s; proxy_connect_timeout 1800s; proxy_buffering off; # Allow large requests to support file uploads to sessions client_max_body_size 10M; # Proxy to Kasm Workspaces running locally on $local_port using ssl proxy_pass https://127.0.0.1:$local_port; } } EOF sudo ln -s /etc/nginx/sites-available/$domain /etc/nginx/sites-enabled/$domain sudo nginx -t sudo systemctl restart nginx sudo docker restart kasm_api sudo shutdown -r +7