#web-services #cloudflare #provider #service #expose #self-hosted #cloud

bin+lib outpost

A command-line application for managing outpost

8 releases

0.0.8 Jun 30, 2024
0.0.7 Jun 30, 2024

#1416 in Web programming

Download history 19/week @ 2024-07-30 24/week @ 2024-09-10 9/week @ 2024-09-17 20/week @ 2024-09-24 1/week @ 2024-10-01

397 downloads per month

AGPL-3.0-only

36KB
282 lines

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_CONFIG: |
        {
          "www.example.com": {
            "service": "www",
            "provider": "cloudflare",
            "ports": ["80:443"]
          }
        }
      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.

name: example_com

services:
  outpost:
    image: fossable/outpost:latest
    depends_on:
      - www
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    volumes:
      - /lib/modules:/lib/modules
    ports:
      - 51820:51820/udp
    sysctls:
      - net.ipv4.conf.all.src_valid_mark=1
    environment:
      OUTPOST_CONFIG: |
        {
          "www.example.com": {
            "service": "www",
            "provider": "aws",
            "ports": ["80:443"]
          }
        }
      AWS_ACCESS_KEY_ID: <...>
      AWS_SECRET_ACCESS_KEY: <...>

  www:
    image: httpd:latest

Dependencies

~16–42MB
~629K SLoC