> For the complete documentation index, see [llms.txt](https://unsloth.ai/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://unsloth.ai/docs/fr/bases/comment-heberger-des-llm-locaux-partout-acces-distant-securise-avec-cloudflare-et-unsloth.md).

# Comment héberger des LLM locaux partout : accès distant sécurisé avec Cloudflare et Unsloth

Servez et déployez des modèles d’IA locaux partout. Vous pouvez accéder en toute sécurité à vos LLM locaux depuis un autre appareil via HTTPS en utilisant un tunnel Cloudflare via [Unsloth](https://github.com/unslothai/unsloth). Aucun compte Cloudflare, aucune configuration de domaine ni redirection de port n’est requise. Exécutez des modèles d’IA privés sur votre propre matériel, vos serveurs ou vos GPU cloud et connectez-vous de n’importe où, par exemple depuis votre téléphone.

{% columns %}
{% column %}
Unsloth est un projet open source qui vous permet d’entraîner et d’exécuter des LLM localement et, avec un tunnel Cloudflare, vous pouvez accéder à Unsloth depuis votre appareil mobile, partager l’accès avec un ami ou un collègue, héberger Unsloth sur un serveur comme Google Colab, AWS, ou même un serveur personnel.

Unsloth peut fonctionner 100 % hors ligne sur votre ordinateur. Activez l’accès à distance et vous obtenez un lien web comme `https://known-plates-desire-turkey.trycloudflare.com`. Ouvrez-le sur votre téléphone, votre ordinateur portable ou dans n’importe quel navigateur, partout.
{% endcolumn %}

{% column %}

<figure><img src="/files/2b57fddb427122200b5fea686087f4cd1debe44d" alt="" width="180"><figcaption></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

C’est gratuit. Rien à créer ni à payer et vous ne touchez jamais à votre routeur ou pare-feu. Une fois Unsloth installé, votre ordinateur se connecte à Cloudflare, et Cloudflare redirige les visiteurs vers lui. Le lien est en HTTPS, donc la connexion est chiffrée.

Deux façons de l’activer :

* **Quand vous démarrez Unsloth :** ajoutez `--secure` à votre `studio Unsloth` commande
* **Pendant qu’Unsloth est en cours d’exécution :** allez dans Paramètres → API → **Accès à distance** et appuyez sur **Démarrer**

Un seul tunnel existe par processus Unsloth, et seul son propriétaire peut l’arrêter.

### ⚡ Démarrage rapide

Tout d’abord, nous devons télécharger l’ [Unsloth Desktop](https://unsloth.ai/download) application.

1. Installez l’application pour [macOS](https://unsloth.ai/download/mac), [Windows](/docs/fr/commencer/install/windows-installation.md), ou [Linux](https://www.jan.ai/docs/desktop/install/linux)
2. Lancer l’application
3. Puis allez dans Paramètres → API → Accès à distance.

<div data-with-frame="true"><figure><img src="/files/9927d5ef4eb7c7d77c3bc900e62fa26d76e23b95" alt=""><figcaption></figcaption></figure></div>

Utilisez ceci quand Unsloth est déjà en cours d’exécution et que vous voulez l’avoir sur votre téléphone ou une autre machine. Appuyez sur **Démarrer**, puis copiez l’ **URL distante** ou scannez le **QR** code. `En ligne` signifie que le lien répond déjà, pas seulement qu’il a été demandé.

Quatre choses à savoir :

* Toute personne ayant l’URL et le mot de passe peut se connecter. Les navigateurs distants se connectent en tant que `unsloth,` définissez cela sous **Mot de passe distant**.
* L’URL est nouvelle à chaque démarrage et ne peut pas être épinglée.
* Le streaming cesse de fonctionner ; les réponses arrivent d’un seul bloc.
* Un `0.0.0.0` port brut reste ouvert. Seul `--secure` le ferme.

Si **Démarrer** est grisé, la carte explique pourquoi, généralement le mot de passe administrateur doit encore être changé, ou le tunnel appartient à la commande de lancement.

#### Quand Démarrer n’est pas disponible

<table><thead><tr><th width="292">Raison</th><th>Message affiché</th></tr></thead><tbody><tr><td><code>server_starting</code></td><td>Unsloth démarre encore.</td></tr><tr><td><code>admin_password_change_required</code></td><td>Définissez un mot de passe distant avant d’exposer ce serveur. <em>(bureau)</em> / Changez le mot de passe administrateur avant d’exposer ce serveur. Dans l’application de bureau, exécutez <code>unsloth studio reset-password</code>. <em>(navigateur)</em></td></tr><tr><td><code>explicitly_disabled</code></td><td>Ce lancement a utilisé <code>--no-cloudflare</code>. Redémarrez sans cela pour activer l’accès à distance.</td></tr><tr><td><code>launch_managed</code></td><td>Ce tunnel est géré par la commande de lancement.</td></tr><tr><td><code>colab_managed</code></td><td>Ce tunnel est géré par l’environnement d’exécution Colab.</td></tr><tr><td><code>colab</code></td><td>Les paramètres d’accès à distance sont gérés par l’environnement d’exécution Colab.</td></tr></tbody></table>

#### L’URL du tunnel dans le reste de l’interface

Une fois qu’un tunnel est en ligne, deux endroits basculent automatiquement dessus :

* **Paramètres → API → Exemples d’utilisation** ajoute un **Bascule HTTPS sécurisé** . Lorsqu’elle est activée, chaque extrait curl/Python/JavaScript et commande d’agent de codage est réécrit vers la base `trycloudflare.com` au lieu de `localhost`. Si vous ne l’avez pas lancé avec `--secure`, une info-bulle vous rappelle : *« Le port 0.0.0.0 reste accessible globalement. Pour une sécurité complète, lancez Unsloth avec `--secure` pour n’exposer que ce lien HTTPS. »*
* Le **Moniteur API** de la page **URL de base** indique l’origine du tunnel, de sorte qu’un extrait copié là fonctionne depuis l’appareil distant, et chaque requête arrivant via le tunnel est listée en direct.

### CLI : méthode HTTPS uniquement

Après avoir installé [Unsloth manuellement](/docs/fr/docs.md#quickstart), exécutez dans votre terminal :

```bash
unsloth studio --secure -p 8888
```

Unsloth reste lié à `127.0.0.1` et est publié **uniquement** via le tunnel. Si le tunnel ne peut pas être établi, Unsloth **quitte au lieu de retomber** sur un port brut. La bannière affiche :

```
🦥 Unsloth Studio est en cours d’exécution (sécurisé)
────────────────────────────────────────────────────
  Accès au lien sécurisé via Cloudflare : https://<random>.trycloudflare.com
  Sur cette machine uniquement : http://127.0.0.1:8888/
────────────────────────────────────────────────────
```

#### CLI : port LAN brut plus un lien public

```bash
unsloth studio -H 0.0.0.0 --cloudflare -p 8888
```

Le port brut reste accessible sur votre réseau *et* une URL Cloudflare publique est publiée. La bannière vous avertit précisément de cela, car c’est le mode le moins privé.

#### UI : démarrer un lien sur un serveur déjà en cours d’exécution

1. Ouvrez **Paramètres → API**.
2. Repérez la **Accès à distance** carte.
3. Cliquez sur **Démarrer**.
4. Lorsque l’état indique **En ligne**, copiez le **URL distante** ou scannez le **QR** code avec votre téléphone.

### 🖥️ Référence CLI

Les deux drapeaux sont acceptés par `studio Unsloth` (le chemin du serveur simple) et par `unsloth studio run`.

<table><thead><tr><th width="283">Drapeau</th><th width="100" align="center">Par défaut</th><th>Effet</th></tr></thead><tbody><tr><td><code>--secure</code> / <code>--no-secure</code></td><td align="center">désactivé</td><td>Publie <strong>uniquement</strong> via Cloudflare. Force une liaison en loopback, implique <code>--cloudflare</code>, et échoue de manière fermée si le tunnel ne peut pas démarrer.</td></tr><tr><td><code>--cloudflare</code> / <code>--no-cloudflare</code></td><td align="center">désactivé</td><td>Publie aussi une URL Cloudflare publique pour une <strong>non-<code>--api-only</code> liaison générique</strong> (<code>0.0.0.0</code> ou <code>::</code>). N’a aucun effet sur une liaison loopback. <code>--no-cloudflare</code> force sa désactivation mais ne <strong>pas</strong> rendre une liaison générique privée.</td></tr></tbody></table>

Notes sur la gestion des drapeaux :

* `--secure` ignore `-H`. Si vous passez un autre hôte, il affiche une note et se lie `127.0.0.1` quand même.
* `--secure --no-cloudflare` est une contradiction et quitte avec le code `2`.
* Ces drapeaux appartiennent au chemin du serveur simple. Les mettre *avant* un sous-commande (`unsloth studio --secure run ...`) quitte `2` avec la commande corrigée, car Typer les ignorerait sinon en silence. Utilisez `unsloth studio run --secure ...`.
* Le choix est conservé à travers la réexécution interne d’Unsloth comme un tri-état (`activé` / `désactivé` / `non défini`), donc un `ENV Docker` ou `systemd Environment=` obsolète ne peut jamais réactiver un tunnel que vous avez exclu dans cette invocation.

#### Ce que chaque lancement expose réellement

<table><thead><tr><th width="391">Lancer</th><th>Port brut</th><th>URL Cloudflare publique</th></tr></thead><tbody><tr><td><code>studio Unsloth</code></td><td>cette machine uniquement</td><td>non</td></tr><tr><td><code>unsloth studio --cloudflare</code></td><td>cette machine uniquement</td><td>non, le drapeau est sans effet sur loopback</td></tr><tr><td><code>unsloth studio -H 0.0.0.0</code></td><td>votre réseau</td><td>non</td></tr><tr><td><code>unsloth studio -H 0.0.0.0 --cloudflare</code></td><td>votre réseau</td><td><strong>oui</strong></td></tr><tr><td><code>unsloth studio --secure</code></td><td>cette machine uniquement</td><td><strong>oui</strong>, et c’est le seul moyen d’y accéder</td></tr><tr><td><code>unsloth studio --api-only</code> (backend de bureau)</td><td>comme lié</td><td>non, sauf <code>--secure</code></td></tr><tr><td>Google Colab</td><td>proxy Colab</td><td>uniquement via <code>start(cloudflare=True)</code></td></tr></tbody></table>

La règle appliquée par le backend : Colab ne crée jamais de tunnel depuis le chemin de lancement ; `--secure` crée toujours un tunnel (même `--api-only`, pour un service API sécurisé sans interface); sinon le tunnel ne démarre que pour une liaison générique qui n’est pas `--api-only`.

#### `--secure` échoue de manière fermée

Si le tunnel ne se met pas en place, `--secure` refuse de continuer à s’exécuter :

```
Un lien Cloudflare sécurisé n’est pas autorisé, utilisez --no-secure qui fournit un lien 0.0.0.0
```

et quitte `1`. C’est délibéré : `--secure` signifie « aucun port public brut », donc passer silencieusement à un serveur uniquement loopback que vous croyez publié serait pire que de s’arrêter.

#### Lignes de la bannière de démarrage

Sur une liaison générique, Unsloth indique toujours l’état du tunnel, de sorte qu’un lancement joignable sur le réseau n’est jamais silencieux :

* Tunnel Cloudflare : ACTIVÉ. C’est une URL INTERNET PUBLIQUE : toute personne qui l’a peut accéder à cet Unsloth.
* Tunnel Cloudflare : ACTIVÉ. Cette URL Cloudflare est PUBLIQUE, et le port brut est également accessible publiquement.
* Tunnel Cloudflare : demandé mais impossible à démarrer.
* Tunnel Cloudflare : DÉSACTIVÉ (par défaut). / DÉSACTIVÉ (--no-cloudflare). / DÉSACTIVÉ pour ce mode.

Chaque variante s’adapte au fait que le port brut ait été ou non trouvé accessible depuis Internet de façon indépendante. Cette vérification d’accessibilité contacte `ifconfig.me` et `check-host.net`; définissez `UNSLOTH_STUDIO_DISABLE_PUBLIC_CHECK=1` pour ignorer les deux.

#### La protection par mot de passe

La première fois qu’un lancement est sur le point de publier Unsloth sur une URL publique alors que le compte administrateur possède encore son mot de passe de bootstrap généré automatiquement, Unsloth s’arrête et en demande un nouveau, masqué, confirmé, **avant qu’un serveur ou un tunnel n’existe**.

* **Terminal attaché :** vous êtes invité. Annuler (Ctrl+C) refuse le lancement.
* **Aucun terminal :** Unsloth avertit à la place, n’injecte jamais les identifiants de bootstrap dans la page publique, et arme la deadline de bootstrap ; il s’arrête après `UNSLOTH_STUDIO_BOOTSTRAP_TIMEOUT` (1 heure par défaut) sauf si le mot de passe est modifié.
* **Aucun terminal et aucune échéance** (`--api-only`, ou `UNSLOTH_STUDIO_BOOTSTRAP_TIMEOUT=0`) : le lancement est refusé purement et simplement, car rien ne le protégerait.
* **`--secure` avec `cloudflared` manifestement indisponible :** refusé avec le mot de passe initial conservé, donc un tunnel raté ne peut pas vous bloquer l’accès.

Pour les configurations sans interface, définissez le mot de passe initial de manière non interactive (n’a d’effet que si aucun n’est encore défini) :

```bash
UNSLOTH_STUDIO_PASSWORD='your-strong-password' unsloth studio --secure
```

```bash
printf '%s\n' 'your-strong-password' | unsloth studio --secure --password -
```

Un `--password VALUE` est visible dans `ps` et l’historique du shell, donc préférez la variable d’environnement ou stdin. Faites ensuite une rotation avec `unsloth studio reset-password`.

### 📓 Google Colab

`run_server` supprime le tunnel du chemin de lancement sur Colab, puisque Colab proxy déjà le port. Demandez explicitement un lien public partageable :

```python
start(cloudflare = True)
```

Colab refuse d’ouvrir le lien tant que le compte administrateur possède encore son mot de passe de bootstrap ; cet identifiant est visible par toute personne pouvant charger la page. Connectez-vous, changez le mot de passe, puis relancez. Toute erreur retombe à « aucun lien » et le proxy Colab continue de fonctionner.

### 🔒 Sécurité

Publier Unsloth signifie que toute personne détenant l’URL **et** un identifiant peut l’utiliser.

* **Les outils côté serveur s’exécutent avec votre utilisateur.** La recherche web, Python et l’exécution dans le terminal sont activés par défaut, donc toute personne atteignant le serveur avec votre clé API peut exécuter du code sur cette machine. Passez `--disable-tools` lorsque vous exposez Unsloth, et gardez la clé API privée. Chaque lancement accessible sur le réseau le dit dans la bannière.
* **La protection par mot de passe administrateur** ci-dessus n’est pas facultative sur un tunnel géré par le lancement.
* **La limitation de débit reste par visiteur.** Le tunnel se termine à `127.0.0.1`, donc chaque client passant par le tunnel partagerait autrement un seul quota. Lorsque le pair socket est en loopback, Unsloth respecte le `CF-Connecting-IP`, que l’extrémité réseau définit et qu’un client tunnelisé ne peut pas usurper. Derrière votre propre proxy inverse, optez pour `X-Forwarded-For` avec `UNSLOTH_STUDIO_TRUST_FORWARDED=1`.
* **Les serveurs MCP stdio locaux sont révoqués lorsqu’un tunnel est actif.** Le MCP stdio est activé automatiquement uniquement comme commodité en loopback ; un connecteur distant rompt cette frontière de confiance, donc la valeur par défaut automatique se désactive. Un `UNSLOTH_STUDIO_ALLOW_STDIO_MCP=1` explicite reste prioritaire.
* **L’URL est aléatoire et jetable.** Les tunnels rapides obtiennent un nouveau nom d’hôte à chaque démarrage. Considérez l’URL elle-même comme un secret, et rappelez-vous qu’il n’est pas possible de l’épingler.

### ❔ Dépannage

Voici les états exacts affichés dans la carte Accès à distance. Tout le reste est réduit au générique `échec du tunnel Cloudflare`.

| Erreur                                        | Signification                                                                      | Correction                                                                                                   |
| --------------------------------------------- | ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
| `cloudflared est indisponible`                | Pas dans `PATH`, pas en cache, et le téléchargement a échoué.                      | Vérifiez l’accès sortant vers `github.com`, ou installez `cloudflared` vous-même afin qu’il soit sur `PATH`. |
| `cloudflared n’a pas produit d’URL`           | Le processus s’est terminé avant d’en générer une.                                 | Généralement pas de réseau sortant. Réessayez ; vérifiez un proxy ou un filtre de sortie.                    |
| `cloudflared n’a pas enregistré de connexion` | URL générée, mais aucune connexion à l’extrémité réseau, après la `http2` relance. | Votre réseau bloque QUIC *et* HTTP/2 vers l’extrémité réseau de Cloudflare.                                  |
| `L’URL Cloudflare n’était pas accessible`     | Enregistré, mais la sonde de santé n’a jamais répondu via l’URL publique.          | Propagation transitoire de l’extrémité réseau/DNS ; appuyez à nouveau sur Démarrer.                          |
| `cloudflared s’est arrêté`                    | Le connecteur est mort alors qu’il était en ligne.                                 | Relancez ; vérifiez un OOM killer ou un superviseur de processus qui récupère les enfants.                   |
| `cloudflared n’a pas pu être arrêté`          | L’arrêt n’a jamais été confirmé, donc l’emplacement est toujours occupé.           | Appuyez à nouveau sur Arrêter ; si cela persiste, redémarrez Unsloth.                                        |

Autres symptômes :

* **La page se charge mais ne diffuse rien.** SSE attendu ci-dessus. Utilisez le chemin non diffusé, ou accédez à Unsloth sur le LAN pour cette fonctionnalité.
* **`--secure` quitte immédiatement.** Le tunnel a échoué ; le message nomme `--no-secure` comme alternative. Corrigez d’abord la connectivité, car `--no-secure` publie un port brut.
* **Démarrer est grisé dans l’interface.** Lisez le message sous la carte ; il nomme la raison du blocage à partir du tableau ci-dessus.

### 🌱 Variables d’environnement

| Variable                              | But                                                                                                                                                                        |
| ------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `UNSLOTH_STUDIO_HOME`                 | Racine d’installation ; le `cloudflared` cache se trouve dans `<racine>/bin`.                                                                                              |
| `UNSLOTH_STUDIO_BOOTSTRAP_TIMEOUT`    | Nombre de secondes avant qu’un lancement public non sécurisé ne s’arrête tout seul. Par défaut `3600`; `0` désactive (et fait refuser un lancement public sans interface). |
| `UNSLOTH_STUDIO_PASSWORD`             | Mot de passe administrateur initial pour les lancements sans interface.                                                                                                    |
| `UNSLOTH_STUDIO_DISABLE_PUBLIC_CHECK` | `1` ignore la sonde de disponibilité du port brut d’un tiers sur les liaisons génériques.                                                                                  |
| `UNSLOTH_STUDIO_TRUST_FORWARDED`      | `1` honneurs `X-Forwarded-For` derrière votre propre proxy inverse.                                                                                                        |
| `UNSLOTH_STUDIO_ALLOW_STDIO_MCP`      | `1` maintient les serveurs MCP stdio activés même lorsqu’un tunnel est actif ; `0` désactive de force.                                                                     |

### 🌐 API HTTP

Les quatre nécessitent une **session d’interface utilisateur,** une clé API est rejetée avec `403 L’accès à distance nécessite une session d’interface utilisateur.` Une opération refusée renvoie `409` avec la raison du blocage comme détail.

<table><thead><tr><th width="100">Méthode</th><th>Chemin</th><th>But</th></tr></thead><tbody><tr><td><code>GET</code></td><td><code>/api/settings/remote-access</code></td><td>État actuel, URL, propriétaire, <code>can_start</code> / <code>can_stop</code>, <code>block_reason</code>, <code>streaming_supported</code>.</td></tr><tr><td><code>POST</code></td><td><code>/api/settings/remote-access/start</code></td><td>Planifier un démarrage détenu par les paramètres. Idempotent.</td></tr><tr><td><code>POST</code></td><td><code>/api/settings/remote-access/stop</code></td><td>Planifier un arrêt détenu par les paramètres. Ne modifie pas la préférence de démarrage automatique.</td></tr><tr><td><code>PUT</code></td><td><code>/api/settings/remote-access/auto-start</code></td><td><code>{"enabled": true|false}</code>. Rejeté sur Colab.</td></tr></tbody></table>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://unsloth.ai/docs/fr/bases/comment-heberger-des-llm-locaux-partout-acces-distant-securise-avec-cloudflare-et-unsloth.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
