---
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
