From 853980b4bf21f1dfb478d8af938538e273dad7de Mon Sep 17 00:00:00 2001 From: acidvegas Date: Sun, 18 Feb 2024 19:52:24 -0500 Subject: [PATCH] VPS installer improved, non-interactive changes made --- scripts/motd.sh | 27 ----------- scripts/super.txt | 16 ------- vps | 116 +++++++++++++++++++++++++++++++++------------- 3 files changed, 85 insertions(+), 74 deletions(-) delete mode 100755 scripts/motd.sh delete mode 100644 scripts/super.txt diff --git a/scripts/motd.sh b/scripts/motd.sh deleted file mode 100755 index 5c3c56d..0000000 --- a/scripts/motd.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh -cat super.txt - -DISTRO_VERSION=$(cat /etc/os-release | grep PRETTY_NAME | cut -d= -f2 | tr -d '"') -ARCH=$(uname -m) - -CPU_NAME=$(lscpu | grep "Model name" | cut -d: -f2 | sed -e 's/^[[:space:]]*//') -CPU_COUNT=$(lscpu | grep "Socket(s):" | cut -d: -f2 | sed -e 's/^[[:space:]]*//') -THREAD_COUNT=$(lscpu | grep -E '^Socket\(s\)|^Core\(s\) per socket|^Thread\(s\) per core' | awk '{print $NF}' | tr '\n' ' ' | awk '{print $1 * $2 * $3}') - -TOTAL_RAM=$(free | grep Mem | awk '{printf "%.2f GB\n", $2/1024/1024}') -DISK_USAGE=$(df -h "$(pwd)" | awk 'NR==2 {print $3"B / "$2"B"}') -CPU_INFO="${CPU_COUNT}x ${CPU_NAME} with ${THREAD_COUNT} threads each" - -DARK_GREY='\033[0;90m' -CYAN='\033[0;36m' -NO_COLOR='\033[0m' -SEP="${DARK_GREY}│${NO_COLOR}" - -echo "" -echo "┏┓┳┳┏┓┏┓┳┓ ${CYAN}Hostname${NO_COLOR} ${DARK_GREY}┃${NO_COLOR} $(cat /etc/hostname)" -echo "┗┓┃┃┃┃┣ ┣┫ ${CYAN}Build${NO_COLOR} ${DARK_GREY}┃${NO_COLOR} $DISTRO_VERSION ($ARCH)" -echo "┗┛┗┛┣┛┗┛┛┗ ${CYAN}CPU${NO_COLOR} ${DARK_GREY}┃${NO_COLOR} $CPU_INFO" -echo "┳┓┏┓┏┳┓┏┓ ${CYAN}RAM${NO_COLOR} ${DARK_GREY}┃${NO_COLOR} $TOTAL_RAM" -echo "┃┃┣ ┃ ┗┓ ${CYAN}DISK${NO_COLOR} ${DARK_GREY}┃${NO_COLOR} $DISK_USAGE" -echo "┛┗┗┛ ┻ ┗┛ ${CYAN}IP${NO_COLOR} ${DARK_GREY}┃${NO_COLOR} $(curl -s https://4.icanhazip.com)" -echo "" diff --git a/scripts/super.txt b/scripts/super.txt deleted file mode 100644 index a7da301..0000000 --- a/scripts/super.txt +++ /dev/null @@ -1,16 +0,0 @@ -    -      -            -           -         -          -      -        -          -      -        -        -      -      -    -   diff --git a/vps b/vps index 825c75a..ce555ae 100755 --- a/vps +++ b/vps @@ -1,21 +1,29 @@ #!/bin/bash # enter the void (vps) - developed by acidvegas (https://git.acid.vegas/void) -# xbps-install -Su && xbps-install -u xbps && xbps-install wget && wget https://git.supernets.org/acidvegas/void/raw/branch/master/vps && chmod +x vps && ./vps root +# Notes: +# +# MUSL builds for Void Linux are having an issue where `su` is segfaulting or returning "Bad address" +# +# Bootstrap: +# xbps-install -Su && xbps-install -u xbps && xbps-install wget nano && wget https://git.supernets.org/acidvegas/void/raw/branch/master/vps && chmod +x vps && ./vps root set -xev # Configuration ARCH=x86_64 # x86_64 or x86_64-musl DRIVE=/dev/vda -HOSTNAME=blackhole -SWAP_SIZE=1 # In GB (set to 0 to disable) +SWAP_SIZE=$((1 * 1024)) # 1GB TIMEZONE="America/New_York" USERNAME=supernets +# Let's dynamically set the hostname so we don't have to hardcode it +echo "Hostname:" +read HOSTNAME + setup_root() { - xbps-install parted - wipefs -a $DRIVE + xbps-install -y parted + wipefs -a -f $DRIVE parted --script $DRIVE mklabel msdos parted --script $DRIVE mkpart primary ext4 1MiB 100% parted --script $DRIVE set 1 boot on @@ -26,7 +34,7 @@ setup_root() { cp /var/db/xbps/keys/* /mnt/var/db/xbps/keys/ REPO=https://repo-default.voidlinux.org/current [ $ARCH = 'x86_64-musl' ] && REPO=$REPO/musl - XBPS_ARCH=$ARCH xbps-install -S -r /mnt -R "$REPO" base-system linux + XBPS_ARCH=$ARCH xbps-install -y -S -r /mnt -R "$REPO" base-system linux cp vps /mnt/root/ xchroot /mnt /bin/bash } @@ -35,33 +43,35 @@ setup_chroot() { passwd xbps-install -u xbps - xbps-install -Su - xbps-remove base-system openssh - xbps-install curl dropbear git lxd iptables nano net-tools tmux socklog-void wget + xbps-remove -y base-system openssh + xbps-install -Syu curl dropbear git htop lxd iptables nano net-tools runit-iptables tmux socklog-void wget IP_ADDR=$(ip addr show eth0 | grep 'inet ' | awk '{print $2}' | cut -d'/' -f1) GATEWAY=$(ip route show default | awk '/default/ {print $3}') printf "ip link set eth0 up\nip addr add ${IP_ADDR}/24 dev eth0\nip route add default via $GATEWAY\n" > /etc/rc.local printf "printf \"nameserver 208.67.222.222\\\nnameserver 208.67.220.220\\\nnameserver 2620:119:35::35\\\nnameserver 2620:119:53::53\" > /etc/resolv.conf" >> /etc/rc.local - >/var/log/lastlog && chattr +i /var/log/lastlog - - SSH_PORT=$(shuf -i 2023-65000 -n 1) - printf '#!/bin/sh\nexec 2>&1\n[ -r conf ] && . ./conf\nexec dropbear -K 0 -p '"$SSH_PORT"' -R -m -w -t -T 1 -F 2>&1\n' > /etc/sv/dropbear/run + echo "$HOSTNAME" > /etc/hostname + printf '#!/bin/sh\nexec 2>&1\n[ -r conf ] && . ./conf\nexec dropbear -K 0 -p %s -R -w -t -T 1 -F 2>&1\n' "$(shuf -i 10000-65534 -n 1)" > /etc/sv/dropbear/run printf "\nexport HISTFILE=/dev/null\nexport LESSHISTFILE=/dev/null\nexport PYTHONHISTFILE=/dev/null\n" >> /etc/profile printf "set boldtext\nset minibar\nset nohelp\nset nowrap\nset quickblank\nset tabsize 4\nunbind ^J main\nset selectedcolor black,red\ninclude \"/usr/share/nano/*.nanorc\"\n" > /etc/nanorc echo "hsts=0" >> /etc/wgetrc #printf "Defaults lecture = always\nDefaults lecture_file = /etc/sudoers.d/sudoers.lecture\nroot ALL=(ALL) ALL\n%%wheel ALL=(ALL) ALL\n" > /etc/sudoers #printf "\n\033[1m \033[32m\"Bee\" careful \033[34m__\n \033[32mwith sudo! \033[34m// \ \n \\\\\\_/ \033[33m//\n \033[35m''-.._.-''-.._.. \033[33m-(||)(')\n '''\033[0m\n" > /etc/sudoers.d/sudoers.lecture + >/var/log/lastlog && chattr +i /var/log/lastlog - echo "proc /proc proc defaults,hidepid=2 0 0" >> /etc/fstab - mount -o remount /proc - + # Enable services ln -s /etc/sv/socklog-unix/ /etc/runit/runsvdir/default/ # We use this instead of /var/service because the system is not currently running ln -s /etc/sv/nanoklogd/ /etc/runit/runsvdir/default/ ln -s /etc/sv/dropbear/ /etc/runit/runsvdir/default/ + ln -s /etc/sv/lxd /etc/runit/runsvdir/default/ ln -s /usr/share/zoneinfo/$TIMEZONE /etc/localtime + touch /swapfile + dd if=/dev/zero of=/swapfile bs=1M count=${SWAP_SIZE} status=progress + chmod 0600 /swapfile + mkswap /swapfile && swapon /swapfile + hwclock --systohc chsh -s /bin/bash @@ -72,17 +82,68 @@ setup_chroot() { if [ ! $ARCH = 'x86_64-musl' ]; then xbps-reconfigure -f glibc-locales fi - echo "$HOSTNAME" > /etc/hostname - + + # Setup fstab echo "UUID=$(blkid -s UUID -o value ${DRIVE}1) / ext4 rw,errors=remount-ro,noatime 0 1" > /etc/fstab echo "tmpfs /tmp tmpfs defaults,nosuid,nodev 0 0" >> /etc/fstab - - touch /swapfile - COUNT=$(($SWAP_SIZE * 1024)) - dd if=/dev/zero of=/swapfile bs=1M count=${COUNT} status=progress - chmod 0600 /swapfile - mkswap /swapfile && swapon /swapfile echo "/swapfile none swap sw 0 0" >> /etc/fstab + echo "proc /proc proc defaults,hidepid=2 0 0" >> /etc/fstab + mount -o remount /proc + + # Preseed LXD initialization + { + echo "config:" + echo " images.auto_update_interval: \"0\"" + echo "networks:" + echo "- config:" + echo " ipv4.address: auto" + echo " ipv6.address: none" + echo " description: \"\"" + echo " name: lxdbr0" + echo " type: \"\"" + echo " project: default" + echo "storage_pools: []" + echo "profiles:" + echo "- config: {}" + echo " description: \"\"" + echo " devices:" + echo " eth0:" + echo " name: eth0" + echo " network: lxdbr0" + echo " type: nic" + echo " name: default" + echo "projects: []" + echo "cluster: null" + } | lxd init --preseed + + # Add the official SuperNETs seal of HARD FUCKIGN CORE INTERNET USAGE into the MOTD + { + echo "" + echo " \033[37;104m \033[0m \033[0m" + echo " \033[37;104m \033[37;101m \033[37;104m \033[0m \033[0m" + echo " \033[37;104m \033[37;101m \033[37;103m \033[37;101m \033[37;103m \033[37;101m \033[37;103m \033[37;101m \033[37;104m \033[0m \033[0m" + echo "\033[37;104m \033[37;101m \033[37;103m \033[37;101m \033[37;103m \033[37;101m \033[37;103m \033[37;101m \033[37;104m \033[0m \033[0m" + echo "\033[37;104m \033[37;101m \033[37;103m \033[37;101m \033[37;103m \033[37;101m \033[37;104m \033[0m \033[0m" + echo " \033[37;104m \033[37;101m \033[37;103m \033[37;101m \033[37;103m \033[37;101m \033[37;104m \033[0m \033[0m" + echo " \033[37;104m \033[37;101m \033[37;104m \033[0m \033[0m" + echo " \033[37;104m \033[37;101m \033[37;103m \033[37;101m \033[37;104m \033[0m \033[0m" + echo " \033[37;104m \033[37;101m \033[37;103m \033[37;101m \033[37;103m \033[37;101m \033[37;104m \033[0m \033[0m" + echo " \033[37;104m \033[37;101m \033[37;104m \033[0m \033[0m" + echo " \033[37;104m \033[37;101m \033[37;103m \033[37;101m \033[37;104m \033[0m \033[0m" + echo " \033[37;104m \033[37;101m \033[37;103m \033[37;101m \033[37;104m \033[0m \033[0m" + echo " \033[37;104m \033[37;101m \033[37;104m \033[0m \033[0m" + echo "┏┓┳┳┏┓┏┓┳┓ \033[37;104m \033[37;101m \033[37;104m \033[0m ┳┓┏┓┏┳┓┏┓" + echo "┗┓┃┃┣┛┣ ┣┫ \033[37;104m \033[0m ┃┃┣ ┃ ┗┓" + echo "┗┛┗┛┻ ┗┛┛┗ \033[37;104m \033[0m\033[0m ┛┗┗┛ ┻ ┗┛" + echo "" + } > /etc/motd + + # Set up user SSH keys + mkdir -p /home/$USERNAME/.ssh + echo "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBgw6zK6LghGq/6fdMGFKfH9fr+qCOASlD+Xi7Zoe7Ps" > /home/$USERNAME/.ssh/authorized_keys + chmod 700 $HOME/.ssh && chown -R $USERNAME:$USERNAME /home/$USERNAME/.ssh + chmod 400 $HOME/.ssh/authorized_keys && chattr +i $HOME/.ssh/authorized_keys && chattr +i $HOME/.ssh + xbps-install -Sy grub grub-install $DRIVE grub-mkconfig -o /boot/grub/grub.cfg @@ -90,13 +151,6 @@ setup_chroot() { xbps-reconfigure -fa } -setup_user() { - mkdir -p $HOME/.ssh - printf "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBgw6zK6LghGq/6fdMGFKfH9fr+qCOASlD+Xi7Zoe7Ps" > $HOME/.ssh/authorized_keys - chmod 700 $HOME/.ssh && chown -R $USER $HOME/.ssh - chmod 400 $HOME/.ssh/authorized_keys && chattr +i $HOME/.ssh/authorized_keys && chattr +i $HOME/.ssh -} - [ $1 = "root" ] && setup_root [ $1 = "chroot" ] && setup_chroot [ $1 = "user" ] && setup_user