# Project Mycelium Ops Method ## Introduction We present simple CLI tools to deploy the Project Mycelium. ## Tools You can use quick utility tools gits from ucli and pal from scottyeager (see https://github.com/ucli-tools, https://github.com/scottyeager/pal) - When any step is confirmed to work, save as version management control ``` git add . && pal /commit --yolo && git push ``` - To push as a PR when many commits create a whole step/task in the roadmap/todo ``` gits pr create --title 'Update' --base development && gits pr merge --pr-number $(gits pr-latest) ``` - To update the website from e.g. development using Makefile ``` make update-dev ``` - This will ssh into the server hosting the marketplace on dev and prod (dev.threefold.pro, threefold.pro) ## Prerequisites - git, make - Docker or Podman (if containerizing locally) - SSH access to deployment hosts (dev/prod) - kubectl/helm if deploying to Kubernetes - Config/secrets available (Stripe keys, PostgREST endpoint, DB credentials) ## Environments - Dev: dev.threefold.pro - Prod: threefold.pro ## Configuration - Environment variables (examples): - STRIPE_SECRET_KEY, STRIPE_PUBLISHABLE_KEY - POSTGREST_URL - DATABASE_URL or connection parameters - APP_ENV (development|production) - Provide via .env files, system service env files, or Kubernetes Secrets as appropriate. ## Deployment Flows - Local - Build/run the app locally; verify basic UI and flows. - Dev - Use: `make update-dev` (as provided above) - Verify deployment (see Verification) - Prod - Follow the same deployment pattern as dev against prod host or use corresponding prod target if defined. ## Verification - Health: open the site on the target environment (dev.threefold.pro or threefold.pro) - Basic smoke: - Load homepage and key pages - Add item to cart - Run a test checkout with Stripe test keys (on dev) ## Rollback - Identify last known good commit/tag - Revert: `git revert ` or checkout the tag/commit - Redeploy using the same steps (e.g., `make update-dev`) ## Operations - Logs: inspect application/server logs on target hosts; if running on Kubernetes, use `kubectl logs` - Monitoring: confirm metrics/alerts if configured - Backups: ensure regular DB and config backups and test restore procedures ## Troubleshooting - Missing/incorrect env vars → verify configuration section - SSH failures → validate keys and host reachability - Stripe errors → confirm test vs live keys per environment ## Standard git equivalents - Save work (equivalent to pal): ``` git add -A && git commit -m "" && git push ``` - Create a PR: push your branch and open a PR on your Git hosting provider targeting `development` (or relevant branch) ## Checklists - Pre-deploy: correct branch, env config present, backup taken (if needed) - Post-deploy: site loads, smoke tests pass, logs clean of new errors ## References - Dev design method: `../../../dev/method/current/design_method.md` - DevOps overview: `../../../devops.md` - Architecture & Roadmap: `../../../dev/design/current/projectmycelium-roadmap.md` ```mermaid flowchart LR Local[Local] --> Dev[Dev] Dev --> Prod[Prod] Dev -. smoke/verify .-> Dev Prod -. checks .-> Prod ```