62 lines
No EOL
1.9 KiB
Bash
Executable file
62 lines
No EOL
1.9 KiB
Bash
Executable file
#!/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" |