# FRP (Fast Reverse Proxy)

<div class="contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary" id="bkmrk-"><div class="sticky top-9">  
</div></div>### 🌐 Mettre en place un tunnel FRP

#### 🧭 Objectif

Configurer un tunnel sécurisé entre :

<div class="contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary" id="bkmrk-%F0%9F%8F%AB%C2%A0serveur-distant-%28e"><div class="overflow-y-auto p-4" dir="ltr">- 🏫 **Serveur distant (ex : école)** inaccessible de l’extérieur
- 🏠 **Serveur personnel (chez vous)** accessible via Internet

</div></div>Le but est d’exposer un service local (ex : un site en localhost sur le port 3000) du serveur école via un domaine (ex : `mondomaine.fr`) en passant par le serveur personnel.

<div class="contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary" id="bkmrk--1"><div class="overflow-y-auto p-4" dir="ltr">---

</div></div>#### 📥 Étape 1 — Télécharger FRP

Rendez-vous sur : [https://github.com/fatedier/frp/releases](https://github.com/fatedier/frp/releases)

Téléchargez la dernière version pour Linux (ex : `frp_0.62.0_linux_amd64.tar.gz`).

Décompressez sur chaque machine :

```bash
tar -xvzf frp_0.62.0_linux_amd64.tar.gz
cd frp_0.62.0_linux_amd64
```

<div class="contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary" id="bkmrk--2"><div class="overflow-y-auto p-4" dir="ltr">  
</div></div>---

#### 🏠 Étape 2 — Configurer le serveur FRP (`frps`) sur le **serveur personnel**

Créez le fichier `frps.toml` :

```bash
[common] 
bind_port = 7000 
vhost_http_port = 8080 
dashboard_port = 7500 
dashboard_user = "admin" 
dashboard_pwd = "admin" 
authentication_method = "token" 
token = "votreTokenSecret"
```

##### Lancer le serveur FRP :

```bash
./frps -c frps.toml
```

##### (Optionnel) Lancer via PM2 :

```bash
pm2 start ./frps --name frps -- -c ./frps.toml pm2 save pm2 startup
```

---

#### 🏫 Étape 3 — Configurer le client FRP (`frpc`) sur le **serveur distant**

Créez le fichier `frpc.toml` :

```bash
[common] 
server_addr = "IP_DU_SERVEUR_PERSONNEL" 
server_port = 7000 
authentication_method = "token" 
token = "votreTokenSecret" 

[appweb] 
type = "http" 
local_port = 3000 
custom_domains = "mondomaine.fr"
```

##### Lancer le client :

```bash
./frpc -c frpc.toml
```

##### (Optionnel) Lancer via PM2 :

```bash
pm2 start ./frpc --name frpc -- -c ./frpc.toml pm2 save pm2 startup
```

---

## 🌍 Étape 4 — Configurer le DNS

Ajoutez un enregistrement DNS :

<table class="min-w-full" data-end="2275" data-start="2085" id="bkmrk-type-nom-valeur-prox" style="height: 55px; width: 100%;"><thead data-end="2146" data-start="2085"><tr data-end="2146" data-start="2085"><th data-end="2092" data-start="2085" style="width: 24.9691%;">Type</th><th data-end="2112" data-start="2092" style="width: 24.9691%;">Nom</th><th data-end="2137" data-start="2112" style="width: 24.9691%;">Valeur</th><th data-end="2146" data-start="2137" style="width: 24.9691%;">Proxy</th></tr></thead><tbody data-end="2275" data-start="2210"><tr data-end="2275" data-start="2210"><td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="2217" data-start="2210" style="width: 24.9691%;">A</td><td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="2237" data-start="2217" style="width: 24.9691%;">mondomaine.fr</td><td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="2263" data-start="2237" style="width: 24.9691%;">IP\_DU\_SERVEUR\_PERSONNEL</td><td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="2275" data-start="2263" style="width: 24.9691%;">✅ activé</td></tr></tbody></table>

---

#### 🌐 Étape 5 — (Optionnel) Reverse proxy avec Caddy

Si vous utilisez **Caddy** sur le serveur personnel :

```
mondomaine.fr { 
    reverse_proxy localhost:8080 {
    }
}
```

##### Recharger Caddy :

```bash
sudo systemctl reload caddy
```

---

#### 🧪 Vérification

1. Accédez à `https://mondomaine.fr`
2. Visitez le dashboard FRP (si activé) : `http://IP:7500`
3. Consultez les logs avec `pm2 logs frps` ou `frpc`

---

#### ✅ Résumé

- 🔐 Connexion sortante seulement depuis le serveur distant
- 🌍 Tunnel HTTP sécurisé entre deux machines
- 🔁 Service redirigé automatiquement depuis un domaine public

---

#### 📚 Liens utiles

- Documentation officielle : [https://gofrp.org/en/](https://gofrp.org/en/)
- GitHub : [https://github.com/fatedier/frp](https://github.com/fatedier/frp)