# `mix firkin.serve`
[🔗](https://harton.dev/james/firkin)

Starts a Bandit HTTP server serving `Firkin.Plug`, suitable for
poking at Firkin with `aws` CLI, `mc`, or any other S3 client.

## Usage

    mix firkin.serve [options]

## Options

  * `--port` — listen port (default: `4566`)
  * `--bind` — listen IP (default: `127.0.0.1`; use `0.0.0.0` to
    accept external connections)
  * `--hostname` — base hostname for virtual-hosted-style addressing.
    When set, requests to `Host: bucket.<hostname>` extract the
    bucket from the host header. Path-style continues to work.
    (default: unset — path-style only)
  * `--region` — AWS region string for SigV4 and GetBucketLocation
    (default: `us-east-1`)
  * `--backend` — fully-qualified backend module (default:
    `Firkin.Backends.Memory`). Any module implementing
    `Firkin.Backend` works.
  * `--access-key` — access key for the seeded credential when using
    the default memory backend (default: `firkin`)
  * `--secret-key` — secret key for the seeded credential when using
    the default memory backend (default: `firkin-secret`)

When `--backend` is set to anything other than the memory backend
`--access-key` / `--secret-key` are ignored; credential setup is the
backend's responsibility.

## Example

    $ mix firkin.serve --port 9000
    Firkin listening on http://localhost:9000/

      AWS_ACCESS_KEY_ID=firkin \
      AWS_SECRET_ACCESS_KEY=firkin-secret \
      aws --endpoint-url=http://localhost:9000 s3 mb s3://demo

---

*Consult [api-reference.md](api-reference.md) for complete listing*
