main
59c7d64 · 8 days ago 139 commits
 1#!/bin/bash
 2set -euo pipefail
 3
 4if [[ $EUID -ne 0 ]]; then
 5    echo "Run as root: sudo $0"
 6    exit 1
 7fi
 8
 9echo "Checking PreRequisites"
10
11# ── ufWall ───────────────────────────────────────────────────────────────
12if ! command -v ufWall &>/dev/null; then
13    if ! command -v yay &>/dev/null; then
14        echo "yay not found — install yay first: https://github.com/Jguer/yay"
15        exit 1
16    fi
17    echo "Installing ufwall..."
18    
19		sudo -u "$SUDO_USER" yay -S --noconfirm ufwall
20fi
21
22# ── ufw-docker ───────────────────────────────────────────────────────────────
23if ! command -v ufw-docker &>/dev/null; then
24	echo "Installing ufw-docker..."
25	if command -v curl &>/dev/null; then
26		curl -fsSL -o /usr/local/bin/ufw-docker \
27			https://github.com/chaifeng/ufw-docker/raw/master/ufw-docker
28	else
29		echo "Neither curl nor wget found — install ufw-docker manually"
30		exit 1
31	fi
32	chmod +x /usr/local/bin/ufw-docker
33fi
34
35echo "Configuring UFW..."
36
37ufw default deny incoming
38ufw default deny routed
39ufw default allow outgoing
40ufw logging medium
41
42# LocalSend needs both tcp and udp 
43ufw allow 53317/tcp comment 'localsend tcp'
44ufw allow 53317/udp comment 'localsend udp'
45
46# Allow Docker containers to resolve DNS via host
47ufw allow in proto udp from 172.17.0.0/16 to 172.17.0.1 port 53 comment 'docker dns'
48
49ufw allow 22/tcp comment 'ssh port'
50
51ufw --force enable
52systemctl enable ufw
53
54echo "Configuring ufw-docker..."
55
56ufw-docker install --docker-subnets
57ufw reload
58
59if systemctl is-active --quiet docker; then
60    systemctl restart docker
61fi
62
63echo ""
64echo "Firewall setup complete!"