{"id":23591452,"url":"https://github.com/dvob/tfreg","last_synced_at":"2026-05-05T23:31:44.756Z","repository":{"id":113329654,"uuid":"345365021","full_name":"dvob/tfreg","owner":"dvob","description":"Terraform Module Registry which serves modules from Gitlab","archived":false,"fork":false,"pushed_at":"2021-03-07T16:02:51.000Z","size":8,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-18T21:07:26.173Z","etag":null,"topics":["api","gitlab","module","private","registry","terraform"],"latest_commit_sha":null,"homepage":"","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/dvob.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}},"created_at":"2021-03-07T14:18:13.000Z","updated_at":"2021-03-07T16:02:53.000Z","dependencies_parsed_at":null,"dependency_job_id":"64b249d8-fcf4-4a7f-8774-4f20c3cd49d1","html_url":"https://github.com/dvob/tfreg","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dvob/tfreg","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dvob%2Ftfreg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dvob%2Ftfreg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dvob%2Ftfreg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dvob%2Ftfreg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dvob","download_url":"https://codeload.github.com/dvob/tfreg/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dvob%2Ftfreg/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32672534,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-05T11:29:49.557Z","status":"ssl_error","status_checked_at":"2026-05-05T11:29:48.587Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["api","gitlab","module","private","registry","terraform"],"created_at":"2024-12-27T07:39:05.981Z","updated_at":"2026-05-05T23:31:44.735Z","avatar_url":"https://github.com/dvob.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# tfreg (Terraform Registry)\n`tfreg` is a simple implementation of Terraform [registry API](https://www.terraform.io/docs/internals/module-registry-protocol.html) which provides modules directly from [Gitlab](https://gitlab.com). You could load private modules directly from version control with the [generic Git repository syntax](https://www.terraform.io/docs/language/modules/sources.html#generic-git-repository) or from other sources, but those sources don't support [version constraints](https://www.terraform.io/docs/language/modules/syntax.html#version).\n\n## Versions\n`tfreg` makes available all tags with a `v` prefix (e.g. `v1.1.4`). So to publish a new module version you just have to create a new tag with a `v` prefix (e.g. `git tag -a v1.1.4 -m \"\"`).\n\n## Repositories\nIf you specify a Terraform Registry as a module source the source has the following format:\n```\nmodule \"mytest\" {\n  source = \"HOSTNAME/NAMESPACE/NAME/PROVIDER\"\n  version = \"\u003c 2.0.0\"\n}\n```\n\nWith the `-template` option you can specify how the namespace, name and provider are mapped to a gitlab project ID. By default the format is `{{ .Namespace }}/{{ .Name }}` and the provider is not used. This would for example map `example.com/dvob/terraform-dummy-module/base` to the gitlab project https://gitlab.com/dvob/terraform-dummy-module. The provider in this case would be `base` but by default it is not used in the Gitlab project ID.\n\n# Local Test\n* Create a DNS record `example.com` which points to `127.0.0.1`\n* Create a TLS key pair (`tls.key` and `tls.crt`) for `example.com` (for example with [pcert](https://github.com/dvob/pcert) or OpenSSL)\n* Build `go build`\n* Run `./tfreg`\n* Trust your self signed certificate `export SSL_CERT_FILE=$(pwd)/tls.crt`\n* Go to the test dirctory `cd test/` and run `terraform init` and `terraform apply`\n\n\nIf you want to host modules from private Gitlab repositories [create a personal access token](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html#creating-a-personal-access-token) and set the environment variable `GITLAB_TOKEN` before you start `tfreg`.  Also make sure that you have configured the Git credential helper correctly before you run `terraform init`. For example:\n```\ngit config --global credential.helper '!f() { sleep 1; echo \"username=none\"; echo \"password=${GITLAB_TOKEN}\"; }; f'\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdvob%2Ftfreg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdvob%2Ftfreg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdvob%2Ftfreg/lists"}