{"id":14562676,"url":"https://github.com/cterence/tailout","last_synced_at":"2025-04-19T16:39:52.060Z","repository":{"id":170739385,"uuid":"646866926","full_name":"cterence/tailout","owner":"cterence","description":"Spawn an exit node for your tailscale network anywhere","archived":false,"fork":false,"pushed_at":"2025-04-18T07:38:03.000Z","size":1176,"stargazers_count":31,"open_issues_count":11,"forks_count":2,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-04-18T12:13:55.192Z","etag":null,"topics":["aws","cli","golang","tailscale","vpn","wireguard"],"latest_commit_sha":null,"homepage":"","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/cterence.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-05-29T14:13:53.000Z","updated_at":"2025-04-18T07:37:56.000Z","dependencies_parsed_at":"2023-11-27T07:30:12.928Z","dependency_job_id":"a22c16db-3b0a-4640-a975-21307e1a7064","html_url":"https://github.com/cterence/tailout","commit_stats":null,"previous_names":["cterence/xit"],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cterence%2Ftailout","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cterence%2Ftailout/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cterence%2Ftailout/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cterence%2Ftailout/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cterence","download_url":"https://codeload.github.com/cterence/tailout/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249739902,"owners_count":21318671,"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":["aws","cli","golang","tailscale","vpn","wireguard"],"created_at":"2024-09-07T02:01:36.129Z","updated_at":"2025-04-19T16:39:52.044Z","avatar_url":"https://github.com/cterence.png","language":"Go","funding_links":[],"categories":["cli"],"sub_categories":[],"readme":"[![CI](https://github.com/cterence/tailout/actions/workflows/ci.yaml/badge.svg)](https://github.com/cterence/tailout/actions/workflows/ci.yaml)\n[![Go Report Card](https://goreportcard.com/badge/github.com/cterence/tailout)](https://goreportcard.com/report/github.com/cterence/tailout)\n\n# tailout\n\n`tailout` is a command-line tool for quickly creating a cloud-based exit node in your tailnet.\n\n![demo gif](./docs/demo.gif)\n\n## Installation\n\nTo install `tailout`, you can download the latest release from the [releases page](https://github.com/cterence/tailout/releases).\n\nYou can also use the `go install` command:\n\n```bash\ngo install github.com/cterence/tailout@latest\n```\n\n## Prerequisites\n\nTo use `tailout`, you'll need to have the following installed:\n\n- [Tailscale](https://tailscale.com/)\n- An AWS account\n\nAt the moment, `tailout` only supports AWS as a cloud provider. Support for other cloud providers will be added in the future.\n\n## Setup\n\nGo to your [Tailscale API key settings](https://login.tailscale.com/admin/settings/keys) and:\n\n- Create an API key for `tailout`\n- Create a file in `~/.tailout/config.yaml` with the following content:\n  ```yaml\n  tailscale:\n    api_key: tskey-api-xxx-xxx\n    tailnet: \u003cyour tailnet name\u003e\n  ```\n- Run `tailout init`, review the changes that will be done to your policy and accept\n- Go back to your [Tailscale API key settings](https://login.tailscale.com/admin/settings/keys)\n- Create an auth key with the following characteristics:\n  - Is reusable\n  - Is ephemeral\n  - Automatically adds the newly created `tag:tailout` tag to each device\n- Add your auth key to the config file\n\nNext, you will also need to set up your AWS credentials. tailout will look for default credentials, like environment variables for access keys or an AWS profile.\n\nTo easily check if your credentials are set up correctly, you can use the `aws sts get-caller-identity` command.\n\n## Usage\n\nCreate an exit node in your tailnet:\n\n```bash\ntailout create\n```\n\nConnect to your exit node:\n\n```bash\ntailout connect\n```\n\nGet the status of your exit node:\n\n```bash\ntailout status\n```\n\nDisconnect from your exit node:\n\n```bash\ntailout disconnect\n```\n\nDelete your exit node:\n\n```bash\ntailout stop\n```\n\n## Configuration\n\n`tailout` will look for a configuration file at the following paths:\n\n- `/etc/tailout/config.{yml,yaml,hcl,json,toml}`\n- `$HOME/.tailout/config.{yml,yaml,hcl,json,toml}`\n\nFor exemple, you could have this content in `/etc/tailout/config.yml`:\n\n```yaml\ntailscale:\n  api_key: tskey-api-xxx-xxx\n  auth_key: tskey-auth-xxx-xxx\n  tailnet: \u003cyour tailnet name\u003e\nregion: eu-west-3\ncreate:\n  shutdown: 15m\n```\n\nYou can specify any of the above settings as command-line flags or environment variables prefixed by `TAILOUT_`.\n\nFor example, to specify the Tailscale API key, you can use the `--tailscale-api-key` flag or the `TAILOUT_TAILSCALE_API_KEY` environment variable.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcterence%2Ftailout","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcterence%2Ftailout","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcterence%2Ftailout/lists"}