License Build GitHub repo size Stars


outpost allows you to expose self-hosted web services to the Internet via popular cloud providers.

Cloudflare

HTTP sites can be hosted with Cloudflare easily:

name: example_com

services:
  outpost:
    image: fossable/outpost:latest
    depends_on:
      - www
    environment:
      OUTPOST_CLOUDFLARE_INGRESS: tls://www.example.com:443
      OUTPOST_CLOUDFLARE_ORIGIN: tcp://www:80
      OUTPOST_CLOUDFLARE_ORIGIN_CERT: |
        -----BEGIN PRIVATE KEY-----

  www:
    image: httpd:latest

AWS

outpost can also use an EC2 proxy to expose any TCP/UDP port. The proxy instance communicates with the origin service via an ephemeral WireGuard tunnel.

The AWS deployment uses CloudFormation to create:

  • A new VPC with public subnet and internet gateway
  • An EC2 instance with WireGuard configured
  • Security groups that only allow WireGuard from the origin IP and configured ingress ports
  • Route53 DNS record pointing to the proxy
  • IAM role allowing the instance to self-destruct if the origin is unreachable for 5+ minutes

Note: WireGuard key generation uses boringtun, so no WireGuard installation is required on the host.

name: example_com

services:
  outpost:
    image: fossable/outpost:latest
    depends_on:
      - www
    environment:
      OUTPOST_AWS_INGRESS: tcp://www.example.com:80
      OUTPOST_AWS_ORIGIN: tcp://www:8080
      OUTPOST_AWS_REGIONS: us-east-2
      OUTPOST_AWS_HOSTED_ZONE_ID: Z1234567890ABC
      AWS_ACCESS_KEY_ID: <...>
      AWS_SECRET_ACCESS_KEY: <...>

  www:
    image: httpd:latest