Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/ShaneIsrael/fireshare/llms.txt

Use this file to discover all available pages before exploring further.

Fireshare is distributed as a Docker image, so the only tools you need on your host are Docker and Docker Compose. This guide walks you from zero to a fully running Fireshare instance with your first shareable video link.

Prerequisites

  • Docker 20.10 or later
  • Docker Compose v2 (the docker compose plugin) or the standalone docker-compose v1 binary
  • A folder of video files you want to share (.mp4, .m4v, .mov, or .webm)
If you want NVIDIA GPU-accelerated transcoding, use the standard shaneisrael/fireshare:latest image instead of the lite image shown below, and follow the GPU setup instructions in the Transcoding guide. For most users, the lite image is the right choice.

Deploy with Docker Compose

1

Create your docker-compose.yml

Create a new directory for Fireshare and save the following file as docker-compose.yml inside it. Replace the volume paths with real directories on your host, and replace the placeholder credentials with values of your choice.
services:
  fireshare:
    container_name: fireshare
    image: shaneisrael/fireshare:latest-lite
    ports:
      - "8080:80"
    volumes:
      - /path/to/data:/data
      - /path/to/processed:/processed
      - /path/to/videos:/videos
      - /path/to/images:/images
    environment:
      - ADMIN_USERNAME=your-admin-username
      - ADMIN_PASSWORD=your-admin-password
      - SECRET_KEY=replace_with_random_string_can_be_anything
      # The domain your instance is hosted at. e.x: v.fireshare.net
      # this is required for opengraph to work correctly for shared links.
      - DOMAIN=
      # PUID/PGID: the user/group ID the container runs as. Files written to your
      # volumes (data, processed, videos, images) will be owned by this user. Set these to
      # match the owner of your host directories to avoid permission errors.
      # Run `id` on your host to find your UID and GID.
      - PUID=1000
      - PGID=1000
Change ADMIN_USERNAME and ADMIN_PASSWORD before exposing Fireshare to the internet. The default credentials are visible in your Compose file — anyone who sees the file can log in if you leave them set to obvious values.
2

Create the host directories

Create the four directories you referenced in the volume mounts. Fireshare writes to /data and /processed, so those directories must be writable by the PUID/PGID you configured.
mkdir -p /path/to/data /path/to/processed /path/to/images
# /path/to/videos should already exist and contain your clips
Run id to find your current user’s UID and GID, then set PUID and PGID to match:
id
# uid=1000(youruser) gid=1000(yourgroup) groups=...
3

Start the container

From the directory containing your docker-compose.yml, run:
docker-compose up -d
Docker pulls the image on first run. Subsequent starts are immediate. The container is ready when you see gunicorn log lines in docker-compose logs -f fireshare.
4

Open Fireshare in your browser

Navigate to http://localhost:8080. You will be redirected to the login page.Sign in with the ADMIN_USERNAME and ADMIN_PASSWORD you set in the Compose file. If you did not set those variables, the default credentials are admin / admin.
If you changed the host port in ports, replace 8080 with the port you chose.
5

Wait for the initial video scan

After login, Fireshare begins scanning the /videos directory for supported files (.mp4, .m4v, .mov, .webm). The scan runs automatically on startup and then repeats every five minutes by default (controlled by MINUTES_BETWEEN_VIDEO_SCANS).Once the scan finishes, your clips appear in the dashboard. Click any video card to open the detail view, where you can copy the unique shareable link.

Deploy with Docker Run

If you prefer a single command without a Compose file, the equivalent docker run command is:
docker run --name fireshare \
  -v $(pwd)/fireshare/data:/data:rw \
  -v $(pwd)/fireshare/processed:/processed:rw \
  -v /path/to/my/videos:/videos:rw \
  -v /path/to/my/images:/images:rw \
  -p 8080:80 \
  -e ADMIN_USERNAME=your-admin-username \
  -e ADMIN_PASSWORD=your-admin-password \
  -e PUID=user-id-with-read-write-permissions \
  -e PGID=group-id-with-read-write-permissions \
  -d shaneisrael/fireshare:latest

Volume Mounts Reference

All four volume mounts are required for Fireshare to start. The container’s entrypoint validates that /data, /videos, and /processed are mounted and exits with an error if any are missing. /images is optional — if not mounted, uploaded images will not persist across restarts.
MountPurpose
/dataSQLite database, lock files, and internal state
/processedGenerated metadata: poster thumbnails, boomerang previews, and symlinks to source files
/videosYour source video directory. Fireshare scans this directory for clips to index.
/imagesYour source image directory. Fireshare scans this directory for images to index.

Key Environment Variables

VariableRequiredDescription
ADMIN_USERNAMEYesUsername for the initial admin account.
ADMIN_PASSWORDYesPassword for the initial admin account.
SECRET_KEYYesFlask session encryption key. If omitted, a random key is generated on each restart, invalidating all active sessions.
DOMAINYes*The hostname where Fireshare is reachable (e.g. v.fireshare.net). Required for Open Graph link previews to render correctly in Discord and other platforms. Do not include http:// or https://, and do not surround the value in quotes.
PUIDYesUID the container process runs as. Files written to your volumes are owned by this user. Defaults to 1000.
PGIDYesGID the container process runs as. Defaults to 1000.
DOMAIN is not required for the container to start, but without it, shared links will not produce rich previews when pasted into Discord, Slack, Twitter/X, or other platforms that read Open Graph metadata.
After your first successful login, you can remove ADMIN_USERNAME and ADMIN_PASSWORD from your Compose file and restart the container. The account is already created in the database — the variables are only read on first run (or when you want to reset credentials).
For the full list of available environment variables — including transcoding, scanning intervals, webhooks, LDAP, and gunicorn tuning — see the Environment Variables reference.

Build docs developers (and LLMs) love