{"id":14155487,"url":"https://github.com/jhipster/jhipster-registry","last_synced_at":"2025-05-14T14:08:06.310Z","repository":{"id":3861473,"uuid":"51146080","full_name":"jhipster/jhipster-registry","owner":"jhipster","description":"JHipster Registry, based on Spring Cloud Netflix Eureka and Spring Cloud Config","archived":false,"fork":false,"pushed_at":"2024-12-31T06:53:07.000Z","size":13444,"stargazers_count":703,"open_issues_count":21,"forks_count":653,"subscribers_count":77,"default_branch":"main","last_synced_at":"2025-05-07T00:38:07.243Z","etag":null,"topics":["eureka","hacktoberfest","jhipster","spring-configuration"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jhipster.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","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},"funding":{"open_collective":"generator-jhipster","custom":"https://www.jhipster.tech/sponsors/"}},"created_at":"2016-02-05T12:47:59.000Z","updated_at":"2025-05-06T08:21:43.000Z","dependencies_parsed_at":"2023-07-05T18:18:09.500Z","dependency_job_id":"18bc090a-1117-459e-992b-86cd7eb40982","html_url":"https://github.com/jhipster/jhipster-registry","commit_stats":{"total_commits":887,"total_committers":67,"mean_commits":"13.238805970149254","dds":0.7914317925591883,"last_synced_commit":"64be568b9a2540b43fd2dafba3e9aa8c1be74515"},"previous_names":[],"tags_count":63,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jhipster%2Fjhipster-registry","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jhipster%2Fjhipster-registry/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jhipster%2Fjhipster-registry/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jhipster%2Fjhipster-registry/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jhipster","download_url":"https://codeload.github.com/jhipster/jhipster-registry/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253746980,"owners_count":21957666,"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":["eureka","hacktoberfest","jhipster","spring-configuration"],"created_at":"2024-08-17T08:03:28.075Z","updated_at":"2025-05-14T14:08:06.291Z","avatar_url":"https://github.com/jhipster.png","language":"TypeScript","funding_links":["https://opencollective.com/generator-jhipster","https://www.jhipster.tech/sponsors/"],"categories":["hacktoberfest","\u003ca name=\"TypeScript\"\u003e\u003c/a\u003eTypeScript"],"sub_categories":[],"readme":"# JHipster Registry\n\n[![Build Status][github-actions-build]][github-actions-url] [![Docker Status][github-actions-docker]][github-actions-url] [![Docker Pulls](https://img.shields.io/docker/pulls/jhipster/jhipster-registry.svg)](https://hub.docker.com/r/jhipster/jhipster-registry/)\n\nThis is the [JHipster](https://www.jhipster.tech/) registry service, based on [Spring Cloud Netflix](https://cloud.spring.io/spring-cloud-netflix/), [Eureka](https://github.com/Netflix/eureka) and [Spring Cloud Config](https://cloud.spring.io/spring-cloud-config/).\n\nFull documentation is available on the [JHipster documentation for microservices](https://www.jhipster.tech/microservices-architecture).\n\n## Deploy to Heroku\n\nClick this button to deploy your  instance of the registry:\n\n[![Deploy to Heroku](https://www.herokucdn.com/deploy/button.png)](https://heroku.com/deploy)\n\nThere are a few limitations when deploying to Heroku.\n\n- The registry will only work with [native configuration](https://www.jhipster.tech/jhipster-registry/#spring-cloud-config) (and not Git config).\n- The registry service cannot be scaled up to multiple dynos to provide redundancy. You must deploy multiple applications (i.e. click the button more than once). This is because Eureka requires distinct URLs to synchronize in-memory state between instances.\n\n## Running locally\n\nTo run the cloned repository;\n\n- For development run `./mvnw -Pdev,webapp` to just start in development or run `./mvnw` and run `npm install \u0026\u0026 npm start` for hot reload of client side code.\n- For production profile run `./mvnw -Pprod`\n\n[github-actions-build]: https://github.com/jhipster/jhipster-registry/workflows/Build/badge.svg\n[github-actions-docker]: https://github.com/jhipster/jhipster-registry/workflows/Docker%20Image/badge.svg\n[github-actions-url]: https://github.com/jhipster/jhipster-registry/actions\n\n## HashiCorp Vault Integration\n\n### Development Mode\n\n`JHipster Registry` default integration uses a `vault` server with an in-memory backend. The data shall not be persist and shall require you to configure secrets after every restart. The in-memory configuration provides an easy way to test out the integration and later switch to the recommended server mode.\n\n- Start vault server docker container:\n\n```shell\ndocker-compose -f src/main/docker/vault.yml up -d\n```\n\n- The default configured root token is `jhipster-registry`. We shall use the default secrets engine backend mounted on the `secrets` path. Configure secrets using either of `ui`, `cli` or `http`.\n- Create a new secret sub-path `jhipster-registry/dev` and add the following secret in JSON format. Here `jhipster-registry` refers to the application name and `dev` refers to the development profile. Do follow the same convention to configure secrets of other applications.\n\n```json\n{\n  \"spring.security.user.password\": \"admin123!\"\n}\n```\n\n- Start `JHipster Registry` server in development mode using the following command (skipping execution of test cases):\n\n```shell\n./mvnw -DskipTests\n```\n\n- After successful start, open `http://localhost:8761/` in a browser. You shall require entering a new password as provided in the above vault configuration.\n\n### Server Mode\n\n`JHipster Registry` also provides configuration to use the native file system as the persistent backend.\n\n- Uncomment the following configurations in [vault.yml](src/main/docker/vault.yml). You can refer [config.hcl](src/main/docker/vault-config/config/config.hcl) to view provided vault server configurations:\n\n```yml\ncommand: server\nvolumes:\n  - ./vault-config/config:/vault/config\n  - ./vault-config/logs:/vault/logs\n  - ./vault-config/data:/vault/file\n```\n\n- Start vault server docker container:\n\n```shell\ndocker-compose -f src/main/docker/vault.yml up -d\n```\n\n- Open `vault` server [`ui`](http://localhost:8200/ui/vault/init) to initialize master key shares. In this guide, we shall enter `1` as the number of key shares and `1` as the key threshold value. Do refer to vault documentation for recommended configuration. Note down the initial `root token` and the `key` and keep it at a safe place. You shall require the `key` to unseal the vault server after a restart.\n- Enable secret engine backend `kv` and use `secret` as the mount path.\n- Create a new secret sub-path `jhipster-registry/dev` and add the following secrets in JSON format. Here `jhipster-registry` refers to the application name and `dev` refers to the development profile. Do follow the same convention to configure secrets of other applications.\n\n```json\n{\n  \"spring.security.user.password\": \"admin123!\"\n}\n```\n\n- In this guide, we shall use the `token` authentication mechanism to retrieve secrets from the `vault` server. Update `bootstrap.yml` to specify `root token` in place of default dev token.\n\n```yaml\nvault:\n  authentication: token\n  token: jhipster-registry # In server mode, provide a token having read access on secrets\n```\n\n- Start `JHipster Registry` server in development mode using the following command (skipping execution of test cases):\n\n```shell\n./mvnw -DskipTests\n```\n\n- After successful start, you shall require entering a new password as provided in vault.\n\n## OAuth 2.0 and OpenID Connect\n\nOAuth is a stateful security mechanism, like HTTP Session. Spring Security provides excellent OAuth 2.0 and OIDC support, and this is leveraged by JHipster. If you’re not sure what OAuth and OpenID Connect (OIDC) are, please see [What the Heck is OAuth?](https://developer.okta.com/blog/2017/06/21/what-the-heck-is-oauth)\n\nPlease note that [JSON Web Token (JWT)](https://jwt.io/) is the default option when using the JHipster Registry. It has to be started with **oauth2** spring profile to enable the OAuth authentication.\n\nIn order to run your JHipster Registry with OAuth 2.0 and OpenID Connect:\n\n- For development run `SPRING_PROFILES_ACTIVE=dev,oauth2,native ./mvnw`\n- For production you can use environment variables. For example:\n\n```\nexport SPRING_PROFILES_ACTIVE=prod,oauth2,api-docs\n```\n\n### Keycloak\n\n[Keycloak](https://www.keycloak.org/) is the default OpenID Connect server configured with JHipster.\n\nIf you want to use Keycloak, you can follow the [documentation for Keycloak](https://www.jhipster.tech/security/#keycloak)\n\n### Okta\n\nIf you'd like to use [Okta](https://www.okta.com/) instead of Keycloak, you can follow the [documentation for Okta](https://www.jhipster.tech/security/#okta)\n\n### Auth0\n\nIf you'd like to use [Auth0](https://auth0.com/) instead of Keycloak, you can follow the [documentation for Auth0](https://www.jhipster.tech/security/#auth0)\n\n\\*NOTE: Using the JHipster Registry, add URLs for port 8761 too (\"Allowed Callback URLs\" and \"Allowed Logout URLs\")\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjhipster%2Fjhipster-registry","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjhipster%2Fjhipster-registry","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjhipster%2Fjhipster-registry/lists"}