askill
truenas-docker-ops

truenas-docker-opsSafety 85Repository

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 12/31/2025

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

82/100Analyzed 2/13/2026

A highly specific but well-structured operational playbook for a personal TrueNAS setup. It includes precise paths, commands, and database schemas, making it extremely actionable for the owner but not reusable externally due to hardcoded paths and infrastructure references.

85
95
10
90
95

Metadata

Licenseunknown
Version-
Updated12/31/2025
Publisherthurstonsand

Tags

databasesecurity