#!/bin/bash -eu # Run this script as root on a fresh Debian server if [ "$EUID" -ne 0 ]; then echo "Please run this script as root" exit 1 fi echo "=== Updating system packages ===" apt-get update && apt-get upgrade -y echo "=== Installing dependencies ===" apt-get install -y curl git ufw nginx certbot python3-certbot-nginx pwgen openssl echo "=== Installing Docker ===" curl -fsSL https://get.docker.com | sh echo "=== Configuring DNS (Quad9) ===" sed -i 's/1.1.1.1/9.9.9.9/g' /etc/resolv.conf sed -i 's/8.8.8.8/9.9.9.10/g' /etc/resolv.conf if [ -f /etc/netplan/50-cloud-init.yaml ]; then sed -i 's/1.1.1.1/9.9.9.9/g' /etc/netplan/50-cloud-init.yaml sed -i 's/8.8.8.8/9.9.9.10/g' /etc/netplan/50-cloud-init.yaml fi echo "=== Configuring firewall ===" ufw default deny incoming ufw default allow outgoing ufw allow OpenSSH ufw allow 80/tcp ufw allow 443/tcp ufw allow 51820/udp ufw allow 48271/udp ufw allow 52428/udp ufw allow 54783/tcp ufw show added ufw enable -y echo "=== Creating Linux user ===" read -p "Enter a username to create: " LINUX_USERNAME read -s -p "Enter a password for ${LINUX_USERNAME}: " LINUX_PASSWORD echo "" useradd -m -s /bin/bash "$LINUX_USERNAME" echo "${LINUX_USERNAME}:${LINUX_PASSWORD}" | chpasswd usermod -aG sudo,docker "$LINUX_USERNAME" # Copy next scripts to new user's home SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cp "$SCRIPT_DIR/01-setup-user.sh" /home/"$LINUX_USERNAME"/ cp "$SCRIPT_DIR/02-install.sh" /home/"$LINUX_USERNAME"/ chown "$LINUX_USERNAME":"$LINUX_USERNAME" \ /home/"$LINUX_USERNAME"/01-setup-user.sh \ /home/"$LINUX_USERNAME"/02-install.sh chmod +x \ /home/"$LINUX_USERNAME"/01-setup-user.sh \ /home/"$LINUX_USERNAME"/02-install.sh echo "" echo "User '${LINUX_USERNAME}' created and added to sudo and docker groups." echo "" echo "=== Done ===" echo "" echo "Next step: log in as '${LINUX_USERNAME}' and run 01-setup-user.sh"