All apps · 0 apps
StoryScan
Docker app from Unknowncall's Repository
Overview
Readme
View on GitHubStoryScan
A beautiful, modern web-based disk usage visualizer designed for Unraid and other systems. Inspired by DaisyDisk, StoryScan provides an elegant interface to explore and understand your disk usage with interactive treemap visualizations.
Features
- Beautiful UI: Modern, gradient-rich design with smooth animations
- Interactive Treemap: D3.js-powered visualization that lets you drill down into directories
- Dark Mode: Full dark mode support with smooth transitions
- Multi-Directory Support: Scan and switch between multiple configured directories
- Real-time Stats: See total size, file count, and folder count at a glance
- Responsive: Works on desktop, tablet, and mobile devices
- Docker Ready: Easy deployment with Docker and docker-compose
Quick Start
Using Docker Compose (Recommended)
- Clone this repository:
git clone <repository-url>
cd storyscan
- Edit
docker-compose.ymlto configure your directories:
environment:
- SCAN_DIRECTORIES=/data/media,/data/downloads,/data/backups
volumes:
- /mnt/user/media:/data/media:ro
- /mnt/user/downloads:/data/downloads:ro
- /mnt/user/backups:/data/backups:ro
- Start the container:
docker-compose up -d
- Access the web interface at
http://localhost:3000
Using Docker Run
docker build -t storyscan .
docker run -d \
--name storyscan \
-p 3000:3000 \
-e SCAN_DIRECTORIES=/data/media,/data/downloads \
-v /mnt/user/media:/data/media:ro \
-v /mnt/user/downloads:/data/downloads:ro \
storyscan
Configuration
Environment Variables
SCAN_DIRECTORIES: Comma-separated list of directories to scan (default:/data)
Example:
SCAN_DIRECTORIES=/data/media,/data/downloads,/data/backups
Volume Mounts
Mount your directories as read-only (:ro) for safety:
volumes:
- /host/path:/container/path:ro
The container paths should match what you specify in SCAN_DIRECTORIES.
Unraid Installation
In Unraid, go to Docker tab
Click Add Container
Configure as follows:
- Name: storyscan
- Repository: storyscan (or your registry)
- Network Type: bridge
- Port: 3000 → 3000
- Path 1:
/mnt/user/media→/data/media(read-only) - Path 2:
/mnt/user/downloads→/data/downloads(read-only) - Variable:
SCAN_DIRECTORIES=/data/media,/data/downloads
Click Apply and access at
http://your-unraid-ip:3000
Development
Prerequisites
- Node.js 20+
- npm or yarn
Local Development
- Install dependencies:
npm install
- Create a
.env.localfile:
SCAN_DIRECTORIES=/Users/yourname/Documents,/Users/yourname/Downloads
- Run the development server:
npm run dev
Build for Production
npm run build
npm start
Technology Stack
- Next.js 14: React framework with App Router
- TypeScript: Type-safe development
- Tailwind CSS: Utility-first styling
- D3.js: Powerful treemap visualizations
- Framer Motion: Smooth animations
- Lucide React: Beautiful icons
Screenshots
Coming soon
License
MIT
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Install StoryScan on Unraid in a few clicks.
Find StoryScan in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.
Related apps
Explore more like this
Explore allDetails
ghcr.io/unknowncall/storyscan:latestRuntime arguments
- Web UI
http://[IP]:[PORT:3000]- Network
bridge- Shell
sh- Privileged
- false
Template configuration
Host path to scan. Map your Unraid share(s) here.
- Target
- /media-server
- Value
- /mnt/user/Media Server/
Persistent storage for the SQLite database (historical scan data). Map to a location on your Unraid server to preserve history across container updates.
- Target
- /app/data
- Value
- /mnt/user/appdata/storyscan/
Comma-separated list of directories inside the container to scan.
- Default
- /media-server
- Value
- /media-server
Enable automatic background scanning on a schedule. Set to false to disable.
- Default
- true
- Value
- true
Hours between automatic scans. Accepts decimals (0.5 = 30 min). Set to 0 to disable.
- Default
- 6
- Value
- 6
Run an initial scan immediately when the container starts.
- Default
- true
- Value
- true
Optional: override with a custom cron expression (e.g. '0 3 * * *' for 3am daily). Leave empty to use SCAN_INTERVAL_HOURS.
Maximum number of items to render in the treemap.
- Default
- 20000
- Value
- 20000
Maximum folder depth to display in the treemap.
- Default
- 5
- Value
- 5
Item count below which no filtering is applied.
- Default
- 5000
- Value
- 5000
Item count threshold for moderate filtering.
- Default
- 15000
- Value
- 15000
Item count threshold for aggressive filtering.
- Default
- 50000
- Value
- 50000
Port for the web interface.
- Target
- 3000
- Default
- 3455
- Value
- 3455