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

159 lines
6.2 KiB
Markdown

---
title: Domain Locker
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, networking, domain-management, dns, whois, portfolio, typescript]
confidence: medium
contested: false
sources: [https://selfh.st/apps/?tag=networking, https://github.com/lissy93/domain-locker]
---
# 🌐 Domain Locker
> **Portfolio de noms de domaine self-hosted** : centralisez tous vos domaines (tous registrars confondus), surveillez dates d'expiration, certificats SSL, et modifications DNS. L'alternative moderne aux tableurs oubliés et aux emails de rappel perdus.
| Métadonnée | Valeur |
| :--- | :--- |
| **Site web** | [domain-locker.com](https://domain-locker.com) |
| **GitHub** | [Lissy93/domain-locker](https://github.com/Lissy93/domain-locker) |
| **License** | MIT |
| **Langage** | TypeScript (Angular) + Node.js |
| **Étoiles** | 1 060 ⭐ |
| **Dernière MAJ** | 2026-05-22 |
| **Catégorie** | [[cat-networking\|Networking]] |
## Description
Domain Locker est un **gestionnaire de portfolio de domaines** auto-hébergé, conçu pour les particuliers et petites organisations qui possèdent des domaines dispersés chez 5, 10, parfois 20 registrars différents (Namecheap, Porkbun, OVH, Gandi, Cloudflare Registrar, GoDaddy…). Le problème classique : on oublie qu'un domaine expire dans 15 jours, on rate la fenêtre de récupération, et un squatter le rafle. Domain Locker résout ça en offrant une **vue unifiée** avec alertes intelligentes.
Les fonctionnalités clés : **suivi des dates d'expiration** avec alertes par email/webhook (90, 30, 7, 1 jour(s) avant), **statut WHOIS en temps réel**, **vérification des certificats SSL/TLS** (qui expire ? dans combien de jours ?), **historique des nameservers** (un domaine qui change de NS sans votre accord = compromission), **coût annuel agrégé**, et **notes / tags / catégories** pour organiser le portfolio. L'application supporte plusieurs bases de données (SQLite pour l'homelab, PostgreSQL pour la prod).
L'auteur est [[Lissy93]] (Alicia Sykes), prolifique mainteneuse d'outils privacy-first (who-dat, breach-directory, web-check…). Le code est auditable, l'app est concue pour fonctionner sans aucune télémétrie.
## Installation
### Docker Compose (recommandé)
```yaml
# docker-compose.yml
services:
domain-locker:
image: lissy93/domain-locker:latest
container_name: domain-locker
restart: unless-stopped
ports:
- "8484:8080"
environment:
- NODE_ENV=production
- DB_TYPE=sqlite # ou postgres
- DB_PATH=/data/locker.db
- SMTP_HOST=smtp.example.com
- SMTP_PORT=587
- SMTP_USER=alerts@example.com
- SMTP_PASS=*** - SMTP_FROM=Domain Locker <alerts@example.com>
- TZ=Europe/Paris
volumes:
- dl-data:/data
volumes:
dl-data:
```
### Avec PostgreSQL (production)
```yaml
domain-locker-db:
image: postgres:16-alpine
container_name: domain-locker-db
restart: unless-stopped
environment:
- POSTGRES_DB=domainlocker
- POSTGRES_USER=locker
- POSTGRES_PASSWORD=***
volumes:
- dl-pgdata:/var/lib/postgresql/data
```
### Installation manuelle
```bash
git clone https://github.com/Lissy93/domain-locker.git
cd domain-locker
npm ci
npm run build
npm start # http://localhost:8080
```
## Configuration
Premier lancement : créer un compte admin, puis ajouter les domaines un par un (FQDN, registrar, date d'expiration, coût annuel, notes). Domain Locker peut **interroger le WHOIS** automatiquement à l'ajout et mettre à jour les champs vides.
Alertes configurables dans `Settings → Notifications` :
- Email à J-90, J-30, J-7, J-1
- Webhook Discord/Slack/Ntfy
- Browser push (PWA)
Cron de vérification (par défaut quotidien) :
```yaml
# docker-compose, override
domain-locker-cron:
image: lissy93/domain-locker-cron
depends_on:
- domain-locker
environment:
- LOCKER_API_URL=http://domain-locker:8080
- LOCKER_API_KEY=***
```
## Alternatives
### Open Source
- **DomainMOD** — PHP, plus ancien, plus complexe (vise l'entreprise)
- **Domain-Manager (Mike-Amki)** — scripts CLI
- **Octopoly / Domstock** — divers forks, faible maintenance
- **Vaultwarden + custom field** — pour 1-2 domaines
- **handy-man-notes** — tableur self-hosted (sheetable/cellware)
- **Netbox** (en partie) — track les DNS records, mais pas l'expiration registrar
### Propriétaire (ce que Domain Locker remplace)
- **Domain Monitor (Savy)** — SaaS, 50$/an
- **DomainScan** — abandonné
- **Spreadsheets manuels** — risques d'oubli, pas d'alerte
- **Emails de registrar** — facilement noyés sous le spam
- **Hover / Gandi dashboards** — limités à leurs propres TLDs
- **Porkbun / Namecheap alerts** — uniquement leurs domaines
## Sécurité
- **API keys registrar** : si vous voulez que Domain Locker interroge les APIs (optionnel), stocker les clés de manière chiffrée. Sinon, le WHOIS public suffit pour 90% du suivi.
- **HTTPS obligatoire** : l'app révèle vos domaines et leurs coûts. Mettre derrière [[app-caddy]] ou Traefik avec TLS.
- **2FA natif** : activer dès la création du compte admin.
- **Backup de la base** : `pg_dump` quotidien (si PostgreSQL) ou simple copie du fichier SQLite.
- **Rate-limiting WHOIS** : certains TLDs limitent les requêtes ; Domain Locker a un cache mais restez raisonnable.
- **Audit des changements DNS** : activez les notifications, ça peut indiquer une compromission.
- **Pas d'email d'alerte en clair** : Domain Locker supporte PGP, recommandé si les emails passent par des serveurs tiers.
- **Update des deps** : suivre les release GitHub, mise à jour mensuelle conseillée.
## Ressources
- [Site officiel](https://domain-locker.com)
- [Documentation](https://domain-locker.com/docs)
- [GitHub](https://github.com/Lissy93/domain-locker)
- [Démo live](https://demo.domain-locker.com)
- [Blog de l'auteure](https://aliciasykes.com)
## Pages Liées
- [[cat-networking|Networking]] — Catégorie parente
- [[cat-dns|DNS]] — Catégorie cousine (résolveurs)
- [[app-netbox]] — DCIM / IPAM (vue infrastructure)
- [[app-pihole|pi-hole]] ou [[app-adguard-home|AdGuard Home]] — DNS filtrants
- [[app-caddy]] — Reverse-proxy TLS
- [[recettes-docker-compose|Recettes Docker Compose]]
- [[gestion-registrars|Stratégie multi-registrars]]