{"id":26262041,"url":"https://github.com/aaomidi/containerscale","last_synced_at":"2025-06-20T09:33:53.031Z","repository":{"id":193159684,"uuid":"688242931","full_name":"aaomidi/ContainerScale","owner":"aaomidi","description":"ContainerScale is a CNI plugin to automatically attach containers to your tailscale network","archived":false,"fork":false,"pushed_at":"2024-02-08T13:55:01.000Z","size":70,"stargazers_count":17,"open_issues_count":7,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-12T01:54:14.168Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aaomidi.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":"2023-09-07T00:30:23.000Z","updated_at":"2025-02-10T01:07:36.000Z","dependencies_parsed_at":"2024-06-21T19:13:17.791Z","dependency_job_id":null,"html_url":"https://github.com/aaomidi/ContainerScale","commit_stats":null,"previous_names":["aaomidi/containerscale"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/aaomidi/ContainerScale","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aaomidi%2FContainerScale","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aaomidi%2FContainerScale/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aaomidi%2FContainerScale/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aaomidi%2FContainerScale/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aaomidi","download_url":"https://codeload.github.com/aaomidi/ContainerScale/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aaomidi%2FContainerScale/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260919362,"owners_count":23082746,"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":[],"created_at":"2025-03-14T00:17:14.965Z","updated_at":"2025-06-20T09:33:48.015Z","avatar_url":"https://github.com/aaomidi.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ContainerScale\n\nNote: This plugin is currently in development. Configuration, build patterns, etc may all change before this is stable.\n\nA [CNI] plugin that connects containers to a Tailscale network. This means that as the container is created, they're added to your tsnet.\n\nIt is intended that you would use a Tailscale `AuthKey` to automatically authenticate these containers on your tsnet.\n\n## Background\n\nThere are three popular networking abstractions for containers. [CNI], [Netavark], and Docker networking. The eventual goal of this repository is to support all three of these networking abstractions. For now, this repository only supports [CNI].\n\nDifferent container runtimes support different networking abstractions:\n\n- Kubernetes: [CNI]\n- Podman: By default, [Netavark]. Can be configured to use [CNI] (for now).\n- Docker: Docker networking.\n\n## Setup \u0026 Configuration\n\nMore detailed instructions are TBA, but the gist is:\n\n```bash\n# Build the ContainerScale binary and drop it in a directory that CNI can find it.\ngo build -o /opt/cni/bin/containerscale\n```\n\n### Available Flags\n\nThe flags you can use to configure the plugin is:\n```\nAuthKey         Required  Authentication key from tailscale. \nTailscaledFlags Optional  Extra flags to run with `tailscaled`\nTailscaleFlags  Optional  Extra flags to run with `tailscale up`\n```\n\n### Docker\n\nDocker does not use [CNI]. Support for a docker network plugin is tracked in [#1].\n\n### Podman\n#### Netavark\n\n[Netavark] is a new networking model that the Podman team is adopting as the default networking system. Support for a [Netavark] plugin is tracked in [#2].\n\n#### CNI\nFirst you need to make sure that Podman is running with CNI networking:\n\n1. Open `/etc/containers/container.conf`. \n2. Find the line that starts with `#network_backend`. \n3. Uncomment it and change it to `network_backend = \"cni\"`.\n\nSecond, you need to create a new network configuration. You can do this at the user level.\n\n```bash\ntouch ~/.config/cni/net.d/99-containerscale.conflist\n```\n\nExample Configuration:\n\n```json\n{\n  \"cniVersion\": \"0.4.0\",\n  \"name\": \"myts\",\n  \"plugins\": [\n    {\n      \"type\": \"bridge\",\n      \"bridge\": \"cni-podman1\",\n      \"isGateway\": true,\n      \"ipMasq\": true,\n      \"hairpinMode\": true,\n      \"ipam\": {\n        \"type\": \"host-local\",\n        \"routes\": [\n          {\n            \"dst\": \"0.0.0.0/0\"\n          }\n        ],\n        \"ranges\": [\n          [\n            {\n              \"subnet\": \"10.89.0.0/24\",\n              \"gateway\": \"10.89.0.1\"\n            }\n          ]\n        ]\n      },\n      \"capabilities\": {\n        \"ips\": true\n      }\n    },\n    {\n      \"type\": \"containerscale\",\n      \"runtimeConfig\": {\n        \"authKey\": \"tskey-auth-#####\",\n        \"tailscaleFlags\": [\n          \"--ssh\" \n        ]\n      }\n    },\n    {\n      \"type\": \"portmap\",\n      \"capabilities\": {\n        \"portMappings\": true\n      }\n    },\n    {\n      \"type\": \"firewall\",\n      \"backend\": \"\"\n    },\n    {\n      \"type\": \"tuning\"\n    }\n  ]\n}\n```\n\n## Kubernetes\n\nThis should just work with Kubernetes as well. I have not tried it yet. Work to improve documentation for kubernetes is tracked in [#3].\n\n[#1]: https://github.com/aaomidi/ContainerScale/issues/1\n[#2]: https://github.com/aaomidi/ContainerScale/issues/2\n[#3]: https://github.com/aaomidi/ContainerScale/issues/3\n\n[CNI]: https://github.com/containernetworking/cni\n[Netavark]: https://github.com/containers/netavark","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faaomidi%2Fcontainerscale","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faaomidi%2Fcontainerscale","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faaomidi%2Fcontainerscale/lists"}