Skip to content

Cloudways, CraftCMS, and Google Cloud

VIDEO TRANSCRIPT | Recorded: 2025-12-19 | Verify against current system state

Abstract

This session covers the three main systems supporting the AANP main website (www.aanp.org): Cloudways for hosting, CraftCMS for content management, and Google Cloud for storage and APIs. Jeff demonstrates server management in Cloudways including SSH access and backups, CraftCMS administration including Freeform for forms and SEOmatic for search optimization, and Google Cloud project navigation for storage buckets and the geocoding API used by NP Finder.

Key Procedures

  • Cloudways login: Use IT Support account from 1Password with 2FA
  • Server vs Application in Cloudways: Server = VM (includes database), Application = can span multiple servers
  • Launch browser-based SSH terminal: Server → SSH Terminal button (no local setup needed)
  • CraftCMS files location: /public_html/ directory on server
  • Cloudways backups: Automatic daily, retained 7 days; on-demand backups available before major changes
  • Vertical scaling warning: Can scale UP anytime but CANNOT scale back down without creating new VM
  • SMTP configuration: SendGrid API keys installed - must configure on BOTH QA and Production servers
  • Cloudways Slack support: Premium plan includes dedicated Slack channel for fast support (2-3 minute response)
  • Support escalation: MightyCitizen first (via Teamwork) → Cloudways Slack → Cloudways live chat/ticket
  • CraftCMS plugins requiring attention: Freeform (forms), SEOmatic (SEO), SAML SSO (Flipbox - licensed)
  • Freeform spam management: Blanca checks daily for legitimate submissions marked as spam → release to continue processing
  • Freeform field limit: Previously 500-600 field limit (now resolved)
  • Freeform exports: One-time or scheduled (daily/weekly) CSV/Excel exports
  • Cloudflare Turnstile: Configured in Freeform settings for CAPTCHA
  • SEOmatic: Check SEO grades, override title/description/images per entry, configure Open Graph for social sharing
  • CraftCMS code repository: MightyCitizen uses Buddy (like Bitbucket) → synced nightly to AANP GitHub
  • Production deployment: Manual - click play button in Buddy pipeline (dev auto-deploys)
  • Google Cloud login: console.cloud.google.com as IT Support - select correct PROJECT first
  • Google Cloud projects: CraftCMS File Storage, Salesforce, NP Finder, Mobile App (deprecated)
  • CraftCMS storage bucket: ~$2/month - images, uploads, documents (PDFs with robots.txt noindex request)
  • Google Cloud billing PDF: Billing → Payments → Click month → Print/Download PDF (CSV not accepted by finance)
  • Geocoding API: Used by NP Finder and Salesforce practice sites - watch for spikes during imports
  • Disable worksite trigger during practice site imports to avoid bulk geocoding API calls

Notable Statements

  • 0:01:41 "The database lives on the same server as the website. So the MySQL server is set up directly on these virtual machines."
  • 0:04:35 "MightyCitizen uses a CICD process to push up changes. So if you make changes here, they're going to get overwritten when they get deployed."
  • 0:07:12 "Vertical scaling means I can go up anytime I want, but I can't go back down... you're going to have to create a new VM and start over."
  • 0:12:57 "They've given us access to our own Slack channel. That's part of the premium plan... response within about two or three minutes."
  • 0:18:01 "CraftCMS is an open source content management system that MightyCitizen utilized to create the system we have today. It's very modular."
  • 0:28:43 "We're going to have to upgrade to Craft 5... it's going to take some work. They view this as a project, not just something they're going to do over the weekend."
  • 0:42:16 "I would like to get this pushed over to Cloudflare as an R2 storage bucket. That way it's just one bill for Cloudflare."
  • 0:45:38 "I realized that for every address in the entire Salesforce system, ITC had set up for this geocoding API to get kicked off any time you saved an object."

Systems & Configurations

Systems Mentioned

  • Cloudways (hosting platform)
  • CraftCMS (content management)
  • MySQL (database on same server)
  • Google Cloud Platform (storage, APIs)
  • MightyCitizen Buddy (code repository/CI-CD)
  • GitHub (AANP mirror repository)
  • SendGrid (email delivery)
  • Teamwork (MightyCitizen ticketing)
  • Slack (Cloudways support channel)
  • Salesforce (geocoding integration)
  • NP Finder (geocoding consumer)

Specific Configurations

Item Value/Setting Timestamp Notes
Backup retention 7 days 0:06:06 Daily automatic backups
CraftCMS version 4.16 0:28:43 Upgrade to 5 planned as project
Google Cloud storage cost ~$2/month 0:41:58 CraftCMS file storage
Geocoding API requests 108 since last billing 0:44:17 Well within free tier
Freeform field limit 500-600 (resolved) 0:32:56 Was a limitation, now fixed
Documents folder noindex requested 0:41:23 PDFs stored here with robots.txt plea

Credentials/Access Mentioned

  • IT Support Cloudways account (1Password with 2FA)
  • IT Support Google Cloud account (required for correct project visibility)
  • MightyCitizen team members have Cloudways access
  • SAML SSO plugin license (Flipbox) - can contact vendor for support
  • Buddy repository access for AANP

Errors & Troubleshooting

  • Issue: Form submission marked as spam incorrectly
  • Cause: Freeform spam filters may catch legitimate submissions
  • Resolution: Blanca checks daily, reviews spam folder, releases legitimate submissions to continue processing
  • Timestamp: 0:33:36

  • Issue: Cannot scale Cloudways server back down

  • Cause: Vertical scaling is one-way only
  • Resolution: Must create new smaller VM and migrate if downsizing needed; consult MightyCitizen first
  • Timestamp: 0:07:12

  • Issue: Geocoding API spike during imports

  • Cause: Worksite trigger fires for every practice site record, re-geocoding even when lat/long exists
  • Resolution: Disable worksite trigger before practice site imports; re-enable after
  • Timestamp: 0:45:38

  • Issue: CraftCMS storage not migrated to R2

  • Cause: Setup predates R2; migration requires MightyCitizen coordination and potential downtime
  • Resolution: Would be a mini-project; currently working fine on Google Cloud Storage
  • Timestamp: 0:42:16

Transcript Gaps & Quality Notes

  • Recording is from a live Teams meeting with questions from Kristin Brookshire, Matt Mackowski, Sreeni Reddy
  • CraftCMS 5 upgrade mentioned as future project (major version upgrade)
  • Google Cloud UI can be confusing - must select correct project before seeing expected resources
  • Finance team requires PDF invoices from Google Cloud (not CSV)
  • Some plugins shown may have different versions/locations in current CraftCMS
  • Presenter: Jeff Sikes with McKenna Stout also present
  • Duration: ~52 minutes
  • Audio quality: Good, brief initial audio setup issue resolved