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.xmlin Google Search Console - Submit the same in Bing Webmaster Tools
- Add the
verification.google/verification.othervalues tosrc/app/layout.tsxonce 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 projectbetmgm-thumb.jpg— BetMGM projectcvs-thumb.jpg— CVS/Aetna projectubs-thumb.jpg— UBS projectintuit-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