{"id":24708021,"url":"https://github.com/ramborogers/cyberdock","last_synced_at":"2025-10-08T07:23:02.123Z","repository":{"id":272359717,"uuid":"915515643","full_name":"RamboRogers/cyberdock","owner":"RamboRogers","description":"Beautiful Docker Repository with Garbage Collection","archived":false,"fork":false,"pushed_at":"2025-08-14T04:12:14.000Z","size":172236,"stargazers_count":55,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-11T14:15:02.743Z","etag":null,"topics":["docker","go","golang","registry"],"latest_commit_sha":null,"homepage":"https://matthewrogers.org","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RamboRogers.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-01-12T03:38:37.000Z","updated_at":"2025-08-14T04:12:19.000Z","dependencies_parsed_at":"2025-07-04T00:16:22.190Z","dependency_job_id":null,"html_url":"https://github.com/RamboRogers/cyberdock","commit_stats":null,"previous_names":["ramborogers/cyberdock"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/RamboRogers/cyberdock","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RamboRogers%2Fcyberdock","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RamboRogers%2Fcyberdock/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RamboRogers%2Fcyberdock/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RamboRogers%2Fcyberdock/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RamboRogers","download_url":"https://codeload.github.com/RamboRogers/cyberdock/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RamboRogers%2Fcyberdock/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278906079,"owners_count":26066434,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","go","golang","registry"],"created_at":"2025-01-27T06:27:33.844Z","updated_at":"2025-10-08T07:23:02.097Z","avatar_url":"https://github.com/RamboRogers.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\u003cdiv align=\"center\"\u003e\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\n      \u003cimg src=\"media/screen.png\" alt=\"screenshot\"\u003e\n    \u003c/td\u003e\n    \u003ctd\u003e\n      \u003cimg src=\"media/charts.png\" alt=\"charts\"\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003eCyberDock\u003c/h1\u003e\n  \u003cp\u003e\u003cstrong\u003eCyberpunk Docker Registry Interface\u003c/strong\u003e\u003c/p\u003e\n  \u003cp\u003e🐳 Docker Registry | 🌍 Web UI | ⚡ Fast | 🎨 Beautiful | 🔒 Secure\u003c/p\u003e\n  \u003cp\u003e\n    \u003cimg src=\"https://img.shields.io/badge/version-0.3.2d-blue.svg\" alt=\"Version 0.3.2d\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/go-%3E%3D1.21-00ADD8.svg\" alt=\"Go Version\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/platform-linux%20%7C%20macos%20%7C%20docker-brightgreen.svg\" alt=\"Platform Support\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/license-GPLv3-green.svg\" alt=\"License\"\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\nCyberDock 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.\n\n\u003e The intention is to provide a simple, secure, and efficient way to replay and manage your Docker images.\n\n## 🌟 Features\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003cth\u003eRegistry Features\u003c/th\u003e\n    \u003cth\u003eContent Support\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\n      \u003cul\u003e\n        \u003cli\u003eFull OCI Distribution Specification compliance\u003c/li\u003e\n        \u003cli\u003eLocal filesystem storage with deduplication\u003c/li\u003e\n        \u003cli\u003eEfficient blob mounting between repositories\u003c/li\u003e\n        \u003cli\u003eAtomic operations for data integrity\u003c/li\u003e\n        \u003cli\u003eAutomatic cleanup of incomplete uploads\u003c/li\u003e\n        \u003cli\u003eReal-time storage statistics\u003c/li\u003e\n        \u003cli\u003eBuilt-in garbage collection\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/td\u003e\n    \u003ctd\u003e\n      \u003cul\u003e\n        \u003cli\u003eDocker V2 manifests and lists\u003c/li\u003e\n        \u003cli\u003eOCI manifests and image indexes\u003c/li\u003e\n        \u003cli\u003eContainer configs\u003c/li\u003e\n        \u003cli\u003eLayer tarballs\u003c/li\u003e\n        \u003cli\u003eCross-repository blob mounting\u003c/li\u003e\n        \u003cli\u003eRange request support\u003c/li\u003e\n        \u003cli\u003e🎉v0.2.0:Garbage collection\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003cth\u003eWeb Interface\u003c/th\u003e\n    \u003cth\u003eSecurity\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\n      \u003cul\u003e\n        \u003cli\u003eCyberpunk-themed responsive design\u003c/li\u003e\n        \u003cli\u003eReal-time statistics and monitoring\u003c/li\u003e\n        \u003cli\u003eImage and tag management\u003c/li\u003e\n        \u003cli\u003eStorage efficiency tracking\u003c/li\u003e\n        \u003cli\u003eLayer analysis and visualization\u003c/li\u003e\n        \u003cli\u003eSearch and filtering capabilities\u003c/li\u003e\n        \u003cli\u003eSecure HTTPS access\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/td\u003e\n    \u003ctd\u003e\n      \u003cul\u003e\n        \u003cli\u003eAutomatic TLS certificate generation\u003c/li\u003e\n        \u003cli\u003eContent verification through digests\u003c/li\u003e\n        \u003cli\u003eProper file permissions\u003c/li\u003e\n        \u003cli\u003eSafe concurrent access\u003c/li\u003e\n        \u003cli\u003eSecure temporary file handling\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n## 🚀 Quick Start\n\n### Docker\n\nDocker image is a simple way to get started.\n\n#### Single-Port Mode (Recommended)\n```bash\n# Run on port 5000 (both registry and UI)\ndocker run -d --name cyberdock -p 5000:5000 mattrogers/cyberdock:latest\n```\n\nAccess points:\n- Registry API: https://localhost:5000/v2/\n- Admin UI: https://localhost:5000/admin/\n- Root (/) redirects to /admin/\n\n#### Legacy Dual-Port Mode\n```bash\n# Run with separate ports\ndocker run -d --name cyberdock -p 5000:5000 -p 5001:5001 mattrogers/cyberdock:latest -r 5000 -g 5001\n```\n\nAccess points:\n- Registry: https://localhost:5000\n- Web UI: https://localhost:5001\n\nIf you have a mac 🍏 host and want to work around the port conflicts:\n```bash\n# Single-port mode on custom port\ndocker run -d --name cyberdock -p 5005:5000 mattrogers/cyberdock:latest\n# Access at https://localhost:5005/admin/\n\n# Or dual-port mode\ndocker run -d --name cyberdock -p 5005:5000 -p 5006:5001 mattrogers/cyberdock:latest -r 5000 -g 5001\n# Registry: https://localhost:5005\n# Web UI: https://localhost:5006\n```\n\n## 💻 Usage\n\n### Single-Port Mode (Default)\nCyberDock now runs both the registry and admin UI on a single port by default, simplifying deployment:\n```bash\n./cyberdock -p 5000\n```\n\nPath-based routing:\n- `/v2/*` - Docker Registry API (for docker push/pull)\n- `/admin/*` - Web UI for managing the registry\n- `/api/*` - Management API endpoints\n- `/static/*` - Static assets for the UI\n- `/` - Redirects to `/admin/`\n\n### Legacy Dual-Port Mode\nFor backward compatibility, you can still run with separate ports:\n```bash\n./cyberdock -r 5000 -g 5001\n```\n- Registry server on port 5000\n- Web UI server on port 5001\n\nRemote Purge ☢️\n```bash\ncurl -k -X POST https://cyberdock:5001/api/purge\n```\n\n### Docker Client Configuration\n\nThe Docker client works seamlessly with both single-port and dual-port modes.\n\nAdd to your Docker daemon configuration:\n```json\n{\n  \"insecure-registries\": [\"localhost:5000\"]\n}\n```\n\n### Push Images\n```bash\ndocker tag your-image:tag localhost:5000/your-image:tag\ndocker push localhost:5000/your-image:tag\n```\n\n### Pull Images\n```bash\ndocker pull localhost:5000/your-image:tag\n```\n\n## 🔧 Configuration\n\nCommand line flags:\n```bash\n# Single-port mode (default)\n-p PORT  # Run both registry and UI on single port (default: 5000)\n\n# Dual-port mode (legacy)\n-r PORT  # Set registry port (default: 5000)\n-g PORT  # Set web UI port (default: 5001)\n```\n\nNote: When both `-r` and `-g` are specified, CyberDock automatically switches to dual-port mode for backward compatibility.\n\n## ⚡️ Updates\n\n- 0.3.2d:\n  - Added single-port mode as default deployment option\n  - Fixed /admin routing in single-port mode\n  - Simplified deployment with path-based routing\n  - Added certificate management UI (upload custom certs or generate new ones)\n  - Maintained backward compatibility with dual-port mode\n\n- 0.3.1d:\n  - Added project group and name to the UI (issue #3)\n\n- 0.3.0d:\n  - Added storage efficiency analysis\n  - Added image density metric\n  - Added repository health metric\n  - Added total layers and average layers per image metrics\n  - Added layer distribution chart\n  - Bugfixes for dashes and long names\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"media/screen.png\" alt=\"screenshot\"\u003e\n  \u003cimg src=\"media/charts.png\" alt=\"charts\"\u003e\n\n\n## ⚖️ License\n\n\u003cp\u003e\nCyberDock is licensed under the GNU General Public License v3.0 (GPLv3).\u003cbr\u003e\n\u003cem\u003eFree Software\u003c/em\u003e\n\u003c/p\u003e\n\n[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg?style=for-the-badge)](https://www.gnu.org/licenses/gpl-3.0)\n\n### Connect With Me 🤝\n\n[![GitHub](https://img.shields.io/badge/GitHub-RamboRogers-181717?style=for-the-badge\u0026logo=github)](https://github.com/RamboRogers)\n[![Twitter](https://img.shields.io/badge/Twitter-@rogerscissp-1DA1F2?style=for-the-badge\u0026logo=twitter)](https://x.com/rogerscissp)\n[![Website](https://img.shields.io/badge/Web-matthewrogers.org-00ADD8?style=for-the-badge\u0026logo=google-chrome)](https://matthewrogers.org)\n\n\u003c/div\u003e\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Framborogers%2Fcyberdock","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Framborogers%2Fcyberdock","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Framborogers%2Fcyberdock/lists"}