Files
wiki/Catalogue-Self-Hosted/apps/app-unregistry.md
T
2026-06-09 18:40:21 +02:00

103 lines
3.6 KiB
Markdown

---
title: Unregistry
created: 2026-06-08
updated: 2026-06-08
type: app
tags: [catalogue, app, container-registry, auto-hebergement]
confidence: medium
contested: false
sources:
- https://selfh.st/apps/?search=unregistry
- https://github.com/psviderski/unregistry
---
# 🐳 Unregistry
> **Registre d'images Docker minimaliste, sans démon persistant, qui pousse les images directement vers `docker load` sur l'hôte distant.**
## 📊 Métadonnées
| Champ | Valeur |
| :--- | :--- |
| **Nom** | Unregistry |
| **Slug** | `unregistry` |
| **Catégorie principale** | [[cat-container-registry]] |
| **Langage** | Go (28) |
| **Stars** | ⭐ 4767 |
| **Dernière MAJ** | 2026-04-21 |
| **Repo** | [github.com/psviderski/unregistry](https://github.com/psviderski/unregistry) |
| **Site** | [uncloud.run](https://uncloud.run) |
## 📝 Description
Unregistry est un projet expérimental et minimaliste qui **remplace un Docker Registry complet** par un binaire Go unique côté serveur, couplé à un plugin/plugin-less côté client. Au lieu de stocker les couches sur disque, il streame l'image directement vers le démon Docker distant via un tunnel SSH, et invoque `docker load` côté hôte cible.
Il fait partie de l'écosystème **uncloud** (outillage de déploiement homelab/edge) et s'adresse aux déploiements one-off de conteneurs, idéal pour pousser une image sur un serveur de dev/VPS sans monter tout un Harbor ou un registry :2. Aucune base de données, aucun stockage, aucun port à exposer : tout passe par SSH.
## 🐳 Installation Docker
```yaml
services:
unregistry:
image: ghcr.io/psviderski/unregistry:latest
container_name: unregistry
restart: unless-stopped
ports:
- "5000:5000"
volumes:
- ./data:/data
environment:
- PUID=1000
- PGID=1000
```
> ⚠️ Adapte image/port/volumes selon le README officiel : https://github.com/psviderski/unregistry
## 🔀 Reverse Proxy (Traefik)
```yaml
services:
unregistry:
image: ghcr.io/psviderski/unregistry:latest
labels:
- "traefik.enable=true"
- "traefik.http.routers.unregistry.rule=Host(`unregistry.example.com`)"
- "traefik.http.routers.unregistry.entrypoints=websecure"
- "traefik.http.routers.unregistry.tls.certresolver=letsencrypt"
- "traefik.http.services.unregistry.loadbalancer.server.port=5000"
```
## 🔧 Configuration
- Utilisation typique : `unregistry push <image> ssh://user@host` (transfert direct)
- Côté serveur, l'archive s'écrit dans un dossier temporaire puis `docker load` reconstitue l'image
- Compatible avec les commandes `docker buildx`, les pipelines CI et le format OCI standard
## 🔀 Alternatives
**Open source** :
- Docker Registry officiel (`registry:2`) — registry HTTP V2 complet
- Harbor — registry enterprise avec UI, RBAC, scan CVE, replication
- Dragonfly (D7Y) — registry orienté P2P/distribution à grande échelle
**Propriétaires** :
- Docker Hub — registry managé SaaS
- AWS ECR — registry managé Amazon
## 🔒 Sécurité
- Le transport s'appuie sur SSH (authentification par clé), pas d'authentification custom à gérer
- Aucune persistance côté serveur = surface d'attaque quasi-nulle, mais l'image n'est pas stockée entre deux push
- Idéalement couplé à un bastion SSH durci et des clés ed25519
## 📚 Ressources
- [selfh.st/apps/?search=unregistry](https://selfh.st/apps/?search=unregistry)
- [GitHub](https://github.com/psviderski/unregistry)
- [Site officiel](https://uncloud.run)
## 🔗 Pages Liées
- [[cat-container-registry]] — Catégorie container-registry
- [[Catalogue-Self-Hosted]] — Hub principal