{"id":22123914,"url":"https://github.com/nownabe/golink","last_synced_at":"2025-08-21T18:04:10.286Z","repository":{"id":187253306,"uuid":"669187693","full_name":"nownabe/golink","owner":"nownabe","description":"A URL shortener for creating concise, memorable short links, suitable for organization-scoped use, such as in companies or schools.","archived":false,"fork":false,"pushed_at":"2025-07-18T05:01:28.000Z","size":16257,"stargazers_count":18,"open_issues_count":27,"forks_count":5,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-07-18T07:25:11.556Z","etag":null,"topics":["chrome-extension","go","grpc","react","typescript"],"latest_commit_sha":null,"homepage":"https://chrome.google.com/webstore/detail/golink/clecngohjeflemkblbfdfbjkjnigbjok","language":"TypeScript","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/nownabe.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}},"created_at":"2023-07-21T14:57:29.000Z","updated_at":"2025-07-18T04:57:41.000Z","dependencies_parsed_at":"2023-10-23T02:31:44.559Z","dependency_job_id":"5fb42d7e-0f4c-4d12-be68-ad7274f57caa","html_url":"https://github.com/nownabe/golink","commit_stats":null,"previous_names":["nownabe/golink"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nownabe/golink","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nownabe%2Fgolink","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nownabe%2Fgolink/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nownabe%2Fgolink/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nownabe%2Fgolink/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nownabe","download_url":"https://codeload.github.com/nownabe/golink/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nownabe%2Fgolink/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266092825,"owners_count":23875545,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["chrome-extension","go","grpc","react","typescript"],"created_at":"2024-12-01T15:45:24.564Z","updated_at":"2025-07-20T08:34:24.579Z","avatar_url":"https://github.com/nownabe.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Golink (go/link)\n\nA URL shortener for creating concise, memorable short links, suitable for organization-scoped use, such as in companies or schools.\n\nhttps://github.com/nownabe/golink/assets/1286807/9337f9f8-b3de-40bd-879c-f21b8d441604\n\n## Alternatives\n\nConsidering other options? Here are some similar platforms:\n\n- [GoLinks® | Knowledge Discovery \u0026 Link Management Platform](https://www.golinks.io/)\n- [Trotto - Open-Source Go Links](https://www.trot.to/)\n- [tailscale/golink: A private shortlink service for tailnets](https://github.com/tailscale/golink)\n\nGolinks has the following advantages compared to these alternatives:\n\n- **Self-hosted**: You have full control of Golink backend.\n- **Fully-managed**: Golink can be built on fully-managed infrastructure.\n- **Easy to deploy**: You can complete to deploy Golink in just three simple steps.\n- **Cost-effective**: You can get started with Golink at no cost.\n- **No DNS configuration**: Redirect through the Golink Chrome extension.\n- **Chrome extension with [Manifest V3](https://developer.chrome.com/docs/extensions/mv3/intro/)**: Manifest V3 is more secure than V2 and V2 will be end-of-life.\n\n## Golink Origin\n\nGolink originated from Google's internal short links.\nIf you are curious about history of go/, dive into the stories on these websites:\n\n- [Golink: A private shortlink service for tailnets | Hacker News](https://news.ycombinator.com/item?id=33978767)\n- [The GoLinks® Blog - The History of Go Links](https://www.golinks.com/blog/go-links-history/)\n- [The Go Links Origin Story: Q\u0026A with Benjamin Staffin · Trotto go links](https://www.trot.to/blog/2020/07/09/go-links-origin-story)\n\n## Usage\n\n### For General Users\n\n1. Install the [Golink Chrome Extension](https://chrome.google.com/webstore/detail/golink/clecngohjeflemkblbfdfbjkjnigbjok).\n2. Right-click the extension icon and select **Options**.\n3. Input your Golink URL and then click the **Save** button.\n\n## Setup for Administrators\n\n### Prerequisites\n\n- [New Google Cloud project](https://cloud.google.com/docs/get-started)\n- [gcloud](https://cloud.google.com/sdk/docs/install) CLI\n\nAdditionally, you need to execute the following command:\n\n```shell\ngcloud auth login\n```\n\n### Configure Your Project\n\nSet your project ID:\n\n```shell\ngcloud config set project \u003cYOUR-PROJECT-ID\u003e\n```\n\n### Deploy Applications\n\nClone this repository:\n\n```shell\ngit clone https://github.com/nownabe/golink\ncd golink\n```\n\nRun the deploy script. Replace `\u003cREGION\u003e` with one of [App Engine regions](https://cloud.google.com/about/locations#region).\n\n```shell\n./deploy.sh \u003cREGION\u003e\n```\n\nFor instance:\n\n```shell\n./deploy.sh us-central1\n```\n\n### Configure Identity-Aware Proxy\n\nBegin by accessing the [Google Cloud Console](https://console.cloud.google.com/apis/credentials/consent) to set up the OAuth consent screen.\n\n1. Choose User Type.\n   - Opt for a user type based on your needs.\n     For exclusive access to members of your organization, select `Internal`.\n     Note: choosing `External` doesn't mean open access.\n     Users can't access your Golink unless you grant explicit permission.\n2. Enter App information\n   - App name: `Golink`\n   - User support email: Your email or a Google Group\n   - Developer contact information: Your email or alternate contact emails\n   - Finish by clicking **SAVE AND CONTINUE**\n3. You don't have to configure scopes.\n\nProceed to [Identity-Aware Proxy](https://console.cloud.google.com/security/iap).\nTurn on IAP for the App Engine app.\nIf you encounter an error status before enabling, you can safely disregard it at this time.\n\n### Add Users\n\nTo make Golink accessible to all members of your organization, execute:\n\n```shell\ngcloud iap web add-iam-policy-binding \\\n  --role roles/iap.httpsResourceAccessor \\\n  --member domain:\u003cYOUR-COMPANY-DOMAIN\u003e\n```\n\nIf you prefer to grant access on an individual basis:\n\n```shell\ngcloud iap web add-iam-policy-binding \\\n  --role roles/iap.httpsResourceAccessor \\\n  --member user:\u003cEMAIL\u003e\n```\n\nYou have the option to specify Google Groups too:\n\n```shell\ngcloud iap web add-iam-policy-binding \\\n  --role roles/iap.httpsResourceAccessor \\\n  --member group:\u003cEMAIL\u003e\n```\n\nExamples:\n\n```shell\ngcloud iap web add-iam-policy-binding \\\n  --role roles/iap.httpsResourceAccessor \\\n  --member domain:your-company.example.com\n\ngcloud iap web add-iam-policy-binding \\\n  --role roles/iap.httpsResourceAccessor \\\n  --member user:user1@your-company.example.com\n\ngcloud iap web add-iam-policy-binding \\\n  --role roles/iap.httpsResourceAccessor \\\n  --member group:group1@your-company.example.com\n```\n\n### Retrieve Your Golink URL\n\nDetermine your Golink URL with:\n\n```shell\necho \"https://$(gcloud app describe --format \"get(defaultHostname)\")\"\n```\n\nThen notify your team members to enter this URL in Golink Chrome Extension Options. Enjoy using golinks!\n\n### Distribute Golink extension to your organization\n\nYou can enforce Golink Chrome extension to be installed in your organization members' browsers.\n\n1. Open https://admin.google.com and navigate to Devices \u003e Chrome \u003e Apps \u0026 extensions \u003e Users \u0026 browsers.\n2. Click the yellow plus button at the bottom right and then click \"add from Chrome Web Store\".\n3. Enter `clecngohjeflemkblbfdfbjkjnigbjok` in the \"View app by ID\" textbox and click the \"Select\" button.\n4. Set \"Permissions and URL access\" to \"Allow all permissions\".\n\n\u003c!--\n4. Configure your Golink URL as JSON like follorings:\n\n```js\n{\n  \"golinkInstanceUrl\": \"https://your-golink.an.r.appspot.com\"\n}\n\n\n```\n--\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnownabe%2Fgolink","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnownabe%2Fgolink","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnownabe%2Fgolink/lists"}