Expose

website·Indexed 34 days ago

https://expose.dev/docs/introduction

A tunnel application that allows you to share local sites and applications with others on the internet and receive webhooks.

Tokens
988
Snippets
7
Records
9
Agent score
21%

What's inside Expose

  1. Share a local site using Expose

    Expose allows you to share local HTTP or HTTPS sites. If you run expose inside a project directory, it assumes the local URL is foldername.test. Otherwise, you can explicitly provide the URL. Pro users can specify a custom subdomain or a custom domain.
    # Share current directory (assumes foldername.test)
    expose
    
    # Share a specific URL
    expose share my-site.test
    
    # Share with a specific subdomain (Pro)
    expose share my-site.test --subdomain=my-custom-name
    
    # Share using a custom domain (Pro)
    expose share my-site.test --domain=share.yourdomain.com
  2. Self-host an Expose server

    Expose can be self-hosted for full control. The server is started using the expose-server command. For production, it is recommended to use a reverse proxy (Nginx, Apache, HAProxy, or Caddy) for SSL/HTTPS and a process manager like supervisord to ensure the server stays running.
    # Start the server
    expose-server serve domain.com --port=8080
    
    # Start the server and require auth tokens
    expose-server serve domain.com --port=8080 --validateAuthTokens
  3. Install and authenticate Expose

    Expose can be installed via Laravel Herd (pre-installed), PHAR download, or Composer. After installation, you must set your authentication token (obtained from expose.dev/register) to access the service.
    # Install via Composer
    composer global require exposedev/expose
    
    # Set authentication token
    expose token YOUR_TOKEN
  4. Use Expose Catch-All for webhook testing

    The catch-all command creates a public URL that always returns a 200 OK response and logs all incoming requests to the local dashboard. This is useful for inspecting webhook payloads when you do not have a local endpoint configured.
    expose catch-all
  5. Configure Expose global server and domain defaults

    Pro users can optimize latency by selecting a server region or set a default custom domain for all shares.
    # List available servers
    expose servers
    
    # Set default server region
    expose default-server REGION
    
    # Set default custom domain
    expose default-domain DOMAIN
    
    # Clear default domain
    expose default-domain:clear
  6. Manage project settings via expose.yaml

    For per-project configuration that can be shared via version control, Expose supports an expose.yaml file. This file can define the local-url, subdomain, custom-domain, expose-server, and authentication credentials.
  7. Inspect and replay webhooks with the Expose Dashboard

    Expose provides a local web dashboard accessible at http://localhost:4040. This dashboard shows all incoming HTTP requests in real-time, allowing developers to inspect headers, request bodies, and responses. It also supports replaying requests without needing to re-trigger the original webhook.
  8. Expose CLI Command Reference

    Comprehensive list of Expose CLI commands for managing tunnels, authentication, and plugins.
    expose                           # Share current directory as foldername.test
    expose info                      # Show current config (token, server, domain, plan, version, latency)
    expose share URL                 # Share specific URL
    expose share URL --subdomain=X   # Share with custom subdomain (Pro)
    expose share URL --server=eu-1   # Share via specific server (Pro)
    expose share URL --domain=X      # Share via custom domain (Pro)
    expose share URL --basicAuth="user:pass"  # Add password protection
    expose catch-all                 # Create catch-all endpoint for webhook testing
    expose token TOKEN               # Set authentication token
    expose servers                   # List available servers
    expose default-server REGION     # Set default server
    expose default-domain DOMAIN     # Set default custom domain
    expose default-domain:clear      # Clear default domain
    expose plugins                   # List request plugins
    expose plugins:manage            # Enable/disable plugins
    expose make:plugin               # Create custom request plugin
    expose self-update               # Update Expose client
  9. Protect a shared site with Basic Authentication

    You can add a layer of password protection to your shared tunnel using the --basicAuth flag. Note that this cannot be layered on top of sites that already implement their own basic authentication.
    expose share my-site.test --basicAuth="user:pass"