{"id":39144562,"url":"https://github.com/cezarguimaraes/pkgsite","last_synced_at":"2026-01-17T21:33:25.239Z","repository":{"id":202954900,"uuid":"708490080","full_name":"cezarguimaraes/pkgsite","owner":"cezarguimaraes","description":"A Helm chart to deploy a fully-featured private pkg.go.dev instance.","archived":false,"fork":false,"pushed_at":"2024-08-14T22:24:44.000Z","size":196,"stargazers_count":14,"open_issues_count":1,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-08-14T23:59:13.359Z","etag":null,"topics":["athens","athens-proxy","go","go-modules","godoc","golang","goproxy","helm","helm-chart","pkgsite","self-hosting"],"latest_commit_sha":null,"homepage":"","language":"Smarty","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cezarguimaraes.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}},"created_at":"2023-10-22T17:58:54.000Z","updated_at":"2024-08-14T22:24:32.000Z","dependencies_parsed_at":null,"dependency_job_id":"8517f17d-26bd-475b-8a71-50a292e68a43","html_url":"https://github.com/cezarguimaraes/pkgsite","commit_stats":null,"previous_names":["cezarguimaraes/pkgsite"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/cezarguimaraes/pkgsite","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cezarguimaraes%2Fpkgsite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cezarguimaraes%2Fpkgsite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cezarguimaraes%2Fpkgsite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cezarguimaraes%2Fpkgsite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cezarguimaraes","download_url":"https://codeload.github.com/cezarguimaraes/pkgsite/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cezarguimaraes%2Fpkgsite/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28518627,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T18:55:29.170Z","status":"ssl_error","status_checked_at":"2026-01-17T18:55:03.375Z","response_time":85,"last_error":"SSL_read: 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":["athens","athens-proxy","go","go-modules","godoc","golang","goproxy","helm","helm-chart","pkgsite","self-hosting"],"created_at":"2026-01-17T21:33:24.689Z","updated_at":"2026-01-17T21:33:25.203Z","avatar_url":"https://github.com/cezarguimaraes.png","language":"Smarty","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pkgsite\n\nAlthough [pkg.go.dev](https://pkg.go.dev/) has been [opensourced a few years ago](https://go.dev/blog/pkgsite), self-hosting a fully featured version of pkgsite for private packages [is still a cumbersome process](https://github.com/golang/go/issues/39827). \n\nThis repository provides a Helm chart to:\n1. Deploy the pkgsite frontend.\n2. Deploy, migrate and seed its PostgreSQL database, powered by the [bitnami/postgresql](https://artifacthub.io/packages/helm/bitnami/postgresql) Chart.\n3. Optionally deploy a Redis cluster, used by the frontend to cache rendered pages. Powered by the [bitnami/redis](https://artifacthub.io/packages/helm/bitnami/redis) Chart.\n4. Optionally deploy an [athens-proxy](https://github.com/gomods/athens#welcome-to-athens-gophers) instance, in order to provide access to private go modules.\n\n## Table of contents\n* [Installing](#installing)\n* [Getting started](#getting-started)\n* [Uninstalling](#uninstalling)\n* [Exposing the service](#exposing-the-service)\n* [Advanced configuration](#advanced-configuration)\n  + [Seeded packages](#seeded-packages)\n  + [Deployment settings](#deployment-settings)\n  + [PostgreSQL](#postgresql)\n  + [Redis](#redis)\n  + [athens-proxy](#athens-proxy)\n\n\n## Installing\n\n```bash\nhelm repo add pkgsite https://cezarguimaraes.github.io/pkgsite\nhelm install pkgsite pkgsite/pkgsite\n```\n\n## Getting started\n\nThese steps will walk you through setting up a fully featured _pkgsite_ deployment, including a _go module proxy_ able to retrieve private Go packages hosted on Github.\n\n1. Create a namespace to contain pkgsite resources.\n\n   ```bash\n   kubectl create namespace pkgsite\n   ```\n2. (Optional) Configure the private go modules proxy\n   1. Create a secret to store a GITHUB_TOKEN\n\n       ```bash\n       kubectl create secret -n pkgsite generic github-token --from-literal=token=$GITHUB_TOKEN\n       ```\n\n    2. Create a _values.yaml_ file to configure the proxy:\n  \n        ```yaml\n        athens-proxy:\n          enabled: true\n        \n          downloadMode: |\n            downloadURL = \"https://proxy.golang.org\"\n        \n            mode = \"redirect\"\n        \n            download \"github.com/YOURORGANIZATION/*\" {\n              mode = \"sync\"\n            }\n        \n          configEnvVars:\n            - name: ATHENS_GONOSUM_PATTERNS\n              value: github.com/YOURORGANIZATION/*\n            - name: ATHENS_GITHUB_TOKEN\n              valueFrom:\n                # this secret is expected to exist. Example:\n                # kubectl create secret generic github-token --from-literal=token=$GITHUB_TOKEN\n                secretKeyRef:\n                  name: github-token\n                  key: token\n            - name: ATHENS_DOWNLOAD_MODE\n              valueFrom:\n                # this configMap is created by setting athens-proxy.downloadMode\n                configMapKeyRef:\n                  name: athens-config\n                  key: download.hcl\n        ```\n\n        Note the [`.athens-proxy.downloadMode`](https://docs.gomods.io/configuration/download/) property. This example configures _athens-proxy_ to serve private packages from `github.com/YOURORGANIZATION/*`, while redirecting any other package to Go's [default module mirror](https://proxy.golang.org/) for improved performance and reduced costs.\n3. Install the chart\n   1. Using the _values.yaml_ file created on the previous step:\n  \n      ```bash\n      helm install pkgsite pkgsite/pkgsite -f values.yaml -n pkgsite\n      ```\n\n    This can take a few minutes as the seed-db post-hook-install seeds the\n    pkgsite's database.\n4. Verify deployment status\n\n   ```bash\n   kubectl get pod -n pkgsite\n   NAME                      READY   STATUS      RESTARTS   AGE\n   pkgsite-86566fc8b-hfzbs   1/1     Running     0          9m48s\n   pkgsite-postgresql-0      1/1     Running     0          9m48s\n   pkgsite-redis-master-0    1/1     Running     0          9m48s\n   pkgsite-setup-db-snxmb    0/1     Completed   0          9m36s\n   ```\n5. Browse your docs locally:\n\n   ```bash\n   kubectl port-forward svc/pkgsite -n pkgsite 8080\n   ```\n\n## Uninstalling\n\n1. Uninstall the release\n\n    ```bash\n    helm uninstall pkgsite\n    ```\n2. Cleanup _Persistent Volume Claims_\n\n    ```bash\n    kukectl delete pvc -l app.kubernetes.io/instance=pkgsite\n    ```\n\n## Exposing the service\n\nThis step will vary according to your cluster's networking. Some options are:\n\n* Update the [serviceType](./helm/values.yaml#71) to LoadBalancer\n* Enable and configure an [Ingress resource](./helm/values.yaml#74)\n* Configure an ingress using custom networking solutions such as Istio or Consul. Refer to their documentation for instructions.\n\n⚠️ Take care to not expose private go modules documentation to the public internet.\n\n## Advanced configuration\n\nAll YAML snippets in this section should be included in your custom _values.yaml_ file.\n\n### Seeded packages\n\n   You can change the list of packages that are seeded when the chart is installed:\n\n   ```yaml\n   seed:\n     packages:\n     - std@latest\n     - golang.org/x/tools@latest\n     - github.com/YOURORGANIZATION/YOURPACKAGE@all\n   ```\n\n   \u003e Note you can seed all versions of a package, including `std`. It can, however, take a long time. Seeding packages is not necessary: users can request that any package be fetched by navigating to `pkgsite.domain/\u003cimport-path\u003e[@version]`.\n\n### Deployment settings\n\n   Find the complete list of deployment settings in the default [_values.yaml_ file](./helm/values.yaml).\n\n### PostgreSQL\n\n   Find the complete list of PostgreSQL settings in the chart's [ArtifactHub page](https://artifacthub.io/packages/helm/bitnami/postgresql#parameters). Prefix parameters by `postgresql`:\n\n   ```yaml\n   postgresql:\n     image:\n       registry: my-private-container-registry.io\n   ```\n\n### Redis\n\n   Find the complete list of Redis settings in the chart's [ArtifactHub page](https://artifacthub.io/packages/helm/bitnami/redis#parameters). Prefix parameters by `redis`:\n\n   ```yaml\n   redis:\n     architecture: replication\n   ```\n\n### athens-proxy\n\n   Find the complete list of athens-proxy settings in the chart's [Github Repository](https://github.com/gomods/athens-charts/blob/main/charts/athens-proxy/values.yaml). Prefix parameters by `athens-proxy`:\n   \n   ```yaml\n   athens-proxy:\n     storage:\n       type: disk\n       disk:\n         storageRoot: \"/var/lib/athens\"\n         persistence:\n           enabled: true\n           accessMode: ReadWriteOnce\n           size: 4Gi\n   ```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcezarguimaraes%2Fpkgsite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcezarguimaraes%2Fpkgsite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcezarguimaraes%2Fpkgsite/lists"}