Harbor à github.com/av/harbor est une CLI open source et une application complémentaire qui assemble des services d'IA locaux avec Docker Compose. Un basique abriter peut démarrer Ollama et Open WebUI déjà connectés ; l'ajout de descripteurs de service peut relier la recherche, la parole, la génération d'images, les passerelles, l'observabilité et d'autres composants dans la même pile. Le projet est sous licence Apache-2.0.
Il ne s'agit pas du registre de conteneurs CNCF Harbor à l'adresse aller au port/port. Il ne s’agit pas non plus d’un LLM, d’une frontière de sécurité ou d’une plateforme de production gérée. Il s’agit d’une couche d’intégration rapide autour de nombreuses images gérées indépendamment. Harbor réduit le travail de configuration ; l'opérateur possède toujours la provenance des images, les ports exposés, l'authentification, la capacité GPU, les licences de modèle, les données persistantes, les mises à niveau et les vulnérabilités de chaque service.

Une pile d'IA locale est un réseau, pas une application
navigateur/client de codage
|
v
[passerelle Open WebUI / API]
|
.------+---------+--------------.
v v v
[Ollama] [llama.cpp] [vLLM] inférence de modèle
| | |
'----------------+--------------'
|
.---------+----------.
v v
[SearXNG] [Discours] outils / discours
|
Internet
Réseau Docker ≠ réseau de confiance
hôte local ≠ automatiquement privé
Harbor sélectionne les fragments de composition et la configuration interservices afin que les consommateurs puissent rechercher des fournisseurs par nom de service interne et par chemin API attendu. Cette commodité élargit le graphe de confiance : une interface utilisateur Web peut atteindre un backend de modèle, un service de recherche et un moteur vocal ; les plugins ou les agents peuvent appeler encore plus de points de terminaison. Inventaire des flux de données avant d’ajouter des services.
Les rôles de service et la décision que chacun introduit
| Calque | Exemples documentés par Harbor | Décision de l'opérateur |
|---|---|---|
| Backend d'inférence | Ollama, llama.cpp, vLLM, SGLang et autres | Modèle, quantification, GPU, contexte, licence et exposition API |
| Front-end | Open WebUI et interfaces de discussion alternatives | Authentification, utilisateurs, historique, téléchargements et outils |
| Passerelle/routeur | LiteLLM, Bifrost, Harbor Boost | Clés, solutions de secours, journaux, quotas et routage des fournisseurs |
| Récupération/recherche | SearXNG, services de recherche et RAG | Trafic sortant, confidentialité des index, citations et injection rapide |
| Médias | Discours, ComfyUI et services de voix/conception | Droits de modèle, conflits de GPU et examen des médias générés |
| Agent/flux de travail | Dify, n8n, services de codage/agent | Autorité de l'outil, informations d'identification, sandboxing et effets secondaires |
| Proxy/accès | Traefik et tunnel intégré | TLS, noms d'hôtes, authentification et exposition Internet |
Installer avec une chaîne d'approvisionnement révisable
Les documents officiels montrent les scripts d'installation et le fonctionnement basé sur Docker. Une commande telle que boucler ... | coup est pratique mais exécute immédiatement le contenu réseau mutable. Pour une utilisation contrôlée, téléchargez le script, inspectez-le, épinglez un commit/tag et vérifiez la propriété du référentiel avant de l'exécuter. Passez en revue les définitions Dockerfiles et Compose pour les services sélectionnés.
Balises de conteneur telles que dernier ne sont pas reproductibles. Épinglez les résumés d’images pour un environnement stable, enregistrez la version de Harbor et exportez la configuration effective de Compose. Numérisez les images et les nomenclatures des logiciels dans le cadre de votre police. Une image officielle peut toujours contenir une couche de base vulnérable.
| Artefact | Enregistrer | Pourquoi |
|---|---|---|
| Harbor CLI/application | Version, commit et hachage du programme d'installation | Reproduire le comportement de l'orchestration |
| Composer la configuration | Noms des fichiers et des environnements rendus/éjectés | Sachez ce qui s'est réellement passé |
| Image du conteneur | Registre, référentiel et résumé | Empêcher la dérive silencieuse des balises |
| Modèle | Source, révision, hachage, quantification et licence | Qualité, sécurité et provenance légale |
| Profil | Fichier local révisé et somme de contrôle | Les profils peuvent modifier les points de terminaison et les secrets |
Planification du GPU et de la mémoire
Harbor peut détecter les capacités et transmettre les ressources GPU aux conteneurs pris en charge, mais il ne peut pas adapter les charges de travail incompatibles. Estimez les poids du modèle, le cache KV, la surcharge d'exécution et les requêtes simultanées. Un modèle qui se charge correctement peut toujours échouer dans le contexte demandé ou lorsque ComfyUI et les services vocaux sont en concurrence pour la VRAM.
| Charge de travail | Pilote de capacité | Tester |
|---|---|---|
| Chat mono-utilisateur | Poids du modèle + un cache KV | Temps d'obtention du premier jeton et jetons/s dans le contexte cible |
| RAG à contexte long | Cache KV et prétraitement rapide | VRAM/RAM et latence maximales à une taille de document réaliste |
| Plusieurs utilisateurs | Fragmentation par lots, files d'attente et cache | Latence P50/P95 et requêtes rejetées sous charge |
| Génération d'images | Modèle de diffusion et résolution | Conflit pendant que le backend LLM est actif |
| Pipeline vocal | Durée audio, modèle et facteur temps réel | Latence de bout en bout entre la capture et la réponse |
Définissez les quotas de mémoire, de CPU, de GPU et de disque lorsque cela est possible. Surveiller la température et l’alimentation d’un poste de travail. Évitez de supposer que « local » signifie gratuit : incluez la dépréciation du matériel, l’électricité, le stockage, l’ingénierie et la capacité inutilisée dans le coût par tâche acceptée.
Ports et authentification
Liez les services de développement au bouclage à moins qu’un autre hôte ne doive les atteindre. Les ports publiés par Docker peuvent contourner les hypothèses concernant un pare-feu hôte. Répertoriez les écouteurs après le démarrage et testez depuis un autre appareil. De nombreux points de terminaison LLM locaux acceptent des clés API factices ou inexistantes, car ils attendent une machine approuvée ; ne les exposez pas à un réseau local ou à Internet sans modification.
Le projet prévient explicitement que le tunneling d'un service vers Internet n'est pas sûr sans authentification. Traiter tunnel portuaire en tant qu'événement d'exposition : nécessite une identité forte, TLS, des limites de débit, des limites de taille de requête, des journaux et une cible étroite. Ne tunnelez jamais un point de terminaison vLLM/Ollama brut ou une interface utilisateur d'administration avec des informations d'identification par défaut.
| Exposition | Contrôle minimal | Risque résiduel |
|---|---|---|
| Bouclage uniquement | Sécurité du compte hôte | Demande de processus/navigateur local malveillante |
| Réseau local de confiance | Pare-feu, authentification et sous-réseau segmenté | Homologue compromis et Wi-Fi faible |
| Proxy inverse/VPN | SSO/MFA, TLS et politique d'accès | Mauvaise configuration du proxy et session volée |
| Tunnel public | Tout ce qui précède, plus la protection et la surveillance contre les abus | Analyse Internet, coût/DoS et extraction de modèles |
Secrets et confiance entre services
Les passerelles et les interfaces utilisateur peuvent avoir besoin de clés API pour les modèles hébergés, la recherche ou le stockage. Placez les secrets dans un magasin géré ou un fichier d'environnement protégé exclu de Git. Préférez les clés de faible portée spécifiques au service et faites-les pivoter. Inspecter l'environnement de conteneur efficace et les fichiers montés ; une interface utilisateur ne doit pas recevoir de clé backend simplement parce que les deux partagent un projet Compose.
Les API compatibles OpenAI créent une compatibilité d'interface, et non une authentification ou une sémantique identique. Une clé factice qui fonctionne localement ne doit pas être réutilisée comme un véritable contrôle d'accès. Vérifiez le streaming, les appels d'outils, la sortie structurée, les noms de modèles, les limites et le comportement des erreurs pour chaque paire client/backend.
Données persistantes, sauvegardes et suppression
Cartographiez chaque volume : cache de modèles, base de données de discussion, documents téléchargés, index vectoriels, images générées, journaux et télémétrie de la passerelle. Décidez de ce qui survit vers le bas, mises à niveau et modifications de profil. Chiffrez les disques et les sauvegardes. Testez la restauration avec les mêmes services épinglés.
- Séparez les caches de modèles remplaçables des données utilisateur irremplaçables.
- Ne sauvegardez pas les clés API dans les bases de données d’application lorsque cela est évitable.
- Définir la conservation des discussions et des documents téléchargés ; la suppression doit couvrir les index vectoriels et les vignettes.
- Avant de supprimer un service, exportez les données dans un format documenté et confirmez le nettoyage du volume.
Les profils sont une configuration exécutable
Les profils Harbor enregistrent la configuration des scénarios et peuvent être importés à partir d'une URL. Un profil peut modifier les versions d'image, les points de terminaison, les arguments et potentiellement les informations d'identification. N’appliquez jamais directement un profil distant non fiable. Téléchargez, inspectez, épinglez et supprimez les secrets ; traitez la révision du profil comme un changement de code.
Maintenir des profils tels que hors ligne-privé, gpu-chat et essai au chiffon avec des listes de services et des budgets explicites. Évitez un profil par défaut en constante évolution qui démarre silencieusement des dizaines de conteneurs et étend la surface d'attaque.
Web RAG ajoute un canal de contenu non fiable
Une pile Harbor combinant Open WebUI, SearXNG et un LLM peut effectuer une recherche sur le Web et utiliser les résultats comme contexte. Le texte Web peut contenir des injections rapides et de fausses déclarations. Étiquetez le contenu récupéré comme étant des données non fiables, restreignez les outils, préservez les URL et exigez des citations. N'autorisez pas les instructions de page à accéder aux secrets ou à appeler des points de terminaison administratifs.
Les requêtes de recherche et les pages récupérées quittent également la machine même lorsque le LLM est local. Documentez cette exception dans toute réclamation relative à la confidentialité. Les journaux proxy et DNS peuvent exposer l’intention de l’utilisateur.
Mettre à niveau une couche à la fois
| Changement | Preuve des Canaries | Actif de restauration |
|---|---|---|
| Harbor mise à jour | Rendu Compose diff et tests de fumée | CLI/version et configuration antérieures |
| Image du service | Vérifications de schéma, d'authentification, d'interface utilisateur et d'intégration | Résumé précédent et instantané du volume |
| Modèle | Benchmark de qualité, d'appel d'outil et de latence | Hachage du modèle précédent |
| Pilote/environnement d'exécution GPU | Tous les backends chargent et maintiennent la charge de travail cible | Image hôte/pilote connu |
| Profil | Différences de port, de secret et de flux de données | Profil antérieur versionné |
Sauvegardez l’état, arrêtez les écritures et testez la compatibilité avant une migration. « Démarrages de conteneurs » ne suffit pas : envoyez des invites connues, effectuez une récupération RAG, testez les appels d'outils et vérifiez la persistance de l'utilisateur/de l'historique.
Utiliser l'éjection comme chemin d'obtention du diplôme
éjection du port peut produire une représentation Compose autonome des services et des variables sélectionnés. Ceci est précieux lorsqu'une combinaison expérimentale devient importante : examiner la sortie, remplacer les balises flottantes, externaliser les secrets, définir les contrôles de santé, les sauvegardes, la surveillance et la propriété, puis la gérer comme une infrastructure ordinaire.
L'éjection n'est pas un durcissement automatique en production. Generated Compose reflète les hypothèses de l’expérience. La production peut nécessiter Kubernetes ou un autre planificateur, des bases de données externes, une haute disponibilité, une mise à l'échelle automatique, une journalisation d'audit et une reprise après sinistre testée.
Fiche d'évaluation
| Dimensions | Mesurer | Passer la question |
|---|---|---|
| Valeur de configuration | Temps écoulé entre l'hôte propre et le scénario de travail | Harbor réduit-il considérablement le temps de configuration reproductible ? |
| Fiabilité | Démarrage à froid, redémarrages et échec de récupération des dépendances | Un autre opérateur peut-il le récupérer ? |
| Qualité | Benchmark des tâches sur le modèle/les paramètres épinglés | Les résultats acceptés sont-ils suffisants ? |
| Performances | Latence, débit, VRAM et file d'attente | Est-ce qu'il répond à une charge simultanée réelle ? |
| Sécurité | Ports, authentification, secrets, analyses et flux de données | L’autorité de chaque service est-elle justifiée ? |
| Portabilité | Éjecter et restaurer sur un hôte propre | La pile peut-elle quitter Harbor sans perte de données ? |
Alternatives
| Options | Meilleur ajustement | Compromis par rapport à Harbor |
|---|---|---|
| Harbor (moy) | Explorer de nombreux services d'IA locaux pré-câblés | Large catalogue de services en évolution rapide |
| Ollama + Open WebUI manuellement | Chat local stable et simple | Moins d'abstraction et audit plus facile, plus de câblage manuel |
| LM Studio | Téléchargement et discussion du modèle de bureau/API | Moins d’orchestration Compose multiservice |
| Docker Compose construit en interne | Petite pile appartenant à la production | Plus d'ingénierie initiale, surface minimale plus claire |
| Kubernetes/Heaume | Plateforme de production multi-nœuds | Complexité opérationnelle beaucoup plus élevée |
| Modèle géré/plate-forme API | Les équipes évitent l’infrastructure GPU | Coût d'utilisation, téléchargements et dépendance du fournisseur |
Questions fréquemment posées
S'agit-il du registre de conteneurs Harbor ?
Non. Cette liste pointe vers av/port, un orchestrateur local de pile d'IA. Le projet de registre est aller au port/port.
Harbor est-il un LLM ?
Non. Il télécharge/exécute et connecte les serveurs de modèles, les interfaces utilisateur et les outils de support.
Est-ce gratuit ?
Le projet est sous licence Apache-2.0. Les modèles, les API hébergés, l'électricité, le matériel et les services tiers peuvent coûter de l'argent.
Local signifie-t-il privé ?
Uniquement si tous les services, modèles, outils et stockage sélectionnés restent locaux et configurés de manière sécurisée. La recherche, les APIs cloud et les tunnels créent des flux externes.
Puis-je l'exposer à distance ?
Le projet inclut des options de tunneling et de proxy, mais met en garde contre l'exposition sur Internet. Utilisez des contrôles VPN/proxy inverse authentifiés et n’exposez jamais de services bruts non authentifiés.
Est-il prêt pour la production ?
C'est une excellente couche d'exploration/intégration. La préparation à la production dépend des services sélectionnés ainsi que de votre épinglage, de votre sécurité, de votre surveillance, de vos sauvegardes et de votre assistance.
Comment puis-je migrer ?
Utilisez le flux de travail d'éjection comme fichier de démarrage Compose, puis renforcez-le et utilisez-le de manière indépendante.
Sources primaires
- Dépôt officiel Harbor, aperçu du service et licence
- Guide d'installation officiel
- Référence CLI officielle
- Guide back-end officiel
- Guide Web RAG local officiel
- Documentation sur la sécurité du moteur Docker
- Pratiques de variables d'environnement Docker Compose
- Conseils d’injection rapide OWASP
- Registre CNCF Harbor pour homonymie
Dernière révision le 26 juillet 2026. Harbor et son catalogue de services évoluent rapidement. Épinglez l'orchestrateur, le rendu Compose, les images, les modèles et les profils et réexécutez les contrôles de sécurité et de compatibilité après les modifications.
