08 — Troubleshooting & FAQ

Common issues and solutions. If your problem isn't here, email support@drklynx.com.


Deployment & Builds

Q: My Pages deploy failed with "ajv error" or schema validation error

A: Your build output is missing an index.html or the HTML is malformed. Check:

  1. Your build command produces an index.html in the output directory (usually build/, dist/, or public/)
  2. Your wrangler.toml has the correct build output directory:
    [env.production]
    build = { command = "npm run build", cwd = "." }
    outdir = "build"  # or "dist", "public", etc.
    
  3. If using Create React App, add this env var:
    SKIP_PREFLIGHT_CHECK=true
    

If it still fails, email support with your GitHub repo or build log.

Q: My deploy succeeded but the site shows a blank page

A: Cloudflare caches the old version at the edge for up to 60 seconds. Try:

  1. Refresh your browser (Ctrl+F5 or Cmd+Shift+R for hard refresh)
  2. Wait 2 minutes
  3. Purge the cache manually (go to your domain on dash.cloudflare.com > Caching > Purge Cache > Everything)

Q: Getting "404: Not Found" on subpaths like /about or /users/123

A: You're using client-side routing (React Router, Vue Router, etc.) but the server isn't configured to fall back to index.html.

For Cloudflare Pages, enable "SPA mode":

  1. Go to your Pages project > Settings > Builds & deployments
  2. Enable "Automatically route all requests to /index.html (for single-page applications)"

Or configure in wrangler.toml:

[[routes]]
pattern = "/*"
fallthrough = true

Q: Build is slow or timing out

A: Pages has a 15-minute build timeout. If you exceed it:

  1. Reduce dependencies (run npm audit --production)
  2. Enable Node.js caching: add NODE_MODULES_CACHE: true env var
  3. Optimize your build script (e.g., skip tests, use faster bundlers)

If still timing out, contact support.

Q: How do I see my build logs?

A: In the Cloudflare Dashboard > Pages > Your Project > Deployments. Click any deployment to see real-time logs.


DNS & Custom Domains

Q: My DNS isn't propagating after 24 hours

A: Check:

  1. Your CNAME record is exactly: drklynx-m-abc123def456.pages.dev (no extra characters)
  2. You saved the change at your registrar
  3. Verify with: nslookup yourdomain.com or dig yourdomain.com

If nslookup returns your old IP, your registrar's cache is stuck. Wait another 12–24 hours or contact your registrar.

Q: I'm seeing "Too many redirects" or "Redirection loop"

A: Your domain is pointing to the wrong Pages project. Check:

  1. Your CNAME points to: drklynx-m-abc123def456.pages.dev
  2. Your customer ID (abc123def456) is correct
  3. That Pages project name exists in your Cloudflare account

Q: SSL certificate isn't provisioning

A: Cloudflare needs to verify domain ownership. This happens once DNS resolves.

  1. Make sure your CNAME is exactly correct (use nslookup to verify)
  2. Wait 5–10 minutes for DNS to resolve globally
  3. Check Cloudflare Dashboard > your domain > SSL/TLS > Certificates for any error messages

If still stuck after 30 minutes, email support.

Q: How long does SSL take?

A: Usually 2–5 minutes after DNS propagates. Once your CNAME resolves, SSL auto-provisions. You'll see a checkmark in the Cloudflare Dashboard.


Database (D1)

Q: "Database not found" error

A: Check your wrangler.toml:

[[d1_databases]]
binding = "DB"
database_name = "drklynx-m-db-abc123def456"
database_id = "abc123def456"

Make sure database_name and database_id match your actual database.

Q: Query timeout or "Query exceeded 30 seconds"

A: Your query is too slow. Solutions:

  1. Add an index to frequently queried columns:
    CREATE INDEX idx_users_email ON users(email);
    
  2. Break into smaller queries
  3. Use LIMIT to fetch fewer rows

Q: I need to restore my database to a previous date

A: Cloudflare retains backups for 30 days. Email support@drklynx.com with:

  • Your database ID
  • The date/time you want restored to
  • Brief reason

Restore usually takes 1–2 hours.

Q: What's my database connection string?

A: You don't use a traditional connection string. Instead:

  • Query via Wrangler CLI: wrangler d1 execute drklynx-m-db-abc123def456 --remote
  • From Pages functions: bind via wrangler.toml
  • From external apps: use the D1 REST API (available in Pro+ tiers)

