103 lines
3.6 KiB
Markdown
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
|