- Added TRUENAS_APPS.md with complete documentation of all 13 Docker containers - Documented container health status, networking, storage mounts, and configurations - Included disaster recovery export (truenas-apps-export-20251216-143515) with: - Individual container configs and metadata - Docker images, networks, volumes, and compose projects - App configuration and mount point listings - Updated README.md to reference TRUENAS_APPS.md in documentation index - Updated scribe.md timestamp This establishes comprehensive documentation for TrueNAS Scale Docker infrastructure including Plex, *arr stack (Sonarr/Radarr/Bazarr/Prowlarr), Deluge, Gluetun VPN, FlareSolverr, Dockge, and Beszel monitoring agent. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
817 lines
25 KiB
Markdown
817 lines
25 KiB
Markdown
# TrueNAS Docker Apps and Containers
|
|
|
|
**Last Updated**: 2025-12-16
|
|
**Source**: `/home/jramos/truenas/disaster-recovery/truenas-apps-export-20251216-143515/`
|
|
**Export Reference**: truenas-apps-export-20251216-143515
|
|
|
|
---
|
|
|
|
## Overview
|
|
|
|
This document catalogs all Docker containers and TrueNAS applications deployed on the TrueNAS Scale system at 192.168.2.150. The inventory includes 13 containers across 5 functional categories: Media Management, VPN/Networking, Media Streaming, Infrastructure Management, and Monitoring.
|
|
|
|
**Collection Details**:
|
|
- Export Date: 2025-12-16 14:35:15
|
|
- Format: JSON + YAML metadata
|
|
- Containers: 13 total (7 running healthy/active, 6 unhealthy/exited)
|
|
- Networks: 6 Docker networks (3 compose-managed, 2 bridge, 1 host)
|
|
- Volumes: Multiple named and anonymous volumes
|
|
|
|
---
|
|
|
|
## Quick Reference: Container Status Matrix
|
|
|
|
| Container | Status | Health | Uptime | Port | Function |
|
|
|-----------|--------|--------|--------|------|----------|
|
|
| ix-plex-plex-1 | Running | Healthy | 3 days | 32400 | Media Server |
|
|
| arr-stack-sonarr-1 | Running | - | 2 days | 8989 | TV Automation |
|
|
| arr-stack-radarr-1 | Running | - | 2 days | 7878 | Movie Automation |
|
|
| arr-stack-bazarr-1 | Running | - | 2 days | 6767 | Subtitle Automation |
|
|
| ix-dockge-dockge-1 | Running | Healthy | 3 days | 31014 | Docker Manager |
|
|
| gluetun | Running | Unhealthy | 2 days | 8112 | VPN Gateway |
|
|
| deluge | Running | - | 2 days | - | Torrent Client |
|
|
| prowlarr | Running | - | 2 days | - | Indexer Hub |
|
|
| flaresolverr | Running | - | 2 days | - | CF Bypass |
|
|
| beszel-agent | Running | - | 3 weeks | - | Monitor Agent |
|
|
| epic_dewdney | Running | Unhealthy | 2 days | - | NordVPN #1 |
|
|
| frosty_gates | Running | Unhealthy | 2 days | - | NordVPN #2 |
|
|
| ix-plex-permissions-1 | Exited (0) | - | 3 days ago | - | Init (Plex) |
|
|
|
|
---
|
|
|
|
## Detailed Container Documentation
|
|
|
|
### Media & Streaming Stack
|
|
|
|
#### Plex Media Server (ix-plex-plex-1)
|
|
|
|
```
|
|
Status: Running (Healthy) ✓
|
|
Uptime: 3 days
|
|
Image: plexinc/pms-docker:1.42.2.10156-f737b826c
|
|
Container ID: 3a2f37cf7910
|
|
Created: 2025-12-12 19:30:02
|
|
Size: 354MB
|
|
```
|
|
|
|
**Network Configuration**:
|
|
- Network: `ix-plex_default` (Compose bridge network)
|
|
- Exposed Ports:
|
|
- `32400/tcp` → `0.0.0.0:32400` (Primary web UI)
|
|
- `1900/udp` (SSDP discovery for UPnP)
|
|
- `8324/tcp` (Plex Companion protocol)
|
|
- `32412-32414/udp` (Server communication)
|
|
- `32469/tcp` (DLNA media server)
|
|
|
|
**Storage & Volumes**:
|
|
- Config: `/mnt/.ix-apps/app_configs/plex/`
|
|
- Media Library: `/mnt/Vauly/media/` (mounted from ZFS pool)
|
|
- Transcode Cache: Anonymous volumes for temporary encoding
|
|
|
|
**Health Check**: Enabled and passing
|
|
- Confirms proper Plex daemon operation
|
|
- Verifies network accessibility
|
|
- Validates media database integrity
|
|
|
|
**Application Metadata**:
|
|
- Catalog Train: `stable`
|
|
- App Version: 1.2.19
|
|
- Chart Version: 1.42.2.10156-f737b826c
|
|
- Maintainer: TrueNAS
|
|
- Last Updated: 2025-07-23
|
|
|
|
**Connected Services**: Communicates with Sonarr, Radarr, Bazarr via `ix-plex_default` network for direct library updates.
|
|
|
|
**Security Context**: Runs as root (uid 0, gid 0) with supplementary group `apps`. Has full access to media paths and Docker socket.
|
|
|
|
**Web UI Access**: `http://<truenas-ip>:32400/web`
|
|
|
|
---
|
|
|
|
### *Arr Stack: Media Automation Suite
|
|
|
|
The *arr stack provides integrated media discovery, acquisition, and management for Plex.
|
|
|
|
#### Sonarr (arr-stack-sonarr-1)
|
|
|
|
```
|
|
Status: Running ✓
|
|
Uptime: 2 days
|
|
Image: lscr.io/linuxserver/sonarr:latest
|
|
Container ID: 3ef4c33c4303
|
|
Created: 2025-12-13 08:23:53
|
|
Size: 205MB
|
|
```
|
|
|
|
**Network**: `ix-plex_default` (bridge) - communicates with Plex, Radarr, Bazarr
|
|
|
|
**Exposed Port**:
|
|
- `8989/tcp` → `0.0.0.0:8989` (Web UI)
|
|
|
|
**Storage Paths**:
|
|
- TV shows: `/mnt/Vauly/media/tv`
|
|
- Monitoring: Configuration in `ix-plex_default` network context
|
|
- Temp/Cache: Anonymous volumes
|
|
|
|
**Function**: Monitors RSS feeds and indexers for new TV episodes. Automatically triggers downloads via Gluetun/Deluge when releases match specified criteria.
|
|
|
|
---
|
|
|
|
#### Radarr (arr-stack-radarr-1)
|
|
|
|
```
|
|
Status: Running ✓
|
|
Uptime: 2 days
|
|
Image: lscr.io/linuxserver/radarr:latest
|
|
Container ID: b717503fcc3d
|
|
Created: 2025-12-13 08:23:53
|
|
Size: 218MB
|
|
```
|
|
|
|
**Network**: `ix-plex_default` (bridge)
|
|
|
|
**Exposed Port**:
|
|
- `7878/tcp` → `0.0.0.0:7878` (Web UI)
|
|
|
|
**Storage Paths**:
|
|
- Movies: `/mnt/Vauly/media/movies`
|
|
- Configuration & Cache: Standard arr volumes
|
|
|
|
**Function**: Monitors movie release indexes and automatically manages movie acquisitions. Integrates with Bazarr for subtitle management.
|
|
|
|
---
|
|
|
|
#### Bazarr (arr-stack-bazarr-1)
|
|
|
|
```
|
|
Status: Running ✓
|
|
Uptime: 2 days
|
|
Image: lscr.io/linuxserver/bazarr:latest
|
|
Container ID: bcb36fb9aa89
|
|
Created: 2025-12-13 08:23:53
|
|
Size: 424MB (largest arr container)
|
|
```
|
|
|
|
**Network**: `ix-plex_default` (bridge)
|
|
|
|
**Exposed Port**:
|
|
- `6767/tcp` → `0.0.0.0:6767` (Web UI)
|
|
|
|
**Storage Paths**:
|
|
- Media library: Access to Radarr/Sonarr managed content
|
|
- Download directory: For subtitle file placement
|
|
- Configuration: Shared `ix-plex_default` context
|
|
|
|
**Function**: Monitors media added by Radarr/Sonarr and automatically downloads matching subtitles from OpenSubtitles, SubDB, and other sources. Supports multiple language priorities and format conversion.
|
|
|
|
**Integration**: Watches Sonarr/Radarr API for library changes and proactively downloads subtitles before media arrives at Plex.
|
|
|
|
---
|
|
|
|
### VPN & Torrent Infrastructure
|
|
|
|
#### Gluetun (VPN Gateway)
|
|
|
|
```
|
|
Status: Running (Unhealthy ⚠)
|
|
Uptime: 2 days
|
|
Image: qmcgaw/gluetun
|
|
Container ID: 26bc7cd665e9
|
|
Created: 2025-12-13 19:52:09
|
|
Size: 49.8MB
|
|
```
|
|
|
|
**Network**: `vpn-deluge_default` (Compose bridge network for VPN isolation)
|
|
|
|
**Exposed Ports**:
|
|
- `8112/tcp` → `0.0.0.0:8112` (SOCKS5 proxy for Deluge)
|
|
- `9696/tcp` → `0.0.0.0:9696` (VPN port forward notification)
|
|
- Internal: `8000/tcp, 8388/tcp, 8888/tcp, 8388/udp`
|
|
|
|
**Function**: Universal VPN client providing tunneled egress for Deluge and other services requiring anonymized connections. Supports multiple VPN providers (NordVPN, Mullvad, Private Internet Access, etc.).
|
|
|
|
**Health Status Analysis**:
|
|
- **Status**: UNHEALTHY (connection dropped or test failing)
|
|
- **Likely Causes**:
|
|
1. VPN provider authentication failure
|
|
2. VPN endpoint unreachable
|
|
3. Network interface misconfiguration
|
|
4. Credentials expired
|
|
5. Health check probe timeout
|
|
|
|
**Resolution Steps**:
|
|
1. Check VPN provider credentials in container environment
|
|
2. Verify network connectivity to VPN provider
|
|
3. Review container logs: `docker logs gluetun`
|
|
4. Restart container to re-establish connection
|
|
5. Test SOCKS proxy: `curl --socks5 localhost:8112 https://api.ipify.org`
|
|
|
|
---
|
|
|
|
#### Deluge (Torrent Client)
|
|
|
|
```
|
|
Status: Running ✓
|
|
Uptime: 2 days
|
|
Image: lscr.io/linuxserver/deluge
|
|
Container ID: e10aa1ce7cba
|
|
Created: 2025-12-13 19:52:10
|
|
Size: 151MB
|
|
```
|
|
|
|
**Network Configuration**: Routes through Gluetun VPN gateway
|
|
|
|
**Storage Paths**:
|
|
- Download staging: `/mnt/Vauly/media/downloads/`
|
|
- Watch directory: `/mnt/Vauly/media/incomplete/`
|
|
- Configuration: Shared `vpn-deluge_default` context
|
|
|
|
**Function**: BitTorrent client that tunnels all traffic through Gluetun for privacy. Downloads torrent files matching arr stack searches and stages them for sorting.
|
|
|
|
**Integration Flow**:
|
|
1. Prowlarr finds torrent match
|
|
2. Sonarr/Radarr adds torrent to Deluge
|
|
3. Deluge downloads via Gluetun VPN tunnel
|
|
4. Media moves to appropriate Plex folder
|
|
5. Bazarr adds subtitles
|
|
|
|
---
|
|
|
|
### Content Discovery & Indexing
|
|
|
|
#### Prowlarr (Indexer Aggregator)
|
|
|
|
```
|
|
Status: Running ✓
|
|
Uptime: 2 days
|
|
Image: lscr.io/linuxserver/prowlarr:latest
|
|
Container ID: 5c1edaf31660
|
|
Created: 2025-12-13 19:52:10
|
|
Size: 193MB
|
|
```
|
|
|
|
**Network**: Custom mounts (independent service, not bound to Compose network)
|
|
|
|
**Storage**: `/mnt/Vauly/media/` access for configuration
|
|
|
|
**Function**: Central indexer management hub. Provides unified interface to 1000+ torrent and usenet indexers. Integrates with Sonarr/Radarr via API.
|
|
|
|
**Architecture**:
|
|
- Acts as proxy between arr stack and multiple indexers
|
|
- Handles authentication & scraping for each indexer
|
|
- Provides single configuration point for Sonarr/Radarr
|
|
- Reduces duplicate work across arr services
|
|
|
|
---
|
|
|
|
#### FlareSolverr (Cloudflare Challenge Solver)
|
|
|
|
```
|
|
Status: Running ✓
|
|
Uptime: 2 days
|
|
Image: flaresolverr/flaresolverr:latest
|
|
Container ID: b9c3baf08da4
|
|
Created: 2025-12-13 21:37:11
|
|
Size: 1.02GB
|
|
```
|
|
|
|
**Network**: Custom mounts (independent service)
|
|
|
|
**Exposed Port**: Internal only (default 8191, browser automation endpoint)
|
|
|
|
**Storage**: 1 local volume for session/cache data
|
|
|
|
**Function**: Solves Cloudflare challenges using browser automation (Chromium). Allows Prowlarr to access Cloudflare-protected indexer sites.
|
|
|
|
**Workflow**:
|
|
1. Prowlarr attempts to access indexer
|
|
2. Indexer returns Cloudflare challenge
|
|
3. Prowlarr redirects request to FlareSolverr
|
|
4. FlareSolverr uses headless browser to solve challenge
|
|
5. Challenge cookie passed back to Prowlarr
|
|
6. Successful indexer access for searching
|
|
|
|
**Resource Impact**: High (1GB+ due to Chromium bundle). Consider resource-constrained environments.
|
|
|
|
---
|
|
|
|
### Infrastructure Management
|
|
|
|
#### Dockge (Docker Compose Manager)
|
|
|
|
```
|
|
Status: Running (Healthy ✓)
|
|
Uptime: 3 days
|
|
Image: louislam/dockge:1.5.0
|
|
Container ID: 45f46edd8923
|
|
Created: 2025-12-12 19:11:22
|
|
Size: 755MB
|
|
```
|
|
|
|
**Network**: `ix-dockge_default` (isolated Compose bridge network)
|
|
|
|
**Exposed Port**:
|
|
- `31014/tcp` → `0.0.0.0:31014` (Web UI)
|
|
- Internal: `5001/tcp` (inter-container communication)
|
|
|
|
**Privileged Mounts**:
|
|
- Docker socket: `/var/run/docker.sock` (R/W) - **High privilege**
|
|
- Configuration: `/mnt/.ix-apps/app_configs/dockge/`
|
|
- App paths: `/mnt/.ix-apps/docker/`
|
|
|
|
**Security Capabilities**: CHOWN, DAC_OVERRIDE, FOWNER, KILL, SETFCAP, SETGID, SETPCAP, SETUID
|
|
- **Warning**: Extensive system permissions required for Docker manipulation
|
|
|
|
**Web UI Access**:
|
|
- URL: `http://<truenas-ip>:31014`
|
|
- Features: Compose file editor, container logs, real-time monitoring, deployment management
|
|
|
|
**Function**: Provides graphical interface for Docker Compose management on TrueNAS. Central point for monitoring and updating container stacks.
|
|
|
|
**Use Cases**:
|
|
- View running compose projects
|
|
- Edit docker-compose.yml files
|
|
- Deploy/update containers
|
|
- View logs in real-time
|
|
- Manage container lifecycle
|
|
- Network monitoring
|
|
|
|
---
|
|
|
|
### Monitoring & System Observability
|
|
|
|
#### Beszel Agent (System Monitoring)
|
|
|
|
```
|
|
Status: Running ✓
|
|
Uptime: 3 weeks (since last TrueNAS restart)
|
|
Image: henrygd/beszel-agent
|
|
Container ID: b5842204dad7
|
|
Created: 2025-09-21 20:18:12
|
|
Size: 8.35MB
|
|
```
|
|
|
|
**Network**: `host` (direct host network access, no isolation)
|
|
|
|
**Mounts**:
|
|
- Docker socket: `/var/run/docker.sock` (read-only)
|
|
- Host system: Full access
|
|
|
|
**Function**: Lightweight system metrics collection agent. Collects CPU, memory, disk, and network statistics. Reports to Beszel central hub for unified infrastructure monitoring across multiple hosts.
|
|
|
|
**Data Collection**:
|
|
- CPU usage per core
|
|
- Memory (used/available/swap)
|
|
- Disk I/O and space utilization
|
|
- Network throughput
|
|
- Container-level metrics (via Docker socket)
|
|
- System load averages
|
|
- Uptime tracking
|
|
|
|
**Integration**: Communicates with Beszel central server (hosted elsewhere) via API for metrics aggregation and alerting.
|
|
|
|
---
|
|
|
|
### VPN Client Instances
|
|
|
|
Two standalone NordVPN/WireGuard client containers for testing or geographic diversity.
|
|
|
|
#### epic_dewdney (NordVPN Instance #1)
|
|
|
|
```
|
|
Status: Running (Unhealthy ⚠)
|
|
Uptime: 2 days
|
|
Image: ghcr.io/bubuntux/nordlynx
|
|
Container ID: c2fbbec99464
|
|
Created: 2025-12-13 17:24:50
|
|
Size: 31.7MB
|
|
```
|
|
|
|
**Network**: `bridge` (standard Docker bridge, not Compose-managed)
|
|
|
|
**Function**: Independent NordVPN WireGuard tunnel. Likely used for specific use cases or testing.
|
|
|
|
**Health Status**: Unhealthy - VPN connection issue
|
|
|
|
---
|
|
|
|
#### frosty_gates (NordVPN Instance #2)
|
|
|
|
```
|
|
Status: Running (Unhealthy ⚠)
|
|
Uptime: 2 days
|
|
Image: ghcr.io/bubuntux/nordlynx
|
|
Container ID: a61438137ff9
|
|
Created: 2025-12-13 17:17:26
|
|
Size: 31.7MB
|
|
```
|
|
|
|
**Network**: `bridge` (standard Docker bridge)
|
|
|
|
**Function**: Second independent NordVPN tunnel instance
|
|
|
|
**Health Status**: Unhealthy - VPN connection issue
|
|
|
|
**Analysis**: Both instances reporting unhealthy likely indicates a broader issue:
|
|
- NordVPN provider credentials misconfigured
|
|
- Network connectivity issue affecting both
|
|
- WireGuard kernel module not loaded
|
|
- Latest NordVPN API endpoint changes
|
|
|
|
---
|
|
|
|
### Initialization & Utility Containers
|
|
|
|
#### ix-plex-permissions-1 (Plex Permission Setup)
|
|
|
|
```
|
|
Status: Exited (0) ✓ - Completed Successfully
|
|
Uptime: Exited 3 days ago
|
|
Image: ixsystems/container-utils:1.0.2
|
|
Container ID: 38c6a6005997
|
|
Created: 2025-12-12 19:30:02
|
|
Size: 120MB
|
|
```
|
|
|
|
**Network**: `none` (no network access needed)
|
|
|
|
**Mounts**:
|
|
- Plex volumes (R/W) for permission setting
|
|
- Plex library mount (R/O) for verification
|
|
|
|
**Function**: Short-lived initialization container that sets proper file permissions on Plex volumes after deployment. Runs once at Plex startup, then exits.
|
|
|
|
**Status**: Normal behavior (exit code 0 indicates successful completion)
|
|
|
|
---
|
|
|
|
## Docker Networks
|
|
|
|
| Network Name | Driver | Type | Connected Containers | Created |
|
|
|--------------|--------|------|----------------------|---------|
|
|
| **ix-plex_default** | bridge | Compose | Plex, Sonarr, Radarr, Bazarr | 2025-12-12 |
|
|
| **ix-dockge_default** | bridge | Compose | Dockge | 2025-12-12 |
|
|
| **vpn-deluge_default** | bridge | Compose | Gluetun, Deluge | 2025-12-13 |
|
|
| **bridge** | bridge | System | epic_dewdney, frosty_gates | 2025-11-24 |
|
|
| **host** | host | System | Beszel Agent | Built-in |
|
|
| **none** | null | System | ix-plex-permissions-1 (exited) | Built-in |
|
|
|
|
**Network Topology Notes**:
|
|
- **ix-plex_default**: Media stack (streaming + acquisition)
|
|
- **ix-dockge_default**: Infrastructure management (isolated)
|
|
- **vpn-deluge_default**: Torrent infrastructure (VPN tunneled)
|
|
- **bridge**: Legacy/standalone VPN instances
|
|
- **host**: Host-level monitoring (direct system access)
|
|
|
|
---
|
|
|
|
## Storage Architecture
|
|
|
|
### Volume Hierarchy
|
|
|
|
```
|
|
/mnt/Vauly/ (Primary ZFS Pool)
|
|
├── media/
|
|
│ ├── tv/ ← Sonarr output
|
|
│ ├── movies/ ← Radarr output
|
|
│ ├── music/ ← Future streaming
|
|
│ ├── downloads/ ← Deluge staging
|
|
│ └── incomplete/ ← Torrent in-progress
|
|
│
|
|
/mnt/.ix-apps/ (TrueNAS App Management)
|
|
├── app_configs/
|
|
│ ├── plex/
|
|
│ │ ├── metadata.yaml
|
|
│ │ └── versions/1.2.19/ ← Current version config
|
|
│ ├── dockge/
|
|
│ │ ├── metadata.yaml
|
|
│ │ ├── user_config.yaml ← Custom settings
|
|
│ │ └── versions/1.2.14/
|
|
│ ├── beszel/
|
|
│ ├── paperless-ngx/ ← Installed but unused
|
|
│ └── open-speed-test/ ← Installed but unused
|
|
│
|
|
├── docker/
|
|
│ └── volumes/
|
|
│ ├── <hash>/ ← Anonymous volumes
|
|
│ ├── <hash>/ ← Plex libraries
|
|
│ ├── <hash>/ ← Database stores
|
|
│ └── ... (6 total)
|
|
```
|
|
|
|
### Volume-to-Container Mapping
|
|
|
|
| Volume | Containers | Access Mode | Purpose |
|
|
|--------|------------|-------------|---------|
|
|
| `/mnt/Vauly/` | Plex, Sonarr, Radarr, Bazarr, Deluge, Prowlarr | R/W | Media files & configuration |
|
|
| `/mnt/.ix-apps/app_configs/plex/` | Plex | R/W | Plex database and library metadata |
|
|
| `/mnt/.ix-apps/docker/volumes/*` | Ix-apps managed | R/W | App-specific persistent data |
|
|
| `/var/run/docker.sock` | Dockge, Beszel | R/W (Dockge), R/O (Beszel) | Docker daemon communication |
|
|
| Anonymous volumes | Various | R/W | Temporary/cache data |
|
|
|
|
---
|
|
|
|
## Health & Status Analysis
|
|
|
|
### Running State Summary
|
|
|
|
```
|
|
Total Containers: 13
|
|
├── Running: 10
|
|
│ ├── Healthy: 2 (Plex, Dockge - confirmed)
|
|
│ ├── Unhealthy: 3 (Gluetun, epic_dewdney, frosty_gates - VPN issues)
|
|
│ └── Unknown: 5 (arr stack, Prowlarr, FlareSolverr, Deluge, Beszel)
|
|
│
|
|
└── Not Running: 3
|
|
├── Exited (0): 1 (ix-plex-permissions-1 - normal completion)
|
|
├── Exited (non-0): 0
|
|
└── Removed: 2 (Paperless-ngx, Open Speed Test)
|
|
```
|
|
|
|
### Health Check Analysis
|
|
|
|
#### Healthy Containers
|
|
1. **Plex** - Health check passing, server responsive
|
|
2. **Dockge** - Web UI accessible, container management functional
|
|
|
|
#### Unhealthy Containers (VPN-Related Issues)
|
|
|
|
**Gluetun Analysis**:
|
|
- Service started successfully 2 days ago
|
|
- Health check began failing shortly after
|
|
- Likely: VPN provider connectivity issue, expired credentials, or health check configuration too strict
|
|
|
|
**NordVPN Instances (epic_dewdney, frosty_gates)**:
|
|
- Both report unhealthy simultaneously
|
|
- Suggests shared cause (VPN provider change, API issue, etc.)
|
|
- Not directly impacting core services (isolated instances)
|
|
|
|
**Recommendation**: These VPN issues don't affect Plex/arr-stack operation but should be resolved for proper functionality.
|
|
|
|
#### Unknown Status Containers
|
|
|
|
These containers don't have explicit health checks configured but appear to be running:
|
|
- Sonarr, Radarr, Bazarr, Deluge, Prowlarr, FlareSolverr, Beszel Agent
|
|
|
|
To improve visibility, consider adding health checks to these services in docker-compose configurations.
|
|
|
|
---
|
|
|
|
## TrueNAS App Catalog Status
|
|
|
|
### Installed & Running
|
|
|
|
| App | Version | Status | Portal |
|
|
|-----|---------|--------|--------|
|
|
| Plex | 1.2.19 | Installed & Running | http://192.168.2.150:32400/web |
|
|
| Dockge | 1.2.14 | Installed & Running | http://192.168.2.150:31014/ |
|
|
| Beszel | 1.0.0 | Custom app, running | N/A (agent only) |
|
|
|
|
### Installed but Unused/Not Running
|
|
|
|
| App | Version | Status | Reason |
|
|
|-----|---------|--------|--------|
|
|
| Open Speed Test | 1.0.21 | Installed | Not actively used |
|
|
| Paperless-ngx | 1.3.27 | Installed | Configuration may be incomplete |
|
|
|
|
### Available for Installation
|
|
|
|
Many more apps available in TrueNAS community/stable catalogs:
|
|
- **Media**: Jellyfin, Kaleidescape, MyMediaforMass
|
|
- **Productivity**: LibreOffice, Nextcloud, Syncthing
|
|
- **Database**: PostgreSQL, MongoDB, Elasticsearch
|
|
- **Utilities**: Uptime Kuma, Authelia, VaultWarden
|
|
|
|
---
|
|
|
|
## Disaster Recovery & Backup
|
|
|
|
### Export Location & Contents
|
|
|
|
```
|
|
/home/jramos/truenas/disaster-recovery/truenas-apps-export-20251216-143515/
|
|
├── exports/
|
|
│ └── apps/
|
|
│ ├── docker-containers.json ← 13 containers + metadata
|
|
│ ├── docker-containers.txt ← Human-readable format
|
|
│ ├── docker-images.json ← 12 images + details
|
|
│ ├── docker-networks.json ← 6 networks configuration
|
|
│ ├── docker-volumes.json ← All volume definitions
|
|
│ ├── docker-compose-projects.json ← Compose project metadata
|
|
│ ├── app_configs_list.txt ← Directory tree
|
|
│ ├── app_mounts_list.txt ← Mount point listing
|
|
│ ├── docker_sizes.txt ← Storage footprint
|
|
│ └── containers/ ← Individual container exports
|
|
│ ├── flaresolverr.json
|
|
│ ├── prowlarr.json
|
|
│ ├── deluge.json
|
|
│ ├── gluetun.json
|
|
│ ├── epic_dewdney.json
|
|
│ ├── frosty_gates.json
|
|
│ ├── arr-stack-*.json (3 files)
|
|
│ ├── ix-plex-*.json (2 files)
|
|
│ ├── ix-dockge-dockge-1.json
|
|
│ └── beszel-agent.json
|
|
│
|
|
└── configs/
|
|
└── apps/
|
|
└── metadata.yaml ← TrueNAS apps catalog metadata
|
|
```
|
|
|
|
### Recovery Procedures
|
|
|
|
#### Restore Container Configuration
|
|
```bash
|
|
# View container export
|
|
cat /home/jramos/truenas/disaster-recovery/truenas-apps-export-20251216-143515/exports/apps/docker-containers.json | jq '.[] | {name: .Names, image: .Image, status: .Status}'
|
|
|
|
# Extract specific container details
|
|
jq '.[] | select(.Names | contains("plex"))' /home/jramos/truenas/disaster-recovery/truenas-apps-export-20251216-143515/exports/apps/docker-containers.json
|
|
```
|
|
|
|
#### Restore from TrueNAS UI
|
|
1. Access TrueNAS Web UI → Apps
|
|
2. For each app in the inventory:
|
|
- Click "Install" from appropriate catalog (stable/community)
|
|
- Upload saved configuration if available
|
|
- Configure environment variables and mounts
|
|
- Deploy
|
|
|
|
#### Rebuild Compose Projects
|
|
```bash
|
|
# Export compose definitions from Dockge
|
|
# Via Dockge UI: http://192.168.2.150:31014/
|
|
# Or via API/Docker daemon
|
|
|
|
# Restore Docker volumes (requires separate process)
|
|
# Consider using:
|
|
# - docker volume restore (from backups)
|
|
# - ZFS snapshot rollback
|
|
# - Manual data copy from backup source
|
|
```
|
|
|
|
#### Restore Media Library
|
|
This requires separate backup strategy:
|
|
1. Restore ZFS snapshots to `/mnt/Vauly/`
|
|
2. Or restore from external backup source
|
|
3. Or resync from original media sources
|
|
|
|
---
|
|
|
|
## Configuration Recommendations
|
|
|
|
### Immediate Actions Required
|
|
|
|
1. **Fix VPN Connectivity** (Priority: Medium)
|
|
- Investigate Gluetun unhealthy status
|
|
- Check Gluetun logs: `docker logs gluetun`
|
|
- Verify VPN provider credentials
|
|
- Consider restarting service
|
|
- Verify health check logic not too restrictive
|
|
|
|
2. **Monitor NordVPN Instances** (Priority: Low)
|
|
- Decide if these are needed
|
|
- If not, consider removing to free resources
|
|
- If needed, diagnose and fix connection issues
|
|
|
|
3. **Add Health Checks** (Priority: Medium)
|
|
- Sonarr: HTTP check on port 8989
|
|
- Radarr: HTTP check on port 7878
|
|
- Bazarr: HTTP check on port 6767
|
|
- Prowlarr: HTTP check on default port
|
|
- FlareSolverr: Browser automation endpoint check
|
|
- Deluge: Connection pool check
|
|
|
|
### Security Hardening
|
|
|
|
1. **Network Segmentation**
|
|
- Consider separate VLAN for media services
|
|
- Restrict Plex port exposure (currently 0.0.0.0:32400)
|
|
- Implement firewall rules per service
|
|
|
|
2. **Access Control**
|
|
- Add authentication to Dockge (currently exposed)
|
|
- Secure Prowlarr/FlareSolverr endpoints
|
|
- Consider reverse proxy with OAuth/OIDC
|
|
|
|
3. **Secrets Management**
|
|
- Use TrueNAS Secrets for environment variables
|
|
- Don't commit API keys to git
|
|
- Rotate credentials regularly
|
|
- Use dedicated VPN accounts for each service
|
|
|
|
4. **Resource Limits**
|
|
```yaml
|
|
# Add to docker-compose
|
|
services:
|
|
plex:
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: '4'
|
|
memory: 4G
|
|
reservations:
|
|
cpus: '2'
|
|
memory: 2G
|
|
```
|
|
|
|
5. **Logging & Monitoring**
|
|
- Enable Docker logging drivers (json-file with rotation)
|
|
- Forward logs to central logging (ELK, Loki)
|
|
- Implement alerting on unhealthy containers
|
|
- Track container restart patterns
|
|
|
|
### Performance Optimization
|
|
|
|
1. **Image Updates**
|
|
```bash
|
|
# Check for newer image versions
|
|
docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Created}}"
|
|
|
|
# Pull updates
|
|
docker pull lscr.io/linuxserver/sonarr:latest
|
|
```
|
|
|
|
2. **Cleanup Unused Resources**
|
|
```bash
|
|
# Remove dangling images
|
|
docker image prune -a -f
|
|
|
|
# Remove unused volumes
|
|
docker volume prune -f
|
|
|
|
# Remove exited containers
|
|
docker container prune -f
|
|
```
|
|
|
|
3. **Storage Optimization**
|
|
- Monitor `/mnt/Vauly/` usage
|
|
- Implement automated cleanup (old downloads)
|
|
- Consider compression for archive media
|
|
|
|
---
|
|
|
|
## Related Documentation
|
|
|
|
### In This Repository
|
|
- **README.md**: Overview and quick start
|
|
- **INDEX.md**: Complete file navigation and reference
|
|
- **CLAUDE.md**: AI assistant guidelines and architecture
|
|
- **scripts/collect-truenas-apps.sh**: Collection script source code
|
|
- **disaster-recovery/**: All exported configurations
|
|
|
|
### External Resources
|
|
- **TrueNAS Docs**: https://www.truenas.com/docs/scale/
|
|
- **Docker Docs**: https://docs.docker.com/
|
|
- **Plex Support**: https://support.plex.tv/
|
|
- **Arr Stack Wikis**:
|
|
- Sonarr: https://wiki.servarr.com/sonarr
|
|
- Radarr: https://wiki.servarr.com/radarr
|
|
- Bazarr: https://wiki.servarr.com/bazarr
|
|
- Prowlarr: https://wiki.servarr.com/prowlarr
|
|
|
|
---
|
|
|
|
## Appendix: Raw Data Access
|
|
|
|
### Query Individual Container Details
|
|
```bash
|
|
# All containers in JSON
|
|
jq . /home/jramos/truenas/disaster-recovery/truenas-apps-export-20251216-143515/exports/apps/docker-containers.json
|
|
|
|
# Single container
|
|
jq '.[] | select(.Names == "ix-plex-plex-1")' /home/jramos/truenas/disaster-recovery/truenas-apps-export-20251216-143515/exports/apps/docker-containers.json
|
|
|
|
# Container IDs and names only
|
|
jq '.[] | {id: .ID, name: .Names}' /home/jramos/truenas/disaster-recovery/truenas-apps-export-20251216-143515/exports/apps/docker-containers.json
|
|
```
|
|
|
|
### Network Configuration Access
|
|
```bash
|
|
jq . /home/jramos/truenas/disaster-recovery/truenas-apps-export-20251216-143515/exports/apps/docker-networks.json
|
|
```
|
|
|
|
### Volume Inventory
|
|
```bash
|
|
jq . /home/jramos/truenas/disaster-recovery/truenas-apps-export-20251216-143515/exports/apps/docker-volumes.json
|
|
```
|
|
|
|
### Docker Images
|
|
```bash
|
|
jq . /home/jramos/truenas/disaster-recovery/truenas-apps-export-20251216-143515/exports/apps/docker-images.json
|
|
```
|
|
|
|
### App Metadata
|
|
```bash
|
|
cat /home/jramos/truenas/disaster-recovery/truenas-apps-export-20251216-143515/configs/apps/metadata.yaml
|
|
```
|
|
|
|
---
|
|
|
|
**Document Version**: 1.0
|
|
**Last Updated**: 2025-12-16 14:35:15
|
|
**Export Source**: TrueNAS Scale at 192.168.2.150
|
|
**Maintained By**: Scribe (Documentation Agent)
|
|
**Format**: Markdown
|
|
**License**: Personal Use (Same as Repository)
|