Files
claudetools/.claude/skills/seafile/SKILL.md
Howard Enos fa4867580f sync: auto-sync from HOWARD-HOME at 2026-07-05 15:29:59
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-07-05 15:29:59
2026-07-05 15:30:28 -07:00

4.1 KiB

name, description
name description
seafile Read-only inventory of ACG's Seafile Pro server (the SeaCloud / SeaDrive backup backend on Jupiter): who has an account, per-user storage used, libraries, and which GuruRMM endpoints actually run the SeaDrive/Seafile client. Built for GPS backup verification. Triggers: seafile, seacloud, seadrive, sync.azcomputerguru, who backs up to seafile, seafile usage.

Seafile (SeaCloud / SeaDrive) Skill

Read-only client for ACG's live Seafile Pro server — the backend clients call "SeaCloud" (the server) and "SeaDrive" (the desktop virtual-drive client). Runs in Docker on Jupiter (172.16.3.20:8082, public https://sync.azcomputerguru.com). Answers the GPS backup-audit question: which customers back up here and how much data do they hold — and, with --rmm, which enrolled machines actually run the client.

This skill is one of the backup-verification siblings alongside b2 (Backblaze), owncloud, and datto-workplace. It never writes.

Running

SEAFILE=".claude/skills/seafile/scripts/seafile.py"
py "$SEAFILE" status                 # server reachable + version
py "$SEAFILE" usage                  # per-user storage + library count (audit view)
py "$SEAFILE" users [--inactive]     # all accounts + used/quota + last login
py "$SEAFILE" libraries              # all libraries (repos) + owner + size
py "$SEAFILE" devices [--user EMAIL] # desktop/sync devices the server has seen
py "$SEAFILE" audit                  # active accounts with data (the GPS slice)
py "$SEAFILE" audit --rmm            # + cross-check GuruRMM endpoints for the client
py "$SEAFILE" audit --client Russo --rmm --json

Add --json to any command for machine-readable output. --url overrides the server base (default is the internal Docker endpoint; use the public host when off-LAN).

Credentials

Loaded at runtime from the SOPS vault (never hardcoded): services/seafile-pro.sops.yaml -> credentials.username / credentials.password (the Seafile admin account). Auth is POST /api2/auth-token/ (form) -> a long-lived API token used as Authorization: Token <tok>. The token is a secret; it is cached at .claude/skills/seafile/.cache/token.json (gitignored, mode 0600) and re-fetched weekly or on a 401/403.

What the data means

  • quota_usage (bytes) is the authoritative per-account storage used. A user with is_active: true and non-zero usage is actively backing up here.
  • libraries (repos) are the sync roots; size + file_count + last_modified show freshness. usage rolls libraries up per owner.
  • Accounts are emails, so the customer is usually obvious from the domain (e.g. russo@rrs-law.com = Russo Law, greg@gstoltzlaw.com = Stoltz Law).
  • As of the build (2026-07-05) only a handful of accounts hold data (~5 TB total) — Seafile is used by a few clients, not the whole GPS base.

The "both" cross-check (--rmm)

Server-side tells you who has an account; --rmm adds the endpoint half. It logs in to GuruRMM (infrastructure/gururmm-server.sops.yaml), and for each agent (optionally filtered by --client) runs a read-only detection PowerShell that reports installed products / running processes / config folders matching Seafile / SeaDrive. An agent is reported only if the client is actually present. Detection dispatches a command to live endpoints — scope with --client rather than sweeping all 350+ agents unless you mean to.

Notes / gotchas

  • Base defaults to http://172.16.3.20:8082 (direct, no Cloudflare); set SEAFILE_URL=https://sync.azcomputerguru.com when off the LAN/Tailscale.
  • devices depends on the admin devices endpoint, which varies by Seafile version; it returns [] (with a note) rather than failing if unsupported.
  • Shared plumbing (repo-root resolve, vault read, GuruRMM client + endpoint detection) lives in .claude/scripts/backup_common.py, used by all three server-backup skills. Detection patterns must be precise per backend — this skill uses Seafile/SeaDrive.
  • Seafile Pro also has a MySQL backend on Jupiter (vault credentials.database.*) for deeper queries; not used here (the admin API covers the audit needs).