{"id":13689344,"url":"https://github.com/romnn/ldap-manager","last_synced_at":"2025-05-12T13:33:40.349Z","repository":{"id":38939522,"uuid":"289356856","full_name":"romnn/ldap-manager","owner":"romnn","description":"cloud-native LDAP web management interface.","archived":false,"fork":false,"pushed_at":"2023-04-28T14:43:17.000Z","size":7846,"stargazers_count":55,"open_issues_count":3,"forks_count":8,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-27T16:02:48.323Z","etag":null,"topics":["authentication","cloud-native","golang","grpc","helm","k8s","kubernetes","ldap","openldap","user-management","web-application"],"latest_commit_sha":null,"homepage":"https://romnn.github.io/ldap-manager","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/romnn.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}},"created_at":"2020-08-21T20:14:57.000Z","updated_at":"2025-01-16T04:07:52.000Z","dependencies_parsed_at":"2023-07-19T01:24:34.158Z","dependency_job_id":null,"html_url":"https://github.com/romnn/ldap-manager","commit_stats":null,"previous_names":["romnnn/ldap-manager"],"tags_count":49,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/romnn%2Fldap-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/romnn%2Fldap-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/romnn%2Fldap-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/romnn%2Fldap-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/romnn","download_url":"https://codeload.github.com/romnn/ldap-manager/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253748289,"owners_count":21957900,"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":["authentication","cloud-native","golang","grpc","helm","k8s","kubernetes","ldap","openldap","user-management","web-application"],"created_at":"2024-08-02T15:01:44.267Z","updated_at":"2025-05-12T13:33:39.843Z","avatar_url":"https://github.com/romnn.png","language":"Go","funding_links":[],"categories":["Go","golang"],"sub_categories":[],"readme":"## ldap-manager\n\n[![Build Status](https://github.com/romnn/ldap-manager/workflows/test/badge.svg)](https://github.com/romnn/ldap-manager/actions)\n[![GitHub](https://img.shields.io/github/license/romnn/ldap-manager)](https://github.com/romnn/ldap-manager)\n[![Docker Pulls](https://img.shields.io/docker/pulls/romnn/ldap-manager)](https://hub.docker.com/r/romnn/ldap-manager)\n[![Test Coverage](https://codecov.io/gh/romnn/ldap-manager/branch/master/graph/badge.svg)](https://codecov.io/gh/romnn/ldap-manager)\n[![Release](https://img.shields.io/github/release/romnn/ldap-manager)](https://github.com/romnn/ldap-manager/releases/latest)\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"200\" src=\"website/icon/icon_lg.jpg\"\u003e\n\u003c/p\u003e\n\nLDAP Manager is the cloud-native LDAP web management interface. LDAP has been around for a long time and has become a popular choice for user and group management - however, this should not mean that it's management interface should be hard to deploy and look and feel like it was made in the last century.\n\nLDAP Manager is written in Go and comes with a Vue/Typescript frontend in a single, self-contained docker container. It also exposes it's API over both REST and gRPC!\n\n|                                                 |                                                 |\n| :---------------------------------------------: | :---------------------------------------------: |\n|      \u003cimg src=\"screenshots/home-of-user.png\"\u003e      | \u003cimg src=\"screenshots/user-edit-by-admin.png\"\u003e |\n| \u003cimg src=\"screenshots/users-list-for-admin.png\"\u003e |  \u003cimg src=\"screenshots/group-edit-by-admin.png\"\u003e  |\n\nBefore you get started, make sure you have an OpenLDAP server like\n[osixia/openldap](https://hub.docker.com/r/osixia/openldap/) running.\nFor more information on deployment and a full example,\nsee the [deployment guide](#Deployment).\n\n```bash\ngo install github.com/romnn/ldap-manager/cmd/ldap-manager\nldap-manager serve --generate\ngo run github.com/romnn/ldap-manager/cmd/ldap-manager serve --generate --http-port 8090\n```\n\nYou can also download pre-built binaries from the\n[releases page](https://github.com/romnn/ldap-manager/releases),\nor use the `docker` image:\n\n```bash\ndocker run -p 8080:80 -p 9090:9090 romnn/ldap-manager --generate\n```\n\nFor a list of options, run with `--help`. If you want to deploy OpenLDAP with LDAP Manager, read along.\n\n### Deployment\n\n```bash\nhelm dependency update deployment/helm/charts/ldapmanager/\n```\n\n##### docker-compose\n\n```bash\nCOMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 docker-compose -f deployment/docker-compose.yml up\n```\n\n##### Helm\n\nTODO\n\n##### Known bugs\n\n\n##### Fixed bugs\n- when creating new groups, errors are not properly passed through\n- when creating new group, cannot add initial members\n- removing groups in edit user does not do anything (no errors)\n- errors when removing from group in user edit page break layout\n- memberof does not respect the initial admin user for both users and admins groups\n\n##### Considerations\n\n- Serving the frontend externally\n  If you have a cluster environment and want to scale the `ldap-manager` container individually or use a more performant static content server like `nginx`, you can disable serving static content using the `--no-static` (`NO_STATIC`) flag.\n\n### Development\n\n#### Tools\n\nBefore you get started, make sure you have installed the following tools:\n\n```bash\n$ python3 -m pip install pre-commit bump2version invoke\n$ go install github.com/kyoh86/richgo@latest\n$ go install golang.org/x/tools/cmd/goimports@latest\n$ go install golang.org/x/lint/golint@latest\n$ go install github.com/fzipp/gocyclo/cmd/gocyclo@latest\n```\n\nPlease always make sure code checks pass:\n\n```bash\ninv pre-commit\n```\n\n#### Compiling proto sources\n\nIf you want to (re-)compile the grpc service and gateway `.proto` source files,\nyou will need\n\n- `protoc`\n- `protoc-gen-go`\n- `protoc-gen-go-grpc`.\n- `protoc-gen-grpc-gateway`\n- `protoc-gen-openapiv2`\n\n```bash\napt install -y protobuf-compiler\nbrew install protobuf\n\ngo install google.golang.org/protobuf/cmd/protoc-gen-go@latest\ngo install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest\ngo install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway@latest\ngo install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2@latest\n```\n\nTo compile the protos, you can use the provided script:\n\n```bash\ninv compile-proto\n```\n\n#### Generate screenshots\n```bash\ncd deployment/screenshot\nyarn install --dev\nyarn run screenshot\n```\n\n#### TODO\n\n- v2\n\n  - refactor to use manual ldap search only where necessary\n  - use an interface for the main functions of the manager in GRPC server\n  - point out that the goal is user management only\n\n  - documentation\n\n- nice to have\n  - test the grpc and http servers as well\n\n  - Implement CLI interface\n    - new acc\n    - change password\n    - add group\n    - add member to group\n    - list users\n    - verify?\n\n- done\n  - refactor in general\n  - add integration test with harbor\n  - fix the docker container\n  - fix the frontend\n  - binds should always open new connections\n  - function that opens a new connection\n  - add a simple connection pool\n  - fix nil pointer errors\n  - decide what goes into pkg and what goes into internal\n  - add tests for each file in pkg\n  - Implement missing password hashing algorithms\n  - Embed crypt(3) as vendored?\n  - Fix flaky tests using fuzzy testing and check slappasswd source\n  - add pagination\n  - get rid of the password hashing mess\n  - decide on a consistent naming (user vs account)\n  - split into more files\n  - update dependencies\n  - fix issues and use new api for grpc and http without a base\n  - add images to the readme\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fromnn%2Fldap-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fromnn%2Fldap-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fromnn%2Fldap-manager/lists"}