askill
truenas-docker-ops

truenas-docker-opsSafety 80Repository

Playbook for anything on the TrueNAS host — consult before touching services, data, or containers. Covers SSH entry, container interaction, and data/layout notes so you can operate safely on TrueNAS.

0 stars
1.2k downloads
Updated 2/7/2026

Package Files

Loading files...
SKILL.md

TrueNAS Docker Operations

Essentials

  • Connect: ssh truenas (auth pre-configured)
  • Stacks managed via Ansible in ansiblonomicon repo folder (in ansible/stacks/)
  • Deployed compose files: /mnt/performance/docker/stacks/<stack>/compose.yaml
  • Container configs: /mnt/performance/docker/<stack>/
  • Large media data: /mnt/capacity/watch/<container>/
  • Network/IP assignments: see individual compose files or ansible/inventory/group_vars/truenas.yml in ansiblonomicon

Common Commands

TaskCommand
List containersssh truenas docker ps
Filter containersssh truenas docker ps | grep <name>
View composessh truenas cat /mnt/performance/docker/stacks/<stack>/compose.yaml
View logsssh truenas docker logs <container>
Exec commandssh truenas docker exec -i <container> <command>
Inspectssh truenas docker inspect <container>

Deployment

Stacks are deployed via Ansible, not manually:

# From ansiblonomicon repo
poe truenas           # Full playbook
poe truenas -t stacks # Just stacks

but you can run ad-hoc commands against the docker containers/compose files on the truenas host. Changes will not be preserved unless they are made to the ansiblonomicon repo.

Anypod Data Layout

  • Host data root: /mnt/capacity/watch/anypod/data (binds to /data in container)
    • Media downloads: media/<feed_id>/
    • Transcripts: transcripts/<feed_id>/
    • DB: /data/db/anypod.db
  • DB tables (anypod.db):
    • feed (PK id; feed metadata, source info, timestamps, counters)
    • download (PK feed_id, id; per-episode info, status, transcript fields)
    • appstate (PK id; last_yt_dlp_update, other global state)

Helper Scripts

Python (handles nested heredoc/quoting)

scripts/docker_exec_python.sh <container> '<python_code>'

scripts/docker_exec_python.sh anypod '
import sqlite3, json
conn = sqlite3.connect("/data/db/anypod.db")
conn.row_factory = sqlite3.Row
rows = conn.execute("SELECT * FROM feed").fetchall()
print(json.dumps([dict(r) for r in rows], indent=2))
conn.close()
'

Note: Default interpreter is /app/.venv/bin/python (works for anypod). Override with CONTAINER_PYTHON:

CONTAINER_PYTHON=/usr/bin/python3 scripts/docker_exec_python.sh your-container 'print("hi")'

SQLite

scripts/docker_exec_sqlite.sh <container> <db_path> '<sql_query>'

scripts/docker_exec_sqlite.sh anypod /data/db/anypod.db '
SELECT feed_id, status, COUNT(*) AS count
FROM download
GROUP BY feed_id, status;
'

When to Use Scripts vs Direct

  • Scripts: Multi-line Python/SQL, complex quoting
  • Direct docker exec: Simple commands, logs, inspection

Quick Examples

# Is anypod running?
ssh truenas docker ps | grep anypod

# View anypod compose
ssh truenas cat /mnt/performance/docker/stacks/anypod/compose.yaml

# Query anypod DB
scripts/docker_exec_sqlite.sh anypod /data/db/anypod.db "SELECT * FROM feed;"

Install

Download ZIP
Requires askill CLI v1.0+

AI Quality Score

75/100Analyzed 2/13/2026

A comprehensive and highly actionable operational guide for a specific TrueNAS homelab environment. It details Docker management, file system layouts, and database interactions with clear commands and scripts. While excellent for its intended context, it is strictly internal and not reusable outside the specific repository and server setup.

80
95
10
88
92

Metadata

Licenseunknown
Version-
Updated2/7/2026
Publisherthurstonsand

Tags

databasesecurity