diff --git a/README.md b/README.md index 358ec12..e4e42a3 100644 --- a/README.md +++ b/README.md @@ -220,24 +220,35 @@ WantedBy=multi-user.target ### Container Deployment +All nodes use `podman-compose` with role-specific compose files. + ```sh -# Build +# Build image podman build -t ppf:latest . -# Run with persistent storage -# IMPORTANT: Use ppf.py as entry point (runs both harvester + validator) +# Run standalone (single node) podman run -d --name ppf \ --network=host \ -v ./data:/app/data:Z \ -v ./config.ini:/app/config.ini:ro \ ppf:latest python ppf.py - -# Generate systemd unit -podman generate systemd --name ppf --files --new ``` Note: `--network=host` required for Tor access at 127.0.0.1:9050. +### Operations Toolkit + +The `tools/` directory provides CLI wrappers for multi-node operations: + +```sh +ppf-deploy [targets...] # deploy code + restart containers +ppf-logs [node] # view container logs (-f to follow) +ppf-service [nodes...] # status / start / stop / restart +``` + +Handles syntax validation, role-aware file syncing (odin vs workers), +ownership fixes, and dynamic UID discovery. See `--help` on each tool. + ## Troubleshooting ### Low Success Rate