# 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: ```bash 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 `` 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: ```bash # 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 ```bash npm install npm run dev ``` Site runs at http://localhost:43036