> 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/notions-de-base/comment-servir-des-llm-locaux-partout-acces-distant-securise-avec-cloudflare-et-unsloth.md).

# Comment servir 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 à l’aide d’un tunnel Cloudflare via [Unsloth](https://github.com/unslothai/unsloth). Aucun compte Cloudflare, configuration de domaine ni transfert de port n’est requis. Exécutez des modèles d’IA privés sur votre propre matériel, vos serveurs ou des GPU cloud, et connectez-vous de n’importe où comme 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 sur un serveur personnel.

Unsloth peut fonctionner 100 % hors ligne sur votre ordinateur. Activez l’accès distant 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, où que vous soyez.
{% endcolumn %}

{% column %}

<figure><img src="https://3215535692-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FD2v8S0MkS1xAeEVersl2%2Fmobile_studio1.gif?alt=media&#x26;token=7cd8a534-d82f-4f05-8d5a-9b7277f7eac0" alt="" width="180"><figcaption></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

C’est gratuit. Rien à créer ni à payer, et vous ne touchez jamais à votre routeur ni à votre 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 :

* **Lorsque vous démarrez Unsloth :** ajoutez `--secure` à votre `unsloth studio` commande
* **Pendant qu’Unsloth s’exécute :** allez dans Paramètres → API → **Accès distant** et appuyez sur **Démarrez**

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

### ⚡ Démarrage rapide

