infrastructure/skills/tailscale/SKILL.md
Tailscale mesh VPN (tailscaled service). Installs the tailscale package from upstream, enables tailscaled.service via systemd. Use when adding Tailscale as a standalone systemd service to a box — distinct from the deploy-time Tailscale tunnel/sidecar model.
npx skillsauth add overthinkos/overthink-plugins tailscaleInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
| Property | Value |
|----------|-------|
| Dependencies | none |
| Ports | none (WireGuard uses UDP; no host port mapping) |
| Service | tailscaled.service (systemd, enabled at build time) |
| Install files | task: |
rpm:): tailscale from the upstream tailscale-stable repo (https://pkgs.tailscale.com/stable/fedora/tailscale.repo)pac:): tailscale# charly.yml -- typical bootc composition
my-bootc-image:
base: "quay.io/fedora/fedora-bootc:43"
bootc: true
distro: ["fedora:43", fedora]
candy:
- tailscale
- ...
The candy's cmd: task issues systemctl enable tailscaled.service at build time (suffixed with || true because offline bootc assembly can't fully activate a live systemd).
The box does not bring up the mesh on first boot — tailscale up --authkey=tskey-… is a runtime concern, not a build-time concern. Options:
sudo tailscale up and copy the login URL./etc/tailscale/authkey (out of scope for this candy).For target: local host deploys (canonical: local.charly-cachyos), pair this candy with /charly-infrastructure:tailscale-up — the runtime-config sibling that sets --operator=$account so non-root user-systemd quadlets can run tailscale serve (the per-pod tunnel: tailscale mechanism in charly.yml), and that keeps the tailnet device name in sync with hostname -s across hostname changes. tailscale-up self-gates on systemctl is-active tailscaled so it's a no-op in image-build / pre-auth contexts; bootc consumers don't include it.
Two declarative checks (build-scope):
tailscale-binary — /usr/bin/tailscale and /usr/sbin/tailscaled executables existtailscaled-unit-enabled — systemctl is-enabled tailscaled.service returns enabled/charly-infrastructure:tailscale) — bakes the daemon into a system image as a first-class systemd service. The box runs its own tailnet node. Use for bootc/VM images./charly-distros:container-nesting — also installs the tailscale package, but as a tool inside a container-in-container harness (rootless podman with Tailscale-backed outbound). Different use case; don't use both in the same box./charly-automation:sidecar, /charly-core:deploy) — a separate deployment-time decision that runs tailscale in a sidecar container alongside your app pod, giving the app a tailnet identity without baking the daemon into the app box. This is charly.yml-only state and is not affected by whether this candy is present.All three can coexist, but for most cases you want exactly one.
/charly-infrastructure:tailscale-up — runtime-config sibling for target: local host deploys (sets --operator + --hostname). Use both candies together on host targets that need tailscale serve to work without sudo./charly-distros:container-nesting — the previous home of the tailscale package (bundled with buildah/skopeo/docker for nested podman; separate concern)/charly-automation:sidecar — deploy-time Tailscale sidecar pattern (alternative, not a replacement)/charly-core:deploy — charly.yml tunnel/sidecar configuration/charly-image:layer — candy authoring reference/charly-eval:eval — declarative testing referenceUse when the user asks about:
tailscaled.service appears in a bootc image's service listtools
OpenCharly CLI (charly) binary installed into container/VM images for in-container use. Use when working with charly binary deployment inside containers, native D-Bus support, or the full charly toolchain (charly binary + virtualization + gocryptfs + socat).
development
Operator CachyOS workstation profile — a kind:local template + target:local deploy that installs the full dev stack (30 candies) onto a CachyOS host via ShellExecutor. Lives in the overthinkos/cachyos submodule. MUST be invoked before editing or applying the charly-cachyos workstation profile.
tools
Fedora box with the full charly toolchain using shared candies. Rootless-first — runs as uid=1000 with passwordless sudo (no root, no cap_add: ALL). Same candy list as charly-arch. Includes NVIDIA GPU runtime. MUST be invoked before building, deploying, configuring, or troubleshooting the charly-fedora box.
tools
Arch Linux box with the full charly toolchain. Rootless-first — runs as uid=1000 with passwordless sudo (no root, no cap_add: ALL). Composes /charly-coder:charly-mcp so the box is reachable as an MCP gateway on port 18765. NVIDIA GPU runtime composed in. MUST be invoked before building, deploying, configuring, or troubleshooting the charly-arch box.