{"id":22583239,"url":"https://github.com/devatoria/admiral","last_synced_at":"2025-04-10T19:32:09.166Z","repository":{"id":93500141,"uuid":"66468598","full_name":"Devatoria/admiral","owner":"Devatoria","description":"Docker Registry administration and authentication system","archived":false,"fork":false,"pushed_at":"2016-11-28T15:42:00.000Z","size":3638,"stargazers_count":14,"open_issues_count":0,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-24T17:11:06.696Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Devatoria.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2016-08-24T13:58:40.000Z","updated_at":"2022-05-04T11:38:54.000Z","dependencies_parsed_at":null,"dependency_job_id":"5d9e78d4-c3c4-4cf8-8727-e5b4080c7f5b","html_url":"https://github.com/Devatoria/admiral","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Devatoria%2Fadmiral","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Devatoria%2Fadmiral/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Devatoria%2Fadmiral/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Devatoria%2Fadmiral/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Devatoria","download_url":"https://codeload.github.com/Devatoria/admiral/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248281415,"owners_count":21077423,"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","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":[],"created_at":"2024-12-08T06:14:27.581Z","updated_at":"2025-04-10T19:32:09.144Z","avatar_url":"https://github.com/Devatoria.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"The documentation is available on [RTFD](http://admiral.readthedocs.io/en/latest/)!\n\n# Admiral\nAdmiral is a Docker Registry administration and authentication system. It is under development and is aiming to be a real production tool.\n\nIt works on 2 ways:\n\n* The first is that Docker Registry is sending events to Admiral, so it can store them in database in order to make an audit of the registry.\n* The second is that Docker Registry calls Admiral to authenticate actions in order to restrict pulls and pushes to autorized user only.\n\nAdmiral can synchronize itself with an existing registry using `synchronize` job described below.\n\nActually, when you create a new user, the associated namespace is created. This namespace is private and personal: only the owner can push and pull on/from it.\n\n# Features\n\n* Existing registry synchronization\n* Auto-update images and tags lists by listening to registry events\n* Authenticated calls\n* Private and personal namespaces\n* Image deletion\n* Public images\n\n# Roadmap\n\nFeatures:\n\n* Team management\n* Quota management\n\nSide projects:\n\n* API documentation\n* CLI\n* Web UI\n\n# Getting started\n\nYou can create a basic stack using the given `docker-compose.yml` file containing:\n\n* Admiral\n* Docker Registry\n* Postgres\n\nJust run the `docker-compose up` command at the root of the project. Note that you can get the [Admiral CLI](https://github.com/Devatoria/admiral-cli) to make the further steps easier.\n\n## Create a user\n\nWith curl:\n\n```\ncurl -XPUT -d '{\"username\":\"test\",\"password\":\"test\"}' localhost:3000/v1/users\n```\n\nOr with the CLI:\n\n```\nadmiral-cli user create test test\n```\n\n## Login with Docker\n\n```\ndocker login localhost:5000\nLogin Succeeded\n```\n\n# Configuration\n## Configure the daemon\nThe configuration file of the Admiral daemon is really easy.\n\n```\ndebug = true # Enable debug mode\n\naddress = \"127.0.0.1\" # Admiral API listening address\nport = 3000 # Admiral API listening port\n\n[auth]\nissuer = \"pepito\" # Registry auth issuer, must be the same as the registry configuration\ntoken-expiration = 5 # Token expiration time in minutes\ncertificate = \"/certs/server.crt\" # Certiciate path\nprivate-key = \"/certs/server.key\" # Certificate private key path\n\n[database]\nhost = \"localhost\" # Database host\nport = 5432 # Database port\nuser = \"admiral\" # Database user\npassword = \"admiral\" # Database password\nname = \"admiral\" # Database name\n\n[registry]\naddress = \"http://localhost\" # Docker Registry address\nport = 5000 # Docker Registry port\n```\n\n## Configure the Docker Registry authentication\nIn your `/etc/docker/registry/config.yml`, please add the following notification endpoint:\n\n```\nauth:\n  token:\n    realm: http://localhost:3000/v1/token\n    service: registry\n    issuer: pepito\n    rootcertbundle: /certs/server.crt\n```\n\n### Configure the Docker Registry events\nIn your `/etc/docker/registry/config.yml`, please add the following notification endpoint:\n\n```\nnotifications:\n  endpoints:\n  - name: admiral\n    disabled: false\n    url: http://admiral_host:3000/events\n    timeout: 500ms\n    threshold: 5\n    backoff: 5s\n```\n\nFor more information about notifications, please check the official Docker documentation: https://docs.docker.com/registry/configuration/#/notifications\n\n# Admiral jobs\n\nAdmiral can run several jobs (more than just launch the API). To list them, just run the `admiral job list`. Here are some details.\n\n## Synchronize the Docker Registry with Admiral\n\nAdmiral can run a set of jobs (in addition of the default daemon behavior). Admiral can synchronize itself with the Docker Registry by getting and parsing the catalog, inserting non-existing namespaces and images into the database. Just run the `synchronize` job:\n\n```\nadmiral job run synchronize\n```\n\n# Run tests\n\nThis project contains several tests for different packages. If you want to contribute, and in order to be sure that your changes do not impact the project behavior, you can run tests using this command at the root of the project:\n\n```\ngo test ./...\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevatoria%2Fadmiral","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevatoria%2Fadmiral","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevatoria%2Fadmiral/lists"}