From 05802dd72f3f7b305924344d600690ff92fbf270 Mon Sep 17 00:00:00 2001 From: Michael SCHAL Date: Wed, 18 Mar 2026 10:11:01 +0100 Subject: [PATCH] Initial commit : Gateway Hostinger (frps + Caddy) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - frps : reçoit le tunnel frpc depuis le serveur magasin - Caddy : reverse proxy HTTPS avec SSL automatique Let's Encrypt - Expose api.ffnancy.fr → tunnel → API interne magasin Co-Authored-By: Claude Sonnet 4.6 --- .env.example | 5 +++++ .gitignore | 5 +++++ Caddyfile | 20 ++++++++++++++++++++ docker-compose.yml | 33 +++++++++++++++++++++++++++++++++ frps.toml.example | 10 ++++++++++ 5 files changed, 73 insertions(+) create mode 100644 .env.example create mode 100644 .gitignore create mode 100644 Caddyfile create mode 100644 docker-compose.yml create mode 100644 frps.toml.example diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..32b87e2 --- /dev/null +++ b/.env.example @@ -0,0 +1,5 @@ +# Copier ce fichier en .env et remplir les valeurs + +# Token partagé entre frps (Hostinger) et frpc (magasin) +# Doit être identique dans frps.toml ET frpc.toml côté magasin +FRP_TOKEN=CHANGE_ME_FRP_SECRET_TOKEN diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d81bcd4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +.env +# frps.toml contient le token secret — ne pas committer +frps.toml +caddy_data/ +caddy_config/ diff --git a/Caddyfile b/Caddyfile new file mode 100644 index 0000000..c53db45 --- /dev/null +++ b/Caddyfile @@ -0,0 +1,20 @@ +# Caddy obtient automatiquement le certificat Let's Encrypt pour api.ffnancy.fr +# Prérequis : DNS A record api.ffnancy.fr → IP du serveur Hostinger + +api.ffnancy.fr { + # Proxifie vers le port exposé par frps (trafic tunnel depuis le magasin) + reverse_proxy frps:13000 + + # Headers de sécurité + header { + X-Content-Type-Options nosniff + X-Frame-Options DENY + Referrer-Policy no-referrer + } + + # Logs + log { + output stdout + level INFO + } +} diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..6d34297 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,33 @@ +services: + + # Reçoit le tunnel entrant du serveur magasin (frpc → frps) + # Expose le port 7000 sur internet pour que le magasin puisse s'y connecter + frps: + image: snowdreamtech/frps:latest + container_name: ff_frps + volumes: + - ./frps.toml:/etc/frp/frps.toml:ro + ports: + - "7000:7000" # connexions frpc entrant depuis le magasin + restart: unless-stopped + + # Reverse proxy HTTPS avec SSL automatique (Let's Encrypt) + # Proxifie api.ffnancy.fr → tunnel frp → API du magasin + caddy: + image: caddy:2-alpine + container_name: ff_caddy + ports: + - "80:80" + - "443:443" + - "443:443/udp" + volumes: + - ./Caddyfile:/etc/caddy/Caddyfile:ro + - caddy_data:/data + - caddy_config:/config + depends_on: + - frps + restart: unless-stopped + +volumes: + caddy_data: + caddy_config: diff --git a/frps.toml.example b/frps.toml.example new file mode 100644 index 0000000..e6c2d25 --- /dev/null +++ b/frps.toml.example @@ -0,0 +1,10 @@ +# Copier en frps.toml et remplir le token +# frps.toml est exclu du git (contient le token secret) + +bindAddr = "0.0.0.0" +bindPort = 7000 + +auth.method = "token" +auth.token = "CHANGE_ME_FRP_SECRET_TOKEN" + +log.level = "info"