Par MV2 de Munim, Inc. Vérifié le 12 octobre 2026 d'après la documentation d'authentification d'Ollama, la FAQ d'Ollama, la documentation n8n sur les identifiants Ollama, la documentation de l'API d'Open WebUI et la documentation des matchers de Caddy. Uniquement pour vos propres machines. Cette page a été traduite avec une IA à partir de l'original en anglais ; en cas d'écart, l'original fait foi.
OLLAMA_API_KEY sert pour ollama.com, le cloud d'Ollama. Vous la créez dans vos réglages ollama.com et l'envoyez à https://ollama.com/api. Elle ne protège pas votre propre serveur.http://localhost:11434 does not require authentication » (l'API locale ne demande pas d'authentification). Aucun réglage ne permet d'en activer une. Quiconque atteint le port 11434 peut lancer des prompts sur votre GPU et télécharger, créer ou supprimer des modèles.127.0.0.1 et faites d'un reverse proxy qui vérifie un en-tête Authorization: Bearer <key> le seul point d'entrée. C'est cet en-tête qu'envoient les clients de type OpenAI, n8n et Open WebUI quand vous remplissez un champ « API key ».Si Ollama n'est utilisé que sur la machine où il tourne, vous n'avez besoin de rien de tout cela. Laissez-le sur 127.0.0.1 ; la liste de contrôle de sécurisation montre comment le vérifier.
Open WebUI relaie les requêtes vers Ollama sous /ollama/ et vérifie ses propres clés d'API. Ollama reste interne, et aucun logiciel supplémentaire n'est nécessaire.
sk-). Si l'option n'apparaît pas, un administrateur doit d'abord autoriser les clés d'API ; voir la documentation d'Open WebUI sur les clés d'API.curl https://webui.example.home/ollama/api/tags -H "Authorization: Bearer sk-..."ou utilisez le point d'accès compatible OpenAI d'Open WebUI,
/api/chat/completions.https://webui.example.home/ollama et son API Key sur la clé sk-. La documentation de n8n cite Open WebUI comme exemple de cette configuration.La clé porte les droits de cet utilisateur d'Open WebUI : créez donc un utilisateur distinct par application, et tenez Open WebUI à jour (voir les avis de sécurité d'Open WebUI (en anglais)).
Ollama doit écouter sur 127.0.0.1:11434 (la valeur par défaut). Si vous avez défini OLLAMA_HOST=0.0.0.0 auparavant, annulez-le comme à l'étape 2 de la liste de contrôle. Sinon, on peut contourner le proxy en allant directement sur le port 11434. Générez ensuite une longue clé aléatoire :
openssl rand -hex 32 # or python3 -c "import secrets; print(secrets.token_urlsafe(32))"
(Une seule des deux commandes suffit.)
Caddy obtient tout seul un certificat HTTPS quand ollama.example.com est un vrai domaine qui pointe vers cette machine. Remplacez le domaine et PASTE_YOUR_KEY_HERE (par votre clé) :
ollama.example.com {
@key header Authorization "Bearer PASTE_YOUR_KEY_HERE"
handle @key {
reverse_proxy 127.0.0.1:11434 {
header_up Host localhost:11434
header_up -Authorization
}
}
handle {
respond "Missing or wrong API key" 401
}
}
header fait une correspondance exacte : seuls Bearer, une espace et votre clé exacte passent. Pour donner à chaque personne ou application sa propre clé, ajoutez d'autres lignes header Authorization "Bearer ..." dans un bloc @key { ... }. Caddy combine par OU les valeurs d'un même en-tête.header_up Host localhost:11434 suit l'exemple de proxy de la FAQ d'Ollama ; Ollama peut refuser les requêtes qui arrivent avec d'autres valeurs de Host. header_up -Authorization empêche votre clé d'être transmise à Ollama.flush_interval -1 dans le bloc reverse_proxy.sudo chown root:caddy /etc/caddy/Caddyfile && sudo chmod 640 /etc/caddy/Caddyfile && sudo systemctl reload caddyNom valable seulement sur le réseau local (comme ollama.home) : il n'y a pas de certificat public, utilisez donc tls internal dans le bloc du site et installez le certificat racine de Caddy sur vos clients. Ou passez-vous du proxy et utilisez un réseau privé comme Tailscale ou WireGuard (voir Utiliser Ollama à distance). N'envoyez pas la clé en http:// non chiffré sur un réseau auquel vous ne faites pas confiance ; n'importe qui sur ce réseau pourrait la lire.
Placez ceci dans /etc/nginx/conf.d/ollama.conf. Les fichiers de conf.d sont lus à l'intérieur du bloc http, là où map doit se trouver. Utilisez vos propres chemins de certificat, par exemple ceux de certbot :
map $http_authorization $ollama_key_ok {
default 0;
"Bearer PASTE_YOUR_KEY_HERE" 1;
}
server {
listen 443 ssl;
server_name ollama.example.com;
ssl_certificate /etc/letsencrypt/live/ollama.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ollama.example.com/privkey.pem;
location / {
if ($ollama_key_ok = 0) { return 401; }
proxy_pass http://127.0.0.1:11434;
proxy_set_header Host localhost:11434;
proxy_set_header Authorization ""; # don't pass the key on to Ollama
proxy_buffering off; # stream tokens as they come
proxy_read_timeout 600s; # long generations
client_max_body_size 0; # model uploads (ollama create)
}
}
(Les commentaires signifient, dans l'ordre : ne pas transmettre la clé à Ollama ; envoyer les tokens au fil de l'eau ; autoriser les longues générations ; autoriser l'envoi de modèles avec ollama create.) Ajoutez une ligne à la map pour chaque clé supplémentaire. Lancez ensuite sudo nginx -t && sudo systemctl reload nginx, et rendez le fichier lisible uniquement par root (sudo chmod 600 /etc/nginx/conf.d/ollama.conf ; nginx le lit en tant que root au démarrage).
Ne donnez aucun ports: au service ollama et ne publiez que Caddy. Dans le Caddyfile ci-dessus, utilisez reverse_proxy ollama:11434. Ajoutez vos réglages GPU habituels au service ollama.
services:
ollama:
image: ollama/ollama
volumes: [ "ollama:/root/.ollama" ]
# no "ports:" - only containers on this network can reach it
caddy:
image: caddy:2
ports: [ "80:80", "443:443" ]
volumes: [ "./Caddyfile:/etc/caddy/Caddyfile:ro", "caddy_data:/data" ]
volumes:
ollama: {}
caddy_data: {}
(Le commentaire signifie : pas de « ports: », seuls les conteneurs de ce réseau atteignent Ollama.)
# no key: should print 401
curl -s -o /dev/null -w "%{http_code}\n" https://ollama.example.com/api/version
# with the key: should print {"version":"..."}
curl -H "Authorization: Bearer YOUR_KEY" https://ollama.example.com/api/version
# from ANOTHER machine, straight to Ollama: should fail to connect
curl http://<server LAN IP>:11434/api/version
(Résultats attendus : sans clé, 401 ; avec la clé, la version ; et depuis une AUTRE machine, directement vers Ollama, la connexion doit échouer. YOUR_KEY est votre clé et <server LAN IP> l'IP locale du serveur.) Si la dernière commande répond par une version, le proxy peut être contourné. Revérifiez OLLAMA_HOST et les ports: de Docker. Sous Linux, ufw ne bloque pas les ports publiés par Docker.
https://ollama.example.com et mettez la clé dans son champ Key (envoyée comme jeton Bearer). Si votre version n'a pas de champ de clé pour les connexions Ollama, ajoutez-la plutôt comme connexion OpenAI API avec l'URL https://ollama.example.com/v1 et la clé.https://ollama.example.com et API Key sur votre clé. n8n l'envoie sous la forme Authorization: Bearer.https://ollama.example.com/v1 et la clé d'API sur votre clé.
from openai import OpenAI
client = OpenAI(base_url="https://ollama.example.com/v1", api_key="YOUR_KEY")
reply = client.chat.completions.create(
model="llama3.2", messages=[{"role": "user", "content": "Hello"}])
print(reply.choices[0].message.content)from ollama import Client
client = Client(host="https://ollama.example.com",
headers={"Authorization": "Bearer YOUR_KEY"})
print(client.list())ollama : à la date de cette vérification, aucune méthode documentée ne lui fait envoyer votre propre clé à un hôte personnalisé. Lancez-la sur le serveur lui-même, ou utilisez curl ou les bibliothèques ci-dessus.basic_auth de la liste de contrôle fonctionne pour les navigateurs et curl -u, mais les clients de type OpenAI, n8n et Open WebUI envoient Authorization: Bearer, que l'authentification basique refuse. Pour les clients d'API, utilisez la vérification de clé de cette page.OLLAMA_ORIGINS restreint (vérification dans le navigateur (en anglais)).MV2 de Munim, Inc. propose un bilan d'IA locale à 49 USD pour une machine, ou un bilan petit bureau à 199 USD pour jusqu'à 5 machines ou un serveur Ollama ou Open WebUI partagé. Vous recevez un rapport écrit sur ce qui est exposé, risqué ou lent et sur ce qu'il faut corriger en premier, avec les commandes exactes pour votre système. Le rapport est rédigé en anglais. Voir un exemple de rapport (en anglais). Payer 49 USD ou payer 199 USD sur Stripe, puis envoyez à munimversion2@gmail.com la sortie de python3 local_ai_checkup.py --json du script gratuit local-ai-checkup, votre système d'exploitation et l'usage que vous en faites. MV2 ne demande jamais de mots de passe, de clés ni d'accès à distance : n'envoyez donc pas votre clé d'API.