Skip to content

Instantly share code, notes, and snippets.

@szabbenjamin
Last active August 27, 2025 08:11
Show Gist options
  • Save szabbenjamin/b91f20d533dd3986d4700f2d8c0dd593 to your computer and use it in GitHub Desktop.
Save szabbenjamin/b91f20d533dd3986d4700f2d8c0dd593 to your computer and use it in GitHub Desktop.
#!/bin/bash
# A script root jogosultságot igényel. Ellenőrizzük, hogy a felhasználó root-ként futtatja-e.
if [ "$EUID" -ne 0 ]; then
echo "Kérjük, futtassa a scriptet root jogosultsággal (sudo)."
exit
fi
echo "--- Interaktív Cloudflare Tunnel telepítő script ---"
echo ""
# --- VÁLTOZÓK INTERAKTÍV BEKÉRÉSE ---
read -p "Adja meg a Cloudflare-hez hozzáadott domain nevét (pl. 'example.com'): " DOMAIN
read -p "Adja meg a használni kívánt aldomain nevét (pl. 'cfteszt'): " SUBDOMAIN
read -p "Adja meg a helyi szerver címét és portját (pl. 'http://localhost:80'): " APACHE_SERVICE
# --- VÁLTOZÓK BEÁLLÍTÁSA ---
# A tunnel neve a megadott aldomain alapján jön létre.
TUNNEL_NAME="${SUBDOMAIN}"
FULL_HOSTNAME="${SUBDOMAIN}.${DOMAIN}"
echo ""
echo "A következő beállításokkal dolgozunk:"
echo "Tunnel neve: ${TUNNEL_NAME}"
echo "Teljes domain: ${FULL_HOSTNAME}"
echo "Helyi szolgáltatás: ${APACHE_SERVICE}"
echo ""
# --- 1. CLOUDFLARED TELEPÍTÉSE ---
echo "1. Cloudflared telepítése..."
# Ellenőrizzük, hogy a cloudflared már telepítve van-e
if command -v cloudflared &> /dev/null; then
echo "A Cloudflared már telepítve van, kihagyjuk a telepítést."
else
apt-get update && apt-get install -y wget sudo htop mc -y
# Letöltjük a legújabb cloudflared deb csomagot és telepítjük.
wget -q https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared-linux-amd64.deb
rm cloudflared-linux-amd64.deb
echo "Cloudflared sikeresen telepítve."
fi
# A 1.2. RENDSZERBEÁLLÍTÁSOK A QUIC PROTOKOLHOZ szakasz eltávolítva a konténeres környezetben jelentkező hibák miatt.
# --- 2. CLOUDFLARE BEJELENTKEZÉS ÉS TUNNEL LÉTREHOZÁSA ---
echo ""
echo "2. Cloudflare fiók bejelentkezés..."
echo "Egy böngészőablak megnyílik. Kérjük, válassza ki a ${DOMAIN} domaint, és engedélyezze a hozzáférést."
cloudflared tunnel login
# Létrehozzuk a tunnelt. A credentials fájl a ~/.cloudflared/ mappába kerül.
echo ""
echo "3. Cloudflare Tunnel létrehozása..."
cloudflared tunnel create "${TUNNEL_NAME}"
# A tunnel JSON fájl elérési útjának kinyerése
TUNNEL_JSON_PATH=$(find ~/.cloudflared/ -type f -name "*.json" | head -n 1)
TUNNEL_ID=$(cat "${TUNNEL_JSON_PATH}" | grep "TunnelID" | awk -F'"' '{print $4}')
echo "Létrehozott Tunnel ID: ${TUNNEL_ID}"
# --- 3. KONFIGURÁCIÓS FÁJL LÉTREHOZÁSA ÉS ÁTMÁSOLÁSA ---
echo ""
echo "4. Konfigurációs fájl létrehozása és másolása a service-hez..."
# A konfigurációs fájl tartalmát egy változóba mentjük.
CONFIG_FILE_CONTENT="tunnel: ${TUNNEL_ID}
credentials-file: /etc/cloudflared/${TUNNEL_ID}.json
ingress:
- hostname: ${FULL_HOSTNAME}
service: ${APACHE_SERVICE}
- service: http_status:404"
# Eltároljuk a konfigurációs fájlt a megfelelő helyen.
mkdir -p /etc/cloudflared
echo "${CONFIG_FILE_CONTENT}" | tee /etc/cloudflared/config.yml > /dev/null
echo "A '/etc/cloudflared/config.yml' sikeresen létrehozva."
# Átmásoljuk a credentials fájlt, hogy a service hozzáférjen.
cp "${TUNNEL_JSON_PATH}" /etc/cloudflared/"${TUNNEL_ID}".json
echo "A credentials fájl sikeresen átmásolva."
# --- 4. DNS REKORD BEÁLLÍTÁSA ---
echo ""
echo "5. DNS rekord beállítása a Cloudflare-en..."
# A DNS rekord automatikus létrehozása a Cloudflare-en.
cloudflared tunnel route dns "${TUNNEL_NAME}" "${FULL_HOSTNAME}"
echo "A DNS rekord sikeresen beállítva a Cloudflare-en."
# --- 5. SZOLGÁLTATÁS BEÁLLÍTÁSA ÉS INDÍTÁSA ---
echo ""
echo "6. Cloudflared szolgáltatás beállítása és indítása..."
# Létrehozzuk a cloudflared systemd service-t
cat << EOF | tee /etc/systemd/system/cloudflared.service >/dev/null
[Unit]
Description=Cloudflare Tunnel
After=network-online.target
[Service]
ExecStart=cloudflared tunnel run ${TUNNEL_NAME}
Restart=on-failure
RestartSec=10
StandardOutput=journal
StandardError=journal
User=root
[Install]
WantedBy=multi-user.target
EOF
# Frissítjük a systemd-t és elindítjuk a szolgáltatást
systemctl daemon-reload
systemctl start cloudflared
# Engedélyezzük a szolgáltatást, hogy automatikusan elinduljon a boot-kor.
systemctl enable cloudflared
echo "A Cloudflared szolgáltatás elindult és be van állítva az automatikus indításra."
echo ""
echo "--- TELEPÍTÉS KÉSZ! ---"
echo "A Cloudflare Tunnel most már fut a '${TUNNEL_NAME}' néven, és a '${FULL_HOSTNAME}' címen keresztül eléred a helyi szolgáltatásodat."
echo "Ellenőrizheted a service státuszát a 'sudo systemctl status cloudflared' paranccsal."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment