Your Cloud-Native Artifact Registry
Fast. Organized. Feel at Home.
10x faster than Nexus | < 100 MB RAM | 32 MB Docker image
-
Multi-Protocol Support
- Docker Registry v2
- Maven repository (+ proxy to Maven Central)
- npm registry (+ proxy to npmjs.org)
- Cargo registry
- PyPI index
-
Storage Backends
- Local filesystem (zero-config default)
- S3-compatible (MinIO, AWS S3)
-
Production Ready
- Web UI with search and browse
- Swagger UI API documentation
- Prometheus metrics (
/metrics) - Health checks (
/health,/ready) - JSON structured logging
- Graceful shutdown
-
Security
- Basic Auth (htpasswd + bcrypt)
- Revocable API tokens
- ENV-based configuration (12-Factor)
docker run -d -p 4000:4000 -v nora-data:/data ghcr.io/getnora-io/nora:latestcargo install nora-registry
noraOpen http://localhost:4000/ui/
# Tag and push
docker tag myapp:latest localhost:4000/myapp:latest
docker push localhost:4000/myapp:latest
# Pull
docker pull localhost:4000/myapp:latest<!-- settings.xml -->
<server>
<id>nora</id>
<url>http://localhost:4000/maven2/</url>
</server>npm config set registry http://localhost:4000/npm/
npm publishnora # Start server
nora serve # Start server (explicit)
nora backup -o backup.tar.gz
nora restore -i backup.tar.gz
nora migrate --from local --to s3| Variable | Default | Description |
|---|---|---|
NORA_HOST |
127.0.0.1 | Bind address |
NORA_PORT |
4000 | Port |
NORA_STORAGE_MODE |
local | local or s3 |
NORA_STORAGE_PATH |
data/storage | Local storage path |
NORA_STORAGE_S3_URL |
- | S3 endpoint URL |
NORA_STORAGE_BUCKET |
registry | S3 bucket name |
NORA_AUTH_ENABLED |
false | Enable authentication |
NORA_RATE_LIMIT_AUTH_RPS |
1 | Auth requests per second |
NORA_RATE_LIMIT_AUTH_BURST |
5 | Auth burst size |
NORA_RATE_LIMIT_UPLOAD_RPS |
200 | Upload requests per second |
NORA_RATE_LIMIT_UPLOAD_BURST |
500 | Upload burst size |
NORA_RATE_LIMIT_GENERAL_RPS |
100 | General requests per second |
NORA_RATE_LIMIT_GENERAL_BURST |
200 | General burst size |
NORA_SECRETS_PROVIDER |
env | Secrets provider (env) |
NORA_SECRETS_CLEAR_ENV |
false | Clear env vars after reading |
[server]
host = "0.0.0.0"
port = 4000
[storage]
mode = "local"
path = "data/storage"
[auth]
enabled = false
htpasswd_file = "users.htpasswd"
[rate_limit]
# Strict limits for authentication (brute-force protection)
auth_rps = 1
auth_burst = 5
# High limits for CI/CD upload workloads
upload_rps = 200
upload_burst = 500
# Balanced limits for general API endpoints
general_rps = 100
general_burst = 200
[secrets]
# Provider: env (default), aws-secrets, vault, k8s (coming soon)
provider = "env"
# Clear environment variables after reading (security hardening)
clear_env = false| URL | Description |
|---|---|
/ui/ |
Web UI |
/api-docs |
Swagger UI |
/health |
Health check |
/ready |
Readiness probe |
/metrics |
Prometheus metrics |
/v2/ |
Docker Registry |
/maven2/ |
Maven |
/npm/ |
npm |
/cargo/ |
Cargo |
/simple/ |
PyPI |
| Metric | NORA | Nexus | JFrog |
|---|---|---|---|
| Startup | < 3s | 30-60s | 30-60s |
| Memory | < 100 MB | 2-4 GB | 2-4 GB |
| Image Size | 32 MB | 600+ MB | 1+ GB |
Created and maintained by DevITWay
- Website: devopsway.ru
- Telegram: @DevITWay
- GitHub: @devitway
- Email: devitway@gmail.com
NORA welcomes contributions! See CONTRIBUTING.md for guidelines.
MIT License - see LICENSE
Copyright (c) 2026 DevITWay
🐿️ N○RA - Organized like a chipmunk's stash | Built with Rust by DevITWay