GhostHub is a zero-setup, mobile-first media server you can run instantly and share over the internet. No accounts. No config. Just swipe through your own folder like it's TikTok.
Perfect for temporary sharing, personal libraries, or lightweight deployments with friends.
Runs as a Python script, one-click Windows .exe
, or Docker container — no install, no accounts, no cloud.
New in v1.6:
- Saved session progress per category (even with shuffle)
- Full Pinggy tunnel integration with live status and config UI
- Dynamic category thumbnails fixed across environments (incl. Docker)
- New
/kick
command to remove users by session ID- Slash command popup with instant filtering and improved input handling
- Chat and modal UI fully reworked for smoother mobile and desktop use
- Massive performance polish, drag/touch fixes, and config stability
-
📁 Add custom folders and browse your media
-
🎞️ TikTok-style swipe navigation for images & videos
-
🔁 Optional host sync — everyone sees the same media, watches at their own pace
-
🔐 Sync password protection + admin-only controls
-
🧑🤝🧑 Live user counter and join notifications
-
💬 Built-in real-time chat (ephemeral, anonymous)
-
⌨️ Slash commands like /myview and /help
-
📱 Fully mobile and desktop optimized
-
🌐 Optional public sharing via Cloudflare Tunnel
-
🖥️ Portable
.exe
with no dependencies or setup -
🐳 Docker support (including ARM64)
-
💾 External config (
media_categories.json
) for folder persistence
The .exe
contains everything — no setup needed.
-
Run
GhostHub.exe
-
You’ll be prompted to enable a Cloudflare Tunnel
-
URL is auto-copied to clipboard (if enabled)
-
Open your browser to: http://localhost:5000
📁
media_categories.json
is saved in the same folder ✅ No need to download cloudflared — it’s bundled
-
Install Python 3.7+
-
(Optional) Place
cloudflared.exe
in project root -
Install dependencies:
pip install -r requirements.txt
-
Start the server:
python ghosthub.py
💡 If
cloudflared.exe
is found, you’ll be prompted to start a tunnel
-
Install Docker
-
Pull the latest image:
docker pull dhux/ghosthub:latest
-
Create a
docker-compose.yml
with your media folders:version: '3' services: ghosthub: image: dhux/ghosthub:latest container_name: ghosthub ports: - "5000:5000" volumes: - ../instance:/app/instance - ../media:/media # Windows paths (Docker Desktop): - C:/Users/username/Pictures:/media/pictures - C:/Users/username/Videos:/media/videos # Linux/macOS paths: # - /home/user/Pictures:/media/pictures # - /home/user/Videos:/media/videos environment: - PORT=5000 - FLASK_CONFIG=production - DOCKER_ENV=true
-
Start it up:
docker-compose up
-
Visit: http://localhost:5000
🧠 Tunnel management is now fully in the web UI 📂 Categories auto-generate for anything under
/media
Use bin/build_exe.bat
bin/build_exe.bat
Output is saved to
/dist/GhostHub.exe
-
Click
Add Category
-
Choose folder and name
-
Auto-saved to
media_categories.json
Images: jpg, jpeg, png, gif, bmp, tiff, webp, heic, etc. Videos: mp4, webm, mov, mkv, avi, ts, flv, etc.
GhostHub is a lightweight ephemeral media server built for speed, fun, and control.
Start it up. Share a link. Watch with friends. No cloud, no login, no trace.
Ghost on. 👻