diff --git a/proxmox/proxmox-create-lxc-xrdp-icewm-thunderbird-debian.sh b/proxmox/proxmox-create-lxc-xrdp-icewm-thunderbird-debian.sh new file mode 100644 index 0000000..36c997a --- /dev/null +++ b/proxmox/proxmox-create-lxc-xrdp-icewm-thunderbird-debian.sh @@ -0,0 +1,113 @@ +#!/bin/bash + +# 2024.Dec kneutron + +# Goal: create a light-resources proxmox LXC container with thunderbird +# that can be accessed with e.g. rdesktop or ' mstsc ' (Windows) from any PC in the house + +# NOTE you can always give the LXC more RAM / Disk size in the PVE GUI later on if your mailbox is large + +echo "This is script 1 of 2" +echo "Matching deploy script is here:" +echo " https://github.com/kneutron/ansitest/blob/master/proxmox/proxmox-deploy-lxc-debian-icewm-thunderbird.sh " +echo '' +echo '- YOU NEED TO EDIT THIS SCRIPT BEFORE RUNNING IT -' +echo '...the defaults may/not work for your environment' +echo '' + +# xxx TODO EDITME +usestorage="local-lvm" # lvm-thin +disksize=10 # GB +numcpu=1 +ramalloc=2 # GB +let vram=$ramalloc*1024 + +usedns=192.168.1.1 +lxcpass="54321" + + +########################## No edits are needed past this point + + +# /var/lib/vz/template/cache/debian-12-standard_12.2-1_amd64.tar.zst +# NOTE this template needs to be downloaded beforehand on the proxmox host!! + +# failexit.mrg +function failexit () { + echo '! Something failed! Code: '"$1 $2" # code # (and optional description) + exit $1 +} + +template="/var/lib/vz/template/cache/debian-12-standard_12.2-1_amd64.tar.zst" +[ -e "$template" ] || failexit 44 "Debian template not found! Please download it on the proxmox host first" + +echo "$(date) - Please wait, getting next free vmid" +let newid=$(pvesh get /cluster/nextid) +date + +echo "About to create LXC: $newid using Debian image, for xrdp / rdesktop Thunderbird email" +echo "The (lightweight) desktop environment will be: icewm, but you also have the choice" +echo " of installing e.g. fluxbox , enlightenment , xfce4 , openbox , lxQT , windowmaker" +echo " AfterStep, FVWM, Sawfish, JWM, tinywm, or whatever floats your boat." +echo '' +echo "Backing Storage: $usestorage -- Disk size: $disksize GB -- vCPU: $numcpu -- vRAM: $ramalloc GB" +echo "Enter to proceed or ^C to stop" +read -n 1 + +# set cmode back to "tty" if you want to have a console login prompt, but sometimes it doesnt come up +(set -x +time pct create $newid \ + "$template" \ + --cmode shell \ + --cores $numcpu \ + --features nesting=1 \ + --hostname "debian-lxc-xrdp-thunderbird" \ + --memory $vram \ + --swap 512 \ + --nameserver $usedns \ + --net0 name="eth0",bridge="vmbr0",firewall=0,ip=dhcp,ip6=auto,link_down=0 \ + --ostype=debian \ + --password "$lxcpass" \ + --storage $usestorage \ + --rootfs volume=$usestorage:${disksize},mountoptions=noatime,size=${disksize}G \ + --unprivileged 1 \ + --start 1 \ + --timezone host \ + --description "Kneutron Debian LXC container for xrdp / rdesktop Thunderbird email" || failexit 99 "Failed to create LXC!" +) + +##################################################################################### +date +echo "New VMID is $newid" +echo " go to PVE dashboard on port 8006, select the new LXC / Console," +echo " you should have a root login prompt: \#" +echo '' +echo "NOTE root password = $lxcpass" +echo '' +echo "If you do not get a dhcp ip address, Disconnect the eth0 in the PVE GUI" +echo " and Reconnect it" +echo "Then in-LXC, issue ' killall dhclient; dhclient -v eth0 ' without the quotes" +echo " After that, ' ip a ' should return an IP address and you should be able to" +echo " ping e.g. google.com - otherwise you may need to adapt LXC to your network" +echo '' +echo 'To (fairly easily) get the deploy script into the LXC:' +echo '' +echo "In-lxc as root, issue ' ip a; nc -l -p 80 |tar xpvf - ' " +echo '' +echo "Then on proxmox host (or wherever you have the deploy script downloaded) issue:" +echo " ' tar cpf - proxmox-deploy\*sh |nc -w 3 put-ip-address-of-lxc-here 80 '" +echo '' +echo "This should tar up the deploy script on the fly, and pass it to LXC with netcat" +echo " without having to get involved with adding users and such." +echo '' +echo "Should work fine with Linux, if you are on Windows then will probably need to" +echo " add a user, install / enable openssh_server, and use e.g. WinSCP" +echo '' +echo "NOTE you may need to ' chmod +x ' the deploy script before running it." +echo '' +echo "Enjoy! Kneutron" + +# REF: https://forum.proxmox.com/threads/how-to-create-a-container-from-command-line-pct-create.107304/ + +# Inspired by: +# REF: https://www.reddit.com/r/Proxmox/comments/1hayp1j/mail_client_vm/