// use case

Expose your Flask dev server to Discord for Discord interactions

Discord uses Ed25519-signed POSTs to your interactions URL for slash commands. The verification step happens up-front — Discord pings the URL with a Ping interaction, and your handler must respond with Pong (type 1) or the URL won't save. Flask (Python) dev server.
  1. Reserve a stable subdomain

    On the lrok free plan you keep one reserved subdomain forever. Pick a name your Discord dashboard can hold onto — webhook URLs that survive laptop restarts mean fewer dashboard re-pastes.

    $ lrok reserve fla-discord
      Reserved https://fla-discord.lrok.io
  2. Run your Flask app

    Start the dev server on port 5000 (the Flask default).

    $ flask run
  3. Tunnel localhost to the public URL

    lrok forwards https://fla-discord.lrok.io/webhook → http://127.0.0.1:5000/webhook. The flag --hint binds your reserved subdomain to this tunnel.

    $ lrok http 5000 --hint fla-discord
      Forwarding https://fla-discord.lrok.io  ->  http://127.0.0.1:5000
  4. Paste the URL into Discord

    Discord application → General Information → Interactions Endpoint URL. Paste https://fla-discord.lrok.io/webhook as the destination.

  5. Watch deliveries land in the request inspector

    Every webhook Discord sends shows up at lrok.io/dashboard with full body, headers, status, and latency. Re-deliver any request to your Flask handler with one click. Verify the X-Signature-Ed25519 + X-Signature-Timestamp headers using your application's public key. Reject any mismatch with 401, otherwise Discord disables your bot.

// why lrok for this

lrok's reserved subdomain is free and lives forever, so your Discord discord interactions URL never rotates. $9/mo flat for unlimited tunnels — no SSO tax, no enterprise-only signature verification, no bandwidth metering. The request inspector is built in.

Related workflows