360° panorama viewer
Rotate, zoom, fullscreen, auto-rotate, and switch rooms from a filmstrip. Built on Pannellum.
Self-hosted 360° virtual tour software
Tourbine is an open source web app for building and publishing interactive 360° tours. Add panoramas, video and info points, arrange the rooms, then publish. No SaaS account, no cloud services, no data leaving your machine.
Rotate, zoom, fullscreen, auto-rotate, and switch rooms from a filmstrip. Built on Pannellum.
Each room can hold a 360° image, still image, local video, YouTube, Vimeo, or an iframe embed URL.
Link rooms with a pitch/yaw position and a label. Visitors click the hotspot to move to the next room.
Point a hotspot at any URL to send visitors out of the tour.
Attach a title and text to a spot in a 360° or still image. Visitors see it as a tooltip.
Set the initial view and hotspot positions by clicking the panorama in the room editor instead of typing pitch and yaw.
Blur or mosaic parts of an image on a canvas brush before upload.
Every tour has an iframe-friendly /embed view and a copyable embed snippet.
Export a tour as a ZIP and import it on another instance. Legacy JSON exports are supported too.
All-time, 24-hour and 7-day view counts, plus per-tour totals.
Three roles: system_admin, admin and user. Create users, change roles and reset passwords.
GET /api/tours and GET /api/tours/:slug for headless use.
Store the tunnel name, UUID, credentials path and hostname in the dashboard and preview the generated cloudflared config.
bcrypt password hashes, session cookies, CSRF tokens on every write, and rate-limited login.
A Dockerfile and Compose file with named volumes for the database and uploads.
node reset-password.js sets a new password straight in the SQLite database, even when the server is stopped.
No separate database server. Tours live in a single SQLite file and uploads stay in a local folder, so a backup is a copy of two paths. Media files are capped at 100 MB each.
Tourbine runs as one Node.js process on port 3000. It supports Cloudflare Tunnel for public access without port-forwarding.
git clone https://github.com/efenow/tourbine.git
cd tourbine
npm install
npm start
Open http://localhost:3000. On first run, /dashboard
redirects to /dashboard/setup. Create the system admin account there:
username at least 3 characters, password at least 8 characters.
Development (auto-restart on file change)
npm run dev
Run the test suite
npm test
Environment variables: PORT (default 3000),
DB_PATH (default data/tourbine.db), and
NODE_ENV=production to turn on secure session cookies.
Tourbine is GPL-3.0 software. Run it on your own hardware, read the source, and change it to fit your workflow. There is no hosted tier and no telemetry.
CODE_OF_CONDUCT.md; report vulnerabilities per SECURITY.md