Support
Tentacle TV

Tentacle TV

Latest

A premium, modern media client for Jellyfin.

Stream your library through a sleek, dark-themed interface with glassmorphism design,
smooth animations, and powerful features — all self-hosted.

Download

Desktop

Auto-updates built-in via Tauri updater.

Mobile

Self-Host with Docker

Recommended

The fastest way to get Tentacle TV running. Copy, paste, done.

Includes MariaDB + Tentacle TV in a single stack:

services:
  db:
    image: mariadb:11
    container_name: tentacle-db
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: tentacle_db
      MYSQL_USER: tentacle_user
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}
    volumes:
      - tentacle-db-data:/var/lib/mysql
    healthcheck:
      test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
      interval: 10s
      timeout: 5s
      retries: 5

  web:
    image: ghcr.io/knaox/tentacle-tv:latest
    container_name: tentacle-tv
    restart: unless-stopped
    depends_on:
      db:
        condition: service_healthy
    environment:
      DATABASE_URL: mysql://tentacle_user:${MYSQL_PASSWORD}@db:3306/tentacle_db
      JWT_SECRET: ${JWT_SECRET}
      PORT: "3000"
      HOST: "0.0.0.0"
    volumes:
      - tentacle-data:/app/apps/backend/data
    ports:
      - "3000:3000"

volumes:
  tentacle-db-data:
  tentacle-data:
docker compose up -d

Already have a MariaDB/MySQL instance? Use this minimal config:

services:
  web:
    image: ghcr.io/knaox/tentacle-tv:latest
    container_name: tentacle-tv
    restart: unless-stopped
    environment:
      JWT_SECRET: ${JWT_SECRET}
      PORT: "3000"
      HOST: "0.0.0.0"
    volumes:
      - tentacle-data:/app/apps/backend/data
    ports:
      - "3000:3000"

volumes:
  tentacle-data:
docker compose -f docker-compose.external.yml up -d
First launch: Open http://your-server:3000 — the setup wizard guides you through database, Jellyfin connection, and admin account creation.

Configuration

VariableDescriptionDefault
DATABASE_URLMariaDB connection string
JWT_SECRETSecret key for token signing
PORTServer listening port3000
HOSTServer bind address0.0.0.0
RATE_LIMITMax requests/min per IP1000

Jellyfin URL and API key are configured through the web setup wizard and stored in the database.

Features

Video Playback

HTML5 + HLS streaming (web), native mpv with Direct Play, Dolby Vision & Atmos (desktop). Resume, track switching, per-library preferences.

Glassmorphism UI

Premium dark theme with purple/pink accents, dynamic hero banners, animated media cards, global search with Ctrl+K. Fully responsive.

Plugin System

Built-in admin marketplace with one-click install. Multiple registry sources, SHA256 verification, auto-navigation integration.

Administration

Setup wizard, invite system, support tickets, TV pairing via 4-digit code, real-time notifications. Full control.

Multi-language

English and French with i18next. More languages can be added through the translation system.

Auto-Updates

Desktop app auto-updates via Tauri updater. Docker images auto-pull with Watchtower. Always up to date.

Tech Stack

LayerTechnology
WebReact 19, Vite 6, Tailwind CSS, Framer Motion
DesktopTauri v2 (Rust), native mpv player
MobileReact Native 0.76, Expo 52, NativeWind
BackendFastify 5, Prisma 6, MariaDB 11
DataTanStack Query v5
Videohls.js (web), mpv (desktop), react-native-video
LanguageTypeScript 5.7, strict mode

Architecture

┌─────────────┐     ┌─────────────┐     ┌─────────────────┐
│   Web App   │────▶│   Backend   │────▶│    MariaDB      │
│  (React 19) │     │ (Fastify 5) │     │  (Prisma ORM)   │
└─────────────┘     └──────┬──────┘     └─────────────────┘
                           │
┌─────────────┐            │            ┌─────────────────┐
│ Desktop App │────────────┘       ┌───▶│ Jellyfin Server │
│  (Tauri v2) │                    │    └─────────────────┘
└─────────────┘            ▲───────┘
                           │
                     /api/jellyfin/*
                      (proxy route)
Tentacle Backend /api/*

Auth, invites, tickets, config, pairing, plugins

Jellyfin Proxy /api/jellyfin/*

Streaming, media browsing, user data via backend proxy

Platform Status

PlatformVersionStatusTechnology

Resources