Free-WAN Get in touch

Runs on your own hardware

Free-WAN

Your media library on your own hardware, reachable from anywhere, with no forwarded ports and nothing exposed.

People who own their files and want to keep it that way.

  1. Your phoneanywhere
  2. Tailscale ServeHTTPS :443
  3. free-wan127.0.0.1:8080
  4. Your drivemounted read-only

Library

  • heist.mp4mp4 · h264 · aacdirect
  • E03.mkvmkv · hevc · eac3HLS
  • beach.movmov · h264 · aacdirect
  • live-set.aviavi · mpeg4 · mp3HLS

Category: Shows › Nature › Season 1 on drive-b

  • ✗Containermkvnot mp4 / m4v / webm / mov
  • ✓Videohevcplays in a browser
  • ✗Audioeac3not aac / opus / mp3
GET /api/media/2/playback
{ "mode": "hls",
  "url": "/api/media/2/hls/master.m3u8" }

ffmpeg converts it on the fly: H.264 (libx264 veryfast), AAC at 160k, in 4-second segments. Playback starts once the first ones exist.

seg_00000.tsseg_00001.tsseg_00002.tsseg_00003.tsseg_00004.tsseg_00005.ts
An illustration that runs in your browser. The files are made up. The rule is Free-WAN’s own: a file plays directly only if its container, video and audio all pass. Anything else becomes HLS.

What it does

Your media on your hardware, reachable from anywhere without opening ports.

Video your browser can play directly streams as-is, and everything else gets converted to HLS on the fly. All your drives show up as one library with full-text search and filters, sorted automatically based on your folder structure. You can also put your own branding on it.

  1. 01

    Plays files directly when it can, and converts to HLS on the fly when it can’t

  2. 02

    One searchable library across multiple drives, organized from your folder structure

  3. 03

    Embedded and separate subtitle files, playback speed, and pick up where you left off

  4. 04

    Reachable from anywhere over Tailscale with no ports forwarded

Sorting

Your folders are the catalog.

You point Free-WAN at the drives you already have, as libraries. Every folder above a file becomes a category, so nothing needs tagging by hand, and full-text search and filters work across all of them at once. A watcher picks up new files as they land.

/media/drive-a/Movies/Action/2021/heist.mp4
  Movies › Action › 2021

/media/drive-b/Shows/Nature/Season 1/E03.mkv
  Shows › Nature › Season 1

Getting in

The way in is your tailnet.

Free-WAN runs as two containers. One is Tailscale, which joins your tailnet and serves HTTPS on port 443. The app shares its network and listens only on 127.0.0.1:8080, so the way in is through your tailnet. No ports get forwarded on your router, and your drives are mounted read-only.

# docker-compose.yml, trimmed
tailscale:
  image: tailscale/tailscale
  # serves https://free-wan.<tailnet>.ts.net
free-wan:
  network_mode: service:tailscale
  HOST: 127.0.0.1
  PORT: 8080
  volumes:
    - /path/to/drive-a:/media/drive-a:ro

Where it stands

Built, tested, not released.

All eleven phases of the v1 build plan are done, from scanning and search through clips, branding and the Tailscale setup. It has unit and integration tests and a Playwright suite that runs the main flows in a real browser. There’s no release yet, so there’s nothing to install today. There’s also an iPhone and Android app in the repository that talks to the same server, and it isn’t in either store.

Specification

What it’s built with, and when.

Pulled from the repository each time this site is built.

State
In development
Discipline
Applications
Shape
Installed software
Started
Jun 2026
Last change
Oct 2026
Commits
127
  • TypeScript
  • Docker
  • ffmpeg
  • HLS
  • Tailscale
  • TypeScript 87%
  • Swift 7%
  • JavaScript 4%

Next

Get Free-WAN

Ask about availability, a build for your platform, or a license.

This site isn't finished. Anything on it may still change, and none of it is binding until the site is live.