Skip to content

Getting Started

Aspire hosting integration for Gluetun, a lightweight VPN client container supporting 30+ providers. Models Gluetun as a first-class Aspire resource and lets other containers route their traffic through the VPN tunnel.

Frameworks
.NET
PackageNuGet
Aspire AppHostNuGet package Shiny.Aspire.Hosting.Gluetun
  • First-class Aspire resource — Gluetun VPN container with NET_ADMIN capability and /dev/net/tun device access
  • Container routing — route any container’s traffic through the VPN with a single method call
  • VPN provider support — typed configuration for OpenVPN and WireGuard, with support for any Gluetun environment variable
  • Aspire parameter integration — use ParameterResource for secrets (private keys, passwords)
  • Docker Compose publish — routed containers automatically get network_mode: "service:<vpn>" and their ports are transferred to the Gluetun service
  1. Install the package into your AppHost project

    NuGet package Shiny.Aspire.Hosting.Gluetun
  2. Add a Gluetun VPN container and route other containers through it

    var builder = DistributedApplication.CreateBuilder(args);
    var vpn = builder.AddGluetun("vpn")
    .WithVpnProvider("mullvad")
    .WithWireGuard(builder.AddParameter("wireguard-key", secret: true))
    .WithServerCountries("US", "Canada");
    var scraper = builder.AddContainer("scraper", "my-scraper")
    .WithHttpEndpoint(targetPort: 8080);
    vpn.WithRoutedContainer(scraper);
    builder.Build().Run();
claude plugin add github:shinyorg/skills/shiny-aspire
  1. Open the shiny-aspire skill file and copy its contents
  2. In your repository, create .github/copilot-instructions.md if it doesn't exist
  3. Paste the skill content into that file and save

Copilot will automatically pick up the instructions on your next chat or code completion. You can also use path-specific instructions by placing the file in .github/instructions/ with an applyTo frontmatter pattern.

View Skill
  • .NET 10
  • .NET Aspire 13.1+