A WebXR-enabled gallery that brings your self-hosted Immich library into Virtual Reality 🥽.
This project automatically generates depth maps for your photos using AI, creating a convincing 3D effect when viewed in a VR headset.
- 📸 Immich Integration: Seamlessly fetches photos from your self-hosted Immich instance.
- 🤖 AI Depth Generation: Automatically creates depth maps for your images to enable 3D viewing.
- ⚙️ Model Selection: Choose from different AI models for depth generation or use the default optimized settings.
- 🕶️ WebXR Support: Works directly in the browser on standalone VR headsets (e.g., Quest 3) and PCVR.
- 🎨 VR Gallery: unparalleled immersion with a dedicated VR interface.
- Gaussian Splatting: Future support for generating and displaying 3D Gaussian Splats for even more realistic scene reconstruction.
- Advanced Model Configuration: Fine-tune depth generation parameters.
This project consists of four services:
- PostgreSQL Database - Data persistence layer
- Python AI Service - Depth conversion AI processing
- Node.js Backend - API and business logic
- React Frontend - User interface
- Docker (v20.10+)
- Docker Compose (v2.0+)
git clone https://github.com/Papyszoo/ImmichVR.git
cd ImmichVRCopy the example environment file and customize as needed:
cp .env.example .envAvailable configuration options:
| Variable | Default | Description |
|---|---|---|
APP_PORT |
21370 |
Frontend exposed port |
POSTGRES_USER |
immichvr |
PostgreSQL username |
POSTGRES_PASSWORD |
changeme |
PostgreSQL password |
POSTGRES_DB |
immichvr |
PostgreSQL database name |
BACKEND_PORT |
3000 |
Backend internal port |
AI_SERVICE_PORT |
5000 |
AI service internal port |
IMMICH_URL |
- | Immich instance URL (optional) |
IMMICH_API_KEY |
- | Immich API key (optional) |
docker compose buildStart all services:
docker compose up -dView logs:
docker compose logs -fOpen your browser and navigate to:
http://localhost:21370
(or the port configured in APP_PORT)
Stop all services:
docker compose downStop and remove volumes (clears database):
docker compose down -v- Health Endpoint:
GET /health - Immich Integration: Optional connection to Immich instance for fetching media
For Immich integration documentation, see IMMICH_CONNECTOR.md.
- Container:
immichvr-frontend - Build Context:
./services/frontend - External Port:
${APP_PORT:-21370} - Features:
- WebXR VR Gallery with React Three Fiber
- 3D depth map viewer
- Responsive fallback for non-VR browsers
- API integration with backend
For VR gallery documentation, see services/frontend/VR_GALLERY.md.
MIT License - see LICENSE for details.