Installation¶
Peek Stash Browser can be deployed in several ways depending on your needs and environment.
Requirements¶
- Stash server with GraphQL API enabled and an API key configured (Settings → Security)
- Docker (or Docker on unRAID)
- Network access between Peek and Stash
Installation Methods¶
Option 1: unRAID¶
Template Installation¶
Step 1: Download the template file
Get the template from GitHub:
Step 2: Install the template
- Copy
unraid-template.xmlto your network share at: - The template will be available immediately in Docker tab → Add Container → User Templates
- Copy
unraid-template.xmlto any accessible share (e.g.,\\your.server.ip.address\downloads) - SSH into your unRAID server
- Move the template file:
- The template will be available immediately in Docker tab → Add Container → User Templates
No Restart Required
You do NOT need to restart Docker or unRAID - the template is picked up automatically.
Step 3: Configure the container
- Go to Docker tab → Add Container
- Select "Peek" from User Templates dropdown
- Configure required settings:
- JWT Secret: Generate with
openssl rand -hex 32in unRAID terminal - App Data Directory: Path for Peek data (e.g.,
/mnt/user/appdata/peek-stash-browser) - Click Apply
- Access at
http://your-unraid-ip:6969 - Complete the Setup Wizard to connect to your Stash server
Stash URL and API Key
Leave the "Stash GraphQL URL" and "Stash API Key" fields blank for new installs - you'll configure these in the Setup Wizard. These fields are only shown for users migrating from v1.x.
Option 2: Docker (Single Container)¶
Recommended for Production
Single container includes everything - frontend, backend, and database. Multi-architecture images are available for both AMD64 and ARM64 (Raspberry Pi, Apple Silicon, etc.).
# Pull the latest image
docker pull carrotwaxr/peek-stash-browser:latest
# Generate JWT secret
export JWT_SECRET=$(openssl rand -base64 32)
# Run Peek
docker run -d \
--name peek-stash-browser \
-p 6969:80 \
-v peek-data:/app/data \
-e JWT_SECRET="${JWT_SECRET}" \
carrotwaxr/peek-stash-browser:latest
Volume Mounts:
peek-data- Database and app data (Docker named volume)
Required Environment Variables:
JWT_SECRET- Secret for JWT authentication (recommended to set manually)
Note: Stash URL and API key are configured via the Setup Wizard on first access - no environment variables needed!
See Configuration Guide for all environment variables.
Windows Examples¶
# Pull the latest image from Docker Hub
docker pull carrotwaxr/peek-stash-browser:latest
# Generate JWT secret (one-time)
$rng = [System.Security.Cryptography.RandomNumberGenerator]::Create()
$bytes = New-Object byte[] 32
$rng.GetBytes($bytes)
$jwt = [Convert]::ToBase64String($bytes)
# Run Peek
docker run -d `
--name peek-stash-browser `
-p 6969:80 `
-v peek-data:/app/data `
-e JWT_SECRET=$jwt `
carrotwaxr/peek-stash-browser:latest
Managing the container:
# View logs
docker logs peek-stash-browser
# Stop container
docker stop peek-stash-browser
# Start container
docker start peek-stash-browser
# Restart container
docker restart peek-stash-browser
# Update to new version
docker stop peek-stash-browser
docker rm peek-stash-browser
docker pull carrotwaxr/peek-stash-browser:latest
# Then re-run the docker run command above
Data persists across updates!
Your database and configuration are saved in the peek-data volume and won't be lost when updating.
Linux/macOS Examples¶
# Pull the latest image from Docker Hub
docker pull carrotwaxr/peek-stash-browser:latest
# Generate a secure random JWT secret
export JWT_SECRET=$(openssl rand -base64 32)
# Run Peek
docker run -d \
--name peek-stash-browser \
-p 6969:80 \
-v peek-data:/app/data \
-e JWT_SECRET="${JWT_SECRET}" \
carrotwaxr/peek-stash-browser:latest
Managing the container:
# View logs
docker logs peek-stash-browser
# Follow logs in real-time
docker logs -f peek-stash-browser
# Stop container
docker stop peek-stash-browser
# Start container
docker start peek-stash-browser
# Restart container
docker restart peek-stash-browser
# Update to new version
docker stop peek-stash-browser
docker rm peek-stash-browser
docker pull carrotwaxr/peek-stash-browser:latest
# Then re-run the docker run command above
Data persists across updates!
Your database and configuration are saved in the peek-data volume and won't be lost when updating.
First Access & Setup Wizard¶
After installation, access Peek in your browser for the first-time setup:
- Navigate to
http://localhost:6969(or your server IP) - Complete the 4-step setup wizard:
- Welcome: Introduction to Peek
- Create Admin: Set your admin username and password
- Connect to Stash: Enter your Stash URL and API key
- Complete: Setup finished!
- Login with your newly created admin credentials
Updating Peek¶
Check for Updates¶
Peek includes a built-in update checker:
- Navigate to Settings → Server Settings
- Scroll to the Version Information section
- Click Check for Updates
The system will query GitHub for new releases and notify you if an update is available.
Update Procedure¶
To update your Docker container to the latest version:
Easiest method: Click Force Update in the Docker tab to pull the latest image and restart.
# Stop and remove current container
docker stop peek-stash-browser
docker rm peek-stash-browser
# Pull latest image
docker pull carrotwaxr/peek-stash-browser:latest
# Restart with same docker run command you used for installation
docker run -d \
--name peek-stash-browser \
-p 6969:80 \
-v peek-data:/app/data \
-e JWT_SECRET="${JWT_SECRET}" \
carrotwaxr/peek-stash-browser:latest
# Stop and remove current container
docker stop peek-stash-browser
docker rm peek-stash-browser
# Pull latest image
docker pull carrotwaxr/peek-stash-browser:latest
# Restart with same docker run command you used for installation
docker run -d `
--name peek-stash-browser `
-p 6969:80 `
-v peek-data:/app/data `
-e JWT_SECRET=$jwt `
carrotwaxr/peek-stash-browser:latest
Your data persists across updates
Database, user settings, Stash configuration, and playlists are stored in the peek-data volume and will not be lost. For backup procedures and version-specific notes, see Upgrading Peek.
Version Pinning¶
To use a specific version instead of :latest:
# Pull and use specific version
docker pull carrotwaxr/peek-stash-browser:1.0.0
docker run ... carrotwaxr/peek-stash-browser:1.0.0
Available versions: GitHub Releases
Port Configuration¶
Peek uses a single port for production deployments:
| Port | Service | Description |
|---|---|---|
6969 | Complete App | nginx serves frontend + proxies API |
Development Ports
For development setup with hot reloading, see Local Development Setup.
Port Conflict with Whisparr
Peek's default port (6969) is the same as Whisparr's default port. If you're running Whisparr, change Peek's port mapping:
Hardware Recommendations¶
Peek is lightweight - it proxies streams through Stash rather than transcoding locally.
| Component | Minimum | Recommended |
|---|---|---|
| CPU | 1 core | 2+ cores |
| RAM | 512MB | 1GB+ (for large libraries) |
| Storage | 100MB | SSD for database (faster queries) |
| Network | 100 Mbps | Gigabit (for 4K content) |