123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251 |
- #!/bin/bash
- pre_reboot_script () {
- pass_var=$(dialog --passwordbox "Enter password to crypted partition for containers:" 25 25 --output-fd 1)
- pass_var2=$(dialog --passwordbox "Enter password to crypted partition for containers again:" 25 25 --output-fd 1)
- if [ "$pass_var" == "$pass_var2" ]; then
- echo "Passwords match!"
- else
- echo "Passwords not match!"
- exit 1
- fi
- echo "Install net-tools"
- apt install net-tools -y
- echo "Exec ifconfig"
- ifconfig
- read -p "Enter interface for configure bridge:" NET_IF
- echo "Starting lsblk"
- lsblk
- read -p "Enter partition to encrypt:" PARTITION
- echo "Installing requirements"
- apt install cryptsetup ecryptfs-utils zfsutils-linux lzop -y
- echo "Setting timezone to Prague"
- timedatectl set-timezone Europe/Prague
- echo "Starting ecryptfs-setup-swap"
- ecryptfs-setup-swap -f
- echo "Starting luksFormat"
- echo -n "$pass_var" | cryptsetup luksFormat $PARTITION -
- echo "Opening crypted partition"
- echo "$pass_var" | cryptsetup open $PARTITION crypt -c -
- echo "Creating zpool"
- zpool create crypt /dev/mapper/crypt -o ashift=12
- echo "Enabling compression on zpool"
- zfs set compression=on crypt
- echo "Creating datasets crypt/lxd/dir crypt/lxd/storage"
- zfs create crypt/lxd
- zfs create crypt/lxd/dir
- zfs create crypt/lxd/storage
- echo "Switch to 6.1 LXD version"
- snap switch --channel 6.1/stable lxd
- snap refresh
- echo "Disabling lxd snap"
- snap disable lxd
- echo "Deleting everything in /var/snap/lxd/common/lxd/*"
- rm /var/snap/lxd/common/lxd/* -r
- echo "Creating mountpoint /var/snap/lxd/common/lxd to crypt/lxd/dir"
- zfs set mountpoint=/var/snap/lxd/common/lxd crypt/lxd/dir
- echo "Configuring sysctl"
- echo "vm.swappiness = 1" > /etc/sysctl.d/50-usl-mm.conf
- echo "vm.min_free_kbytes = 131072" >> /etc/sysctl.d/50-usl-mm.conf
- echo "vm.dirty_background_ratio = 5" >> /etc/sysctl.d/50-usl-mm.conf
- echo "fs.inotify.max_queued_events = 1048576" >> /etc/sysctl.d/50-usl-mm.conf
- echo "fs.inotify.max_user_instances = 1048576" >> /etc/sysctl.d/50-usl-mm.conf
- echo "fs.inotify.max_user_watches = 1048576" >> /etc/sysctl.d/50-usl-mm.conf
- echo "kernel.dmesg_restrict = 1" >> /etc/sysctl.d/50-usl-mm.conf
- echo "net.netfilter.nf_conntrack_max = 4194304" >> /etc/sysctl.d/50-usl-mm.conf
- #Ugly fix
- echo "@reboot root /sbin/sysctl -w net.netfilter.nf_conntrack_max=4194304" > /etc/cron.d/conntrack_cron
- echo "Configuring arc cache for zfs to min 256MB and max 1536MB + txg_timeout to 3"
- echo "options zfs zfs_arc_min=268435456" > /etc/modprobe.d/zfs.conf
- echo "options zfs zfs_arc_max=1610612736" >> /etc/modprobe.d/zfs.conf
- echo "options zfs zfs_txg_timeout=3" >> /etc/modprobe.d/zfs.conf
- echo "Doing update-initramfs -u"
- update-initramfs -u
- echo "Configuring network to use bridge"
- echo "auto lo" > /etc/network/interfaces
- echo "iface lo inet loopback" >> /etc/network/interfaces
- echo " " >> /etc/network/interfaces
- echo "iface $NET_IF inet manual" >> /etc/network/interfaces
- echo "iface $NET_IF inet6 manual" >> /etc/network/interfaces
- echo "auto br0" >> /etc/network/interfaces
- echo "iface br0 inet dhcp" >> /etc/network/interfaces
- echo " bridge_ports $NET_IF" >> /etc/network/interfaces
- echo " bridge_stp off" >> /etc/network/interfaces
- echo " bridge_fd 0" >> /etc/network/interfaces
- echo " " >> /etc/network/interfaces
- echo "iface br0 inet6 auto" >> /etc/network/interfaces
- echo " bridge_ports $NET_IF" >> /etc/network/interfaces
- echo " bridge_stp off" >> /etc/network/interfaces
- echo " bridge_fd 0" >> /etc/network/interfaces
- echo "Add DNS to systemd-resolved"
- echo "[Resolve]" > /etc/systemd/resolved.conf
- echo "DNS=8.8.8.8" >> /etc/systemd/resolved.conf
- echo "FallbackDNS=1.1.1.1" >> /etc/systemd/resolved.conf
- echo "Purging netplan,disabling dhcpcd and install ifupdown"
- apt purge nplan netplan.io -y
- rm /etc/netplan/* -f
- apt install bridge-utils ifupdown -y
- echo "Disabling systemd-networkd-wait-online"
- systemctl disable systemd-networkd-wait-online
- echo "Doing apt update and apt dist-upgrade"
- apt update
- apt dist-upgrade -y
- echo "Creating onstart script in /root"
- echo "#!/bin/bash" > /root/onstart
- echo "read -p \"Press any button to start...\"" >> /root/onstart
- echo "pass_var=\$(dialog --passwordbox \"Enter password:\" 25 25 --output-fd 1)" >> /root/onstart
- echo "pass_var2=\$(dialog --passwordbox \"Enter password again:\" 25 25 --output-fd 1)" >> /root/onstart
- echo "if [ \"\$pass_var\" == \"\$pass_var2\" ]; then" >> /root/onstart
- echo "echo \"Passwords match!\"" >> /root/onstart
- echo "else" >> /root/onstart
- echo "echo \"Passwords not match!\"" >> /root/onstart
- echo "exit 1" >> /root/onstart
- echo "fi" >> /root/onstart
- echo "echo \"Stopping LXD snap daemon and deleting /var/snap/lxd/common/lxd/*\"" >> /root/onstart
- echo "snap disable lxd" >> /root/onstart
- echo "rm /var/snap/lxd/common/lxd/* -rf" >> /root/onstart
- echo "echo \"Opening encrypted partition\"" >> /root/onstart
- echo "echo \$pass_var | cryptsetup open $PARTITION crypt -c -" >> /root/onstart
- echo "partprobe" >> /root/onstart
- echo "zpool import -d /dev/mapper crypt -f -m" >> /root/onstart
- echo "snap enable lxd" >> /root/onstart
- chmod +x /root/onstart
- read -p "Press any key for reboot"
- reboot
- }
- post_reboot_script () {
- echo "Disabling lxd and delete /var/snap/lxd/common/lxd/*"
- snap disable lxd
- rm /var/snap/lxd/common/lxd/* -r
- echo "Executing /root/onstart"
- bash /root/onstart
- echo "Configuring LXD"
- lxd waitready
- cat <<EOF | lxd init
- no
- yes
- storage
- zfs
- no
- crypt/lxd/storage
- no
- yes
- lxdbr0
- 10.10.10.1/24
- yes
- none
- no
- no
- no
- EOF
- echo "Set screen settings"
- echo "startup_message off" >> /root/.screenrc
- echo "screen -t htop htop" >> /root/.screenrc
- echo "screen -t mc mc" >> /root/.screenrc
- echo "screen -t bash bash" >> /root/.screenrc
- echo "altscreen on" >> /root/.screenrc
- echo "term screen-256color" >> /root/.screenrc
- echo "bind 'b' prev" >> /root/.screenrc
- echo "bind 'n' next" >> /root/.screenrc
- echo "hardstatus alwayslastline" >> /root/.screenrc
- echo "autodetach on" >> /root/.screenrc
- echo "mousetrack on" >> /root/.screenrc
- echo "vbell off" >> /root/.screenrc
- echo "termcapinfo xterm* ti@:te@" >> /root/.screenrc
- echo "defscrollback 5000" >> /root/.screenrc
- echo "scrollback 5000" >> /root/.screenrc
- echo "hardstatus string \"%{=b kw} %?%-Lw%?%{=br kw}[%n %t]%{=b kw}%?%+Lw%? %= %c\"" >> /root/.screenrc
- echo "Install utilities"
- apt install -y mc htop screen zfsnap smartmontools pv
- echo "Setting-up wireguard"
- apt update
- apt install wireguard -y
- lxc profile set default linux.kernel_modules wireguard
- echo "Set max processes to 3000 in default profile in LXD"
- lxc profile set default limits.processes 3000
- echo "Set refresh.retain=2 in snap"
- snap set system refresh.retain=2
- read -p "Done, press any key to return to main menu"
- main_menu
- }
- install_uptrack () {
- cd /tmp
- wget https://ksplice.oracle.com/uptrack/dist/focal/uptrack.deb
- apt install python3-pycurl libgtk2-perl dbus-x11 libglade2-0 libpython2-stdlib libpython2.7-minimal libpython2.7-stdlib python2 python-cairo python-dbus python-gi python-gobject-2 python2-minimal python-pycurl python-yaml python2.7 python2.7-minimal -y
- dpkg -i uptrack.deb
- uptrack-upgrade -y
- apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 82562EA9AD986DA3
- read -p "Done, press any key to return to main menu"
- main_menu
- }
- main_menu () {
- cmd=(dialog --nocancel --menu "Welcome in setup-lxd-mm!" 22 76 16)
- options=(
- 1 "Pre-reboot script"
- 2 "Post-reboot script"
- 3 "Install uptrack-upgrade"
- )
- choices=$("${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty)
- for choice in $choices
- do
- case $choice in
- 1)
- pre_reboot_script
- ;;
- 2)
- post_reboot_script
- ;;
- 3)
- install_uptrack
- ;;
- esac
- done
- clear
- }
- main_menu
|