Claude-code-plugins-plus flyio-core-workflow-b
install
source · Clone the upstream repo
git clone https://github.com/jeremylongshore/claude-code-plugins-plus-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/jeremylongshore/claude-code-plugins-plus-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/saas-packs/flyio-pack/skills/flyio-core-workflow-b" ~/.claude/skills/jeremylongshore-claude-code-plugins-plus-flyio-core-workflow-b && rm -rf "$T"
manifest:
plugins/saas-packs/flyio-pack/skills/flyio-core-workflow-b/SKILL.mdsource content
Fly.io Core Workflow B: Postgres, Volumes & Networking
Overview
Set up Fly Postgres, persistent Fly Volumes, and private networking between apps. Fly Postgres runs as a regular Fly app with automated replication. Volumes provide persistent NVMe storage attached to specific machines.
Instructions
Step 1: Create Fly Postgres
# Create a Postgres cluster fly postgres create --name my-db --region iad --vm-size shared-cpu-1x --volume-size 10 # Attach to your app (sets DATABASE_URL secret automatically) fly postgres attach my-db -a my-app # Connect directly fly postgres connect -a my-db # psql> SELECT version(); # Proxy to local machine for dev tools fly proxy 5432 -a my-db # Now connect: psql postgres://postgres:password@localhost:5432
Step 2: Create Persistent Volumes
# Create a volume (same region as your machine) fly volumes create data --size 10 --region iad -a my-app # List volumes fly volumes list -a my-app # Mount in fly.toml
# fly.toml [mounts] source = "data" destination = "/data"
# Deploy to pick up mount fly deploy # Verify mount inside machine fly ssh console -C "df -h /data"
Step 3: Private Networking (6PN)
# Apps in the same org can reach each other via .internal DNS # my-app can reach my-db at: my-db.internal:5432 # Internal DNS format: <app-name>.internal # Machine-specific: <machine-id>.vm.<app-name>.internal # Example: connect from app code DATABASE_URL=postgres://postgres:password@my-db.internal:5432/my_db
// Access internal services (no public internet) const dbUrl = `postgres://postgres:${process.env.DB_PASSWORD}@my-db.internal:5432/mydb`; const apiUrl = `http://my-api.internal:3000/health`; // Internal HTTP
Step 4: Postgres Backups and Failover
# List backups fly postgres barman list-backups -a my-db # Create manual backup fly postgres barman backup -a my-db # Check replication status fly postgres barman check -a my-db # Failover to standby (if primary fails) fly postgres failover -a my-db
Error Handling
| Error | Cause | Solution |
|---|---|---|
| Volume in different region | Create volume in same region as machine |
| App not running | Check |
| Not yet created | Run via |
| Volume full | Extend: |
Resources
Next Steps
For common errors, see
flyio-common-errors.