Menu
Penombre docs

These are the canary docs, read from main: they can describe changes no release has shipped yet. Read the v1.8.66 docs.

Penombre

A self-hosted drive. All the convenience of cloud storage, on hardware you own, with a bill of exactly zero.

Penombre | AlternativeTo License Latest Release Docker Pulls

Docs · Docker Hub · Project page

Penombre: your files, on your own server

See the full showcase → — every screen, light and dark, generated from a real instance.

#What it is

Penombre is a file storage and synchronisation platform for people who want their files back. Drop it on a box, point it at your disks, and you get a modern web drive — without renting the disk from anyone.

It runs on SQLite out of the box: one container, one volume, no database server to run alongside it. PostgreSQL stays supported the day you outgrow that.

#Features

#Your files

  • Uploads that survive a reload — files and whole folders, queued in the browser and resumed after a closed tab. Uploads
  • Everything you expect from a drive — folders, search, starred, recent, automatic categories (images, music, video, documents…), zip downloads, and a trash that gives things back. Storage
  • Copy and move anywhere — between folders, shared drives and mounted volumes, in one dialog.
  • Big folders stay fast — listings page from the database and render only what is on screen, so a 20,000-file sample library scrolls like ten files.

#Music and media

  • A real music player — the waveform is the progress bar, redrawn in your accent colour; skip, restart, change the speed without changing the pitch, or transpose without changing the tempo. Media
  • Notes pinned to a moment — timestamped comments drawn on the waveform, for "the kick is too loud at 1:12". Media
  • Previews for almost everything — images, video, PDFs, code, 3D models, with a full-screen viewer that keeps the playhead when you go in and out.

#Versions

  • No more final-final-really.wav — upload a file with the same name and the old one becomes a version you can play, preview or restore. Switch takes mid-playback and compare two mixes at the same bar. Versioning
  • Merge old takes into one file — select Song-001.mp3 … Song-014.mp3, order them by date or by name, preview the result, merge. Merging

#Documents

  • Documents, sheets and decks in the browser, stored as plain HTML, CSV and Markdown files — no private format. Documents
  • Word, Excel and PowerPoint edited in place — the original file is kept, only the text you changed is written back.

#Sharing

  • Links with an optional password, expiry and sign-in requirement. Sharing
  • People on the instance, as viewers, editors or with full access; they are notified in the app and by email. Notifications
  • Shared drives owned by a team rather than a person, with member roles and a trash of their own. Shared drives

#Your disks, your layout

  • Mount what you already have — declare a directory as a volume and its files show up, rescanned every minute, read-only if you like. Volumes
  • WebDAV and sync — mount any drive in Finder, Explorer or GNOME Files, or keep a folder in two-way sync with rclone; a save over a file becomes a version, a delete lands in the trash. WebDAV and sync
  • A desktop sync app — a tray app for macOS, Linux and Windows that keeps several local folders in two-way sync with your drive, shared drives or volumes; brew install orochibraru/tap/penombre-sync. Desktop sync
  • Syncthing-friendly — what Penombre writes to a volume keeps its real name and its modification date, so the folder reads the same on every peer. Syncing with Syncthing
  • Simple mode — no per-user drives, just one shared library everybody browses. Simple mode
  • Encryption at rest — file bytes sealed with a key you hold, rotatable, recoverable without Penombre. Encryption

#Sign-in and administration

  • Every way in — password, passkeys, magic links, emailed codes, two-factor and any OpenID Connect provider (Pocket ID, Google…), each switchable live from the admin panel. Authentication
  • Invitations, users, SMTP, storage and an activity log in one admin panel. Admin
  • A documented REST API — every /api/v1 endpoint is in the OpenAPI spec, with API keys for scripts.

#Made to be lived in

  • Thirteen languages, light and dark themes, a choice of accent colours, typefaces and corner styles.
  • A phone layout that is not an afterthought — bottom bar, drawer navigation, the player and uploads all fit.

#Run it

#Docker run

docker run -d --name penombre \
  -p 3000:3000 \
  -v penombre_data:/data \
  -e AUTH_SECRET=$(openssl rand -hex 32) \
  -e ORIGIN=https://drive.example.com \
  orochibraru/penombre:latest

#Docker Compose

services:
  penombre:
    image: orochibraru/penombre:latest
    restart: unless-stopped
    ports:
      - 3000:3000
    volumes:
      - penombre_data:/data
    environment:
      AUTH_SECRET: a-long-random-string
      ORIGIN: https://drive.example.com

volumes:
  penombre_data:

Either way it comes up on http://localhost:3000, on a setup screen that creates the first administrator. One volume holds the lot: the SQLite database under /data/db, your files under /data/storage. Those two variables are the only ones required.

The getting started guide walks through it properly, and the env reference covers everything else: OAuth providers, SMTP, Redis, Postgres, volumes, simple mode.

#How it's built

  • Frontend — SvelteKit with Svelte 5, TailwindCSS 4, shadcn-svelte
  • Backend — SvelteKit +server.ts routes with Zod-validated contracts that also emit the OpenAPI spec
  • Database — SQLite with Drizzle ORM, PostgreSQL optional, chosen from the DATABASE_URL scheme
  • Storage — plain local filesystem, so your files stay files
  • Worker — a Go process for thumbnails, waveforms, scans, zips and bulk copies, embedded or run as its own container
  • Auth — Better Auth

#Contributing

See CONTRIBUTING.md for local setup, commands, and the test and lint workflow.

#License

MIT — see LICENSE. Free, and staying that way.

#Acknowledgments

Built with these open-source technologies:

#Star History

Penombre's GitHub stars over time

This guide lives in the project repo: edit it there, and this page follows within a day.