Reverse proxy avec VPS frontend
🚀 Objectif
- Utiliser un VPS OVH comme passerelle d'accès
- Tunnel des services locaux via FRP (Fast Reverse Proxy)
- Reverse proxy HTTPS avec Caddy sur le VPS
- Accès via des sous-domaines personnalisés
🌐 Prérequis
- Un VPS avec Ubuntu/Debian
- Un nom de domaine chez OVH avec DNS pointés vers le VPS
- Un serveur local (Proxmox) avec :
- APP1 sur 192.168.X.X:8080
- APP2 sur 192.168.X.X:8080/exemple
- PROXMOX sur 192.168.X.X:8662
Différents cas d'usage sont donnés ici. APP1 étant une application classique sans configuration particulière. APP2 est une application utilisant une redirection vers un lien spécifique, ici le dossier "exemple". Et enfin une configuration adapté pour PROXMOX.
✅ Partie 1 : Installer FRP
Sur le VPS (serveur FRP)
cd /opt
wget https://github.com/fatedier/frp/releases/download/v0.58.0/frp_0.58.0_linux_amd64.tar.gz
tar -xzf frp_0.58.0_linux_amd64.tar.gz
mv frp_0.58.0_linux_amd64 frp
nano /opt/frp/frps.ini
Contenu :
[common]
bind_port = 6000
Lancer manuellement (ou voir plus bas pour le service) :
/opt/frp/frps -c /opt/frp/frps.ini
Créer le service systemd :
sudo nano /etc/systemd/system/frps.service
Contenu :
[Unit]
Description=FRP Server
After=network.target
[Service]
ExecStart=/opt/frp/frps -c /opt/frp/frps.ini
Restart=always
User=user
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
Puis :
sudo systemctl daemon-reexec
sudo systemctl enable --now frps
Sur le serveur local (client FRP)
cd /opt
wget https://github.com/fatedier/frp/releases/download/v0.58.0/frp_0.58.0_linux_amd64.tar.gz
tar -xzf frp_0.58.0_linux_amd64.tar.gz
mv frp_0.58.0_linux_amd64 frp
nano /opt/frp/frpc.ini
Contenu :
[common]
server_addr = IP_DU_VPS
server_port = 6000
[APP1]
type = tcp
local_ip = 192.186.X.X
local_port = 8080
remote_port = 9000
[APP2]
type = tcp
local_ip = 192.168.X.X
local_port = 8080
remote_port = 9001
[PROXMOX]
type = tcp
local_ip = 192.168.X.X
local_port = 8662
remote_port = 9002
Créer le service FRP client :
sudo nano /etc/systemd/system/frpc.service
Contenu :
[Unit]
Description=FRP Client
After=network.target
[Service]
ExecStart=/opt/frp/frpc -c /opt/frp/frpc.ini
Restart=always
User=user
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
Et activer :
sudo systemctl daemon-reexec
sudo systemctl enable --now frpc
🔧 Partie 2 : Installer Caddy sur le VPS
sudo apt install -y debian-keyring debian-archive-keyring curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy.list
sudo apt update
sudo apt install caddy
🗃️ Partie 3 : Configuration du Caddyfile (côté VPS)
sudo nano /etc/caddy/Caddyfile
Contenu recommandé :
Ce contenu comporte différents types de configuration. Prenez le plus adapté à votre cas d'usage.
proxmox.domaine.com {
reverse_proxy https://localhost:9000 {
transport http {
tls_insecure_skip_verify
versions h1
}
header_up Host {host}
header_up X-Real-IP {http.request.remote}
header_up X-Forwarded-For {http.request.remote}
header_up X-Forwarded-Proto {http.request.scheme}
}
}
app1.domaine.com {
reverse_proxy localhost:6001
}
app2.domaine.com {
@exemple_path path /*
rewrite @exemple_path /exemple{path}
reverse_proxy localhost:9002 {
transport http {
versions h1
}
header_up Host {host}
header_up X-Forwarded-Proto https
}
}
Puis :
sudo systemctl reload caddy
🚪 Test des services
- Proxmox : https://proxmox.domaine.com
- APP1 : https://app1.domaine.com
- APP2 : https://app2.domaine.com (mais affiché sans /exemple)
🌟 Et voilà !
Tu as maintenant une exposition sécurisée de tes services locaux via un VPS, sans exposer ton IP personnelle, avec HTTPS et Caddy.