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.
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