Skip to content
/ hub Public

Caching proxy server for ansible collections, pypi, goproxy, npm, rubygems, static files...

License

Notifications You must be signed in to change notification settings

psvmcc/hub

Repository files navigation

HUB - Caching proxy server

Config example:

dir: _data
server:
  pypi:
    pypi.org: https://pypi.org/simple
  rubygems:
    rubygems: https://rubygems.org
  galaxy:
    ansible:
      url: https://galaxy.ansible.com
    test:
      dir: _galaxy
  static:
    github: https://github.com
    k8s: https://dl.k8s.io
    get_helm: https://get.helm.sh
  goproxy:
    golang: https://proxy.golang.org
  npm:
    npmjs: https://registry.npmjs.org

Usage

PyPI

Access cached PyPI packages:

http://localhost:6587/pypi/pypi.org/simple/{package}/

Ansible Galaxy

Access cached Galaxy collections:

http://localhost:6587/galaxy/ansible/api/v3/collections/{namespace}/{name}/

RubyGems

Use HUB as a RubyGems/Bundler source:

http://localhost:6587/rubygems/{repo_name}

Bundler/RubyGems clients fetch a set of plain HTTP resources. HUB proxies and caches any path under the configured upstream (wildcard route), including common endpoints:

  • Compact index: /names, /versions, /info/<gem>
  • Legacy indexes: /specs.4.8.gz, /latest_specs.4.8.gz, /prerelease_specs.4.8.gz, /quick/Marshal.4.8/*.gemspec.rz
  • Gem artifacts: /gems/<name>-<version>.gem

Bundler mirror example:

# all requests to rubygems.org must be forwarded to localhost:6587/rubygems/rubygems
bundle config --local mirror.https://rubygems.org http://localhost:6587/rubygems/rubygems

Gemfile source example:

# by default all requests will be forwarded to proxy
source "http://localhost:6587/rubygems/rubygems"
gem "puma"

# but for rack gem it will use some other upstream
source "https://rubygems.org" do
  gem "rack"
end

Static files

Access cached static files:

http://localhost:6587/static/{key}/get/{path}

GOPROXY

To use HUB as a Go module proxy, set the GOPROXY environment variable:

export GOPROXY=http://localhost:6587/goproxy/golang

Or configure it for a specific project:

go env -w GOPROXY=http://localhost:6587/goproxy/golang

The proxy supports all standard GOPROXY protocol endpoints:

  • /{module}/@v/list - list of available versions
  • /{module}/@v/{version}.info - version metadata (JSON)
  • /{module}/@v/{version}.mod - go.mod file for the version
  • /{module}/@v/{version}.zip - source code archive
  • /{module}/@latest - latest version info

NPM

To use HUB as an npm registry proxy, set the registry to your HUB instance:

npm config set registry http://localhost:6587/npm/npmjs

For a scoped registry:

npm config set @my-scope:registry http://localhost:6587/npm/npmjs

Or it can be used in the file .npmrc

registry=http://localhost:6587/npm/npmjs

The proxy supports the following npm registry endpoints:

  • /{package} - package metadata (packument)
  • /@scope%2F{name} - scoped package metadata (packument)
  • /{package}/-/{tarball}.tgz - package tarball
  • /@scope/{name}/-/{tarball}.tgz - scoped package tarball
  • /-/v1/search - search (cached for 10 minutes)

About

Caching proxy server for ansible collections, pypi, goproxy, npm, rubygems, static files...

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors 2

  •  
  •