Skip to content

Go Module Hosting

Private Go module hosting with full Go toolchain support. Compatible with go get, go mod, and all standard Go commands locally or from CI.

Go Module Proxy

Private Go module hosting with full Go toolchain support. Compatible with go get, go mod, and all standard Go commands locally or from CI.

Team Access Control

Granular permissions system to control who can publish, install, or manage packages in your organization or audience.

Secure Authentication

Control Public and Private version access using IAM policies, fine-grained at repository, package, module or version level.

Easy Integration

Works locally and with existing CI/CD pipelines and development workflows without any configuration changes.

Vanity Imports

Professional branding with Go imports using your organization’s subdomain instead of github.com for a polished developer experience.

To get started, install the Deployport CLI:

Terminal window
sh curl -fsSL https://get.deployport.com | sh

Once installed, create your first Binara repository:

Terminal window
deployport binara repo create myrepo

Create a Go module in your repository:

Terminal window
deployport binara go module create --repository myrepo mygomodule

Navigate to your Go module directory:

Terminal window
$HOME/projects/mygomodule

Initialize the new Go module:

Terminal window
deployport binara go mod --repository myrepo create --init mygomodule

Private Go modules in Binara provide secure, access-controlled hosting for your internal packages. These modules require authentication through Deployport’s IAM system, ensuring only authorized team members can access your proprietary code.

Key Features:

  • IAM-Protected Access: All access requires valid authentication and appropriate IAM permissions
  • Granular Permissions: Control access at repository, package, module, or specific version visibility level
  • Team Collaboration: Share modules securely within your organization or specific audiences
  • Version Control: Manage access to different versions independently

Private modules are ideal for:

  • Internal libraries
  • Proprietary business logic
  • Sensitive or confidential packages
  • Team-specific utilities and gobin executables
  • Microservice client libraries
  • Microservice shared modules
Terminal window
deployport binara go push --repository myrepo --visibility private --version 0.0.1

To install private Go modules from Binara, use the Deployport CLI which handles authentication automatically:

Terminal window
deployport binara go get --visibility private myrepo:mygomodule@0.0.1

The CLI handles IAM authentication with go get, making it easy to integrate private modules into your development workflow without manual authentication setup.

Upgrades to newer versions of private modules

Section titled “Upgrades to newer versions of private modules”

For upgrades, you can grab a new version by using deployport binara go get.

You can also edit your go.mod to use a new version and then invoke go mod tidy with authentication automatically handled for you via deployport binara go exec as follows:

Terminal window
deployport binara go exec -- go mod tidy

Public Go modules in Binara are openly accessible packages that can be downloaded and used by anyone who knows the module path. While publishing requires IAM authentication, accessing and installing public modules does not require any special permissions.

Key Features:

  • Open Access: Anyone can download and install without authentication
  • Public Discovery: Modules can be shared openly with the community
  • Standard Go Workflow: Works with standard go get commands
  • Controlled Publishing: Only authorized users can publish new versions
  • Vanity Imports: Go imports use your organization’s subdomain instead of github.com, providing professional branding for your modules

Public modules are perfect for:

  • Open source libraries and packages
  • Community-shared utilities
  • Public APIs and SDKs
  • Educational and example code
Terminal window
deployport binara go push --repository myrepo --visibility public --version 0.0.2

To install public Go modules from Binara, use the command:

Terminal window
deployport binara go get --visibility public myrepo:mygomodule@0.0.2

Alternatively, since public modules are openly accessible, you can also use standard Go commands:

Terminal window
go get $(deployport binara go version get-module-path myrepo:mygomodule@0.0.2)

Binara’s tight integration with IAM system provides comprehensive access control for Go modules, leveraging Deployport’s powerful permission model to secure your packages.

Access can be controlled at multiple levels:

  • Repository Level: Control who can access entire repositories
  • Package Level: Fine-grained control over specific packages within a repository
  • Module Level: Individual module access permissions
  • Version Visibility Level: Control access to public or private versions of modules

For Private Modules:

  1. User authenticates with Deployport IAM
  2. IAM validates permissions against requested module
  3. Access granted or denied based on policy evaluation
  4. Go toolchain receives authenticated access to module proxy

For Public Modules:

  1. Publishing requires IAM authentication and write permissions
  2. Installing requires no authentication - open access via standard Go proxy
  3. IAM policies still control who can publish updates

This granular access control makes Binara ideal for organizations requiring strict security while maintaining the familiar Go development experience.