Nous allons d’abord devoir télécharger l’ [Unsloth Desktop](https://unsloth.ai/download) application.

1. Installez l’application pour [macOS](https://unsloth.ai/download/mac), Windows, ou [Linux](https://unsloth.ai/download/linux)
2. Lancez l’application
3. Puis allez dans Paramètres → Distant et LAN → Accès distant.

<div data-with-frame="true"><figure><img src="https://3215535692-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2F31IAHABHEuWz1juiABBY%2Fimage.png?alt=media&#x26;token=b430b2f7-f91b-49e3-a4b6-c46bd688bbfc" alt=""><figcaption></figcaption></figure></div>

Utilisez ceci lorsque Unsloth est déjà en cours d’exécution et que vous voulez l’avoir sur votre téléphone ou sur une autre machine. Appuyez sur **Démarrez**, 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é.

Trois choses à savoir :

* Toute personne disposant de l’URL et du 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.
* Un `0.0.0.0` port brut reste ouvert. Seul `--secure` le ferme.

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

#### Lorsque 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 est encore en cours de démarrage.</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> / Modifiez 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>explicitement_disabled</code></td><td>Ce lancement a utilisé <code>--no-cloudflare</code>. Redémarrez sans cela pour activer l’accès distant.</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 distant 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 y basculent automatiquement :

* **Paramètres → API → Exemples d’utilisation** s’enrichit d’un **interrupteur HTTPS sécurisé** est activé. Lorsqu’il l’est, chaque extrait curl/Python/JavaScript et commande d’agent de codage est réécrit en utilisant la base `trycloudflare.com` au lieu de `localhost`. `--secure`, si vous n’avez pas lancé avec *"Le port 0.0.0.0 reste accessible globalement. Pour une sécurité totale, lancez Unsloth avec `--secure` afin d’exposer uniquement ce lien HTTPS."*
* Le **moniteur API** de la page **URL de base** l’affichage montre l’origine du tunnel, donc 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, 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 se lever, Unsloth **quitte au lieu de revenir** à un port brut. La bannière affiche :

```
🦥 Unsloth Studio est en cours d’exécution (sécurisé)
────────────────────────────────────────────────────
  Accès sécurisé au lien 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* un URL Cloudflare public est publié. 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. Trouvez la **Accès distant** carte.
3. Cliquez sur **Démarrez**.
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 `unsloth studio` (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 sur 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 un <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> le force à être désactivé, mais ne <strong>rend</strong> pas une liaison générique privée.</td></tr></tbody></table>

Remarques sur la gestion des drapeaux :

* `--secure` ignore `-H`. Si vous passez un autre hôte, il affiche une note et lie `127.0.0.1` quand même.
* `--secure --no-cloudflare` est une contradiction et se termine avec le code `2`.
* Ces drapeaux appartiennent au chemin du serveur simple. Les mettre *avant* à une sous-commande (`unsloth studio --secure run ...`) se termine `2` avec la commande corrigée, car Typer les ignorerait sinon silencieusement. Utilisez `unsloth studio run --secure ...`.
* Le choix est conservé à travers le ré-exec interne d’Unsloth sous forme de tri-état (`activé` / `désactivé` / `non défini`), donc un `ENV Docker` ou `systemd Environment=` 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">Lancement</th><th>Port brut</th><th>URL Cloudflare publique</th></tr></thead><tbody><tr><td><code>unsloth studio</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>tel que 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` tunnelise toujours (même `--api-only`, pour un service API sécurisé sans interface graphique) ; sinon, le tunnel ne démarre que pour une liaison générique qui n’est `--api-only`.

#### `--secure` échoue de façon 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 se termine `1`. C’est délibéré : `--secure` signifie « aucun port public brut », donc revenir silencieusement à un serveur limité au loopback que vous croyez publié serait pire que d’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É. Ceci est une URL publique Internet : toute personne qui la possède peut atteindre 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é trouvé indépendamment accessible depuis Internet. 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 à une URL publique alors que le compte administrateur possède encore son mot de passe 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é à le saisir. L’abandon (Ctrl+C) refuse le lancement.
* **Pas de terminal :** Unsloth affiche alors un avertissement, n’injecte jamais l’identifiant bootstrap dans la page publique et active l’échéance bootstrap ; il s’arrête après `UNSLOTH_STUDIO_BOOTSTRAP_TIMEOUT` (par défaut 1 heure) sauf si le mot de passe est changé.
* **Pas de terminal et pas d’échéance** (`--api-only`, ou `UNSLOTH_STUDIO_BOOTSTRAP_TIMEOUT=0`) : le lancement est purement et simplement refusé, car rien ne le protégerait.
* **`--secure` par `cloudflared` manifestement indisponible :** refusé avec le mot de passe amorcé conservé, de sorte qu’un tunnel échoué 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 (ne prend effet que s’il n’est pas 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` apparaît dans `ps` et dans l’historique du shell, donc préférez la variable d’environnement ou l’entrée standard. Faites la rotation plus tard avec `unsloth studio reset-password`.

### 📓 Google Colab

`run_server` supprime le tunnel du chemin de lancement sur Colab, puisque Colab relaie 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 conserve son mot de passe bootstrap, cet identifiant est visible par toute personne pouvant charger la page. Connectez-vous, modifiez le mot de passe, puis relancez. Tout échec retombe à « aucun lien » et le proxy Colab continue de fonctionner.

### 🔒 Sécurité

Publier Unsloth signifie que toute personne détenant l’URL **et** 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ées par défaut, donc toute personne accédant au serveur avec votre clé API peut exécuter du code sur cette machine. Passez `--disable-tools` lors de l’exposition d’Unsloth, et gardez la clé API privée. Chaque lancement joignable 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 appelant tunnelisé partagerait autrement un seul quota. Lorsque le pair du socket est loopback, Unsloth respecte le `CF-Connecting-IP`, que l’extrémité réseau définit et qu’un client tunnelisé ne peut pas falsifier. Derrière votre propre proxy inverse, optez pour `X-Forwarded-For` par `UNSLOTH_STUDIO_TRUST_FORWARDED=1`.
* **Les serveurs MCP stdio locaux sont révoqués lorsqu’un tunnel est actif.** Le stdio MCP est activé automatiquement seulement comme commodité pour le 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 l’emporte quand même.
* **L’URL est aléatoire et jetable.** Les Quick Tunnels obtiennent un nouveau nom d’hôte à chaque démarrage. Traitez l’URL elle-même comme un secret, et rappelez-vous qu’il n’existe aucun moyen de l’épingler.

### ❔ Dépannage

Ce sont les statuts exacts affichés dans la carte Accès distant. Tout le reste est regroupé sous le générique `échec du tunnel Cloudflare`.

| Erreur                                        | Signification                                                                      | Corriger                                                                                                     |
| --------------------------------------------- | ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
| `cloudflared est indisponible`                | Pas sur `PATH`, pas mis 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 aucun 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` réessai. | Votre réseau bloque QUIC *et* HTTP/2 vers l’extrémité réseau de Cloudflare.                                  |
| `L’URL Cloudflare n’était pas accessible`     | Enregistrée, mais la vérification 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 tueur OOM 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 :

* **`--secure` se termine 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 indiquée dans le tableau ci-dessus.

### 🌱 Variables d’environnement

| Variable                              | Objectif                                                                                                                                                          |
| ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `UNSLOTH_STUDIO_HOME`                 | Répertoire d’installation ; le `cloudflared` cache se trouve dans `<root>/bin`.                                                                                   |
| `UNSLOTH_STUDIO_BOOTSTRAP_TIMEOUT`    | Secondes avant qu’un lancement public non sécurisé ne s’arrête de lui-même. Par défaut `3600`; `0` désactive (et fait refuser un lancement public sans terminal). |
| `UNSLOTH_STUDIO_PASSWORD`             | Mot de passe administrateur initial pour les lancements sans terminal.                                                                                            |
| `UNSLOTH_STUDIO_DISABLE_PUBLIC_CHECK` | `1` ignore la vérification de joignabilité du port brut effectuée par un tiers sur les liaisons génériques.                                                       |
| `UNSLOTH_STUDIO_TRUST_FORWARDED`      | `1` respecte `X-Forwarded-For` derrière votre propre proxy inverse.                                                                                               |
| `UNSLOTH_STUDIO_ALLOW_STDIO_MCP`      | `1` garde les serveurs MCP stdio activés même avec un tunnel actif ; `0` désactive de force.                                                                      |

### 🌐 API HTTP

Les quatre nécessitent une **session UI,** une clé API est rejetée avec `403 L’accès distant nécessite une session UI.` 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>Objectif</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>.</td></tr><tr><td><code>POST</code></td><td><code>/api/settings/remote-access/start</code></td><td>Planifier un démarrage géré 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 géré 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://unsloth.ai/docs/fr/notions-de-base/comment-servir-des-llm-locaux-partout-acces-distant-securise-avec-cloudflare-et-unsloth.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
