wilddragon-site/DEPLOY.md

3.3 KiB
Executable file

Wild Dragon Site — Deployment Guide

Quick Deploy to TrueNAS Docker

1. Copy project to Docker share

Copy this entire wilddragon-site folder to \\10.0.0.25\Docker\wilddragon-site

2. Build and run with Docker Compose

SSH into TrueNAS or use Portainer terminal:

cd /mnt/NVME/Docker/wilddragon-site
git pull
docker compose down
docker compose up -d --build

The site will be available at http://10.0.0.25:43036.

Build can take ~120s on first build because of Next.js compile + image optimization.

3. Set up Nginx Proxy Manager — IMPORTANT FOR SEO

The canonical hostname is wilddragon.net (apex, no www). Configure NPM as follows:

Proxy host 1 — Apex (serves the site):

  • Domain: wilddragon.net
  • Forward to: 10.0.0.25:43036
  • SSL: Let's Encrypt
  • Block Common Exploits: on
  • Websockets Support: on

Proxy host 2 — www (301 redirects to apex):

  • Domain: www.wilddragon.net
  • SSL: Let's Encrypt (same cert)
  • Use the Custom locations / Advanced tab and add:
    return 301 https://wilddragon.net$request_uri;
    

The Next.js app also has a fallback host=www.wilddragon.net redirect baked into next.config.ts, but doing it at the proxy is faster and cleaner.

4. Old-build cleanup — IMPORTANT FOR SEO

Until ~May 2026 the apex was serving an older Babel-in-browser React build (separate index.html, broken nested <title> tag, robots.txt with literal \n strings, Disallow: /*.js$). If any old static files are still in the NPM webroot or any other Nginx location, remove them and ensure the only upstream is the Next.js container at port 43036. After deploying:

# From TrueNAS, sanity-check that nothing else is serving wilddragon.net:
curl -sI https://wilddragon.net/ | grep -i server
curl -s https://wilddragon.net/robots.txt | head -5
curl -s https://wilddragon.net/sitemap.xml | head -3

robots.txt should be a few lines of plain text. sitemap.xml should be valid XML with <urlset> and one <url> per project. If either still has literal \n strings, the old build is still being served.

5. Search Console (post-deploy)

  • Submit https://wilddragon.net/sitemap.xml in Google Search Console
  • Submit the same in Bing Webmaster Tools
  • Add the verification.google / verification.other values to src/app/layout.tsx once you have the property verification tokens
  • Use the URL Inspection tool to request indexing on /, /services, and the project pages

Adding Your Photos

Leica BTS Photos

Drop your photos into public/images/ with these names:

  • commanders-thumb.jpg — Washington Commanders project
  • betmgm-thumb.jpg — BetMGM project
  • cvs-thumb.jpg — CVS/Aetna project
  • ubs-thumb.jpg — UBS project
  • intuit-thumb.jpg — Intuit XR project

Recommended: 1200x800px, optimized for web (under 500KB each).

BMG Line Drawings

You can add line drawings to individual project pages by placing them in: public/images/drawings/ and updating the project detail page component.

Editing Content

All project content lives in a single file: src/data/projects.ts

To add a new project, copy an existing entry and modify the fields. Then rebuild: docker compose up -d --build.

The sitemap and the homepage Projects grid pick up new entries automatically.

Local Development

npm install
npm run dev

Site runs at http://localhost:43036