https://github.com/ramborogers/cyberdock
Beautiful Docker Repository with Garbage Collection
https://github.com/ramborogers/cyberdock
docker go golang registry
Last synced: 9 months ago
JSON representation
Beautiful Docker Repository with Garbage Collection
- Host: GitHub
- URL: https://github.com/ramborogers/cyberdock
- Owner: RamboRogers
- License: gpl-3.0
- Created: 2025-01-12T03:38:37.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2025-08-14T04:12:14.000Z (11 months ago)
- Last Synced: 2025-09-11T14:15:02.743Z (10 months ago)
- Topics: docker, go, golang, registry
- Language: Go
- Homepage: https://matthewrogers.org
- Size: 164 MB
- Stars: 55
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
CyberDock
Cyberpunk Docker Registry Interface
🐳 Docker Registry | 🌍 Web UI | ⚡ Fast | 🎨 Beautiful | 🔒 Secure
CyberDock is a sleek, cyberpunk-themed Docker Registry with an integrated web interface. It combines a fully compliant OCI Distribution registry with a beautiful, real-time UI for managing your container images.
> The intention is to provide a simple, secure, and efficient way to replay and manage your Docker images.
## 🌟 Features
Registry Features
Content Support
- Full OCI Distribution Specification compliance
- Local filesystem storage with deduplication
- Efficient blob mounting between repositories
- Atomic operations for data integrity
- Automatic cleanup of incomplete uploads
- Real-time storage statistics
- Built-in garbage collection
- Docker V2 manifests and lists
- OCI manifests and image indexes
- Container configs
- Layer tarballs
- Cross-repository blob mounting
- Range request support
- 🎉v0.2.0:Garbage collection
Web Interface
Security
- Cyberpunk-themed responsive design
- Real-time statistics and monitoring
- Image and tag management
- Storage efficiency tracking
- Layer analysis and visualization
- Search and filtering capabilities
- Secure HTTPS access
- Automatic TLS certificate generation
- Content verification through digests
- Proper file permissions
- Safe concurrent access
- Secure temporary file handling
## 🚀 Quick Start
### Docker
Docker image is a simple way to get started.
#### Single-Port Mode (Recommended)
```bash
# Run on port 5000 (both registry and UI)
docker run -d --name cyberdock -p 5000:5000 mattrogers/cyberdock:latest
```
Access points:
- Registry API: https://localhost:5000/v2/
- Admin UI: https://localhost:5000/admin/
- Root (/) redirects to /admin/
#### Legacy Dual-Port Mode
```bash
# Run with separate ports
docker run -d --name cyberdock -p 5000:5000 -p 5001:5001 mattrogers/cyberdock:latest -r 5000 -g 5001
```
Access points:
- Registry: https://localhost:5000
- Web UI: https://localhost:5001
If you have a mac 🍏 host and want to work around the port conflicts:
```bash
# Single-port mode on custom port
docker run -d --name cyberdock -p 5005:5000 mattrogers/cyberdock:latest
# Access at https://localhost:5005/admin/
# Or dual-port mode
docker run -d --name cyberdock -p 5005:5000 -p 5006:5001 mattrogers/cyberdock:latest -r 5000 -g 5001
# Registry: https://localhost:5005
# Web UI: https://localhost:5006
```
## 💻 Usage
### Single-Port Mode (Default)
CyberDock now runs both the registry and admin UI on a single port by default, simplifying deployment:
```bash
./cyberdock -p 5000
```
Path-based routing:
- `/v2/*` - Docker Registry API (for docker push/pull)
- `/admin/*` - Web UI for managing the registry
- `/api/*` - Management API endpoints
- `/static/*` - Static assets for the UI
- `/` - Redirects to `/admin/`
### Legacy Dual-Port Mode
For backward compatibility, you can still run with separate ports:
```bash
./cyberdock -r 5000 -g 5001
```
- Registry server on port 5000
- Web UI server on port 5001
Remote Purge ☢️
```bash
curl -k -X POST https://cyberdock:5001/api/purge
```
### Docker Client Configuration
The Docker client works seamlessly with both single-port and dual-port modes.
Add to your Docker daemon configuration:
```json
{
"insecure-registries": ["localhost:5000"]
}
```
### Push Images
```bash
docker tag your-image:tag localhost:5000/your-image:tag
docker push localhost:5000/your-image:tag
```
### Pull Images
```bash
docker pull localhost:5000/your-image:tag
```
## 🔧 Configuration
Command line flags:
```bash
# Single-port mode (default)
-p PORT # Run both registry and UI on single port (default: 5000)
# Dual-port mode (legacy)
-r PORT # Set registry port (default: 5000)
-g PORT # Set web UI port (default: 5001)
```
Note: When both `-r` and `-g` are specified, CyberDock automatically switches to dual-port mode for backward compatibility.
## ⚡️ Updates
- 0.3.2d:
- Added single-port mode as default deployment option
- Fixed /admin routing in single-port mode
- Simplified deployment with path-based routing
- Added certificate management UI (upload custom certs or generate new ones)
- Maintained backward compatibility with dual-port mode
- 0.3.1d:
- Added project group and name to the UI (issue #3)
- 0.3.0d:
- Added storage efficiency analysis
- Added image density metric
- Added repository health metric
- Added total layers and average layers per image metrics
- Added layer distribution chart
- Bugfixes for dashes and long names
## ⚖️ License
CyberDock is licensed under the GNU General Public License v3.0 (GPLv3).
Free Software
[](https://www.gnu.org/licenses/gpl-3.0)
### Connect With Me 🤝
[](https://github.com/RamboRogers)
[](https://x.com/rogerscissp)
[](https://matthewrogers.org)