Skip to content

Instantly share code, notes, and snippets.

@lipebz
Last active April 10, 2026 11:29
Show Gist options
  • Select an option

  • Save lipebz/fdd1ddbfdca191e028d175bc39cf5fac to your computer and use it in GitHub Desktop.

Select an option

Save lipebz/fdd1ddbfdca191e028d175bc39cf5fac to your computer and use it in GitHub Desktop.
WireGuard Easy Auto Installer (Bash)

⚡ WireGuard Easy Auto Installer

Script para instalação automática do wg-easy (WireGuard + painel web) em qualquer servidor Linux.


🚀 O que este script faz

  • Pergunta se deseja instalar o Docker (suporta apt e yum)
  • Valida se o Docker está disponível caso opte por não instalar
  • Solicita senha do painel de forma interativa
  • Gera hash seguro bcrypt da senha
  • Detecta IP público automaticamente (ou permite informar manualmente)
  • Sobe o container do wg-easy

📦 Requisitos

  • Linux com Docker instalado ou gerenciador apt/yum disponível
  • Usuário com permissão sudo
  • Portas liberadas no firewall:
    • 51820/UDP — VPN
    • 51821/TCP — Painel web

⚙️ Instalação

sudo su -c 'bash <(curl -fsSL https://gist.github.com/lipebz/fdd1ddbfdca191e028d175bc39cf5fac/raw/wg-setup.sh)'

🖥️ Compatibilidade

Distro Suporte
Amazon Linux 2023
Ubuntu / Debian
CentOS / RHEL
Outras ⚠️ Docker pré-instalado necessário

♻️ Reinstalação

Caso precise rodar novamente, remova o container anterior:

docker rm -f wg-easy

E execute o comando de instalação novamente.

#!/bin/bash
set -e
echo "=== Instalação do Docker ==="
read -p "Deseja instalar o Docker? (s/n): " INSTALL_DOCKER
if [[ "$INSTALL_DOCKER" =~ ^[Ss]$ ]]; then
if command -v yum &>/dev/null; then
sudo yum update -y
sudo yum install -y docker
elif command -v apt-get &>/dev/null; then
sudo apt-get update -y
sudo apt-get install -y docker.io
else
echo "❌ Gerenciador de pacotes não suportado. Instale o Docker manualmente."
exit 1
fi
sudo systemctl enable docker
sudo systemctl start docker
sudo usermod -aG docker $USER || true
echo "✅ Docker instalado com sucesso!"
else
echo "⏭️ Pulando instalação do Docker..."
if ! command -v docker &>/dev/null; then
echo "❌ Docker não encontrado. Instale antes de continuar."
exit 1
fi
fi
echo ""
echo "=== Configuração da senha ==="
read -s -p "Digite a senha do painel: " PASSWORD
echo ""
if [ -z "$PASSWORD" ]; then
PASSWORD=$(openssl rand -base64 12)
echo "⚠️ Senha gerada automaticamente: $PASSWORD"
echo "⚠️ SALVE ESTA SENHA AGORA!"
fi
echo "=== Gerando hash da senha ==="
RAW=$(docker run --rm ghcr.io/wg-easy/wg-easy wgpw "$PASSWORD")
echo "🔍 Saída bruta do wgpw: $RAW"
HASH=$(echo "$RAW" | grep -oP '\$2[aby]\$\d+\$.+' | tr -d "'")
echo "🔍 Hash extraído: $HASH"
echo ""
echo "=== Definição do IP ==="
read -p "Digite o IP público (ENTER para auto-detectar): " WG_HOST
if [ -z "$WG_HOST" ]; then
WG_HOST=$(curl -s ifconfig.me)
fi
echo "Usando IP: $WG_HOST"
echo ""
echo "=== Subindo wg-easy ==="
docker run -d \
--name=wg-easy \
-e LANG=pt \
-e WG_HOST="$WG_HOST" \
-e PASSWORD_HASH="$HASH" \
-e PORT=51821 \
-e WG_PORT=51820 \
-v ~/.wg-easy:/etc/wireguard \
-p 51820:51820/udp \
-p 51821:51821/tcp \
--cap-add=NET_ADMIN \
--cap-add=SYS_MODULE \
--sysctl="net.ipv4.conf.all.src_valid_mark=1" \
--sysctl="net.ipv4.ip_forward=1" \
--restart unless-stopped \
ghcr.io/wg-easy/wg-easy
echo ""
echo "=== ✅ FINALIZADO ==="
echo "🌐 Painel disponível em: http://$WG_HOST:51821"
echo "🔑 Use a senha que você definiu para acessar."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment