{"id":25343869,"url":"https://github.com/appscode-cloud/offline-license-server","last_synced_at":"2026-05-04T06:06:09.585Z","repository":{"id":38386851,"uuid":"285978975","full_name":"appscode-cloud/offline-license-server","owner":"appscode-cloud","description":"AppsCode License Server","archived":false,"fork":false,"pushed_at":"2026-05-01T13:33:18.000Z","size":27739,"stargazers_count":26,"open_issues_count":8,"forks_count":6,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-05-01T15:27:20.566Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://appscode.com/issue-license/","language":"Go","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/appscode-cloud.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2020-08-08T05:21:49.000Z","updated_at":"2026-05-01T13:33:21.000Z","dependencies_parsed_at":"2024-03-17T17:27:43.728Z","dependency_job_id":"5787c50c-f46b-4487-a9a8-fcd0383788db","html_url":"https://github.com/appscode-cloud/offline-license-server","commit_stats":{"total_commits":274,"total_committers":2,"mean_commits":137.0,"dds":"0.021897810218978075","last_synced_commit":"0e68fcf8331e3d24a2ee42e3df88e0294ac10424"},"previous_names":["appscodelabs/offline-license-server","bytebuilders/offline-license-server"],"tags_count":81,"template":false,"template_full_name":null,"purl":"pkg:github/appscode-cloud/offline-license-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appscode-cloud%2Foffline-license-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appscode-cloud%2Foffline-license-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appscode-cloud%2Foffline-license-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appscode-cloud%2Foffline-license-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/appscode-cloud","download_url":"https://codeload.github.com/appscode-cloud/offline-license-server/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appscode-cloud%2Foffline-license-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32596533,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T22:12:39.696Z","status":"online","status_checked_at":"2026-05-04T02:00:06.625Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2025-02-14T10:59:14.354Z","updated_at":"2026-05-04T06:06:09.554Z","avatar_url":"https://github.com/appscode-cloud.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# offline-license-server\n\nAppsCode License server. We call it `offline` license server because once you have received the license file, no further connection is required with the license server. So, these licenses can be used within an air-gapped Kubernetes cluster.\n\n## License Validity\n\nA License file is a valid for a given Kubernetes cluster. For the `community` edition, you will receive a license that is valid for 1 year. For the `enterprise` edition, this server will issue a 30 day trial license. If you are interested in purchasing Enterprise license, please contact us via sales@appscode.com for further discussion. You can also set up a meeting via our [calendly link](https://calendly.com/appscode/intro).\n\n## Cluster UID\n\nWe use the `uid` of the `kube-system` namespace as the Kubernetes cluster UID. Please run the command below to get the cluster uid for your cluster:\n\n```bash\nkubectl get ns kube-system -o=jsonpath='{.metadata.uid}'\n```\n\n## License Issuer CA\n\nThe license issuer ca can be found here: https://licenses.appscode.com/certificates/ca.crt\n\n## Email Address Requirements\n\nYou must provide a valid non-disposable email to acquire license. For Enterprise products, you must provide a valid work email to acquire license.\n\n## API Reference\n\nLicense issuing process can be automated in 2 steps:\n\n### 1. Register Email\n\nThis is an one time set up step where you register with a valid email address. Make the api call below with a valid email address. We are going to email you a token for the License server.\n\n```bash\ncurl -d \"email=***\" -X POST https://license-issuer.appscode.com/register\n```\n\n### 2. Issue License\n\nNow every time you need a new license, use the token from the previous step to make an api call to our license server. You can use the `{email, token}` to issue license using `curl` from command line. In the example below replace `***` with an actual token you have received in the email.\n\n```bash\n# pass request body as application/x-www-form-urlencoded\n\ncurl -X POST \\\n  -d \"name=***\u0026email=***\u0026product=kubedb\u0026cluster=***\u0026tos=true\u0026token=***\" \\\n  https://license-issuer.appscode.com/issue-license\n\n# pass request body as application/json\n\ncurl -X POST -H \"Content-Type: application/json\" \\\n  -d '{\"name\":\"***\",\"email\":\"***\",\"product\":\"kubedb\",\"cluster\":\"***\",\"tos\":\"true\",\"token\":\"***\"}' \\\n  https://license-issuer.appscode.com/issue-license\n\n# pretty printed request json body\n{\n  \"name\": \"***\",\n  \"email\": \"***\",\n  \"product\": \"kubedb\",\n  \"cluster\": \"***\",\n  \"tos\": \"true\",\n  \"token\": \"***\"\n}\n```\n**List of products**\n\n - kubedb\n - stash\n - kubevault\n - voyager\n - platform\n - config-syncer\n\n## Installation\n\nThese instructions are useful if you are trying to deploy your own license server or update an existing license server.\n\n- Download pre-built binary into a server\n\n```bash\ncurl -fsSL -O https://github.com/bytebuilders/offline-license-server/releases/download/v0.0.81/offline-license-server-linux-amd64\nchmod +x offline-license-server-linux-amd64\nmv offline-license-server-linux-amd64 /usr/local/bin/offline-license-server\nsudo systemctl restart offline-license-server\n```\n\n- Install systemd service\n\n```bash\ncurl -fsSL -O https://github.com/bytebuilders/offline-license-server/raw/v0.0.81/hack/systemd/offline-license-server.service\nchmod +x offline-license-server.service\n\n# 1. Copy Google cloud service account json key to /root/app/gcloud.json\n# 2. Edit offline-license-server.service file to\n#    - set MG_API_KEY\n#    - set APPSCODE_SALES_USERNAME\n#    - set APPSCODE_SALES_PASSWORD\n#    - add `--ssl`\n#    - add --spreadsheet-id=1evwv2ON94R38M-Lkrw8b6dpVSkRYHUWsNOuI7X0_-zA --geo-city-database-file=/root/maxmind/GeoLite2-City.mmdb\n\nmv offline-license-server.service /lib/systemd/system/offline-license-server.service\n```\n\nNow, you should be able to enable the service, start it, then monitor the logs by tailing the systemd journal:\n\n```bash\nsudo systemctl enable offline-license-server.service\nsudo systemctl start offline-license-server\nsudo journalctl -f -u offline-license-server\n```\n\n## Issue Extended License\n\n```bash\noffline-license-server issue-full-license \\\n  --email= \\\n  --name= \\\n  --product= \\\n  --cluster= \\\n  --expiry-date=YYYY-MM-DD \\\n  --duration=(P30D | P1M | P1Y)\n\n# --duration flag used https://pkg.go.dev/github.com/rickb777/date/period for parsing duration.\n```\n\n### Generate Quotation\n\n```bash\noffline-license-server quotation generate \\\n  --contact.email='****' \\\n  --contact.name='***' \\\n  --contact.title='***' \\\n  --contact.company='***' \\\n  --contact.telephone='***' \\\n  --template-doc-id=***\n```\n\n## Webinar signup\n\n```bash\ncurl -X POST \\\n  -d \"first_name=Tamal\u0026last_name=Saha\u0026phone=+1-1234567890\u0026job_title=CEO\u0026work_email=tamal@appscode.com\u0026company=AppsCode\u0026cluster_provider=aws\u0026experience_level=tried\u0026marketing_reach=word\" \\\n  http://localhost:4000/_/webinars/2021-3-15/register\n```\n\n## Test configure\n\n```\noffline-license-server qa configure \\\n  --test.name='AppsCode Written Test' \\\n  --test.config-doc-id=1KB_Efi9jQcJ0_tCRF4fSLc6TR7QxaBKg05cKXAwbC9E \\\n  --test.qa-template-doc-id=16Ff6Lum3F6IeyAEy3P5Xy7R8CITIZRjdwnsRwBg9rD4 \\\n  --test.days-to-take-test=3 \\\n  --test.duration=60m\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fappscode-cloud%2Foffline-license-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fappscode-cloud%2Foffline-license-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fappscode-cloud%2Foffline-license-server/lists"}