selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

GitHub
Kitana logo

Self-host Kitana

0.4.3-2

Responsive web frontend for Plex plugins

ReleaseOpen SourceOther
Updated3 years ago
LanguageSCSS
Setup difficultyModerate
MobileResponsive
Stars
531
Port
31337 (HTTP web interface)
Requires
Plex Media Server
Docker
pannal/kitana
Install with Docker
Imgur gallery of Kitana UI screenshots

What is Kitana?

Kitana is a lightweight Python web application built on CherryPy that acts as a responsive proxy for Plex Media Server plugins. It authenticates users against Plex.TV, then connects to their Plex Media Server to expose plugin interfaces through a mobile-friendly web UI. A single Kitana instance can serve multiple Plex servers and plugins, and can be shared with friends so they don't need their own instance. It runs behind reverse proxies (NGINX, IIS) and supports Docker, Docker Compose, and manual Python 3.7+ installation. The project is designed as an intermediate solution for Plex's phase-out of UI-based plugins. It uses file-based sessions for authentication storage and provides extensive caching for faster plugin handling.

Should you self-host Kitana?

Kitana scores 46/100 on selfhost.directory (how scoring works) and ranks #78 of 118 in Media Server. It has 531 GitHub stars.

There was no stable release in the past 12 months, so check the repository's recent activity before you rely on it.

Setup is moderate: expect some configuration beyond a single command. An official Docker image is available. It is Other-licensed and written mostly in SCSS.

Its closest alternative on selfhost.directory is Jellyfin (88/100, 58 737 stars). It scores higher overall, so compare the two before you pick. See Kitana vs Jellyfin side by side.

Features

  • Cross-platform
  • Heavy Caching
  • Multi-Server Support
  • Plex Plugin Proxy
  • Plex.TV Authentication
  • PMS Connection Awareness
  • Reverse Proxy Support

Kitana README

How to install Kitana

Install Kitana with Docker

docker run --name kitana --restart unless-stopped -v kitana_data:/app/data -d -p 0.0.0.0:31337:31337 pannal/kitana:latest -B 0.0.0.0:31337

Standalone on port 31337

How to configure Kitana

  • ALLOW_NOT_OWNEDFalseAllow access to not-owned servers

    Allow access to not-owned servers

    values: True/False

  • AUTORELOADFalseWatch project files for changes and auto-reload

    Watch project files for changes and auto-reload

    values: True/False

  • BEHIND_PROXYFalseAssume being ran behind a reverse proxy

    Assume being ran behind a reverse proxy

    values: True/False

  • BIND0.0.0.0:31337Listen on address:port

    Listen on address:port

    values: HOST:PORT

  • GLOBAL_AUTH_TOKENToken to access Plex. Can be the name of an environment variable containing the token. Overrides and disables any and all authentication. Effectively enables local mode.

    Token to access Plex. Can be the name of an environment variable containing the token. Overrides and disables any and all authentication. Effectively enables local mode.

    values: Token string or env var name

  • PLEXTV_TIMEOUT15Connection timeout to the Plex.TV API

    Connection timeout to the Plex.TV API

    values: Seconds (integer)

  • PLUGIN_IDENTIFIERcom.plexapp.agents.subzeroThe default plugin/channel to view on a server

    The default plugin/channel to view on a server

    values: Plugin identifier string

  • PLUGIN_LANGUAGEenThe language to request when interacting with plugins

    The language to request when interacting with plugins

    values: Language code

  • PREFIX/Prefix to handle; used for reverse proxies normally

    Prefix to handle; used for reverse proxies normally

    values: URL path prefix

  • PROXY_BASEHost (NGINX)When behind a reverse proxy, assume this base URI instead of the bound address

    When behind a reverse proxy, assume this base URI instead of the bound address

    values: Base URI (e.g. http://host.com)

  • PROXY_HOST_VARHostWhen behind reverse proxy, get host from this var

    When behind reverse proxy, get host from this var

    values: Header name (NGINX: Host, Squid: Origin, Lighty/Apache: X-Forwarded-Host, IIS: Host)

  • SHADOW_ASSETSTruePass PMS assets through the app to avoid exposing the plex token

    Pass PMS assets through the app to avoid exposing the plex token

    values: True/False

  • TIMEOUT5Connection timeout to the PMS

    Connection timeout to the PMS

    values: Seconds (integer)

Kitana releases & version history

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…