{"id":18783230,"url":"https://github.com/yukaii/tailportal","last_synced_at":"2025-04-13T12:11:45.165Z","repository":{"id":236437845,"uuid":"792609846","full_name":"Yukaii/tailportal","owner":"Yukaii","description":"Create tailscale exit node on cloud with simple commands","archived":false,"fork":false,"pushed_at":"2025-02-02T01:07:45.000Z","size":573,"stargazers_count":5,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-13T12:11:41.851Z","etag":null,"topics":["exit-node","exitnode","oclif","pulumi","pulumi-automation-sdk","tailscale","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Yukaii.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}},"created_at":"2024-04-27T04:03:15.000Z","updated_at":"2025-04-10T22:20:00.000Z","dependencies_parsed_at":"2024-11-07T20:41:12.607Z","dependency_job_id":"61cf3b1f-ea67-41e3-8cfd-015bfcfaaa15","html_url":"https://github.com/Yukaii/tailportal","commit_stats":null,"previous_names":["yk-made/tailportal","yukaii/tailportal"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yukaii%2Ftailportal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yukaii%2Ftailportal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yukaii%2Ftailportal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yukaii%2Ftailportal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Yukaii","download_url":"https://codeload.github.com/Yukaii/tailportal/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248710450,"owners_count":21149191,"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":["exit-node","exitnode","oclif","pulumi","pulumi-automation-sdk","tailscale","typescript"],"created_at":"2024-11-07T20:38:39.062Z","updated_at":"2025-04-13T12:11:45.159Z","avatar_url":"https://github.com/Yukaii.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# tailportal\n\nCreate a Tailscale exit node with simple commands.\n\nBring your own key and pay your own bill, then let me do the rest.\n\n## Usage\n\n### Step 0: Install and setup pulumi CLI\n\nlink\n\n### Step 1: Configuring your Tailnet\n\nAdd the following ACL changes:\n\n```json\n\"tagOwners\": {\n  \"tag:tailportal\": [\"autogroup:admin\"],\n},\n\"autoApprovers\": {\n\t\"exitNode\": [\"tag:tailportal\"],\n},\n// Add ssh if you want to do more with the exit node\n\"ssh\": [\n  {\n    \"action\": \"accept\",\n    // !!IMPORTANT Change this\n    \"src\":    [\"username@GitHub\"],\n    \"dst\":    [\"tag:tailportal\"],\n    \"users\":  [\"autogroup:nonroot\", \"root\"],\n  },\n]\n```\n\n2. Create tailscale authkey\n\n\u003cimg src=\"./docs/images/ts-authkey.png\" width=\"500\" alt=\"TS AuthKey Image\" /\u003e\n\n### Step 2: Config Cloud Providers API\n\nTBD: Vultr/Digital Ocean/AWS\n\n### Step 3: Clone project and fill in `./packages/tailportal/.env`\n\nI'll provide better config management in the future.\n\n```bash\nVULTR_API_KEY=\nPULUMI_CONFIG_PASSPHRASE=\nTS_AUTH_KEY=\n```\n\n### Step 4: Run\n\n```bash\ngit clone https://github.com/Yukaii/tailportal\npnpm install\n\npnpm start\n\npnpm start list\npnpm start create\npnpm start remov instance-name\npnpm start destroy\n```\n\n## TODOs\n\n- [ ] instance management: status, shutdown...\n- [ ] simple TUI\n\n## Appendix A: Startup times (for reference only)\n\n| Provider | Startup time (seconds) |\n| -------- | ---------------------- |\n| vultr    | 70 secs                |\n| gcp      | ~40 secs               |\n\n\n\u003cdetails\u003e\n\u003csummary\u003eCLI draft\u003c/summary\u003e\n\n## CLI draft\n\nWIP WIP WIP\n\n### General Options\n\n- `-h, --help` : Show help and exit\n- `-v, --version` : Show version and exit\n\n### Commands\n\n#### `up`\n\n- Create and configure a new Tailportal instance\n- Options:\n  - `provider` : Specify the cloud provider (e.g. AWS, GCP, DigitalOcean)\n  - `location` : Specify the location of the instance (e.g. us-west-2, europe-west1)\n  - `authkey` : Specify the Tailscale AuthKey (optional, will prompt if not provided)\n\n#### `down`\n\n- Destroy the current Tailportal instance\n\n#### `list`\n\n- List all available instances\n\n#### `status`\n\n- Show the status of the current instance\n\n#### `regions`\n\n- List available regions for each provider\n- Options:\n  - `--provider` : Specify the cloud provider (e.g. AWS, GCP, DigitalOcean)\n  - `--detail` : Show detailed information about each region (e.g. availability zones, instance types)\n\n#### `providers`\n\n- List available cloud providers\n- Options:\n  - `--detail` : Show detailed information about each provider (e.g. supported regions, instance types)\n\n### Example Usage\n\n- `tailportal up --provider=aws --location=us-west-2` : Create a new instance on AWS in us-west-2\n- `tailportal down` : Destroy the current instance\n- `tailportal list` : List all available instances\n- `tailportal status` : Show the status of the current instance\n- `tailportal regions` : List available regions for all providers\n- `tailportal regions --provider=aws` : List available regions for AWS\n- `tailportal regions --provider=aws --detail` : Show detailed information about each AWS region\n- `tailportal providers` : List available cloud providers\n- `tailportal providers --detail` : Show detailed information about each provider (e.g. supported regions, instance types)\n\n\u003c/details\u003e\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyukaii%2Ftailportal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyukaii%2Ftailportal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyukaii%2Ftailportal/lists"}