Project Awesome project awesome

Registry > terralist

Private registry for providers and modules.

Package 487 stars GitHub
Terralist Logo

Terralist

A private Terraform/OpenTofu registry for modules and providers


Latest Release CI Go Version License: MPL 2.0

Terralist implements the Terraform registry protocols and gives you a private, self-hosted registry with a web dashboard, RBAC, and support for multiple storage backends.

Features

  • Private module and provider registry: upload, version, and distribute Terraform/OpenTofu modules and providers within your organization
  • Web dashboard: browse artifacts, view documentation, and manage authorities and API keys
  • RBAC: fine-grained access control with built-in roles (admin, readonly, anonymous) and custom policies via Casbin
  • Multiple OAuth providers: authenticate via GitHub, GitLab, BitBucket, or any OIDC-compatible provider
  • API keys with scoped policies: create API keys for CI/CD with per-key RBAC policies and organizational scopes
  • Storage backends: store artifacts in AWS S3, Azure Blob, Google Cloud Storage, local filesystem, or proxy mode
  • Prometheus metrics: monitor uploads, downloads, API key usage, storage operations, and HTTP request latency
  • Single binary: no external dependencies, runs anywhere Go compiles to

Quick start

# Download the latest release
curl -sL "https://github.com/terralist/terralist/releases/latest/download/terralist_$(go env GOOS)_$(go env GOARCH).zip" -o terralist.zip
unzip terralist.zip

# Create a minimal config
cat > config.yaml <<EOF
oauth-provider: github
gh-client-id: ${GITHUB_OAUTH_CLIENT_ID}
gh-client-secret: ${GITHUB_OAUTH_CLIENT_SECRET}
token-signing-secret: $(openssl rand -hex 16)
cookie-secret: $(openssl rand -hex 16)
EOF

# Start the server
./terralist server --config config.yaml

Then open http://localhost:5758 in your browser.

See the getting started guide for detailed setup instructions including HTTPS configuration for Terraform CLI integration.

Usage

# Use a module from your private registry
module "vpc" {
  source  = "registry.example.com/my-org/vpc/aws"
  version = "1.0.0"
}

# Use a provider from your private registry
terraform {
  required_providers {
    custom = {
      source  = "registry.example.com/my-org/custom"
      version = "2.0.0"
    }
  }
}

Documentation

Full documentation is available at www.terralist.io, including:

Contributing

Contributions are welcome. All input is appreciated, whether it's a bug report, feature request, or pull request.

License

Terralist is licensed under the Mozilla Public License 2.0.

Back to OpenTofu