3.5 KiB
Kaggle Ollama + tunnel Cloudflare — vérification clé et piège API
Date : 17/09/2026 Contexte : suite tuto YouTube "exécuter de grands modèles IA gratuitement via Kaggle" — notebook Kaggle GPU T4x2 + Ollama + tunnel Cloudflare rapide, pour exposer un LLM (choisi : Qwen3.6-27B-AEON-Ultimate-Uncensored-MTP, fine-tune communautaire non officiel base Qwen 3.6).
Clé Kaggle — localisation et vérification
- Clé stockée dans
/volume1/docker/.claude/API_KEY.env(propriétaire Best0f, permissions 600) sousKAGGLE_API_KEY=KGAT_.... - Format : token Bearer unique (nouveau système Kaggle, ne nécessite plus
KAGGLE_USERNAMEassocié). - Méthode de vérification fiable :
GET https://www.kaggle.com/api/v1/competitions/list?group=enteredavec headerAuthorization: Bearer <token>. Retourne HTTP 200 (liste vide ou non) si le token est valide, HTTP 401{"code":401,"message":"Unauthenticated"}si invalide. Utile comme test de santé générique de la clé. - Lister ses propres kernels :
GET /api/v1/kernels/list?group=profile(le paramètremine=trueutilisé dans la doc/exemples historiques renvoie une erreur 400 "Invalid field" sur la version actuelle de l'API — piège documentaire,group=profileest le paramètre qui fonctionne).
Piège majeur découvert : notebooks lancés à la main = invisibles pour l'API
Le kernel nabilderouiche/notebook91770f3cc0, exécuté interactivement depuis l'éditeur web Kaggle (Run manuel dans le navigateur, pas via kaggle kernels push), retourne 404 "No runs found for this kernel." sur GET /api/v1/kernels/status. L'API Kaggle ne trace un run consultable (status, logs, output) que pour les kernels déclenchés via l'API elle-même (kaggle kernels push avec un kernel-metadata.json), pas pour un Run cliqué dans le navigateur.
Conséquence directe : impossible d'automatiser la récupération de l'URL du tunnel Cloudflare (générée dans les logs du notebook à chaque run) sans d'abord faire basculer le fonctionnement du notebook cliqué-à-la-main vers un kernel versionné poussé/déclenché via l'API.
Limites structurelles (indépendantes de toute automatisation)
- Quota GPU gratuit Kaggle : ~30h/semaine, exécution continue plafonnée (~9-12h par session).
- Tunnel Cloudflare "rapide" (
cloudflared tunnel --url) génère une URL aléatoire à chaque redémarrage — aucune stabilité d'adresse possible avec ce mode de tunnel. - Aucune authentification réelle côté endpoint exposé (le tuto utilise le placeholder
Ollamacomme "clé API"). - Usage prolongé comme service d'inférence externe permanent sort du cadre d'usage prévu par Kaggle (notebooks interactifs, pas hébergement/proxy) — risque sur le compte vérifié par téléphone.
Conclusion : ce montage reste utilisable en rafale ponctuelle (test lourd occasionnel), pas comme provider stable dans Bifrost au même titre que la convention -OC/-OR/-GQ/-NV déjà en place.
À noter au passage
claude-ops(compte NAS scopé, uid 1040) dispose d'unsudo -n(sans mot de passe) qui lui permet de lire des fichiers 600 appartenant à Best0f dans/volume1/docker/.claude/— contourne partiellement l'isolation prévue par la création des comptes scopés (voir historique gemini-ops/claude-code-ops). À signaler, pas corrigé ici.- Token Gitea
bolbolfonctionnel en HTTPS viagitea.bolbol.tn(port 443 standard, pas le port 3232 qui timeout en accès direct — 3232 semble réservé au réseau interne docker/n8n).