Q: Can I export my database?

A: Yes:

wrangler d1 backup download drklynx-m-db-abc123def456 > backup.sqlite3

This downloads a .sqlite3 file you can open locally with sqlite3 backup.sqlite3.


Storage (R2)

Q: "Access Denied" when uploading to R2

A: Your credentials are wrong or expired. Check:

  1. Access Key ID and Secret Key in your credentials email
  2. Make sure they're set as env vars: process.env.R2_ACCESS_KEY, process.env.R2_SECRET_KEY
  3. In wrangler.toml, binding is correct:
    [[r2_buckets]]
    binding = "BUCKET"
    bucket_name = "drklynx-m-bucket-abc123def456"
    

Q: Uploads are very slow

A: R2 is global, so uploads should be fast from anywhere. If slow:

  1. Check your internet connection
  2. Try uploading a smaller test file first
  3. Use multipart upload for files >100 MB (automatic in AWS SDK)

Q: How do I make an object public?

A: When uploading, set ACL: "public-read":

await s3.send(
  new PutObjectCommand({
    Bucket: "drklynx-m-bucket-abc123def456",
    Key: "public/image.jpg",
    Body: fileContent,
    ACL: "public-read",
  })
);

Then access it at: https://abc123def456.r2.cloudflarestorage.com/public/image.jpg


Email

Q: Can't log into webmail

A: Check:

  1. Username is your full email: your-username@drklynx-mail.com
  2. Password is correct (case-sensitive)
  3. Try clearing browser cookies

Q: SMTP auth fails when sending email

A: Ensure:

  1. Full email address: your-username@drklynx-mail.com
  2. Port 587 (TLS), not 465 or 25
  3. Credentials are correct

Q: Emails going to spam

A: Microhost Mail includes DKIM signing, but:

  1. Ask recipients to mark you as "Not Spam"
  2. Use a transactional email service (SendGrid, Postmark) for critical emails
  3. Contact support if you think DKIM is misconfigured

Q: I hit my sending limit

A: Wait until the next day, or upgrade to a higher tier. Contact support@drklynx.com to discuss bulk sending.


Billing & Account

Q: How do I upgrade from Starter to Pro?

A: Go to app.drklynx.com/microhost/<customer_id> (in development). For now:

  1. Email support@drklynx.com with your customer ID
  2. Request the upgrade
  3. You'll receive a new Stripe link
  4. Pay the difference, and your resources scale immediately

No downtime. Your site keeps running.

Q: Can I downgrade my tier?

A: Yes. Email support@drklynx.com. Your tier changes at the next billing cycle. Your site stays up.

If you downgrade and exceed the lower tier's quota, you'll get a warning. You can upgrade again immediately.

Q: I want to cancel. What happens to my data?

A: When you cancel:

  1. Your Pages project, D1, and R2 are frozen immediately
  2. Your email account is disabled
  3. Your data is retained for 30 days
  4. After 30 days, everything is deleted

If you want your data before deletion, export it:

  • D1: wrangler d1 backup download drklynx-m-db-abc123def456 > backup.sqlite3
  • R2: Use the AWS SDK to download your files

Q: Do you offer refunds?

A: Yes. 14-day money-back guarantee. Email support@drklynx.com within 14 days of signup.

Q: How do I get an invoice for tax purposes?

A: Stripe automatically generates invoices. Log into Stripe (link in your signup email) and download invoices from your billing dashboard.


Ledger Pulse & Attestation

Q: Where do I find my attestation?

A: Go to ledger.drklynx.com and search your customer ID. Click the ast_MICROHOST_STARTER_PROVISION record.

Q: How do I verify my attestation signature?

A: Download the verification script:

curl -O https://ledger.drklynx.com/verify.py
python verify.py --customer-id abc123def456

Expected output:

✓ Signature valid
✓ Record untampered

Q: Can you delete my attestation?

A: No. The ledger is immutable. Your provision record is permanent and public.


General Support

Q: My issue isn't listed here

A: Email support@drklynx.com with:

  1. Your customer ID
  2. What you tried to do
  3. The exact error message (if any)
  4. Screenshot if helpful

We'll respond within 24 hours.

Q: Is there a status page?

A: Yes: status.drklynx.com. Check here for ongoing incidents or maintenance.

Q: What are your SLAs?

A: Coming soon. For now, we respond to support emails within 24 hours.


Getting help: Email support@drklynx.com or check status.drklynx.com.