# pimpadev/lordflix architecture

> Architecture diagram of the GitHub repository pimpadev/lordflix, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/pimpadev/lordflix
- Repository: https://github.com/pimpadev/lordflix

## Overview

LordFlix is a self-hosted media-center setup whose documented outcome is automatically downloaded media served to clients. The repository supplies Jellyfin and Plex Compose setups, including optional VPN variants, plus maintenance scripts for media and logs. The README identifies external storage and the broader “-arr” setup, but no source excerpts or downloader definitions are available, so their wiring is not represented. Edges reflect only documented client access and script responsibilities inferred from their names.

Main entry points: [`scripts/auto_unrar.sh`](https://github.com/pimpadev/lordflix/blob/main/scripts/auto_unrar.sh) (Auto unrar), [`scripts/clean_logs.sh`](https://github.com/pimpadev/lordflix/blob/main/scripts/clean_logs.sh) (Clean logs), [`scripts/delete_old_media.sh`](https://github.com/pimpadev/lordflix/blob/main/scripts/delete_old_media.sh) (Delete old media), [`compose/jellyfin/compose.yml`](https://github.com/pimpadev/lordflix/blob/main/compose/jellyfin/compose.yml) (Jellyfin setup)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_media["Media deployments"]
  node_jellyfin["Jellyfin setup<br/>[compose.yml]"]
  node_jellyfin_vpn["Jellyfin VPN setup<br/>[compose.yml]"]
  node_plex["Plex setup<br/>[compose.yml]"]
  node_plex_vpn["Plex VPN setup<br/>[compose.yml]"]
end

subgraph group_maintenance["Maintenance scripts"]
  node_unrar["Auto unrar<br/>[auto_unrar.sh]"]
  node_clean_logs["Clean logs<br/>[clean_logs.sh]"]
  node_delete_media["Delete old media"]
end

subgraph group_state["Media and logs"]
  node_media_storage[("Media storage")]
  node_logs[("Log files")]
end

node_operator(("Server operator"))
node_clients(("Jellyfin clients"))

node_clients -->|"accesses"| node_jellyfin
node_operator -->|"runs"| node_unrar
node_operator -->|"runs"| node_clean_logs
node_operator -->|"runs"| node_delete_media
node_unrar -->|"unpacks media"| node_media_storage
node_delete_media -->|"deletes media"| node_media_storage
node_clean_logs -->|"cleans logs"| node_logs

click node_jellyfin "https://github.com/pimpadev/lordflix/blob/main/compose/jellyfin/compose.yml"
click node_jellyfin_vpn "https://github.com/pimpadev/lordflix/blob/main/compose/jellyfin/vpn/compose.yml"
click node_plex "https://github.com/pimpadev/lordflix/blob/main/compose/plex/compose.yml"
click node_plex_vpn "https://github.com/pimpadev/lordflix/blob/main/compose/plex/vpn/compose.yml"
click node_unrar "https://github.com/pimpadev/lordflix/blob/main/scripts/auto_unrar.sh"
click node_clean_logs "https://github.com/pimpadev/lordflix/blob/main/scripts/clean_logs.sh"
click node_delete_media "https://github.com/pimpadev/lordflix/blob/main/scripts/delete_old_media.sh"
click node_logs "https://github.com/pimpadev/lordflix/tree/main/logs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_jellyfin,node_jellyfin_vpn,node_plex,node_plex_vpn,node_clients toneBlue
class node_unrar,node_clean_logs,node_delete_media toneAmber
class node_media_storage,node_logs,node_operator toneMint
```

## Components

### Media deployments

- [Jellyfin setup](https://github.com/pimpadev/lordflix/blob/main/compose/jellyfin/compose.yml): `compose/jellyfin/compose.yml`
- [Jellyfin VPN setup](https://github.com/pimpadev/lordflix/blob/main/compose/jellyfin/vpn/compose.yml): `compose/jellyfin/vpn/compose.yml`
- [Plex setup](https://github.com/pimpadev/lordflix/blob/main/compose/plex/compose.yml): `compose/plex/compose.yml`
- [Plex VPN setup](https://github.com/pimpadev/lordflix/blob/main/compose/plex/vpn/compose.yml): `compose/plex/vpn/compose.yml`

### Maintenance scripts

- [Auto unrar](https://github.com/pimpadev/lordflix/blob/main/scripts/auto_unrar.sh): `scripts/auto_unrar.sh`
- [Clean logs](https://github.com/pimpadev/lordflix/blob/main/scripts/clean_logs.sh): `scripts/clean_logs.sh`
- [Delete old media](https://github.com/pimpadev/lordflix/blob/main/scripts/delete_old_media.sh): `scripts/delete_old_media.sh`

### Media and logs

- **Media storage**
- [Log files](https://github.com/pimpadev/lordflix/tree/main/logs): `logs`

### Other components

- **Server operator**
- **Jellyfin clients**

## Connections

- Jellyfin clients → Jellyfin setup: accesses
- Server operator → Auto unrar: runs
- Server operator → Clean logs: runs
- Server operator → Delete old media: runs
- Auto unrar → Media storage: unpacks media
- Delete old media → Media storage: deletes media
- Clean logs → Log files: cleans logs
