[object Object]

← back to Kamatera Nginx

initial snapshot: post-cleanup kamatera /etc/nginx/

11a371ddeec73803d32f8b96550c412b6c4de17c · 2026-05-21 18:31:41 -0700 · SteveStudio2

Captures the clean state after 2 cleanup rounds today:
  1. removed stale .bak duplicates from sites-enabled/ (silenced 8+
     conflicting server name warnings on every nginx reload)
  2. normalized 15 regular files in sites-enabled/ into symlinks back
     to sites-available/

Backups for both cleanup rounds preserved on prod at:
  /root/nginx-backups/cleanup-2026-05-21/
  /root/nginx-backups/normalize-2026-05-21/

nginx -t is clean. sites-enabled/ is now 100% symlinks (202).

Files touched

Diff

commit 11a371ddeec73803d32f8b96550c412b6c4de17c
Author: SteveStudio2 <stevestudio2@SteveStacStudio.lan>
Date:   Thu May 21 18:31:41 2026 -0700

    initial snapshot: post-cleanup kamatera /etc/nginx/
    
    Captures the clean state after 2 cleanup rounds today:
      1. removed stale .bak duplicates from sites-enabled/ (silenced 8+
         conflicting server name warnings on every nginx reload)
      2. normalized 15 regular files in sites-enabled/ into symlinks back
         to sites-available/
    
    Backups for both cleanup rounds preserved on prod at:
      /root/nginx-backups/cleanup-2026-05-21/
      /root/nginx-backups/normalize-2026-05-21/
    
    nginx -t is clean. sites-enabled/ is now 100% symlinks (202).
---
 .gitignore                                         |   4 +
 README.md                                          |  24 ++
 sites-available/1800swallpaper.com                 |  42 +++
 sites-available/1800wallcoverings.com.conf         |  21 ++
 sites-available/1890swallpaper.com                 |  42 +++
 sites-available/1900swallpaper.com                 |  43 +++
 sites-available/1920swallpaper.com                 |  59 ++++
 sites-available/1930swallpaper.com                 |  60 ++++
 sites-available/1940swallpaper.com                 |  44 +++
 sites-available/1950swallpaper.com                 |  42 +++
 sites-available/1960swallpaper.com                 |  61 ++++
 sites-available/1970swallpaper.com                 |  59 ++++
 sites-available/1980swallpaper.com                 |  61 ++++
 sites-available/4square.agentabrams.com            |  46 +++
 sites-available/abramsatlas.com.conf               |  17 +
 sites-available/abramscivic.com.conf               |  24 ++
 sites-available/abramsdirectory.com.conf           |  17 +
 sites-available/abramsguide.com.conf               |  17 +
 sites-available/abramsindex.com.conf               |  17 +
 sites-available/abramsindustries.com.conf          |  24 ++
 sites-available/abramsintel.com.conf               |  24 ++
 sites-available/abramsintelligence.com.conf        |   8 +
 sites-available/abramslive.com.conf                |  24 ++
 sites-available/abramslocal.com.conf               |  17 +
 sites-available/abramsmaps.com.conf                |  17 +
 sites-available/abramsmarkets.com.conf             |  17 +
 sites-available/abramsos.com.conf                  |  24 ++
 sites-available/abramsprotection.com.conf          |  24 ++
 sites-available/abramsreport.agentabrams.com.conf  | 113 +++++++
 sites-available/abramsspace.com.conf               |  24 ++
 sites-available/abramsterminal.com.conf            |  24 ++
 sites-available/abramsvc.com.conf                  |  24 ++
 sites-available/admin.agentabrams.com              |  37 +++
 sites-available/agedwallpaper.com                  |  41 +++
 sites-available/agentabrams.com                    |  45 +++
 sites-available/animals.agentabrams.com            |  34 ++
 sites-available/apartmentwallpaper.com             |  17 +
 sites-available/app.venturaclaw.com                |  32 ++
 sites-available/architecturalwallcoverings.com     |  42 +++
 sites-available/asseeninhotels.com.conf            |  21 ++
 sites-available/asseeninla.com.conf                |  21 ++
 sites-available/asseeninmovies.com.conf            |  21 ++
 sites-available/asseeninshowrooms.com.conf         |  21 ++
 sites-available/auth.agentabrams.com               |  42 +++
 sites-available/auth.grassclothwallpaper.com       |  50 +++
 sites-available/barwallpaper.com.conf              |  21 ++
 sites-available/bertha.grassclothwallpaper.com     |  40 +++
 sites-available/bestwallpaperplace.com             |  39 +++
 sites-available/blankstocklining.com.conf          |  21 ++
 sites-available/bleachfriendly.com.conf            |  21 ++
 sites-available/bleachresistantfabrics.com         |  15 +
 sites-available/blockprintedwallpaper.com          |  17 +
 sites-available/bubbe.ai                           |  96 ++++++
 sites-available/bubbe.ai.backup                    |  68 ++++
 sites-available/bubbe.ai.old                       |  96 ++++++
 sites-available/bubbesblock.com.conf               |  46 +++
 sites-available/builds.agentabrams.com             | 156 ++++++++++
 sites-available/builds.agentabrams.com.new         |  24 ++
 sites-available/businessclaw.agentabrams.com       |  32 ++
 .../businessclaw.agentabrams.com.pre-redirect.bak  |  41 +++
 sites-available/butlr.agentabrams.com              |  48 +++
 sites-available/carmelwallpaper.com.conf           |  21 ++
 sites-available/carmelwallpapers.com               |  45 +++
 sites-available/cfafabrics.com.conf                |  21 ++
 sites-available/chat.designerwallcoverings.com     |  47 +++
 sites-available/chinoiseriewallpaper.com           |  45 +++
 sites-available/claimmyaddress.com.conf            |  46 +++
 sites-available/classawallcovering.com.conf        |  21 ++
 sites-available/commercialdesignreps.com           |  19 ++
 sites-available/commercialsalesreps.com.conf       |  21 ++
 sites-available/commercialwallcovering.com.conf    |  21 ++
 sites-available/contractwallpaper.com              |  62 ++++
 sites-available/corkwallcovering.com               |  60 ++++
 sites-available/costarica.agentabrams.com          |  44 +++
 sites-available/customdigitalmurals.com            |  45 +++
 sites-available/cypresawards                       |  33 ++
 sites-available/cypresawards.com                   | 131 ++++++++
 sites-available/dashboard-ip                       |  16 +
 sites-available/deadradio.agentabrams.com          |  31 ++
 sites-available/default                            | 170 ++++++++++
 sites-available/default.dpkg-dist                  |  91 ++++++
 sites-available/default.save                       |  96 ++++++
 sites-available/designerline.agentabrams.com       |  47 +++
 sites-available/designerlookbooks.com              |  24 ++
 sites-available/designermagnetics.com.conf         |  21 ++
 sites-available/designerrepresentatives.com        |  22 ++
 sites-available/designerssalesreps.com             |  10 +
 sites-available/designerwallcoverings.ai           |  27 ++
 sites-available/designtradelive.com                |  19 ++
 sites-available/dw-admin-auth                      | 195 ++++++++++++
 sites-available/dw.greendomainbrokers.com          | 342 +++++++++++++++++++++
 sites-available/embroideredwallpaper.com           |  36 +++
 sites-available/etciemurals.com.conf               |  21 ++
 sites-available/fabricfriday.com                   |  77 +++++
 sites-available/fabricfridays.com.conf             |  21 ++
 sites-available/fabricwallpaper.com                |  62 ++++
 sites-available/ffepurchasing.com                  |  42 +++
 sites-available/fireratedwallcovering.com.conf     |  21 ++
 sites-available/flocked.org.conf                   |  21 ++
 sites-available/flockedwallpaper.com               | 100 ++++++
 sites-available/forza.agentabrams.com              |  55 ++++
 sites-available/glassbeadedwallpaper.com           | 100 ++++++
 sites-available/glitterwalls.com                   |  42 +++
 sites-available/glitterwalls.com.bak.1778227778    |  41 +++
 sites-available/gmail.agentabrams.com              |  75 +++++
 sites-available/goldleafwallpaper.com              |  74 +++++
 sites-available/goodquestion.ai                    |  86 ++++++
 sites-available/grassclothwallcovering.com.conf    |  21 ++
 sites-available/grassclothwallcoverings            |  17 +
 sites-available/grassclothwallcoverings-redirect   |   8 +
 sites-available/grassclothwallcoverings.com        | 175 +++++++++++
 sites-available/grassclothwallpaper.com            | 118 +++++++
 sites-available/grassclothwallpaper.com.backup     | 100 ++++++
 sites-available/greendomainbrokers.com             |  43 +++
 sites-available/greendomainbrokers.com.temp        |  13 +
 sites-available/greenwallcoverings.com             |  42 +++
 sites-available/handcraftedwallpaper.com           |  42 +++
 sites-available/handmadewallcovering.com.conf      |  21 ++
 sites-available/healthcarewallpaper.com            |  43 +++
 sites-available/hollywoodwallcovering.com.conf     |  21 ++
 sites-available/hollywoodwallcoverings.com         |  62 ++++
 sites-available/hormuzy.agentabrams.com            |  30 ++
 sites-available/hospitalitydesignreps.com          |  19 ++
 sites-available/hospitalitysalesagency.com.conf    |  21 ++
 .../hospitalitysalesrepresentatives.com            |  18 ++
 sites-available/hospitalitywallcoverings.com       |  42 +++
 sites-available/hospitalitywallpaper.com           |  42 +++
 sites-available/hotelwallcoverings.com             |  61 ++++
 sites-available/ideas.agentabrams.com              |  49 +++
 sites-available/jutewallpaper.com                  |  44 +++
 sites-available/lacountyeats.com.conf              | 117 +++++++
 sites-available/lang.bubbe.ai                      |  66 ++++
 sites-available/latino-gardens                     |  19 ++
 sites-available/latinogardens                      |  19 ++
 sites-available/lawyers.agentabrams.com            |  18 ++
 sites-available/leads.venturaclaw.com              |  34 ++
 sites-available/letsbegin.greendomainbrokers.com   |  28 ++
 sites-available/linenwallpaper.com                 |  61 ++++
 sites-available/livesiteaudit.agentabrams.com      |  51 +++
 sites-available/losangelesfabrics.com              |  63 ++++
 sites-available/losgardeners.conf                  |  60 ++++
 sites-available/madagascarwallpaper.com            |  43 +++
 sites-available/malibuwallpaper.com.conf           |  21 ++
 sites-available/melanie.grassclothwallpaper.com    |  82 +++++
 sites-available/metallicwallpaper.com              |  42 +++
 sites-available/micawallpaper.com                  |  43 +++
 sites-available/montereywallpaper.com.conf         |  21 ++
 sites-available/museumwallpaper.com                |  41 +++
 sites-available/mylarwallpaper.com                 |  41 +++
 sites-available/n8n.conf                           |  60 ++++
 sites-available/nationalpaperhangers.com           |  46 +++
 sites-available/naturaltextilewallpaper.com        |  45 +++
 sites-available/naturalwallcoverings.com           |  42 +++
 sites-available/naturalwalltextures.com.conf       |  21 ++
 sites-available/novasuede                          | 100 ++++++
 sites-available/novasuede.com                      | 134 ++++++++
 sites-available/pairs.designerwallcoverings.com    |  42 +++
 sites-available/pastelwallpaper.com                |  42 +++
 sites-available/patterndesignlab.com.conf          |  21 ++
 sites-available/philipperomano.com                 |  63 ++++
 sites-available/philliperomano.com.conf            |  21 ++
 sites-available/pitch.sdcc.agentabrams.com         |  26 ++
 sites-available/pm.greendomainbrokers.com          |  61 ++++
 sites-available/port-viewer                        |  17 +
 sites-available/printmurals.com.conf               |  21 ++
 sites-available/raffiawallcoverings.com            |  60 ++++
 sites-available/raffiawalls.com                    |  41 +++
 sites-available/recycledwallpaper.com              |  36 +++
 sites-available/restaurantfabrics.com.conf         |  21 ++
 sites-available/restaurantmurals.com.conf          |  21 ++
 sites-available/restaurantwallpaper.com            |  35 +++
 sites-available/restorationwallpaper.com           |  42 +++
 sites-available/retrowalls.com                     |  81 +++++
 sites-available/roomsettings.com.conf              |  21 ++
 sites-available/saloonwallpaper.com                |  42 +++
 sites-available/screenprintedwallpaper.com         |  17 +
 sites-available/sdcc.agentabrams.com               |  38 +++
 sites-available/sdccanalysis.agentabrams.com       |  43 +++
 sites-available/selfadhesivewallpaper.com          |  17 +
 sites-available/sheltermagazines.com.conf          |  21 ++
 sites-available/silkwallcoverings.com              |  42 +++
 sites-available/silkwallpaper.com                  |  61 ++++
 sites-available/silverleafwallpaper.com            |  45 +++
 sites-available/specifywallpaper.com.conf          |  21 ++
 sites-available/starsofdesign.com                  |  49 +++
 sites-available/stevenabramsphotography.com.conf   |  21 ++
 sites-available/stringwallpaper.com                |  37 +++
 sites-available/suedewallpaper.com                 |  41 +++
 sites-available/textiletuesday.com                 |  77 +++++
 sites-available/textilewallpaper.com               |  42 +++
 sites-available/thehotelwallpaper.com.conf         |  21 ++
 sites-available/thesetdecorator.com                |  62 ++++
 sites-available/traditionalwhimsy.com.conf         |  21 ++
 .../typo-redirect-1800wallcoverings.com            |  34 ++
 sites-available/typo-redirect-1800wallpapers.com   |  34 ++
 sites-available/typo-redirect-800wallpaper.com     |  34 ++
 .../typo-redirect-designerwallcover.com            |  34 ++
 .../typo-redirect-designerwallcovering.com         |  34 ++
 sites-available/unitedstateswallpaper.com.conf     |  21 ++
 sites-available/venturablvd.agentabrams.com        |  25 ++
 sites-available/venturaclaw.agentabrams.com        |  32 ++
 sites-available/venturaclaw.com                    |  71 +++++
 sites-available/videos.agentabrams.com             |  48 +++
 sites-available/vinylwallpaper.com                 |  42 +++
 sites-available/wallco.ai                          |  87 ++++++
 sites-available/wallcovering.net.conf              |  21 ++
 sites-available/wallpapercanada.com                |  42 +++
 sites-available/wallpapercontractor.com            |  22 ++
 sites-available/wallpaperdefinitions.com           |  65 ++++
 sites-available/wallpaperdictionary.com            |  65 ++++
 sites-available/wallpaperdistributors.com          |  22 ++
 sites-available/wallpaperestimator.com             |  38 +++
 sites-available/wallpaperexports.com.conf          |  21 ++
 sites-available/wallpaperfromthe80s.com.conf       |  21 ++
 sites-available/wallpaperglossary.com              |  65 ++++
 sites-available/wallpaperhistory.com               |  65 ++++
 sites-available/wallpaperny.com.conf               |  21 ++
 sites-available/wallpaperpurchasing.com.conf       |  21 ++
 sites-available/wallpapersback.com                 |  59 ++++
 sites-available/wallpaperwednesday.com             |  77 +++++
 sites-available/wallpaperweekly.com.conf           |  21 ++
 sites-available/wallsandfabrics.com                |  23 ++
 sites-available/wc01wallcoverings.com.conf         |  21 ++
 sites-available/wholivedthere.com.conf             |  46 +++
 sites-available/zendesk-chat-proxy                 |  20 ++
 sites-enabled/1800swallpaper.com                   |   1 +
 sites-enabled/1800wallcoverings.com.conf           |   1 +
 sites-enabled/1890swallpaper.com                   |   1 +
 sites-enabled/1900swallpaper.com                   |   1 +
 sites-enabled/1920swallpaper.com                   |   1 +
 sites-enabled/1930swallpaper.com                   |   1 +
 sites-enabled/1940swallpaper.com                   |   1 +
 sites-enabled/1950swallpaper.com                   |   1 +
 sites-enabled/1960swallpaper.com                   |   1 +
 sites-enabled/1970swallpaper.com                   |   1 +
 sites-enabled/1980swallpaper.com                   |   1 +
 sites-enabled/4square.agentabrams.com              |   1 +
 sites-enabled/abramsatlas.com.conf                 |   1 +
 sites-enabled/abramscivic.com.conf                 |   1 +
 sites-enabled/abramsdirectory.com.conf             |   1 +
 sites-enabled/abramsguide.com.conf                 |   1 +
 sites-enabled/abramsindex.com.conf                 |   1 +
 sites-enabled/abramsindustries.com.conf            |   1 +
 sites-enabled/abramsintel.com.conf                 |   1 +
 sites-enabled/abramsintelligence.com.conf          |   1 +
 sites-enabled/abramslive.com.conf                  |   1 +
 sites-enabled/abramslocal.com.conf                 |   1 +
 sites-enabled/abramsmaps.com.conf                  |   1 +
 sites-enabled/abramsmarkets.com.conf               |   1 +
 sites-enabled/abramsos.com.conf                    |   1 +
 sites-enabled/abramsprotection.com.conf            |   1 +
 sites-enabled/abramsreport.agentabrams.com.conf    |   1 +
 sites-enabled/abramsspace.com.conf                 |   1 +
 sites-enabled/abramsterminal.com.conf              |   1 +
 sites-enabled/abramsvc.com.conf                    |   1 +
 sites-enabled/admin.agentabrams.com                |   1 +
 sites-enabled/agedwallpaper.com                    |   1 +
 sites-enabled/agentabrams.com                      |   1 +
 sites-enabled/animals.agentabrams.com              |   1 +
 sites-enabled/apartmentwallpaper.com               |   1 +
 sites-enabled/app.venturaclaw.com                  |   1 +
 sites-enabled/architecturalwallcoverings.com       |   1 +
 sites-enabled/asseeninhotels.com.conf              |   1 +
 sites-enabled/asseeninla.com.conf                  |   1 +
 sites-enabled/asseeninmovies.com.conf              |   1 +
 sites-enabled/asseeninshowrooms.com.conf           |   1 +
 sites-enabled/auth.agentabrams.com                 |   1 +
 sites-enabled/auth.grassclothwallpaper.com         |   1 +
 sites-enabled/barwallpaper.com.conf                |   1 +
 sites-enabled/bertha.grassclothwallpaper.com       |   1 +
 sites-enabled/bestwallpaperplace.com               |   1 +
 sites-enabled/blankstocklining.com.conf            |   1 +
 sites-enabled/bleachfriendly.com.conf              |   1 +
 sites-enabled/bleachresistantfabrics.com           |   1 +
 sites-enabled/blockprintedwallpaper.com            |   1 +
 sites-enabled/bubbe.ai                             |   1 +
 sites-enabled/bubbesblock.com.conf                 |   1 +
 sites-enabled/builds.agentabrams.com               |   1 +
 sites-enabled/businessclaw.agentabrams.com         |   1 +
 sites-enabled/butlr.agentabrams.com                |   1 +
 sites-enabled/carmelwallpaper.com.conf             |   1 +
 sites-enabled/carmelwallpapers.com                 |   1 +
 sites-enabled/cfafabrics.com.conf                  |   1 +
 sites-enabled/chat.designerwallcoverings.com       |   1 +
 sites-enabled/chinoiseriewallpaper.com             |   1 +
 sites-enabled/claimmyaddress.com.conf              |   1 +
 sites-enabled/classawallcovering.com.conf          |   1 +
 sites-enabled/commercialdesignreps.com             |   1 +
 sites-enabled/commercialsalesreps.com.conf         |   1 +
 sites-enabled/commercialwallcovering.com.conf      |   1 +
 sites-enabled/contractwallpaper.com                |   1 +
 sites-enabled/corkwallcovering.com                 |   1 +
 sites-enabled/costarica.agentabrams.com            |   1 +
 sites-enabled/customdigitalmurals.com              |   1 +
 sites-enabled/cypresawards.com                     |   1 +
 sites-enabled/deadradio.agentabrams.com            |   1 +
 sites-enabled/default                              |   1 +
 sites-enabled/designerline.agentabrams.com         |   1 +
 sites-enabled/designerlookbooks.com                |   1 +
 sites-enabled/designermagnetics.com.conf           |   1 +
 sites-enabled/designerrepresentatives.com          |   1 +
 sites-enabled/designerssalesreps.com               |   1 +
 sites-enabled/designerwallcoverings.ai             |   1 +
 sites-enabled/designtradelive.com                  |   1 +
 sites-enabled/dw-admin-auth                        |   1 +
 sites-enabled/dw.greendomainbrokers.com            |   1 +
 sites-enabled/embroideredwallpaper.com             |   1 +
 sites-enabled/etciemurals.com.conf                 |   1 +
 sites-enabled/fabricfriday.com                     |   1 +
 sites-enabled/fabricfridays.com.conf               |   1 +
 sites-enabled/fabricwallpaper.com                  |   1 +
 sites-enabled/ffepurchasing.com                    |   1 +
 sites-enabled/fireratedwallcovering.com.conf       |   1 +
 sites-enabled/flocked.org.conf                     |   1 +
 sites-enabled/flockedwallpaper.com                 |   1 +
 sites-enabled/forza.agentabrams.com                |   1 +
 sites-enabled/glassbeadedwallpaper.com             |   1 +
 sites-enabled/glitterwalls.com                     |   1 +
 sites-enabled/gmail.agentabrams.com                |   1 +
 sites-enabled/goldleafwallpaper.com                |   1 +
 sites-enabled/goodquestion.ai                      |   1 +
 sites-enabled/grassclothwallcovering.com.conf      |   1 +
 sites-enabled/grassclothwallcoverings.com          |   1 +
 sites-enabled/grassclothwallpaper.com              |   1 +
 sites-enabled/greendomainbrokers.com               |   1 +
 sites-enabled/greenwallcoverings.com               |   1 +
 sites-enabled/handcraftedwallpaper.com             |   1 +
 sites-enabled/handmadewallcovering.com.conf        |   1 +
 sites-enabled/healthcarewallpaper.com              |   1 +
 sites-enabled/hollywoodwallcovering.com.conf       |   1 +
 sites-enabled/hollywoodwallcoverings.com           |   1 +
 sites-enabled/hormuzy.agentabrams.com              |   1 +
 sites-enabled/hospitalitydesignreps.com            |   1 +
 sites-enabled/hospitalitysalesagency.com.conf      |   1 +
 sites-enabled/hospitalitysalesrepresentatives.com  |   1 +
 sites-enabled/hospitalitywallcoverings.com         |   1 +
 sites-enabled/hospitalitywallpaper.com             |   1 +
 sites-enabled/hotelwallcoverings.com               |   1 +
 sites-enabled/ideas.agentabrams.com                |   1 +
 sites-enabled/jutewallpaper.com                    |   1 +
 sites-enabled/lacountyeats.com.conf                |   1 +
 sites-enabled/lang.bubbe.ai                        |   1 +
 sites-enabled/latinogardens                        |   1 +
 sites-enabled/lawyers.agentabrams.com              |   1 +
 sites-enabled/leads.venturaclaw.com                |   1 +
 sites-enabled/letsbegin.greendomainbrokers.com     |   1 +
 sites-enabled/linenwallpaper.com                   |   1 +
 sites-enabled/losangelesfabrics.com                |   1 +
 sites-enabled/losgardeners.conf                    |   1 +
 sites-enabled/madagascarwallpaper.com              |   1 +
 sites-enabled/malibuwallpaper.com.conf             |   1 +
 sites-enabled/metallicwallpaper.com                |   1 +
 sites-enabled/micawallpaper.com                    |   1 +
 sites-enabled/montereywallpaper.com.conf           |   1 +
 sites-enabled/museumwallpaper.com                  |   1 +
 sites-enabled/mylarwallpaper.com                   |   1 +
 sites-enabled/n8n.conf                             |   1 +
 sites-enabled/nationalpaperhangers.com             |   1 +
 sites-enabled/naturaltextilewallpaper.com          |   1 +
 sites-enabled/naturalwallcoverings.com             |   1 +
 sites-enabled/naturalwalltextures.com.conf         |   1 +
 sites-enabled/novasuede.com                        |   1 +
 sites-enabled/pairs.designerwallcoverings.com      |   1 +
 sites-enabled/pastelwallpaper.com                  |   1 +
 sites-enabled/patterndesignlab.com.conf            |   1 +
 sites-enabled/philipperomano.com                   |   1 +
 sites-enabled/philliperomano.com.conf              |   1 +
 sites-enabled/pitch.sdcc.agentabrams.com           |   1 +
 sites-enabled/pm.greendomainbrokers.com            |   1 +
 sites-enabled/printmurals.com.conf                 |   1 +
 sites-enabled/raffiawallcoverings.com              |   1 +
 sites-enabled/raffiawalls.com                      |   1 +
 sites-enabled/recycledwallpaper.com                |   1 +
 sites-enabled/restaurantfabrics.com.conf           |   1 +
 sites-enabled/restaurantmurals.com.conf            |   1 +
 sites-enabled/restaurantwallpaper.com              |   1 +
 sites-enabled/restorationwallpaper.com             |   1 +
 sites-enabled/retrowalls.com                       |   1 +
 sites-enabled/roomsettings.com.conf                |   1 +
 sites-enabled/saloonwallpaper.com                  |   1 +
 sites-enabled/screenprintedwallpaper.com           |   1 +
 sites-enabled/sdcc.agentabrams.com                 |   1 +
 sites-enabled/sdccanalysis.agentabrams.com         |   1 +
 sites-enabled/selfadhesivewallpaper.com            |   1 +
 sites-enabled/sheltermagazines.com.conf            |   1 +
 sites-enabled/silkwallcoverings.com                |   1 +
 sites-enabled/silkwallpaper.com                    |   1 +
 sites-enabled/silverleafwallpaper.com              |   1 +
 sites-enabled/specifywallpaper.com.conf            |   1 +
 sites-enabled/starsofdesign.com                    |   1 +
 sites-enabled/stevenabramsphotography.com.conf     |   1 +
 sites-enabled/stringwallpaper.com                  |   1 +
 sites-enabled/suedewallpaper.com                   |   1 +
 sites-enabled/textiletuesday.com                   |   1 +
 sites-enabled/textilewallpaper.com                 |   1 +
 sites-enabled/thehotelwallpaper.com.conf           |   1 +
 sites-enabled/thesetdecorator.com                  |   1 +
 sites-enabled/traditionalwhimsy.com.conf           |   1 +
 sites-enabled/typo-redirect-1800wallpapers.com     |   1 +
 sites-enabled/typo-redirect-800wallpaper.com       |   1 +
 sites-enabled/typo-redirect-designerwallcover.com  |   1 +
 .../typo-redirect-designerwallcovering.com         |   1 +
 sites-enabled/unitedstateswallpaper.com.conf       |   1 +
 sites-enabled/venturablvd.agentabrams.com          |   1 +
 sites-enabled/venturaclaw.com                      |   1 +
 sites-enabled/videos.agentabrams.com               |   1 +
 sites-enabled/vinylwallpaper.com                   |   1 +
 sites-enabled/wallco.ai                            |   1 +
 sites-enabled/wallcovering.net.conf                |   1 +
 sites-enabled/wallpapercanada.com                  |   1 +
 sites-enabled/wallpapercontractor.com              |   1 +
 sites-enabled/wallpaperdefinitions.com             |   1 +
 sites-enabled/wallpaperdictionary.com              |   1 +
 sites-enabled/wallpaperdistributors.com            |   1 +
 sites-enabled/wallpaperestimator.com               |   1 +
 sites-enabled/wallpaperexports.com.conf            |   1 +
 sites-enabled/wallpaperfromthe80s.com.conf         |   1 +
 sites-enabled/wallpaperglossary.com                |   1 +
 sites-enabled/wallpaperhistory.com                 |   1 +
 sites-enabled/wallpaperny.com.conf                 |   1 +
 sites-enabled/wallpaperpurchasing.com.conf         |   1 +
 sites-enabled/wallpapersback.com                   |   1 +
 sites-enabled/wallpaperwednesday.com               |   1 +
 sites-enabled/wallpaperweekly.com.conf             |   1 +
 sites-enabled/wallsandfabrics.com                  |   1 +
 sites-enabled/wc01wallcoverings.com.conf           |   1 +
 sites-enabled/wholivedthere.com.conf               |   1 +
 427 files changed, 10150 insertions(+)

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..2ef1911
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+# Don't track backups or unrelated dotfiles
+.DS_Store
+*.swp
+*.swo
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..0054892
--- /dev/null
+++ b/README.md
@@ -0,0 +1,24 @@
+# kamatera-nginx
+
+Source-of-truth snapshot of `/etc/nginx/` on the Kamatera prod box (45.61.58.125
+/ Tailscale 100.107.67.67 / ssh alias `my-server`).
+
+## Layout
+
+- `sites-available/` — canonical per-host server blocks
+- `sites-enabled/`   — symlinks back into sites-available/
+
+## Sync to prod
+
+```bash
+rsync -azv --delete \
+  sites-available/  my-server:/etc/nginx/sites-available/
+ssh my-server 'nginx -t && nginx -s reload'
+```
+
+Symlinks in `sites-enabled/` are recreated on prod manually (or via a
+helper script — TODO).
+
+## Backups on prod
+
+`/root/nginx-backups/` holds dated tarballs of pre-change state.
diff --git a/sites-available/1800swallpaper.com b/sites-available/1800swallpaper.com
new file mode 100644
index 0000000..deabc19
--- /dev/null
+++ b/sites-available/1800swallpaper.com
@@ -0,0 +1,42 @@
+server {
+    server_name 1800swallpaper.com www.1800swallpaper.com;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9856;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    listen [::]:443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/1800swallpaper.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/1800swallpaper.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.1800swallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = 1800swallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80; listen [::]:80;
+    server_name 1800swallpaper.com www.1800swallpaper.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/1800wallcoverings.com.conf b/sites-available/1800wallcoverings.com.conf
new file mode 100644
index 0000000..8aa381e
--- /dev/null
+++ b/sites-available/1800wallcoverings.com.conf
@@ -0,0 +1,21 @@
+# 1800wallcoverings.com — dwf-1800wallcoverings :10001
+server {
+    listen 80;
+    listen [::]:80;
+    server_name 1800wallcoverings.com www.1800wallcoverings.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10001;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/1890swallpaper.com b/sites-available/1890swallpaper.com
new file mode 100644
index 0000000..996d757
--- /dev/null
+++ b/sites-available/1890swallpaper.com
@@ -0,0 +1,42 @@
+server {
+    server_name 1890swallpaper.com www.1890swallpaper.com;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9857;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    listen [::]:443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/1890swallpaper.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/1890swallpaper.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.1890swallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = 1890swallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80; listen [::]:80;
+    server_name 1890swallpaper.com www.1890swallpaper.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/1900swallpaper.com b/sites-available/1900swallpaper.com
new file mode 100644
index 0000000..2f6ba93
--- /dev/null
+++ b/sites-available/1900swallpaper.com
@@ -0,0 +1,43 @@
+server {
+    server_name 1900swallpaper.com www.1900swallpaper.com;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9858;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+
+    listen [::]:443 ssl; # managed by Certbot
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/1900swallpaper.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/1900swallpaper.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.1900swallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = 1900swallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80; listen [::]:80;
+    server_name 1900swallpaper.com www.1900swallpaper.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/1920swallpaper.com b/sites-available/1920swallpaper.com
new file mode 100644
index 0000000..74a8035
--- /dev/null
+++ b/sites-available/1920swallpaper.com
@@ -0,0 +1,59 @@
+server {
+    server_name 1920swallpaper.com www.1920swallpaper.com;
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9836;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    listen [::]:443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/1920swallpaper.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/1920swallpaper.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.1920swallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = 1920swallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name 1920swallpaper.com www.1920swallpaper.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/1930swallpaper.com b/sites-available/1930swallpaper.com
new file mode 100644
index 0000000..6512f0b
--- /dev/null
+++ b/sites-available/1930swallpaper.com
@@ -0,0 +1,60 @@
+server {
+    server_name 1930swallpaper.com www.1930swallpaper.com;
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9837;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+
+    listen [::]:443 ssl; # managed by Certbot
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/1930swallpaper.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/1930swallpaper.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.1930swallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = 1930swallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name 1930swallpaper.com www.1930swallpaper.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/1940swallpaper.com b/sites-available/1940swallpaper.com
new file mode 100644
index 0000000..3838a9c
--- /dev/null
+++ b/sites-available/1940swallpaper.com
@@ -0,0 +1,44 @@
+server {
+    server_name 1940swallpaper.com www.1940swallpaper.com;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9838;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    listen [::]:443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/1940swallpaper.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/1940swallpaper.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+
+
+}
+server {
+    if ($host = www.1940swallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = 1940swallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80; listen [::]:80;
+    server_name 1940swallpaper.com www.1940swallpaper.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/1950swallpaper.com b/sites-available/1950swallpaper.com
new file mode 100644
index 0000000..1e8f454
--- /dev/null
+++ b/sites-available/1950swallpaper.com
@@ -0,0 +1,42 @@
+server {
+    server_name 1950swallpaper.com www.1950swallpaper.com;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9874;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    }
+
+    listen [::]:443 ssl; # managed by Certbot
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/1950swallpaper.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/1950swallpaper.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.1950swallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = 1950swallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80; listen [::]:80;
+    server_name 1950swallpaper.com www.1950swallpaper.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/1960swallpaper.com b/sites-available/1960swallpaper.com
new file mode 100644
index 0000000..19fe1ce
--- /dev/null
+++ b/sites-available/1960swallpaper.com
@@ -0,0 +1,61 @@
+server {
+    server_name 1960swallpaper.com www.1960swallpaper.com;
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9839;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    listen [::]:443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/1960swallpaper.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/1960swallpaper.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+
+
+}
+server {
+    if ($host = www.1960swallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = 1960swallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name 1960swallpaper.com www.1960swallpaper.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/1970swallpaper.com b/sites-available/1970swallpaper.com
new file mode 100644
index 0000000..c81eca8
--- /dev/null
+++ b/sites-available/1970swallpaper.com
@@ -0,0 +1,59 @@
+server {
+    server_name 1970swallpaper.com www.1970swallpaper.com;
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9834;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    listen [::]:443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/1970swallpaper.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/1970swallpaper.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.1970swallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = 1970swallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name 1970swallpaper.com www.1970swallpaper.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/1980swallpaper.com b/sites-available/1980swallpaper.com
new file mode 100644
index 0000000..fc48396
--- /dev/null
+++ b/sites-available/1980swallpaper.com
@@ -0,0 +1,61 @@
+server {
+    server_name 1980swallpaper.com www.1980swallpaper.com;
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9840;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    listen [::]:443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/1980swallpaper.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/1980swallpaper.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+
+
+}
+server {
+    if ($host = www.1980swallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = 1980swallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name 1980swallpaper.com www.1980swallpaper.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/4square.agentabrams.com b/sites-available/4square.agentabrams.com
new file mode 100644
index 0000000..4132b78
--- /dev/null
+++ b/sites-available/4square.agentabrams.com
@@ -0,0 +1,46 @@
+server {
+    server_name 4square.agentabrams.com;
+
+    access_log /var/log/nginx/4square.access.log;
+    error_log  /var/log/nginx/4square.error.log;
+
+    add_header Cache-Control "no-store, must-revalidate" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+
+    location / {
+        proxy_pass http://127.0.0.1:9702;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_set_header Authorization $http_authorization;
+        proxy_pass_header Authorization;
+        proxy_read_timeout 60s;
+        proxy_send_timeout 60s;
+    }
+
+    listen [::]:443 ssl; # managed by Certbot
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/4square.agentabrams.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/4square.agentabrams.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+}
+server {
+    if ($host = 4square.agentabrams.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name 4square.agentabrams.com;
+    return 404; # managed by Certbot
+
+
+}
\ No newline at end of file
diff --git a/sites-available/abramsatlas.com.conf b/sites-available/abramsatlas.com.conf
new file mode 100644
index 0000000..b2bc1e3
--- /dev/null
+++ b/sites-available/abramsatlas.com.conf
@@ -0,0 +1,17 @@
+# abramsatlas.com — 301 → agentabrams.com (defensive cluster, path A)
+server {
+    listen 80;
+    listen [::]:80;
+    server_name abramsatlas.com www.abramsatlas.com;
+
+    # ACME challenge passthrough (needed pre-SSL)
+    location /.well-known/acme-challenge/ {
+        root /var/www/letsencrypt;
+        try_files $uri =404;
+    }
+
+    location / {
+        return 301 https://agentabrams.com$request_uri;
+    }
+}
+# HTTPS block added by certbot after zone delegates to CF + SSL issued
diff --git a/sites-available/abramscivic.com.conf b/sites-available/abramscivic.com.conf
new file mode 100644
index 0000000..5a38c30
--- /dev/null
+++ b/sites-available/abramscivic.com.conf
@@ -0,0 +1,24 @@
+# abramscivic.com — thin landing page (path B)
+server {
+    listen 80;
+    listen [::]:80;
+    server_name abramscivic.com www.abramscivic.com;
+
+    root /var/www/abramscivic.com;
+    index index.html;
+
+    add_header X-Frame-Options "SAMEORIGIN" always;
+    add_header X-Content-Type-Options "nosniff" always;
+
+    location /.well-known/acme-challenge/ {
+        root /var/www/letsencrypt;
+        try_files $uri =404;
+    }
+
+    location / {
+        try_files $uri $uri/ =404;
+    }
+
+    access_log /var/log/nginx/abramscivic.com.access.log;
+    error_log  /var/log/nginx/abramscivic.com.error.log;
+}
diff --git a/sites-available/abramsdirectory.com.conf b/sites-available/abramsdirectory.com.conf
new file mode 100644
index 0000000..1294584
--- /dev/null
+++ b/sites-available/abramsdirectory.com.conf
@@ -0,0 +1,17 @@
+# abramsdirectory.com — 301 → agentabrams.com (defensive cluster, path A)
+server {
+    listen 80;
+    listen [::]:80;
+    server_name abramsdirectory.com www.abramsdirectory.com;
+
+    # ACME challenge passthrough (needed pre-SSL)
+    location /.well-known/acme-challenge/ {
+        root /var/www/letsencrypt;
+        try_files $uri =404;
+    }
+
+    location / {
+        return 301 https://agentabrams.com$request_uri;
+    }
+}
+# HTTPS block added by certbot after zone delegates to CF + SSL issued
diff --git a/sites-available/abramsguide.com.conf b/sites-available/abramsguide.com.conf
new file mode 100644
index 0000000..9689919
--- /dev/null
+++ b/sites-available/abramsguide.com.conf
@@ -0,0 +1,17 @@
+# abramsguide.com — 301 → agentabrams.com (defensive cluster, path A)
+server {
+    listen 80;
+    listen [::]:80;
+    server_name abramsguide.com www.abramsguide.com;
+
+    # ACME challenge passthrough (needed pre-SSL)
+    location /.well-known/acme-challenge/ {
+        root /var/www/letsencrypt;
+        try_files $uri =404;
+    }
+
+    location / {
+        return 301 https://agentabrams.com$request_uri;
+    }
+}
+# HTTPS block added by certbot after zone delegates to CF + SSL issued
diff --git a/sites-available/abramsindex.com.conf b/sites-available/abramsindex.com.conf
new file mode 100644
index 0000000..d0fc14d
--- /dev/null
+++ b/sites-available/abramsindex.com.conf
@@ -0,0 +1,17 @@
+# abramsindex.com — 301 → agentabrams.com (defensive cluster, path A)
+server {
+    listen 80;
+    listen [::]:80;
+    server_name abramsindex.com www.abramsindex.com;
+
+    # ACME challenge passthrough (needed pre-SSL)
+    location /.well-known/acme-challenge/ {
+        root /var/www/letsencrypt;
+        try_files $uri =404;
+    }
+
+    location / {
+        return 301 https://agentabrams.com$request_uri;
+    }
+}
+# HTTPS block added by certbot after zone delegates to CF + SSL issued
diff --git a/sites-available/abramsindustries.com.conf b/sites-available/abramsindustries.com.conf
new file mode 100644
index 0000000..079a8ee
--- /dev/null
+++ b/sites-available/abramsindustries.com.conf
@@ -0,0 +1,24 @@
+# abramsindustries.com — thin landing page (path B)
+server {
+    listen 80;
+    listen [::]:80;
+    server_name abramsindustries.com www.abramsindustries.com;
+
+    root /var/www/abramsindustries.com;
+    index index.html;
+
+    add_header X-Frame-Options "SAMEORIGIN" always;
+    add_header X-Content-Type-Options "nosniff" always;
+
+    location /.well-known/acme-challenge/ {
+        root /var/www/letsencrypt;
+        try_files $uri =404;
+    }
+
+    location / {
+        try_files $uri $uri/ =404;
+    }
+
+    access_log /var/log/nginx/abramsindustries.com.access.log;
+    error_log  /var/log/nginx/abramsindustries.com.error.log;
+}
diff --git a/sites-available/abramsintel.com.conf b/sites-available/abramsintel.com.conf
new file mode 100644
index 0000000..54b5bf9
--- /dev/null
+++ b/sites-available/abramsintel.com.conf
@@ -0,0 +1,24 @@
+# abramsintel.com — thin landing page (path B)
+server {
+    listen 80;
+    listen [::]:80;
+    server_name abramsintel.com www.abramsintel.com;
+
+    root /var/www/abramsintel.com;
+    index index.html;
+
+    add_header X-Frame-Options "SAMEORIGIN" always;
+    add_header X-Content-Type-Options "nosniff" always;
+
+    location /.well-known/acme-challenge/ {
+        root /var/www/letsencrypt;
+        try_files $uri =404;
+    }
+
+    location / {
+        try_files $uri $uri/ =404;
+    }
+
+    access_log /var/log/nginx/abramsintel.com.access.log;
+    error_log  /var/log/nginx/abramsintel.com.error.log;
+}
diff --git a/sites-available/abramsintelligence.com.conf b/sites-available/abramsintelligence.com.conf
new file mode 100644
index 0000000..cc56034
--- /dev/null
+++ b/sites-available/abramsintelligence.com.conf
@@ -0,0 +1,8 @@
+# abramsintelligence.com — 301 → abramsintel.com (canonical intel brand)
+server {
+    listen 80;
+    listen [::]:80;
+    server_name abramsintelligence.com www.abramsintelligence.com;
+    location /.well-known/acme-challenge/ { root /var/www/letsencrypt; try_files $uri =404; }
+    location / { return 301 https://abramsintel.com$request_uri; }
+}
diff --git a/sites-available/abramslive.com.conf b/sites-available/abramslive.com.conf
new file mode 100644
index 0000000..d72db7e
--- /dev/null
+++ b/sites-available/abramslive.com.conf
@@ -0,0 +1,24 @@
+# abramslive.com — thin landing page (path B)
+server {
+    listen 80;
+    listen [::]:80;
+    server_name abramslive.com www.abramslive.com;
+
+    root /var/www/abramslive.com;
+    index index.html;
+
+    add_header X-Frame-Options "SAMEORIGIN" always;
+    add_header X-Content-Type-Options "nosniff" always;
+
+    location /.well-known/acme-challenge/ {
+        root /var/www/letsencrypt;
+        try_files $uri =404;
+    }
+
+    location / {
+        try_files $uri $uri/ =404;
+    }
+
+    access_log /var/log/nginx/abramslive.com.access.log;
+    error_log  /var/log/nginx/abramslive.com.error.log;
+}
diff --git a/sites-available/abramslocal.com.conf b/sites-available/abramslocal.com.conf
new file mode 100644
index 0000000..1470968
--- /dev/null
+++ b/sites-available/abramslocal.com.conf
@@ -0,0 +1,17 @@
+# abramslocal.com — 301 → agentabrams.com (defensive cluster, path A)
+server {
+    listen 80;
+    listen [::]:80;
+    server_name abramslocal.com www.abramslocal.com;
+
+    # ACME challenge passthrough (needed pre-SSL)
+    location /.well-known/acme-challenge/ {
+        root /var/www/letsencrypt;
+        try_files $uri =404;
+    }
+
+    location / {
+        return 301 https://agentabrams.com$request_uri;
+    }
+}
+# HTTPS block added by certbot after zone delegates to CF + SSL issued
diff --git a/sites-available/abramsmaps.com.conf b/sites-available/abramsmaps.com.conf
new file mode 100644
index 0000000..487cf7e
--- /dev/null
+++ b/sites-available/abramsmaps.com.conf
@@ -0,0 +1,17 @@
+# abramsmaps.com — 301 → agentabrams.com (defensive cluster, path A)
+server {
+    listen 80;
+    listen [::]:80;
+    server_name abramsmaps.com www.abramsmaps.com;
+
+    # ACME challenge passthrough (needed pre-SSL)
+    location /.well-known/acme-challenge/ {
+        root /var/www/letsencrypt;
+        try_files $uri =404;
+    }
+
+    location / {
+        return 301 https://agentabrams.com$request_uri;
+    }
+}
+# HTTPS block added by certbot after zone delegates to CF + SSL issued
diff --git a/sites-available/abramsmarkets.com.conf b/sites-available/abramsmarkets.com.conf
new file mode 100644
index 0000000..dc2318f
--- /dev/null
+++ b/sites-available/abramsmarkets.com.conf
@@ -0,0 +1,17 @@
+# abramsmarkets.com — 301 → agentabrams.com (defensive cluster, path A)
+server {
+    listen 80;
+    listen [::]:80;
+    server_name abramsmarkets.com www.abramsmarkets.com;
+
+    # ACME challenge passthrough (needed pre-SSL)
+    location /.well-known/acme-challenge/ {
+        root /var/www/letsencrypt;
+        try_files $uri =404;
+    }
+
+    location / {
+        return 301 https://agentabrams.com$request_uri;
+    }
+}
+# HTTPS block added by certbot after zone delegates to CF + SSL issued
diff --git a/sites-available/abramsos.com.conf b/sites-available/abramsos.com.conf
new file mode 100644
index 0000000..7af87c7
--- /dev/null
+++ b/sites-available/abramsos.com.conf
@@ -0,0 +1,24 @@
+# abramsos.com — thin landing page (path B)
+server {
+    listen 80;
+    listen [::]:80;
+    server_name abramsos.com www.abramsos.com;
+
+    root /var/www/abramsos.com;
+    index index.html;
+
+    add_header X-Frame-Options "SAMEORIGIN" always;
+    add_header X-Content-Type-Options "nosniff" always;
+
+    location /.well-known/acme-challenge/ {
+        root /var/www/letsencrypt;
+        try_files $uri =404;
+    }
+
+    location / {
+        try_files $uri $uri/ =404;
+    }
+
+    access_log /var/log/nginx/abramsos.com.access.log;
+    error_log  /var/log/nginx/abramsos.com.error.log;
+}
diff --git a/sites-available/abramsprotection.com.conf b/sites-available/abramsprotection.com.conf
new file mode 100644
index 0000000..0274a30
--- /dev/null
+++ b/sites-available/abramsprotection.com.conf
@@ -0,0 +1,24 @@
+# abramsprotection.com — thin landing page (path B)
+server {
+    listen 80;
+    listen [::]:80;
+    server_name abramsprotection.com www.abramsprotection.com;
+
+    root /var/www/abramsprotection.com;
+    index index.html;
+
+    add_header X-Frame-Options "SAMEORIGIN" always;
+    add_header X-Content-Type-Options "nosniff" always;
+
+    location /.well-known/acme-challenge/ {
+        root /var/www/letsencrypt;
+        try_files $uri =404;
+    }
+
+    location / {
+        try_files $uri $uri/ =404;
+    }
+
+    access_log /var/log/nginx/abramsprotection.com.access.log;
+    error_log  /var/log/nginx/abramsprotection.com.error.log;
+}
diff --git a/sites-available/abramsreport.agentabrams.com.conf b/sites-available/abramsreport.agentabrams.com.conf
new file mode 100644
index 0000000..6282a39
--- /dev/null
+++ b/sites-available/abramsreport.agentabrams.com.conf
@@ -0,0 +1,113 @@
+# abramsreport.agentabrams.com — Nginx vhost
+# Based on novasuede.com template with CF real-ip block
+
+server {
+    listen 80;
+    listen [::]:80;
+    server_name abramsreport.agentabrams.com;
+
+    # Cloudflare IP Detection
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    set_real_ip_from 2400:cb00::/32;
+    set_real_ip_from 2606:4700::/32;
+    set_real_ip_from 2803:f800::/32;
+    set_real_ip_from 2405:b500::/32;
+    set_real_ip_from 2405:8100::/32;
+    set_real_ip_from 2a06:98c0::/29;
+    set_real_ip_from 2c0f:f248::/32;
+    real_ip_header CF-Connecting-IP;
+
+    # Let's Encrypt ACME challenge
+    location /.well-known/acme-challenge/ {
+        root /var/www/html;
+    }
+
+    # Redirect HTTP to HTTPS
+    location / {
+        return 301 https://$host$request_uri;
+    }
+}
+
+server {
+    listen 443 ssl http2;
+    listen [::]:443 ssl http2;
+    server_name abramsreport.agentabrams.com;
+
+    ssl_certificate /etc/letsencrypt/live/abramsreport.agentabrams.com/fullchain.pem;
+    ssl_certificate_key /etc/letsencrypt/live/abramsreport.agentabrams.com/privkey.pem;
+    include /etc/letsencrypt/options-ssl-nginx.conf;
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
+
+    # Cloudflare IP Detection
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    set_real_ip_from 2400:cb00::/32;
+    set_real_ip_from 2606:4700::/32;
+    set_real_ip_from 2803:f800::/32;
+    set_real_ip_from 2405:b500::/32;
+    set_real_ip_from 2405:8100::/32;
+    set_real_ip_from 2a06:98c0::/29;
+    set_real_ip_from 2c0f:f248::/32;
+    real_ip_header CF-Connecting-IP;
+
+    # Cache-Control no-store on HTML (memory rule)
+    location ~* \.(html|htm)$ {
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_pass http://localhost:9779;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+
+    # Root path — also no-store
+    location = / {
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_pass http://localhost:9779;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+
+    location / {
+        proxy_pass http://localhost:9779;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_cache_bypass $http_upgrade;
+    }
+}
diff --git a/sites-available/abramsspace.com.conf b/sites-available/abramsspace.com.conf
new file mode 100644
index 0000000..70cb8bd
--- /dev/null
+++ b/sites-available/abramsspace.com.conf
@@ -0,0 +1,24 @@
+# abramsspace.com — thin landing page (path B)
+server {
+    listen 80;
+    listen [::]:80;
+    server_name abramsspace.com www.abramsspace.com;
+
+    root /var/www/abramsspace.com;
+    index index.html;
+
+    add_header X-Frame-Options "SAMEORIGIN" always;
+    add_header X-Content-Type-Options "nosniff" always;
+
+    location /.well-known/acme-challenge/ {
+        root /var/www/letsencrypt;
+        try_files $uri =404;
+    }
+
+    location / {
+        try_files $uri $uri/ =404;
+    }
+
+    access_log /var/log/nginx/abramsspace.com.access.log;
+    error_log  /var/log/nginx/abramsspace.com.error.log;
+}
diff --git a/sites-available/abramsterminal.com.conf b/sites-available/abramsterminal.com.conf
new file mode 100644
index 0000000..6b98a1f
--- /dev/null
+++ b/sites-available/abramsterminal.com.conf
@@ -0,0 +1,24 @@
+# abramsterminal.com — thin landing page (path B)
+server {
+    listen 80;
+    listen [::]:80;
+    server_name abramsterminal.com www.abramsterminal.com;
+
+    root /var/www/abramsterminal.com;
+    index index.html;
+
+    add_header X-Frame-Options "SAMEORIGIN" always;
+    add_header X-Content-Type-Options "nosniff" always;
+
+    location /.well-known/acme-challenge/ {
+        root /var/www/letsencrypt;
+        try_files $uri =404;
+    }
+
+    location / {
+        try_files $uri $uri/ =404;
+    }
+
+    access_log /var/log/nginx/abramsterminal.com.access.log;
+    error_log  /var/log/nginx/abramsterminal.com.error.log;
+}
diff --git a/sites-available/abramsvc.com.conf b/sites-available/abramsvc.com.conf
new file mode 100644
index 0000000..a997a25
--- /dev/null
+++ b/sites-available/abramsvc.com.conf
@@ -0,0 +1,24 @@
+# abramsvc.com — thin landing page (path B)
+server {
+    listen 80;
+    listen [::]:80;
+    server_name abramsvc.com www.abramsvc.com;
+
+    root /var/www/abramsvc.com;
+    index index.html;
+
+    add_header X-Frame-Options "SAMEORIGIN" always;
+    add_header X-Content-Type-Options "nosniff" always;
+
+    location /.well-known/acme-challenge/ {
+        root /var/www/letsencrypt;
+        try_files $uri =404;
+    }
+
+    location / {
+        try_files $uri $uri/ =404;
+    }
+
+    access_log /var/log/nginx/abramsvc.com.access.log;
+    error_log  /var/log/nginx/abramsvc.com.error.log;
+}
diff --git a/sites-available/admin.agentabrams.com b/sites-available/admin.agentabrams.com
new file mode 100644
index 0000000..e760751
--- /dev/null
+++ b/sites-available/admin.agentabrams.com
@@ -0,0 +1,37 @@
+# admin.agentabrams.com — central console for all Steve sites
+server {
+    server_name admin.agentabrams.com;
+
+    auth_basic "admin.agentabrams.com — admin only";
+    auth_basic_user_file /etc/nginx/.htpasswd-builds;
+
+    location / {
+        proxy_pass http://localhost:9766;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        add_header Cache-Control "no-store, must-revalidate" always;
+    }
+
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/admin.agentabrams.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/admin.agentabrams.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+}
+
+server {
+    if ($host = admin.agentabrams.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    server_name admin.agentabrams.com;
+    return 404; # managed by Certbot
+
+
+}
\ No newline at end of file
diff --git a/sites-available/agedwallpaper.com b/sites-available/agedwallpaper.com
new file mode 100644
index 0000000..d4adff3
--- /dev/null
+++ b/sites-available/agedwallpaper.com
@@ -0,0 +1,41 @@
+server {
+    server_name agedwallpaper.com www.agedwallpaper.com;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9868;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    }
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    listen [::]:443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/agedwallpaper.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/agedwallpaper.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.agedwallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = agedwallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80; listen [::]:80;
+    server_name agedwallpaper.com www.agedwallpaper.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/agentabrams.com b/sites-available/agentabrams.com
new file mode 100644
index 0000000..2491eae
--- /dev/null
+++ b/sites-available/agentabrams.com
@@ -0,0 +1,45 @@
+# agentabrams.com — Steve's personal "Field notes, broadcasts, and dispatches"
+# Static index linking to active subdomains. Basic-auth gated as of 2026-05-06.
+
+server {
+    server_name agentabrams.com www.agentabrams.com;
+
+    add_header X-Frame-Options "SAMEORIGIN" always;
+    add_header X-Content-Type-Options "nosniff" always;
+    add_header Referrer-Policy "strict-origin-when-cross-origin" always;
+    add_header X-Robots-Tag "noindex, nofollow, noarchive" always;
+
+    auth_basic "agentabrams.com — admin only";
+    auth_basic_user_file /etc/nginx/.htpasswd-builds;
+
+    root /var/www/agentabrams.com;
+    index index.html;
+
+    location /.well-known/acme-challenge/ {
+        auth_basic off;
+        root /var/www/agentabrams.com;
+    }
+
+    location / {
+        try_files $uri $uri/ =404;
+    }
+
+    access_log /var/log/nginx/agentabrams.com.access.log;
+    error_log  /var/log/nginx/agentabrams.com.error.log;
+
+    listen [::]:443 ssl; # managed by Certbot
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/agentabrams.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/agentabrams.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+}
+
+server {
+    if ($host = www.agentabrams.com) { return 301 https://$host$request_uri; }
+    if ($host = agentabrams.com) { return 301 https://$host$request_uri; }
+    listen 80;
+    listen [::]:80;
+    server_name agentabrams.com www.agentabrams.com;
+    return 404;
+}
diff --git a/sites-available/animals.agentabrams.com b/sites-available/animals.agentabrams.com
new file mode 100644
index 0000000..cedc96c
--- /dev/null
+++ b/sites-available/animals.agentabrams.com
@@ -0,0 +1,34 @@
+server {
+  listen 80;
+  server_name animals.agentabrams.com;
+  return 301 https://$host$request_uri;
+}
+
+server {
+  listen 443 ssl http2;
+  server_name animals.agentabrams.com;
+
+  ssl_certificate     /etc/letsencrypt/live/animals.agentabrams.com/fullchain.pem;
+  ssl_certificate_key /etc/letsencrypt/live/animals.agentabrams.com/privkey.pem;
+  include /etc/letsencrypt/options-ssl-nginx.conf;
+  ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
+
+  access_log /var/log/nginx/animals.agentabrams.com.access.log;
+  error_log  /var/log/nginx/animals.agentabrams.com.error.log;
+
+  client_max_body_size 50M;
+
+  location / {
+    proxy_pass http://100.65.187.120:9720;
+    proxy_http_version 1.1;
+    proxy_set_header Host $host;
+    proxy_set_header X-Real-IP $remote_addr;
+    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    proxy_set_header X-Forwarded-Proto $scheme;
+    proxy_set_header Authorization $http_authorization;
+    proxy_pass_header Authorization;
+    proxy_connect_timeout 8s;
+    proxy_read_timeout    60s;
+    proxy_send_timeout    60s;
+  }
+}
diff --git a/sites-available/apartmentwallpaper.com b/sites-available/apartmentwallpaper.com
new file mode 100644
index 0000000..c22611c
--- /dev/null
+++ b/sites-available/apartmentwallpaper.com
@@ -0,0 +1,17 @@
+server {
+    listen 80; listen [::]:80;
+    server_name apartmentwallpaper.com www.apartmentwallpaper.com;
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / { return 302 https://wallpapersback.com$request_uri; }
+}
+server {
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl;
+    listen [::]:443 ssl;
+    server_name apartmentwallpaper.com www.apartmentwallpaper.com;
+    ssl_certificate /etc/letsencrypt/live/apartmentwallpaper.com/fullchain.pem;
+    ssl_certificate_key /etc/letsencrypt/live/apartmentwallpaper.com/privkey.pem;
+    include /etc/letsencrypt/options-ssl-nginx.conf;
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
+    location / { return 302 https://wallpapersback.com$request_uri; }
+}
diff --git a/sites-available/app.venturaclaw.com b/sites-available/app.venturaclaw.com
new file mode 100644
index 0000000..f928291
--- /dev/null
+++ b/sites-available/app.venturaclaw.com
@@ -0,0 +1,32 @@
+server {
+  server_name app.venturaclaw.com;
+  location / {
+    proxy_pass http://127.0.0.1:9788;
+    proxy_http_version 1.1;
+    proxy_set_header Host $host;
+    proxy_set_header X-Real-IP $remote_addr;
+    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    proxy_set_header X-Forwarded-Proto $scheme;
+    proxy_read_timeout 60s;
+  }
+
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/app.venturaclaw.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/app.venturaclaw.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = app.venturaclaw.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+  listen 80;
+  server_name app.venturaclaw.com;
+    return 404; # managed by Certbot
+
+
+}
\ No newline at end of file
diff --git a/sites-available/architecturalwallcoverings.com b/sites-available/architecturalwallcoverings.com
new file mode 100644
index 0000000..7c8d0b5
--- /dev/null
+++ b/sites-available/architecturalwallcoverings.com
@@ -0,0 +1,42 @@
+server {
+    server_name architecturalwallcoverings.com www.architecturalwallcoverings.com;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9879;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    }
+
+    listen [::]:443 ssl; # managed by Certbot
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/architecturalwallcoverings.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/architecturalwallcoverings.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.architecturalwallcoverings.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = architecturalwallcoverings.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80; listen [::]:80;
+    server_name architecturalwallcoverings.com www.architecturalwallcoverings.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/asseeninhotels.com.conf b/sites-available/asseeninhotels.com.conf
new file mode 100644
index 0000000..639e938
--- /dev/null
+++ b/sites-available/asseeninhotels.com.conf
@@ -0,0 +1,21 @@
+# asseeninhotels.com — dwf-asseeninhotels :10002
+server {
+    listen 80;
+    listen [::]:80;
+    server_name asseeninhotels.com www.asseeninhotels.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10002;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/asseeninla.com.conf b/sites-available/asseeninla.com.conf
new file mode 100644
index 0000000..f6dee51
--- /dev/null
+++ b/sites-available/asseeninla.com.conf
@@ -0,0 +1,21 @@
+# asseeninla.com — dwf-asseeninla :10003
+server {
+    listen 80;
+    listen [::]:80;
+    server_name asseeninla.com www.asseeninla.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10003;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/asseeninmovies.com.conf b/sites-available/asseeninmovies.com.conf
new file mode 100644
index 0000000..c41f867
--- /dev/null
+++ b/sites-available/asseeninmovies.com.conf
@@ -0,0 +1,21 @@
+# asseeninmovies.com — dwf-asseeninmovies :10004
+server {
+    listen 80;
+    listen [::]:80;
+    server_name asseeninmovies.com www.asseeninmovies.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10004;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/asseeninshowrooms.com.conf b/sites-available/asseeninshowrooms.com.conf
new file mode 100644
index 0000000..ed83117
--- /dev/null
+++ b/sites-available/asseeninshowrooms.com.conf
@@ -0,0 +1,21 @@
+# asseeninshowrooms.com — dwf-asseeninshowrooms :10005
+server {
+    listen 80;
+    listen [::]:80;
+    server_name asseeninshowrooms.com www.asseeninshowrooms.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10005;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/auth.agentabrams.com b/sites-available/auth.agentabrams.com
new file mode 100644
index 0000000..e65d651
--- /dev/null
+++ b/sites-available/auth.agentabrams.com
@@ -0,0 +1,42 @@
+# auth.agentabrams.com — magic-link auth microservice (PUBLIC, no Basic Auth)
+server {
+    server_name auth.agentabrams.com;
+    location ~* \\.(html|htm)$ {
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_pass http://localhost:9768;
+        proxy_http_version 1.1;
+        proxy_set_header Host \$host;
+        proxy_set_header X-Real-IP \$remote_addr;
+        proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto \$scheme;
+    }
+
+    location / {
+        proxy_pass http://localhost:9768;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/auth.agentabrams.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/auth.agentabrams.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+}
+
+server {
+    if ($host = auth.agentabrams.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    server_name auth.agentabrams.com;
+    return 404; # managed by Certbot
+
+
+}
\ No newline at end of file
diff --git a/sites-available/auth.grassclothwallpaper.com b/sites-available/auth.grassclothwallpaper.com
new file mode 100644
index 0000000..d7d6183
--- /dev/null
+++ b/sites-available/auth.grassclothwallpaper.com
@@ -0,0 +1,50 @@
+server {
+    listen 80;
+    listen [::]:80;
+    server_name auth.grassclothwallpaper.com;
+
+    # Let's Encrypt ACME challenge
+    location /.well-known/acme-challenge/ {
+        root /var/www/html;
+    }
+
+    # Redirect to HTTPS
+    return 301 https://$server_name$request_uri;
+}
+
+server {
+    listen 443 ssl http2;
+    listen [::]:443 ssl http2;
+    server_name auth.grassclothwallpaper.com;
+
+    # SSL certificates
+    ssl_certificate /etc/letsencrypt/live/auth.grassclothwallpaper.com/fullchain.pem;
+    ssl_certificate_key /etc/letsencrypt/live/auth.grassclothwallpaper.com/privkey.pem;
+
+    # SSL configuration
+    ssl_protocols TLSv1.2 TLSv1.3;
+    ssl_ciphers HIGH:!aNULL:!MD5;
+    ssl_prefer_server_ciphers on;
+
+    # Let's Encrypt ACME challenge
+    location /.well-known/acme-challenge/ {
+        root /var/www/html;
+    }
+
+    # Proxy to auth server on port 9999
+    location / {
+        proxy_pass http://localhost:9999;
+        proxy_http_version 1.1;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_cache_bypass $http_upgrade;
+    }
+
+    # Logging
+    access_log /var/log/nginx/auth.grassclothwallpaper.com.access.log;
+    error_log /var/log/nginx/auth.grassclothwallpaper.com.error.log;
+}
diff --git a/sites-available/barwallpaper.com.conf b/sites-available/barwallpaper.com.conf
new file mode 100644
index 0000000..6e63bec
--- /dev/null
+++ b/sites-available/barwallpaper.com.conf
@@ -0,0 +1,21 @@
+# barwallpaper.com — dwf-barwallpaper :10006
+server {
+    listen 80;
+    listen [::]:80;
+    server_name barwallpaper.com www.barwallpaper.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10006;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/bertha.grassclothwallpaper.com b/sites-available/bertha.grassclothwallpaper.com
new file mode 100644
index 0000000..300c888
--- /dev/null
+++ b/sites-available/bertha.grassclothwallpaper.com
@@ -0,0 +1,40 @@
+server {
+    listen 80;
+    listen [::]:80;
+    server_name bertha.grassclothwallpaper.com;
+
+    # Cloudflare Real IP
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+
+    add_header X-Frame-Options "SAMEORIGIN" always;
+    add_header X-Content-Type-Options "nosniff" always;
+    add_header X-XSS-Protection "1; mode=block" always;
+    add_header Referrer-Policy "strict-origin-when-cross-origin" always;
+
+    location / {
+        proxy_pass http://127.0.0.1:7809;
+        proxy_http_version 1.1;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_cache_bypass $http_upgrade;
+    }
+}
diff --git a/sites-available/bestwallpaperplace.com b/sites-available/bestwallpaperplace.com
new file mode 100644
index 0000000..84ef9b3
--- /dev/null
+++ b/sites-available/bestwallpaperplace.com
@@ -0,0 +1,39 @@
+# bestwallpaperplace.com — phase: build_only (DNS not yet flipped)
+# :80 only, no TLS until DNS points here. CF proxy + certbot come in a later wave.
+server {
+    listen 80;
+    listen [::]:80;
+    server_name bestwallpaperplace.com www.bestwallpaperplace.com;
+
+    # Cloudflare real IP (per Steve standing rule, even pre-flip — CF will be added later)
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+
+    location / {
+        proxy_pass http://localhost:9920;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/blankstocklining.com.conf b/sites-available/blankstocklining.com.conf
new file mode 100644
index 0000000..9af771e
--- /dev/null
+++ b/sites-available/blankstocklining.com.conf
@@ -0,0 +1,21 @@
+# blankstocklining.com — dwf-blankstocklining :10007
+server {
+    listen 80;
+    listen [::]:80;
+    server_name blankstocklining.com www.blankstocklining.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10007;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/bleachfriendly.com.conf b/sites-available/bleachfriendly.com.conf
new file mode 100644
index 0000000..505b791
--- /dev/null
+++ b/sites-available/bleachfriendly.com.conf
@@ -0,0 +1,21 @@
+# bleachfriendly.com — dwf-bleachfriendly :10008
+server {
+    listen 80;
+    listen [::]:80;
+    server_name bleachfriendly.com www.bleachfriendly.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10008;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/bleachresistantfabrics.com b/sites-available/bleachresistantfabrics.com
new file mode 100644
index 0000000..08bfdb5
--- /dev/null
+++ b/sites-available/bleachresistantfabrics.com
@@ -0,0 +1,15 @@
+# bleachresistantfabrics.com — staged 2026-05-10 by onboard-build task
+# HTTP-only initially. Once DNS flips from GoDaddy to Cloudflare→Kamatera,
+# run: certbot --nginx -d bleachresistantfabrics.com -d www.bleachresistantfabrics.com --non-interactive --agree-tos -m steve@designerwallcoverings.com
+server {
+  listen 80;
+  server_name bleachresistantfabrics.com www.bleachresistantfabrics.com;
+  add_header Cache-Control "no-store, must-revalidate" always;
+  location / {
+    proxy_pass http://127.0.0.1:9921;
+    proxy_set_header Host $host;
+    proxy_set_header X-Real-IP $remote_addr;
+    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    proxy_set_header X-Forwarded-Proto $scheme;
+  }
+}
diff --git a/sites-available/blockprintedwallpaper.com b/sites-available/blockprintedwallpaper.com
new file mode 100644
index 0000000..e165e15
--- /dev/null
+++ b/sites-available/blockprintedwallpaper.com
@@ -0,0 +1,17 @@
+server {
+    listen 80; listen [::]:80;
+    server_name blockprintedwallpaper.com www.blockprintedwallpaper.com;
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / { return 302 https://handcraftedwallpaper.com$request_uri; }
+}
+server {
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl;
+    listen [::]:443 ssl;
+    server_name blockprintedwallpaper.com www.blockprintedwallpaper.com;
+    ssl_certificate /etc/letsencrypt/live/blockprintedwallpaper.com/fullchain.pem;
+    ssl_certificate_key /etc/letsencrypt/live/blockprintedwallpaper.com/privkey.pem;
+    include /etc/letsencrypt/options-ssl-nginx.conf;
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
+    location / { return 302 https://handcraftedwallpaper.com$request_uri; }
+}
diff --git a/sites-available/bubbe.ai b/sites-available/bubbe.ai
new file mode 100644
index 0000000..ac18b13
--- /dev/null
+++ b/sites-available/bubbe.ai
@@ -0,0 +1,96 @@
+# HTTP - Redirect to HTTPS
+server {
+    listen 80;
+    listen [::]:80;
+    server_name bubbe.ai www.bubbe.ai;
+
+    # Let's Encrypt verification
+    location ^~ /.well-known/acme-challenge/ {
+        root /var/www/html;
+        default_type "text/plain";
+        try_files $uri =404;
+    }
+
+    # Redirect all HTTP to HTTPS
+    location / {
+        return 301 https://$server_name$request_uri;
+    }
+}
+
+# HTTPS - Redirect non-www to www
+server {
+    listen 443 ssl http2;
+    listen [::]:443 ssl http2;
+    server_name bubbe.ai;
+
+    # SSL Configuration
+    ssl_certificate /etc/letsencrypt/live/bubbe.ai/fullchain.pem;
+    ssl_certificate_key /etc/letsencrypt/live/bubbe.ai/privkey.pem;
+    ssl_protocols TLSv1.2 TLSv1.3;
+    ssl_ciphers HIGH:!aNULL:!MD5;
+    ssl_prefer_server_ciphers on;
+
+    # Redirect to www
+    return 301 https://www.bubbe.ai$request_uri;
+}
+
+# HTTPS - Main site (www)
+server {
+    listen 443 ssl http2;
+    listen [::]:443 ssl http2;
+    server_name www.bubbe.ai;
+
+    # SSL Configuration
+    ssl_certificate /etc/letsencrypt/live/bubbe.ai/fullchain.pem;
+    ssl_certificate_key /etc/letsencrypt/live/bubbe.ai/privkey.pem;
+    ssl_protocols TLSv1.2 TLSv1.3;
+    ssl_ciphers HIGH:!aNULL:!MD5;
+    ssl_prefer_server_ciphers on;
+
+    # Cloudflare Real IP Restoration
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+
+    # Security Headers
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options "SAMEORIGIN" always;
+    add_header X-Content-Type-Options "nosniff" always;
+    add_header X-XSS-Protection "1; mode=block" always;
+
+    # Proxy API requests to backend
+    location /api/ {
+        proxy_pass http://[::1]:3011/api/;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+
+    # Proxy to Bubbe chat app
+    location / {
+        proxy_pass http://[::1]:3011;
+        proxy_http_version 1.1;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_cache_bypass $http_upgrade;
+    }
+}
\ No newline at end of file
diff --git a/sites-available/bubbe.ai.backup b/sites-available/bubbe.ai.backup
new file mode 100644
index 0000000..f5424a9
--- /dev/null
+++ b/sites-available/bubbe.ai.backup
@@ -0,0 +1,68 @@
+# HTTP - Redirect to HTTPS
+server {
+    listen 80;
+    listen [::]:80;
+    server_name bubbe.ai www.bubbe.ai;
+
+    # Let's Encrypt verification
+    location ^~ /.well-known/acme-challenge/ {
+        root /var/www/html;
+        default_type "text/plain";
+        try_files $uri =404;
+    }
+
+    # Redirect all HTTP to HTTPS
+    location / {
+        return 301 https://$server_name$request_uri;
+    }
+}
+
+# HTTPS - Redirect non-www to www
+server {
+    listen 443 ssl http2;
+    listen [::]:443 ssl http2;
+    server_name bubbe.ai;
+
+    # SSL Configuration
+    ssl_certificate /etc/letsencrypt/live/bubbe.ai/fullchain.pem;
+    ssl_certificate_key /etc/letsencrypt/live/bubbe.ai/privkey.pem;
+    ssl_protocols TLSv1.2 TLSv1.3;
+    ssl_ciphers HIGH:!aNULL:!MD5;
+    ssl_prefer_server_ciphers on;
+
+    # Redirect to www
+    return 301 https://www.bubbe.ai$request_uri;
+}
+
+# HTTPS - Main site (www)
+server {
+    listen 443 ssl http2;
+    listen [::]:443 ssl http2;
+    server_name www.bubbe.ai;
+
+    # SSL Configuration
+    ssl_certificate /etc/letsencrypt/live/bubbe.ai/fullchain.pem;
+    ssl_certificate_key /etc/letsencrypt/live/bubbe.ai/privkey.pem;
+    ssl_protocols TLSv1.2 TLSv1.3;
+    ssl_ciphers HIGH:!aNULL:!MD5;
+    ssl_prefer_server_ciphers on;
+
+    # Security Headers
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options "SAMEORIGIN" always;
+    add_header X-Content-Type-Options "nosniff" always;
+    add_header X-XSS-Protection "1; mode=block" always;
+
+    # Proxy to Bubbe chat app
+    location / {
+        proxy_pass http://localhost:3011;
+        proxy_http_version 1.1;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_cache_bypass $http_upgrade;
+    }
+}
diff --git a/sites-available/bubbe.ai.old b/sites-available/bubbe.ai.old
new file mode 100644
index 0000000..cb65f19
--- /dev/null
+++ b/sites-available/bubbe.ai.old
@@ -0,0 +1,96 @@
+# HTTP - Redirect to HTTPS
+server {
+    listen 80;
+    listen [::]:80;
+    server_name bubbe.ai www.bubbe.ai;
+
+    # Let's Encrypt verification
+    location ^~ /.well-known/acme-challenge/ {
+        root /var/www/html;
+        default_type "text/plain";
+        try_files $uri =404;
+    }
+
+    # Redirect all HTTP to HTTPS
+    location / {
+        return 301 https://$server_name$request_uri;
+    }
+}
+
+# HTTPS - Redirect non-www to www
+server {
+    listen 443 ssl http2;
+    listen [::]:443 ssl http2;
+    server_name bubbe.ai;
+
+    # SSL Configuration
+    ssl_certificate /etc/letsencrypt/live/bubbe.ai/fullchain.pem;
+    ssl_certificate_key /etc/letsencrypt/live/bubbe.ai/privkey.pem;
+    ssl_protocols TLSv1.2 TLSv1.3;
+    ssl_ciphers HIGH:!aNULL:!MD5;
+    ssl_prefer_server_ciphers on;
+
+    # Redirect to www
+    return 301 https://www.bubbe.ai$request_uri;
+}
+
+# HTTPS - Main site (www)
+server {
+    listen 443 ssl http2;
+    listen [::]:443 ssl http2;
+    server_name www.bubbe.ai;
+
+    # SSL Configuration
+    ssl_certificate /etc/letsencrypt/live/bubbe.ai/fullchain.pem;
+    ssl_certificate_key /etc/letsencrypt/live/bubbe.ai/privkey.pem;
+    ssl_protocols TLSv1.2 TLSv1.3;
+    ssl_ciphers HIGH:!aNULL:!MD5;
+    ssl_prefer_server_ciphers on;
+
+    # Cloudflare Real IP Restoration
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+
+    # Security Headers
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options "SAMEORIGIN" always;
+    add_header X-Content-Type-Options "nosniff" always;
+    add_header X-XSS-Protection "1; mode=block" always;
+
+    # Proxy API requests to backend
+    location /api/ {
+        proxy_pass http://localhost:3011/api/;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+
+    # Proxy to Bubbe chat app
+    location / {
+        proxy_pass http://localhost:3011;
+        proxy_http_version 1.1;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_cache_bypass $http_upgrade;
+    }
+}
diff --git a/sites-available/bubbesblock.com.conf b/sites-available/bubbesblock.com.conf
new file mode 100644
index 0000000..b7e86fc
--- /dev/null
+++ b/sites-available/bubbesblock.com.conf
@@ -0,0 +1,46 @@
+# HTTP → HTTPS redirect
+server {
+    listen 80;
+    server_name bubbesblock.com www.bubbesblock.com;
+    return 301 https://$host$request_uri;
+}
+
+# HTTPS → Next.js
+server {
+    listen 443 ssl http2;
+    server_name bubbesblock.com www.bubbesblock.com;
+
+    ssl_certificate /etc/letsencrypt/live/bubbesblock.com/fullchain.pem;
+    ssl_certificate_key /etc/letsencrypt/live/bubbesblock.com/privkey.pem;
+    include /etc/letsencrypt/options-ssl-nginx.conf;
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
+
+    # Security headers
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options "SAMEORIGIN" always;
+    add_header X-Content-Type-Options "nosniff" always;
+    add_header Referrer-Policy "strict-origin-when-cross-origin" always;
+    add_header Permissions-Policy "geolocation=(self), microphone=(), camera=()" always;
+
+    # Site Factory routes (Stripe + auth + health + webhook + claim) → SF port 3002
+    location ~ ^/api/(auth|checkout|health|webhook)(/|$) {
+        proxy_pass http://127.0.0.1:3002;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_http_version 1.1;
+        # Stripe webhook sig verify needs raw body
+        proxy_request_buffering off;
+    }
+
+    # Everything else → pastdoor (port 9821)
+    location / {
+        proxy_pass http://127.0.0.1:3002;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_http_version 1.1;
+    }
+}
diff --git a/sites-available/builds.agentabrams.com b/sites-available/builds.agentabrams.com
new file mode 100644
index 0000000..3ed6644
--- /dev/null
+++ b/sites-available/builds.agentabrams.com
@@ -0,0 +1,156 @@
+# builds.agentabrams.com — Steve's session-builds viewer + Website Analysis app
+#
+# - Static MP4 viewer at /var/www/builds.agentabrams.com (existing)
+# - Reverse-proxy to Mac Studio 2 over tailnet (100.65.187.120:9760) for the
+#   Website Analysis app routes: /website-analysis, /wa/*, /api/website-analysis,
+#   /api/wa/*  — Mac is the source of truth, Kamatera just terminates SSL.
+#
+# Basic auth (admin and user, same password) gates everything.
+
+server {
+    server_name builds.agentabrams.com;
+
+    access_log /var/log/nginx/builds.agentabrams.com.access.log;
+    error_log /var/log/nginx/builds.agentabrams.com.error.log;
+
+    add_header X-Content-Type-Options "nosniff" always;
+    add_header Referrer-Policy "strict-origin-when-cross-origin" always;
+
+    auth_basic "builds.agentabrams.com — admin only";
+    auth_basic_user_file /etc/nginx/.htpasswd-builds;
+
+    # ---------- Builds Index ----------
+    location = /builds {
+        proxy_pass http://100.65.187.120:9760$request_uri;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_connect_timeout 30s;
+        proxy_read_timeout 60s;
+    }
+
+    # ---------- Website Analysis app (Mac via tailnet) ----------
+    # Mac is offline-tolerant: 30s connect timeout + nice 502 message.
+    location = /website-analysis {
+        proxy_pass http://100.65.187.120:9760$request_uri;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_connect_timeout 30s;
+        proxy_read_timeout 60s;
+    }
+    location ^~ /wa/ {
+        proxy_pass http://100.65.187.120:9760$request_uri;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_connect_timeout 30s;
+        proxy_read_timeout 60s;
+    }
+    location ^~ /api/website-analysis {
+        proxy_pass http://100.65.187.120:9760$request_uri;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_connect_timeout 30s;
+        proxy_read_timeout 60s;
+    }
+    location ^~ /api/wa/ {
+        proxy_pass http://100.65.187.120:9760$request_uri;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_connect_timeout 30s;
+        proxy_read_timeout 60s;
+    }
+    # Ship-this-rebuild lands on /biz/:slug/edit — proxy the editor + its API +
+    # webcam uploads through too, gated by the same basic auth.
+    location ^~ /biz/ {
+        proxy_pass http://100.65.187.120:9760$request_uri;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        client_max_body_size 12m;
+        proxy_connect_timeout 30s;
+        proxy_read_timeout 120s;
+    }
+    location ^~ /api/biz/ {
+        proxy_pass http://100.65.187.120:9760$request_uri;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        client_max_body_size 12m;
+        proxy_connect_timeout 30s;
+        proxy_read_timeout 120s;
+    }
+    location ^~ /uploads/ {
+        proxy_pass http://100.65.187.120:9760$request_uri;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+    }
+
+    # ---------- existing builds viewer (static MP4s) ----------
+    root /var/www/builds.agentabrams.com;
+    index index.html;
+    autoindex off;
+
+    location / {
+        try_files $uri $uri/ =404;
+    }
+
+    location ~* \.mp4$ {
+        auth_basic "builds.agentabrams.com — admin only";
+        auth_basic_user_file /etc/nginx/.htpasswd-builds;
+        add_header Accept-Ranges bytes;
+    }
+
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/builds.agentabrams.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/builds.agentabrams.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+        location /proxy {
+        proxy_pass http://localhost:9764;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_buffering off;
+        proxy_read_timeout 30s;
+    }
+        location /shopify-oauth/ {
+        auth_basic off;
+        proxy_pass http://100.65.187.120:9914/;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-Proto https;
+        proxy_read_timeout 30s;
+    }
+    location /sister-sites/ {
+        proxy_pass http://localhost:9764/;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        add_header Pragma "no-cache" always;
+        expires off;
+    }
+
+}
+
+server {
+    if ($host = builds.agentabrams.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+    listen 80;
+    server_name builds.agentabrams.com;
+    return 404; # managed by Certbot
+}
diff --git a/sites-available/builds.agentabrams.com.new b/sites-available/builds.agentabrams.com.new
new file mode 100644
index 0000000..328445c
--- /dev/null
+++ b/sites-available/builds.agentabrams.com.new
@@ -0,0 +1,24 @@
+server {
+    listen 80; listen [::]:80;
+    server_name builds.agentabrams.com;
+    return 301 https://\$host\$request_uri;
+}
+server {
+    listen 443 ssl http2; listen [::]:443 ssl http2;
+    server_name builds.agentabrams.com;
+    ssl_certificate /etc/letsencrypt/live/builds.agentabrams.com/fullchain.pem;
+    ssl_certificate_key /etc/letsencrypt/live/builds.agentabrams.com/privkey.pem;
+    include /etc/letsencrypt/options-ssl-nginx.conf;
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
+    auth_basic 'agentabrams · admin'; auth_basic_user_file /etc/nginx/.htpasswd-agentabrams;
+    add_header Accept-Ranges bytes;
+    location /sister-sites/ {
+      auth_basic 'agentabrams · admin'; auth_basic_user_file /etc/nginx/.htpasswd-agentabrams;
+      proxy_pass http://localhost:9764/;
+      proxy_http_version 1.1;
+      proxy_set_header Host \$host;
+      proxy_set_header X-Real-IP \$remote_addr;
+    }
+    root /var/www/builds.agentabrams.com;
+    index index.html;
+}
diff --git a/sites-available/businessclaw.agentabrams.com b/sites-available/businessclaw.agentabrams.com
new file mode 100644
index 0000000..94eb822
--- /dev/null
+++ b/sites-available/businessclaw.agentabrams.com
@@ -0,0 +1,32 @@
+server {
+  listen 80;
+  server_name businessclaw.agentabrams.com;
+  if ($host = businessclaw.agentabrams.com) { return 301 https://venturaclaw.com$request_uri; }
+  return 404;
+}
+server {
+  listen 443 ssl;
+  server_name businessclaw.agentabrams.com;
+  ssl_certificate /etc/letsencrypt/live/businessclaw.agentabrams.com/fullchain.pem;
+  ssl_certificate_key /etc/letsencrypt/live/businessclaw.agentabrams.com/privkey.pem;
+  include /etc/letsencrypt/options-ssl-nginx.conf;
+  ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
+
+  # OAuth callback URLs registered in provider consoles still resolve here.
+  location /oauth/ {
+    proxy_pass http://127.0.0.1:9788;
+    proxy_http_version 1.1;
+    proxy_set_header Host $host;
+    proxy_set_header X-Real-IP $remote_addr;
+    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    proxy_set_header X-Forwarded-Proto $scheme;
+    proxy_read_timeout 60s;
+  }
+  location = /healthz {
+    proxy_pass http://127.0.0.1:9788;
+    proxy_set_header Host $host;
+  }
+  location / {
+    return 301 https://venturaclaw.com$request_uri;
+  }
+}
diff --git a/sites-available/businessclaw.agentabrams.com.pre-redirect.bak b/sites-available/businessclaw.agentabrams.com.pre-redirect.bak
new file mode 100644
index 0000000..42072bf
--- /dev/null
+++ b/sites-available/businessclaw.agentabrams.com.pre-redirect.bak
@@ -0,0 +1,41 @@
+server {
+  server_name businessclaw.agentabrams.com;
+  location /api/demo-classify {
+    proxy_pass http://127.0.0.1:9788;
+    proxy_http_version 1.1;
+    proxy_set_header Host $host;
+    proxy_set_header X-Real-IP $remote_addr;
+    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    proxy_set_header X-Forwarded-Proto $scheme;
+    proxy_read_timeout 90s;
+    proxy_send_timeout 90s;
+  }
+  location / {
+    proxy_pass http://127.0.0.1:9788;
+    proxy_http_version 1.1;
+    proxy_set_header Host $host;
+    proxy_set_header X-Real-IP $remote_addr;
+    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    proxy_set_header X-Forwarded-Proto $scheme;
+    proxy_read_timeout 60s;
+  }
+
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/businessclaw.agentabrams.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/businessclaw.agentabrams.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+}
+server {
+    if ($host = businessclaw.agentabrams.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+  listen 80;
+  server_name businessclaw.agentabrams.com;
+    return 404; # managed by Certbot
+
+
+}
\ No newline at end of file
diff --git a/sites-available/butlr.agentabrams.com b/sites-available/butlr.agentabrams.com
new file mode 100644
index 0000000..00356c6
--- /dev/null
+++ b/sites-available/butlr.agentabrams.com
@@ -0,0 +1,48 @@
+server {
+    server_name butlr.agentabrams.com;
+
+    access_log /var/log/nginx/butlr.access.log;
+    error_log  /var/log/nginx/butlr.error.log;
+
+    add_header Cache-Control "no-store, must-revalidate" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+
+    location / {
+        proxy_pass http://127.0.0.1:9935;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection "upgrade";
+        proxy_read_timeout 600s;
+        proxy_send_timeout 600s;
+    }
+
+    listen [::]:443 ssl; # managed by Certbot
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/butlr.agentabrams.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/butlr.agentabrams.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+}
+server {
+    if ($host = butlr.agentabrams.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name butlr.agentabrams.com;
+    return 404; # managed by Certbot
+
+
+}
\ No newline at end of file
diff --git a/sites-available/carmelwallpaper.com.conf b/sites-available/carmelwallpaper.com.conf
new file mode 100644
index 0000000..7bf7d47
--- /dev/null
+++ b/sites-available/carmelwallpaper.com.conf
@@ -0,0 +1,21 @@
+# carmelwallpaper.com — dwf-carmelwallpaper :10009
+server {
+    listen 80;
+    listen [::]:80;
+    server_name carmelwallpaper.com www.carmelwallpaper.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10009;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/carmelwallpapers.com b/sites-available/carmelwallpapers.com
new file mode 100644
index 0000000..37ebdb9
--- /dev/null
+++ b/sites-available/carmelwallpapers.com
@@ -0,0 +1,45 @@
+server {
+    server_name carmelwallpapers.com www.carmelwallpapers.com;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9861;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        add_header Cache-Control "no-store, must-revalidate" always;
+    }
+
+    listen [::]:443 ssl; # managed by Certbot
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/carmelwallpapers.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/carmelwallpapers.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+
+
+}
+server {
+    if ($host = www.carmelwallpapers.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = carmelwallpapers.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name carmelwallpapers.com www.carmelwallpapers.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/cfafabrics.com.conf b/sites-available/cfafabrics.com.conf
new file mode 100644
index 0000000..453e3e1
--- /dev/null
+++ b/sites-available/cfafabrics.com.conf
@@ -0,0 +1,21 @@
+# cfafabrics.com — dwf-cfafabrics :10010
+server {
+    listen 80;
+    listen [::]:80;
+    server_name cfafabrics.com www.cfafabrics.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10010;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/chat.designerwallcoverings.com b/sites-available/chat.designerwallcoverings.com
new file mode 100644
index 0000000..94451a4
--- /dev/null
+++ b/sites-available/chat.designerwallcoverings.com
@@ -0,0 +1,47 @@
+server {
+    listen 80;
+    listen [::]:80;
+    server_name chat.designerwallcoverings.com;
+    # Allow LE renewal challenges + redirect everything else to HTTPS.
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / { return 301 https://$host$request_uri; }
+}
+server {
+    listen 443 ssl http2;
+    listen [::]:443 ssl http2;
+    server_name chat.designerwallcoverings.com;
+
+    ssl_certificate /etc/letsencrypt/live/chat.designerwallcoverings.com/fullchain.pem;
+    ssl_certificate_key /etc/letsencrypt/live/chat.designerwallcoverings.com/privkey.pem;
+    include /etc/letsencrypt/options-ssl-nginx.conf;
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
+
+    # Cloudflare real IP passthrough
+    set_real_ip_from 103.21.244.0/22; set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;   set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;   set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 131.0.72.0/22;   set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 162.158.0.0/15;  set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 173.245.48.0/20; set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 190.93.240.0/20; set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17; set_real_ip_from 2400:cb00::/32;
+    set_real_ip_from 2606:4700::/32;
+    real_ip_header CF-Connecting-IP;
+
+    # CORS — widget.js is embedded cross-origin on 61 DW sites
+    add_header Access-Control-Allow-Origin '*' always;
+    add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS' always;
+    add_header Access-Control-Allow-Headers 'Content-Type, Authorization' always;
+
+    location / {
+        proxy_pass http://127.0.0.1:9936;
+        proxy_http_version 1.1;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection "upgrade";
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_read_timeout 300s;
+    }
+}
diff --git a/sites-available/chinoiseriewallpaper.com b/sites-available/chinoiseriewallpaper.com
new file mode 100644
index 0000000..89ec656
--- /dev/null
+++ b/sites-available/chinoiseriewallpaper.com
@@ -0,0 +1,45 @@
+server {
+    server_name chinoiseriewallpaper.com www.chinoiseriewallpaper.com;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://127.0.0.1:9853;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        add_header Cache-Control "no-store, must-revalidate" always;
+    }
+
+    listen 443 ssl; # managed by Certbot
+    listen [::]:443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/chinoiseriewallpaper.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/chinoiseriewallpaper.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+
+
+}
+server {
+    if ($host = www.chinoiseriewallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = chinoiseriewallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name chinoiseriewallpaper.com www.chinoiseriewallpaper.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/claimmyaddress.com.conf b/sites-available/claimmyaddress.com.conf
new file mode 100644
index 0000000..3598e60
--- /dev/null
+++ b/sites-available/claimmyaddress.com.conf
@@ -0,0 +1,46 @@
+# HTTP → HTTPS redirect
+server {
+    listen 80;
+    server_name claimmyaddress.com www.claimmyaddress.com;
+    return 301 https://$host$request_uri;
+}
+
+# HTTPS → Next.js
+server {
+    listen 443 ssl http2;
+    server_name claimmyaddress.com www.claimmyaddress.com;
+
+    ssl_certificate /etc/letsencrypt/live/claimmyaddress.com/fullchain.pem;
+    ssl_certificate_key /etc/letsencrypt/live/claimmyaddress.com/privkey.pem;
+    include /etc/letsencrypt/options-ssl-nginx.conf;
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
+
+    # Security headers
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options "SAMEORIGIN" always;
+    add_header X-Content-Type-Options "nosniff" always;
+    add_header Referrer-Policy "strict-origin-when-cross-origin" always;
+    add_header Permissions-Policy "geolocation=(self), microphone=(), camera=()" always;
+
+    # Site Factory routes (Stripe + auth + health + webhook + claim) → SF port 3003
+    location ~ ^/api/(auth|checkout|health|webhook|claim)(/|$) {
+        proxy_pass http://127.0.0.1:3003;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_http_version 1.1;
+        # Stripe webhook sig verify needs raw body
+        proxy_request_buffering off;
+    }
+
+    # Everything else → pastdoor (port 9821)
+    location / {
+        proxy_pass http://127.0.0.1:9821;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_http_version 1.1;
+    }
+}
diff --git a/sites-available/classawallcovering.com.conf b/sites-available/classawallcovering.com.conf
new file mode 100644
index 0000000..93a8167
--- /dev/null
+++ b/sites-available/classawallcovering.com.conf
@@ -0,0 +1,21 @@
+# classawallcovering.com — dwf-classawallcovering :10011
+server {
+    listen 80;
+    listen [::]:80;
+    server_name classawallcovering.com www.classawallcovering.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10011;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/commercialdesignreps.com b/sites-available/commercialdesignreps.com
new file mode 100644
index 0000000..c8dda90
--- /dev/null
+++ b/sites-available/commercialdesignreps.com
@@ -0,0 +1,19 @@
+server {
+    listen 80;
+    listen [::]:80;
+    server_name commercialdesignreps.com www.commercialdesignreps.com;
+
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+
+    location / {
+        proxy_pass http://localhost:9922;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/commercialsalesreps.com.conf b/sites-available/commercialsalesreps.com.conf
new file mode 100644
index 0000000..015535d
--- /dev/null
+++ b/sites-available/commercialsalesreps.com.conf
@@ -0,0 +1,21 @@
+# commercialsalesreps.com — dwf-commercialsalesreps :10012
+server {
+    listen 80;
+    listen [::]:80;
+    server_name commercialsalesreps.com www.commercialsalesreps.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10012;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/commercialwallcovering.com.conf b/sites-available/commercialwallcovering.com.conf
new file mode 100644
index 0000000..fb15be4
--- /dev/null
+++ b/sites-available/commercialwallcovering.com.conf
@@ -0,0 +1,21 @@
+# commercialwallcovering.com — dwf-commercialwallcovering :10013
+server {
+    listen 80;
+    listen [::]:80;
+    server_name commercialwallcovering.com www.commercialwallcovering.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10013;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/contractwallpaper.com b/sites-available/contractwallpaper.com
new file mode 100644
index 0000000..2a8600a
--- /dev/null
+++ b/sites-available/contractwallpaper.com
@@ -0,0 +1,62 @@
+server {
+    server_name contractwallpaper.com www.contractwallpaper.com;
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9849;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+
+    listen [::]:443 ssl; # managed by Certbot
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/contractwallpaper.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/contractwallpaper.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+
+
+}
+server {
+    if ($host = www.contractwallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = contractwallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name contractwallpaper.com www.contractwallpaper.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/corkwallcovering.com b/sites-available/corkwallcovering.com
new file mode 100644
index 0000000..5359021
--- /dev/null
+++ b/sites-available/corkwallcovering.com
@@ -0,0 +1,60 @@
+server {
+    server_name corkwallcovering.com www.corkwallcovering.com;
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9848;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+
+    listen [::]:443 ssl; # managed by Certbot
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/corkwallcovering.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/corkwallcovering.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.corkwallcovering.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = corkwallcovering.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name corkwallcovering.com www.corkwallcovering.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/costarica.agentabrams.com b/sites-available/costarica.agentabrams.com
new file mode 100644
index 0000000..95b3637
--- /dev/null
+++ b/sites-available/costarica.agentabrams.com
@@ -0,0 +1,44 @@
+server {
+  server_name costarica.agentabrams.com;
+
+  # Cloudflare HTML caching guard
+  location ~* \.html$ {
+    add_header Cache-Control 'no-store, must-revalidate' always;
+    proxy_pass http://127.0.0.1:9791;
+    proxy_set_header Host $host;
+    proxy_set_header X-Real-IP $remote_addr;
+    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    proxy_set_header X-Forwarded-Proto $scheme;
+  }
+
+  location / {
+    add_header Cache-Control 'no-store, must-revalidate' always;
+    proxy_pass http://127.0.0.1:9791;
+    proxy_set_header Host $host;
+    proxy_set_header X-Real-IP $remote_addr;
+    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    proxy_set_header X-Forwarded-Proto $scheme;
+    proxy_http_version 1.1;
+    proxy_set_header Upgrade $http_upgrade;
+    proxy_set_header Connection "";
+  }
+
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/costarica.agentabrams.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/costarica.agentabrams.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+}
+server {
+    if ($host = costarica.agentabrams.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+  listen 80;
+  server_name costarica.agentabrams.com;
+    return 404; # managed by Certbot
+
+
+}
\ No newline at end of file
diff --git a/sites-available/customdigitalmurals.com b/sites-available/customdigitalmurals.com
new file mode 100644
index 0000000..bf03442
--- /dev/null
+++ b/sites-available/customdigitalmurals.com
@@ -0,0 +1,45 @@
+server {
+    server_name customdigitalmurals.com www.customdigitalmurals.com;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9896;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        add_header Cache-Control "no-store, must-revalidate" always;
+    }
+
+    listen 443 ssl; # managed by Certbot
+    listen [::]:443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/customdigitalmurals.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/customdigitalmurals.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+
+
+}
+server {
+    if ($host = www.customdigitalmurals.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = customdigitalmurals.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name customdigitalmurals.com www.customdigitalmurals.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/cypresawards b/sites-available/cypresawards
new file mode 100644
index 0000000..b3b13c9
--- /dev/null
+++ b/sites-available/cypresawards
@@ -0,0 +1,33 @@
+server {
+    listen 80;
+    server_name 45.61.58.125;
+
+    # Frontend - serve static files
+    location / {
+        proxy_pass http://localhost:9850;
+        proxy_http_version 1.1;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_set_header Host $host;
+        proxy_cache_bypass $http_upgrade;
+    }
+
+    # API - proxy to backend
+    location /api {
+        proxy_pass http://localhost:3010/api;
+        proxy_http_version 1.1;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_set_header Host $host;
+        proxy_cache_bypass $http_upgrade;
+
+        # CORS headers
+        add_header 'Access-Control-Allow-Origin' '*' always;
+        add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS' always;
+        add_header 'Access-Control-Allow-Headers' 'Content-Type, Accept' always;
+
+        if ($request_method = 'OPTIONS') {
+            return 204;
+        }
+    }
+}
diff --git a/sites-available/cypresawards.com b/sites-available/cypresawards.com
new file mode 100644
index 0000000..15c247d
--- /dev/null
+++ b/sites-available/cypresawards.com
@@ -0,0 +1,131 @@
+server {
+    if ($host = www.cypresawards.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = cypresawards.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name cypresawards.com www.cypresawards.com;
+
+    # Redirect HTTP to HTTPS
+    return 301 https://$server_name$request_uri;
+
+
+
+
+}
+
+server {
+    listen 443 ssl http2;
+    listen [::]:443 ssl http2;
+    server_name cypresawards.com www.cypresawards.com;
+
+    # SSL configuration - Cloudflare will handle the certificate
+    # These are placeholder paths - Cloudflare Origin Certificates should be used
+    ssl_certificate /etc/letsencrypt/live/cypresawards.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/cypresawards.com/privkey.pem; # managed by Certbot
+
+    # SSL protocols and ciphers
+    ssl_protocols TLSv1.2 TLSv1.3;
+    ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
+    ssl_prefer_server_ciphers off;
+    ssl_session_cache shared:SSL:10m;
+    ssl_session_timeout 10m;
+
+    # Security headers
+    add_header X-Frame-Options "SAMEORIGIN" always;
+    add_header X-Content-Type-Options "nosniff" always;
+    add_header X-XSS-Protection "1; mode=block" always;
+    add_header Referrer-Policy "strict-origin-when-cross-origin" always;
+
+    # Cloudflare real IP
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    set_real_ip_from 2400:cb00::/32;
+    set_real_ip_from 2606:4700::/32;
+    set_real_ip_from 2803:f800::/32;
+    set_real_ip_from 2405:b500::/32;
+    set_real_ip_from 2405:8100::/32;
+    set_real_ip_from 2a06:98c0::/29;
+    set_real_ip_from 2c0f:f248::/32;
+    real_ip_header CF-Connecting-IP;
+
+    # Gzip compression
+    gzip on;
+    gzip_vary on;
+    gzip_min_length 1024;
+    gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml+rss application/json application/javascript;
+
+    # Cache control for static assets
+    location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg|woff|woff2|ttf|eot)$ {
+        proxy_pass http://localhost:7121;
+        proxy_http_version 1.1;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_cache_bypass $http_upgrade;
+
+        expires 1y;
+        add_header Cache-Control "public, immutable";
+    }
+
+    # Proxy all requests to Node.js backend on port 3010
+    location / {
+        proxy_pass http://localhost:7121;
+        proxy_http_version 1.1;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_cache_bypass $http_upgrade;
+
+        # Timeouts
+        proxy_connect_timeout 60s;
+        proxy_send_timeout 60s;
+        proxy_read_timeout 60s;
+    }
+
+    # Health check endpoint
+    location /health {
+        proxy_pass http://localhost:3010/health;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        access_log off;
+    }
+
+    # Error pages
+    error_page 502 503 504 /50x.html;
+    location = /50x.html {
+        root /usr/share/nginx/html;
+    }
+
+    # Logging
+    access_log /var/log/nginx/cypresawards.com.access.log;
+    error_log /var/log/nginx/cypresawards.com.error.log;
+
+
+}
diff --git a/sites-available/dashboard-ip b/sites-available/dashboard-ip
new file mode 100644
index 0000000..6e5898f
--- /dev/null
+++ b/sites-available/dashboard-ip
@@ -0,0 +1,16 @@
+server {
+    listen 80;
+    server_name 45.61.58.125 _;
+
+    location / {
+        proxy_pass http://127.0.0.1:9850;
+        proxy_http_version 1.1;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_set_header Host $host;
+        proxy_cache_bypass $http_upgrade;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/deadradio.agentabrams.com b/sites-available/deadradio.agentabrams.com
new file mode 100644
index 0000000..dd1572c
--- /dev/null
+++ b/sites-available/deadradio.agentabrams.com
@@ -0,0 +1,31 @@
+server {
+    server_name deadradio.agentabrams.com;
+    root /var/www/deadradio.agentabrams.com;
+    index index.html;
+    location / {
+        try_files $uri $uri/ =404;
+    }
+    access_log /var/log/nginx/deadradio.access.log;
+    error_log  /var/log/nginx/deadradio.error.log;
+
+    listen 443 ssl; # managed by Certbot
+    listen [::]:443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/deadradio.agentabrams.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/deadradio.agentabrams.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+}
+server {
+    if ($host = deadradio.agentabrams.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name deadradio.agentabrams.com;
+    return 404; # managed by Certbot
+
+
+}
\ No newline at end of file
diff --git a/sites-available/default b/sites-available/default
new file mode 100644
index 0000000..bab9e86
--- /dev/null
+++ b/sites-available/default
@@ -0,0 +1,170 @@
+##
+# You should look at the following URL's in order to grasp a solid understanding
+# of Nginx configuration files in order to fully unleash the power of Nginx.
+# https://www.nginx.com/resources/wiki/start/
+# https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/
+# https://wiki.debian.org/Nginx/DirectoryStructure
+#
+# In most cases, administrators will remove this file from sites-enabled/ and
+# leave it as reference inside of sites-available where it will continue to be
+# updated by the nginx packaging team.
+#
+# This file will automatically load configuration files provided by other
+# applications, such as Drupal or Wordpress. These applications will be made
+# available underneath a path with that package name, such as /drupal8.
+#
+# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
+##
+
+# Default server configuration for static files and reverse proxy
+server {
+    listen 80 default_server;
+    listen [::]:80 default_server;
+    
+    server_name _;
+    
+    root /var/www/html;
+    index index.html index.htm index.nginx-debian.html;
+    
+    # Enable gzip compression
+    gzip on;
+    gzip_vary on;
+    gzip_min_length 1024;
+    gzip_proxied any;
+    gzip_comp_level 6;
+    gzip_types
+        text/plain
+        text/css
+        text/xml
+        text/javascript
+        application/json
+        application/javascript
+        application/xml+rss
+        application/atom+xml
+        image/svg+xml;
+    
+    # Security headers
+    add_header X-Frame-Options "SAMEORIGIN" always;
+    add_header X-Content-Type-Options "nosniff" always;
+    add_header X-XSS-Protection "1; mode=block" always;
+    add_header Referrer-Policy "no-referrer-when-downgrade" always;
+    
+    # Static files - serve directly from /var/www/html
+    location / {
+        try_files $uri $uri/ @fallback;
+        
+        # Cache static assets
+        location ~* \.(css|js|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
+            expires 1y;
+            add_header Cache-Control "public, immutable";
+        }
+    }
+    
+    # Fallback for non-existent files - try to serve index.html
+    location @fallback {
+        try_files /index.html =404;
+    }
+    
+    # Reverse proxy for ImportNewSkufromURL
+    location /import/ {
+        proxy_pass http://127.0.0.1:9830/;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_buffering off;
+        proxy_cache_bypass $http_upgrade;
+        proxy_connect_timeout 60s;
+        proxy_send_timeout 60s;
+        proxy_read_timeout 60s;
+    }
+    
+    # Reverse proxy for vendor test dashboard (port 9831)
+    location /vendor-test/ {
+        proxy_pass http://127.0.0.1:9831/;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_buffering off;
+        proxy_cache_bypass $http_upgrade;
+        proxy_connect_timeout 60s;
+        proxy_send_timeout 60s;
+        proxy_read_timeout 60s;
+    }
+    
+    # Reverse proxy for vendor dashboard v2 (port 9832)
+    location /vendor-dashboard/ {
+        proxy_pass http://127.0.0.1:9832/;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_buffering off;
+        proxy_cache_bypass $http_upgrade;
+        proxy_connect_timeout 60s;
+        proxy_send_timeout 60s;
+        proxy_read_timeout 60s;
+    }
+    
+    # Room settings images
+    location /room-settings/ {
+        alias /root/Projects/Designer-Wallcoverings/room-settings/;
+        expires 30d;
+        add_header Cache-Control "public";
+        add_header Access-Control-Allow-Origin "*";
+    }
+
+    # DW Central — Agent Fleet Command (port 7240)
+    location /central/ {
+        proxy_pass http://127.0.0.1:7240/;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_buffering off;
+        proxy_cache_bypass $http_upgrade;
+        proxy_connect_timeout 60s;
+        proxy_send_timeout 60s;
+        proxy_read_timeout 60s;
+    }
+
+    # Agent avatar images
+    location /agent-avatars/ {
+        alias /root/DW-Agents/agent-avatars/;
+        expires 30d;
+        add_header Cache-Control "public";
+        add_header Access-Control-Allow-Origin "*";
+    }
+
+    # Health check endpoint
+    location /nginx-health {
+        access_log off;
+        return 200 "healthy\n";
+        add_header Content-Type text/plain;
+    }
+    
+    # Deny access to hidden files
+    location ~ /\. {
+        deny all;
+        access_log off;
+        log_not_found off;
+    }
+    
+    # Deny access to backup files
+    location ~ ~$ {
+        deny all;
+        access_log off;
+        log_not_found off;
+    }
+}
+
+# Upstream definitions for load balancing (future use)
+upstream dw_agents {
+    least_conn;
+    server 127.0.0.1:9800;  # Master Hub
+    server 127.0.0.1:9801;  # Legal Team
+    server 127.0.0.1:9802;  # Marketing
+    server 127.0.0.1:9803;  # Accounting
+}
+
diff --git a/sites-available/default.dpkg-dist b/sites-available/default.dpkg-dist
new file mode 100644
index 0000000..c5af914
--- /dev/null
+++ b/sites-available/default.dpkg-dist
@@ -0,0 +1,91 @@
+##
+# You should look at the following URL's in order to grasp a solid understanding
+# of Nginx configuration files in order to fully unleash the power of Nginx.
+# https://www.nginx.com/resources/wiki/start/
+# https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/
+# https://wiki.debian.org/Nginx/DirectoryStructure
+#
+# In most cases, administrators will remove this file from sites-enabled/ and
+# leave it as reference inside of sites-available where it will continue to be
+# updated by the nginx packaging team.
+#
+# This file will automatically load configuration files provided by other
+# applications, such as Drupal or Wordpress. These applications will be made
+# available underneath a path with that package name, such as /drupal8.
+#
+# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
+##
+
+# Default server configuration
+#
+server {
+	listen 80 default_server;
+	listen [::]:80 default_server;
+
+	# SSL configuration
+	#
+	# listen 443 ssl default_server;
+	# listen [::]:443 ssl default_server;
+	#
+	# Note: You should disable gzip for SSL traffic.
+	# See: https://bugs.debian.org/773332
+	#
+	# Read up on ssl_ciphers to ensure a secure configuration.
+	# See: https://bugs.debian.org/765782
+	#
+	# Self signed certs generated by the ssl-cert package
+	# Don't use them in a production server!
+	#
+	# include snippets/snakeoil.conf;
+
+	root /var/www/html;
+
+	# Add index.php to the list if you are using PHP
+	index index.html index.htm index.nginx-debian.html;
+
+	server_name _;
+
+	location / {
+		# First attempt to serve request as file, then
+		# as directory, then fall back to displaying a 404.
+		try_files $uri $uri/ =404;
+	}
+
+	# pass PHP scripts to FastCGI server
+	#
+	#location ~ \.php$ {
+	#	include snippets/fastcgi-php.conf;
+	#
+	#	# With php-fpm (or other unix sockets):
+	#	fastcgi_pass unix:/run/php/php7.4-fpm.sock;
+	#	# With php-cgi (or other tcp sockets):
+	#	fastcgi_pass 127.0.0.1:9000;
+	#}
+
+	# deny access to .htaccess files, if Apache's document root
+	# concurs with nginx's one
+	#
+	#location ~ /\.ht {
+	#	deny all;
+	#}
+}
+
+
+# Virtual Host configuration for example.com
+#
+# You can move that to a different file under sites-available/ and symlink that
+# to sites-enabled/ to enable it.
+#
+#server {
+#	listen 80;
+#	listen [::]:80;
+#
+#	server_name example.com;
+#
+#	root /var/www/example.com;
+#	index index.html;
+#
+#	location / {
+#		try_files $uri $uri/ =404;
+#	}
+#}
diff --git a/sites-available/default.save b/sites-available/default.save
new file mode 100644
index 0000000..fd48d7e
--- /dev/null
+++ b/sites-available/default.save
@@ -0,0 +1,96 @@
+##
+# You should look at the following URL's in order to grasp a solid understanding
+# of Nginx configuration files in order to fully unleash the power of Nginx.
+# https://www.nginx.com/resources/wiki/start/
+# https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/
+# https://wiki.debian.org/Nginx/DirectoryStructure
+#
+# In most cases, administrators will remove this file from sites-enabled/ and
+# leave it as reference inside of sites-available where it will continue to be
+# updated by the nginx packaging team.
+#
+# This file will automatically load configuration files provided by other
+# applications, such as Drupal or Wordpress. These applications will be made
+# available underneath a path with that package name, such as /drupal8.
+#
+# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
+##
+
+# Default server configuration
+#
+server {
+	listen 80;
+    server_name losgardeners.com www.losgardeners.com;
+
+	# SSL configuration
+	#
+	# listen 443 ssl default_server;
+	# listen [::]:443 ssl default_server;
+	#
+	# Note: You should disable gzip for SSL traffic.	# See: https://bugs.debian.org/773332
+	#
+	# Read up on ssl_ciphers to ensure a secure configuration.
+	# See: https://bugs.debian.org/765782
+	#
+	# Self signed certs generated by the ssl-cert package
+	# Don't use them in a production server!
+	#
+	# include snippets/snakeoil.conf;
+
+	root /var/www/html;
+
+	# Add index.php to the list if you are using PHP
+	index index.html index.htm index.nginx-debian.html;
+
+	server_name _;
+
+	location / {
+           proxy_pass http://localhost:3000;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+
+		# First attempt to serve request as file, then
+		# as directory, then fall back to displaying a 404.
+		try_files $uri $uri/ =404
+	}
+
+	# pass PHP scripts to FastCGI server
+	#
+	#location ~ \.php$ {
+	#	include snippets/fastcgi-php.conf;
+	#
+	#	# With php-fpm (or other unix sockets):
+	#	fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
+	#	# With php-cgi (or other tcp sockets):
+	#	fastcgi_pass 127.0.0.1:9000;
+	#}
+
+	# deny access to .htaccess files, if Apache's document root
+	# concurs with nginx's one
+	#
+	#location ~ /\.ht {
+	#	deny all;
+	#}
+}
+
+}
+# Virtual Host configuration for example.com
+#
+# You can move that to a different file under sites-available/ and symlink that
+# to sites-enabled/ to enable it.
+#
+#server {
+#	listen 80;
+#	listen [::]:80;
+#
+#	server_name example.com;
+#
+#	root /var/www/example.com;
+#	index index.html;
+#
+#	location / {
+#		try_files $uri $uri/ =404;
+#	}
+#}
diff --git a/sites-available/designerline.agentabrams.com b/sites-available/designerline.agentabrams.com
new file mode 100644
index 0000000..0ab3f7c
--- /dev/null
+++ b/sites-available/designerline.agentabrams.com
@@ -0,0 +1,47 @@
+server {
+    server_name designerline.agentabrams.com;
+
+    access_log /var/log/nginx/designerline.agentabrams.com.access.log;
+    error_log /var/log/nginx/designerline.agentabrams.com.error.log;
+
+    add_header X-Content-Type-Options "nosniff" always;
+    add_header Referrer-Policy "strict-origin-when-cross-origin" always;
+    add_header Cache-Control "no-store, must-revalidate" always;
+
+    auth_basic "designerline beta — trade designers only";
+    auth_basic_user_file /etc/nginx/.htpasswd-builds;
+
+    # certbot challenges should be unauthed
+    location ^~ /.well-known/acme-challenge/ {
+        auth_basic off;
+        root /var/www/html;
+    }
+
+    location / {
+        proxy_pass http://127.0.0.1:9781;
+        proxy_set_header Host $host;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_connect_timeout 10s;
+        proxy_read_timeout 30s;
+    }
+
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/designerline.agentabrams.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/designerline.agentabrams.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+}
+server {
+    if ($host = designerline.agentabrams.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    server_name designerline.agentabrams.com;
+    return 404; # managed by Certbot
+
+
+}
\ No newline at end of file
diff --git a/sites-available/designerlookbooks.com b/sites-available/designerlookbooks.com
new file mode 100644
index 0000000..245c325
--- /dev/null
+++ b/sites-available/designerlookbooks.com
@@ -0,0 +1,24 @@
+# designerlookbooks.com — pre-DNS-flip vhost (port 80 only).
+# TLS + CF proxy added in a later wave once NS is swapped to Cloudflare.
+server {
+    listen 80;
+    listen [::]:80;
+    server_name designerlookbooks.com www.designerlookbooks.com;
+
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+
+    # ACME challenge path so certbot can issue once DNS flips.
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+
+    # CF caches HTML otherwise (Steve's standing rule).
+    add_header Cache-Control "no-store, must-revalidate" always;
+
+    location / {
+        proxy_pass http://127.0.0.1:9923;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/designermagnetics.com.conf b/sites-available/designermagnetics.com.conf
new file mode 100644
index 0000000..d8631c9
--- /dev/null
+++ b/sites-available/designermagnetics.com.conf
@@ -0,0 +1,21 @@
+# designermagnetics.com — dwf-designermagnetics :10014
+server {
+    listen 80;
+    listen [::]:80;
+    server_name designermagnetics.com www.designermagnetics.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10014;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/designerrepresentatives.com b/sites-available/designerrepresentatives.com
new file mode 100644
index 0000000..52bf1b6
--- /dev/null
+++ b/sites-available/designerrepresentatives.com
@@ -0,0 +1,22 @@
+server {
+    listen 80;
+    listen [::]:80;
+    server_name designerrepresentatives.com www.designerrepresentatives.com;
+
+    access_log /var/log/nginx/designerrepresentatives.access.log;
+    error_log  /var/log/nginx/designerrepresentatives.error.log;
+
+    add_header Cache-Control "no-store, must-revalidate" always;
+
+    location / {
+        proxy_pass http://127.0.0.1:9924;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection "upgrade";
+        proxy_read_timeout 60s;
+    }
+}
diff --git a/sites-available/designerssalesreps.com b/sites-available/designerssalesreps.com
new file mode 100644
index 0000000..11b0a5f
--- /dev/null
+++ b/sites-available/designerssalesreps.com
@@ -0,0 +1,10 @@
+# 301 redirect: designerssalesreps.com -> designerrepresentatives.com
+# Listen :80 only — TLS comes after DNS flip.
+server {
+    listen 80;
+    listen [::]:80;
+    server_name designerssalesreps.com www.designerssalesreps.com;
+
+    add_header Cache-Control "no-store, must-revalidate" always;
+    return 301 https://designerrepresentatives.com$request_uri;
+}
diff --git a/sites-available/designerwallcoverings.ai b/sites-available/designerwallcoverings.ai
new file mode 100644
index 0000000..14fd897
--- /dev/null
+++ b/sites-available/designerwallcoverings.ai
@@ -0,0 +1,27 @@
+# designerwallcoverings.ai — pre-DNS-flip vhost (port 80 only).
+# TLS + CF proxy added later once NS swap completes.
+server {
+    listen 80;
+    listen [::]:80;
+    server_name designerwallcoverings.ai www.designerwallcoverings.ai;
+
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+
+    # ACME challenge path so certbot can issue once DNS flips.
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+
+    # Steve's standing rule: no-store on HTML so CF doesn't cache.
+    add_header Cache-Control "no-store, must-revalidate" always;
+
+    client_max_body_size 16m;
+
+    location / {
+        proxy_pass http://127.0.0.1:9925;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_read_timeout 90s;
+    }
+}
diff --git a/sites-available/designtradelive.com b/sites-available/designtradelive.com
new file mode 100644
index 0000000..201e97b
--- /dev/null
+++ b/sites-available/designtradelive.com
@@ -0,0 +1,19 @@
+server {
+    listen 80;
+    listen [::]:80;
+    server_name designtradelive.com www.designtradelive.com;
+
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+
+    location / {
+        proxy_pass http://localhost:9926;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/dw-admin-auth b/sites-available/dw-admin-auth
new file mode 100644
index 0000000..2990e8e
--- /dev/null
+++ b/sites-available/dw-admin-auth
@@ -0,0 +1,195 @@
+# DW-Agents Protected Admin Services
+# Simple basic_auth protection for internal admin tools
+# Credentials: admin / DW2025Secure!
+
+# Define trusted IPs that bypass auth
+geo $auth_bypass {
+    default         0;
+    127.0.0.1       1;
+    ::1             1;
+    45.61.58.125    1;
+}
+
+server {
+    listen 9001;
+    listen [::]:9001;
+    server_name 45.61.58.125;
+
+    # Security headers
+    add_header X-Frame-Options "SAMEORIGIN" always;
+    add_header X-Content-Type-Options "nosniff" always;
+    add_header X-XSS-Protection "1; mode=block" always;
+
+    # Proxy settings
+    proxy_http_version 1.1;
+    proxy_set_header Host $host;
+    proxy_set_header X-Real-IP $remote_addr;
+    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    proxy_set_header X-Forwarded-Proto $scheme;
+    proxy_set_header Upgrade $http_upgrade;
+    proxy_set_header Connection 'upgrade';
+    proxy_connect_timeout 60s;
+    proxy_send_timeout 60s;
+    proxy_read_timeout 60s;
+
+    # ============================================
+    # ADMIN TOOLS (Protected with basic_auth)
+    # ============================================
+
+    # Product Importer (3002)
+    location /import/ {
+        satisfy any;
+        allow 127.0.0.1;
+        allow 45.61.58.125;
+        deny all;
+        auth_basic "DW Admin";
+        auth_basic_user_file /etc/nginx/.htpasswd;
+
+        proxy_pass http://127.0.0.1:3002/;
+    }
+
+    # Dashboard Monitor (9990)
+    location /dashboard/ {
+        satisfy any;
+        allow 127.0.0.1;
+        allow 45.61.58.125;
+        deny all;
+        auth_basic "DW Admin";
+        auth_basic_user_file /etc/nginx/.htpasswd;
+
+        proxy_pass http://127.0.0.1:9990/;
+    }
+
+    # Master Hub (9893)
+    location /hub/ {
+        satisfy any;
+        allow 127.0.0.1;
+        allow 45.61.58.125;
+        deny all;
+        auth_basic "DW Admin";
+        auth_basic_user_file /etc/nginx/.htpasswd;
+
+        proxy_pass http://127.0.0.1:9893/;
+    }
+
+    # Screenshot Upload (7577)
+    location /screenshot/ {
+        satisfy any;
+        allow 127.0.0.1;
+        allow 45.61.58.125;
+        deny all;
+        auth_basic "DW Admin";
+        auth_basic_user_file /etc/nginx/.htpasswd;
+
+        proxy_pass http://127.0.0.1:7577/;
+        client_max_body_size 50M;
+    }
+
+    # Vendor Dashboard (9832)
+    location /vendor/ {
+        satisfy any;
+        allow 127.0.0.1;
+        allow 45.61.58.125;
+        deny all;
+        auth_basic "DW Admin";
+        auth_basic_user_file /etc/nginx/.htpasswd;
+
+        proxy_pass http://127.0.0.1:9832/;
+    }
+
+    # ============================================
+    # EXECUTIVE DASHBOARDS (Protected)
+    # ============================================
+
+    location /exec/purchasing/ {
+        satisfy any;
+        allow 127.0.0.1;
+        allow 45.61.58.125;
+        deny all;
+        auth_basic "DW Admin";
+        auth_basic_user_file /etc/nginx/.htpasswd;
+        proxy_pass http://127.0.0.1:7120/;
+    }
+
+    location /exec/marketing/ {
+        satisfy any;
+        allow 127.0.0.1;
+        allow 45.61.58.125;
+        deny all;
+        auth_basic "DW Admin";
+        auth_basic_user_file /etc/nginx/.htpasswd;
+        proxy_pass http://127.0.0.1:7121/;
+    }
+
+    # ============================================
+    # DW-AGENTS (Protected)
+    # ============================================
+
+    location /agent/legal/ {
+        satisfy any;
+        allow 127.0.0.1;
+        allow 45.61.58.125;
+        deny all;
+        auth_basic "DW Admin";
+        auth_basic_user_file /etc/nginx/.htpasswd;
+        proxy_pass http://127.0.0.1:9879/;
+    }
+
+    location /agent/accounting/ {
+        satisfy any;
+        allow 127.0.0.1;
+        allow 45.61.58.125;
+        deny all;
+        auth_basic "DW Admin";
+        auth_basic_user_file /etc/nginx/.htpasswd;
+        proxy_pass http://127.0.0.1:9886/;
+    }
+
+    # ============================================
+    # HEALTH CHECK (No Auth)
+    # ============================================
+    location /health {
+        access_log off;
+        return 200 'DW Admin Portal OK';
+        add_header Content-Type text/plain;
+    }
+
+    # ============================================
+    # ROOT - Simple landing page
+    # ============================================
+    location / {
+        satisfy any;
+        allow 127.0.0.1;
+        allow 45.61.58.125;
+        deny all;
+        auth_basic "DW Admin";
+        auth_basic_user_file /etc/nginx/.htpasswd;
+
+        return 200 '<!DOCTYPE html>
+<html>
+<head><title>DW Admin Portal</title>
+<style>
+body { font-family: Arial; background: #1a1a2e; color: white; display: flex; justify-content: center; align-items: center; min-height: 100vh; margin: 0; }
+.container { text-align: center; padding: 40px; }
+h1 { color: #667eea; }
+.links { margin-top: 30px; }
+.links a { display: inline-block; margin: 10px; padding: 15px 30px; background: #667eea; color: white; text-decoration: none; border-radius: 8px; }
+.links a:hover { background: #764ba2; }
+</style>
+</head>
+<body>
+<div class="container">
+<h1>DW Admin Portal</h1>
+<p>Protected admin services</p>
+<div class="links">
+<a href="/dashboard/">Dashboard</a>
+<a href="/hub/">Master Hub</a>
+<a href="/import/">Product Import</a>
+<a href="/vendor/">Vendor Dashboard</a>
+</div>
+</div>
+</body>
+</html>';
+        add_header Content-Type text/html;
+    }
+}
diff --git a/sites-available/dw.greendomainbrokers.com b/sites-available/dw.greendomainbrokers.com
new file mode 100644
index 0000000..db25f85
--- /dev/null
+++ b/sites-available/dw.greendomainbrokers.com
@@ -0,0 +1,342 @@
+# DW.greendomainbrokers.com - Designer Wallcoverings Central Portal
+# All DW-Agents, admin tools, and services accessible from one place
+# Cloudflare real IP detection is handled globally in /etc/nginx/conf.d/cloudflare-real-ip.conf
+# Note: Run certbot after DNS is configured: sudo certbot --nginx -d dw.greendomainbrokers.com
+
+# HTTP server (will be upgraded to HTTPS by certbot)
+server {
+    server_name dw.greendomainbrokers.com tools.greendomainbrokers.com;
+
+    # Security headers
+    add_header X-Frame-Options "SAMEORIGIN" always;
+    add_header X-Content-Type-Options "nosniff" always;
+    add_header X-XSS-Protection "1; mode=block" always;
+
+    # Basic auth for all protected routes
+    auth_basic "DW Admin Portal";
+    auth_basic_user_file /etc/nginx/.htpasswd;
+
+    # Proxy settings
+    proxy_http_version 1.1;
+    proxy_set_header Host $host;
+    proxy_set_header X-Real-IP $remote_addr;
+    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    proxy_set_header X-Forwarded-Proto $scheme;
+    proxy_set_header Upgrade $http_upgrade;
+    proxy_set_header Connection 'upgrade';
+    proxy_connect_timeout 60s;
+    proxy_send_timeout 60s;
+    proxy_read_timeout 60s;
+
+    # ============================================
+    # LANDING PAGE (Root) - DW Central Portal (port 7400)
+    # App has its own authentication, so disable basic auth here
+    # ============================================
+    location / {
+        auth_basic off;
+        proxy_pass http://127.0.0.1:7240;
+    }
+
+    # Next.js static assets for DW Central
+    location /_next/ {
+        auth_basic off;
+        proxy_pass http://127.0.0.1:7240;
+    }
+
+    # API routes for DW Central auth
+    location /api/auth/ {
+        auth_basic off;
+        proxy_pass http://127.0.0.1:7240;
+    }
+
+    # Login page for DW Central
+    location /login {
+        auth_basic off;
+        proxy_pass http://127.0.0.1:7240;
+    }
+
+    # ============================================
+    # APPS - LETSBEGIN PRD & Ralphy Boy Automation (port 7300)
+    # ============================================
+    location /apps/letsbegin {
+        auth_basic off;
+        proxy_pass http://127.0.0.1:7300;
+    }
+
+    # ============================================
+    # CORE SYSTEMS
+    # ============================================
+
+    location /hub/ {
+        proxy_pass http://127.0.0.1:9893/;
+    }
+
+    location /dashboard/ {
+        proxy_pass http://127.0.0.1:9990/;
+    }
+
+    location /import/ {
+        auth_basic off;  # Uses DW Central SSO
+        proxy_pass http://127.0.0.1:3002/;
+    }
+
+    location /vendor/ {
+        proxy_pass http://127.0.0.1:9832/;
+    }
+
+    # ============================================
+    # EXECUTIVE DASHBOARDS
+    # ============================================
+
+    location /exec/ceo/ {
+        proxy_pass http://127.0.0.1:7120/;
+    }
+
+    location /exec/cfo/ {
+        proxy_pass http://127.0.0.1:7121/;
+    }
+
+    location /exec/coo/ {
+        proxy_pass http://127.0.0.1:7122/;
+    }
+
+    location /exec/vp-ops/ {
+        proxy_pass http://127.0.0.1:7125/;
+    }
+
+    # ============================================
+    # BUSINESS AGENTS
+    # ============================================
+
+    location /agent/security/ {
+        proxy_pass http://127.0.0.1:9892/;
+    }
+
+    location /agent/sku/ {
+        proxy_pass http://127.0.0.1:9877/;
+    }
+
+    location /agent/skills/ {
+        proxy_pass http://127.0.0.1:9894/;
+    }
+
+    location /agent/bigquery/ {
+        proxy_pass http://127.0.0.1:7677/;
+    }
+
+    location /agent/crash-resolver/ {
+        proxy_pass http://127.0.0.1:9895/;
+    }
+
+    location /agent/uptime/ {
+        proxy_pass http://127.0.0.1:9882/;
+    }
+
+    location /agent/purchasing/ {
+        proxy_pass http://127.0.0.1:9880/;
+    }
+
+    location /agent/marketing/ {
+        proxy_pass http://127.0.0.1:9881/;
+    }
+
+    location /agent/accounting/ {
+        proxy_pass http://127.0.0.1:9885/;
+    }
+
+    location /agent/legal/ {
+        proxy_pass http://127.0.0.1:9878/;
+    }
+
+    location /agent/zendesk/ {
+        proxy_pass http://127.0.0.1:9884/;
+    }
+
+    location /agent/trends/ {
+        proxy_pass http://127.0.0.1:9883/;
+    }
+
+    location /agent/samples/ {
+        proxy_pass http://127.0.0.1:9879/;
+    }
+
+    location /agent/shopify/ {
+        proxy_pass http://127.0.0.1:7238/;
+    }
+
+    # ============================================
+    # MONITORING & LOGS
+    # ============================================
+
+    location /logs/ {
+        proxy_pass http://127.0.0.1:7239/;
+    }
+
+    location /ui-manager/ {
+        proxy_pass http://127.0.0.1:7240/;
+    }
+
+    location /attention/ {
+        proxy_pass http://127.0.0.1:9886/;
+    }
+
+    # ============================================
+    # BOARDROOM SERVICES
+    # ============================================
+
+    # Boardroom Agent V1 — port 9815 (has own auth)
+    location /boardroom/ {
+        auth_basic off;
+        proxy_pass http://127.0.0.1:9815/;
+        proxy_http_version 1.1;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+    }
+
+    # Governance Engine Frontend — port 4030 (has own auth)
+    location /governance/ {
+        auth_basic off;
+        proxy_pass http://127.0.0.1:4030/;
+        proxy_http_version 1.1;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+    }
+
+    # Governance API direct — port 4020 (has own auth)
+    location /governance-api/ {
+        auth_basic off;
+        proxy_pass http://127.0.0.1:4020/;
+    }
+
+    # Governance WebSocket — port 4020
+    location /governance/ws {
+        auth_basic off;
+        proxy_pass http://127.0.0.1:4020/ws;
+        proxy_http_version 1.1;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection "upgrade";
+        proxy_read_timeout 86400;
+    }
+
+    # Boardroom V2 Frontend (Lincoln) — port 4050 (has own auth)
+    location /brv2/ {
+        auth_basic off;
+        proxy_pass http://127.0.0.1:4050/;
+        proxy_http_version 1.1;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+    }
+
+    # V2 API direct — port 4040 (has own auth)
+    location /brv2-api/ {
+        auth_basic off;
+        proxy_pass http://127.0.0.1:4040/;
+    }
+
+    # V2 WebSocket — port 4040
+    location /brv2/ws {
+        auth_basic off;
+        proxy_pass http://127.0.0.1:4040/ws;
+        proxy_http_version 1.1;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection "upgrade";
+        proxy_read_timeout 86400;
+    }
+
+    # 3D War Room — port 7680/7681 (has own auth)
+    location /warroom/ {
+        auth_basic off;
+        proxy_pass http://127.0.0.1:7680/;
+        proxy_http_version 1.1;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+    }
+
+    location /warroom/ws {
+        auth_basic off;
+        proxy_pass http://127.0.0.1:7680/ws;
+        proxy_http_version 1.1;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection "upgrade";
+        proxy_read_timeout 86400;
+    }
+
+    # ============================================
+    # TOOLS & UTILITIES
+    # ============================================
+
+    # Legacy /ralph/ path redirects to Letsbegin subdomain
+    location /ralph/ {
+        return 301 https://letsbegin.greendomainbrokers.com/;
+    }
+
+    location /portfolio/ {
+        proxy_pass http://127.0.0.1:7899/;
+    }
+
+    location /room-setting {
+        auth_basic off;  # Uses DW Central SSO
+        proxy_pass http://127.0.0.1:3075;
+    }
+
+    location /150dpi/ {
+        proxy_pass http://127.0.0.1:3150/;
+    }
+
+    location /system/ {
+        proxy_pass http://127.0.0.1:8888/;
+    }
+
+    # ============================================
+    # ART PRINT SHOP API (port 9875) — called from Shopify storefront
+    # No auth — public API for Shopify page integration
+    # ============================================
+    location /art-api/ {
+        auth_basic off;
+        proxy_pass http://127.0.0.1:9875/api/;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+
+        # CORS for Shopify cross-origin requests
+        add_header Access-Control-Allow-Origin '*' always;
+        add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS' always;
+        add_header Access-Control-Allow-Headers 'Content-Type' always;
+
+        if ($request_method = 'OPTIONS') {
+            return 204;
+        }
+    }
+
+    # ============================================
+    # HEALTH CHECK (No Auth)
+    # ============================================
+    location /health {
+        auth_basic off;
+        return 200 'DW Central OK';
+        add_header Content-Type text/plain;
+    }
+
+    listen [::]:443 ssl; # managed by Certbot
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/dw.greendomainbrokers.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/dw.greendomainbrokers.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+}
+
+server {
+    if ($host = dw.greendomainbrokers.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name dw.greendomainbrokers.com tools.greendomainbrokers.com;
+    return 404; # managed by Certbot
+
+
+}
\ No newline at end of file
diff --git a/sites-available/embroideredwallpaper.com b/sites-available/embroideredwallpaper.com
new file mode 100644
index 0000000..de639c4
--- /dev/null
+++ b/sites-available/embroideredwallpaper.com
@@ -0,0 +1,36 @@
+server {
+    server_name embroideredwallpaper.com www.embroideredwallpaper.com;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        return 301 https://fabricwallpaper.com$request_uri;
+    }
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    listen [::]:443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/embroideredwallpaper.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/embroideredwallpaper.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.embroideredwallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = embroideredwallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80; listen [::]:80;
+    server_name embroideredwallpaper.com www.embroideredwallpaper.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/etciemurals.com.conf b/sites-available/etciemurals.com.conf
new file mode 100644
index 0000000..c23d24c
--- /dev/null
+++ b/sites-available/etciemurals.com.conf
@@ -0,0 +1,21 @@
+# etciemurals.com — dwf-etciemurals :10015
+server {
+    listen 80;
+    listen [::]:80;
+    server_name etciemurals.com www.etciemurals.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10015;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/fabricfriday.com b/sites-available/fabricfriday.com
new file mode 100644
index 0000000..f91ac6e
--- /dev/null
+++ b/sites-available/fabricfriday.com
@@ -0,0 +1,77 @@
+server {
+    listen 80;
+    listen [::]:80;
+    server_name fabricfriday.com www.fabricfriday.com;
+
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / { return 301 https://$host$request_uri; }
+}
+
+server {
+    listen 443 ssl http2;
+    listen [::]:443 ssl http2;
+    server_name fabricfriday.com www.fabricfriday.com;
+
+    ssl_certificate /etc/letsencrypt/live/fabricfriday.com/fullchain.pem;
+    ssl_certificate_key /etc/letsencrypt/live/fabricfriday.com/privkey.pem;
+    ssl_protocols TLSv1.2 TLSv1.3;
+    ssl_prefer_server_ciphers off;
+
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+
+    location ~* \.(html|htm)$ {
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_pass http://localhost:9898;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+
+    location / {
+        proxy_pass http://localhost:9898;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_cache_bypass $http_upgrade;
+    }
+}
diff --git a/sites-available/fabricfridays.com.conf b/sites-available/fabricfridays.com.conf
new file mode 100644
index 0000000..983faa6
--- /dev/null
+++ b/sites-available/fabricfridays.com.conf
@@ -0,0 +1,21 @@
+# fabricfridays.com — dwf-fabricfridays :10016
+server {
+    listen 80;
+    listen [::]:80;
+    server_name fabricfridays.com www.fabricfridays.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10016;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/fabricwallpaper.com b/sites-available/fabricwallpaper.com
new file mode 100644
index 0000000..d171453
--- /dev/null
+++ b/sites-available/fabricwallpaper.com
@@ -0,0 +1,62 @@
+server {
+    server_name fabricwallpaper.com www.fabricwallpaper.com;
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9846;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+
+    listen [::]:443 ssl; # managed by Certbot
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/fabricwallpaper.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/fabricwallpaper.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+
+
+}
+server {
+    if ($host = www.fabricwallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = fabricwallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name fabricwallpaper.com www.fabricwallpaper.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/ffepurchasing.com b/sites-available/ffepurchasing.com
new file mode 100644
index 0000000..3dedfd3
--- /dev/null
+++ b/sites-available/ffepurchasing.com
@@ -0,0 +1,42 @@
+# ffepurchasing.com — staged 2026-05-10 by gtag-rollout work
+# HTTP-only initially. Once DNS flips from GoDaddy to Cloudflare→Kamatera,
+# run: certbot --nginx -d ffepurchasing.com -d www.ffepurchasing.com --non-interactive --agree-tos -m steve@designerwallcoverings.com
+server {
+  server_name ffepurchasing.com www.ffepurchasing.com;
+  add_header Cache-Control "no-store, must-revalidate" always;
+  location / {
+    proxy_pass http://127.0.0.1:9907;
+    proxy_set_header Host $host;
+    proxy_set_header X-Real-IP $remote_addr;
+    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    proxy_set_header X-Forwarded-Proto $scheme;
+  }
+
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/ffepurchasing.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/ffepurchasing.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+
+server {
+    if ($host = www.ffepurchasing.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = ffepurchasing.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+  listen 80;
+  server_name ffepurchasing.com www.ffepurchasing.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/fireratedwallcovering.com.conf b/sites-available/fireratedwallcovering.com.conf
new file mode 100644
index 0000000..eea9def
--- /dev/null
+++ b/sites-available/fireratedwallcovering.com.conf
@@ -0,0 +1,21 @@
+# fireratedwallcovering.com — dwf-fireratedwallcovering :10017
+server {
+    listen 80;
+    listen [::]:80;
+    server_name fireratedwallcovering.com www.fireratedwallcovering.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10017;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/flocked.org.conf b/sites-available/flocked.org.conf
new file mode 100644
index 0000000..7cf8843
--- /dev/null
+++ b/sites-available/flocked.org.conf
@@ -0,0 +1,21 @@
+# flocked.org — dwf-flocked :10018
+server {
+    listen 80;
+    listen [::]:80;
+    server_name flocked.org www.flocked.org;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10018;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/flockedwallpaper.com b/sites-available/flockedwallpaper.com
new file mode 100644
index 0000000..dbf03d4
--- /dev/null
+++ b/sites-available/flockedwallpaper.com
@@ -0,0 +1,100 @@
+# HTTP - Proxy to local Node.js service
+server {
+    listen 80;
+    listen [::]:80;
+    server_name flockedwallpaper.com www.flockedwallpaper.com;
+
+    # CloudFlare IP Detection
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+
+    # Block CopyrightAgent crawlers
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") {
+        return 403;
+    }
+
+    # Let's Encrypt ACME challenge
+    location /.well-known/acme-challenge/ {
+        root /var/www/html;
+    }
+
+    location / {
+        proxy_pass http://localhost:3200;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_cache_bypass $http_upgrade;
+    }
+}
+
+# HTTPS - Proxy to local Node.js service
+server {
+    listen 443 ssl http2;
+    listen [::]:443 ssl http2;
+    server_name flockedwallpaper.com www.flockedwallpaper.com;
+
+    # SSL Configuration
+    ssl_certificate /etc/letsencrypt/live/flockedwallpaper.com/fullchain.pem;
+    ssl_certificate_key /etc/letsencrypt/live/flockedwallpaper.com/privkey.pem;
+    ssl_protocols TLSv1.2 TLSv1.3;
+    ssl_ciphers HIGH:!aNULL:!MD5;
+    ssl_prefer_server_ciphers on;
+
+    # CloudFlare IP Detection
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+
+    # Block CopyrightAgent crawlers
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") {
+        return 403;
+    }
+
+    # Let's Encrypt ACME challenge
+    location /.well-known/acme-challenge/ {
+        root /var/www/html;
+    }
+
+    location / {
+        proxy_pass http://localhost:3200;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_cache_bypass $http_upgrade;
+    }
+}
diff --git a/sites-available/forza.agentabrams.com b/sites-available/forza.agentabrams.com
new file mode 100644
index 0000000..df3cf5c
--- /dev/null
+++ b/sites-available/forza.agentabrams.com
@@ -0,0 +1,55 @@
+# forza.agentabrams.com — FORZA law firm website mockups
+# Static site · deployed from /root/git/Forza.git via post-receive hook
+
+server {
+    server_name forza.agentabrams.com;
+
+    root /var/www/forza.agentabrams.com;
+    index index.html;
+
+    access_log /var/log/nginx/forza.agentabrams.com.access.log;
+    error_log /var/log/nginx/forza.agentabrams.com.error.log;
+
+    # Security headers
+    add_header X-Frame-Options "SAMEORIGIN" always;
+    add_header X-Content-Type-Options "nosniff" always;
+    add_header X-XSS-Protection "1; mode=block" always;
+    add_header Referrer-Policy "strict-origin-when-cross-origin" always;
+
+    # Gzip
+    gzip on;
+    gzip_types text/plain text/css text/javascript application/javascript application/json image/svg+xml;
+    gzip_min_length 1024;
+
+    # Serve static files; fall back to directory index then 404
+    location / {
+        try_files $uri $uri/ $uri/index.html =404;
+    }
+
+    # Cache static assets aggressively
+    location ~* \.(css|js|png|jpg|jpeg|gif|svg|woff|woff2|ico)$ {
+        expires 7d;
+        add_header Cache-Control "public, immutable";
+    }
+
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/forza.agentabrams.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/forza.agentabrams.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+}
+
+
+server {
+    if ($host = forza.agentabrams.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    server_name forza.agentabrams.com;
+    return 404; # managed by Certbot
+
+
+}
\ No newline at end of file
diff --git a/sites-available/glassbeadedwallpaper.com b/sites-available/glassbeadedwallpaper.com
new file mode 100644
index 0000000..8b6196d
--- /dev/null
+++ b/sites-available/glassbeadedwallpaper.com
@@ -0,0 +1,100 @@
+# HTTP - Proxy to local Node.js service
+server {
+    listen 80;
+    listen [::]:80;
+    server_name glassbeadedwallpaper.com www.glassbeadedwallpaper.com;
+
+    # CloudFlare IP Detection
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+
+    # Block CopyrightAgent crawlers
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") {
+        return 403;
+    }
+
+    # Let's Encrypt ACME challenge
+    location /.well-known/acme-challenge/ {
+        root /var/www/html;
+    }
+
+    location / {
+        proxy_pass http://localhost:9888;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_cache_bypass $http_upgrade;
+    }
+}
+
+# HTTPS - Proxy to local Node.js service
+server {
+    listen 443 ssl http2;
+    listen [::]:443 ssl http2;
+    server_name glassbeadedwallpaper.com www.glassbeadedwallpaper.com;
+
+    # SSL Configuration
+    ssl_certificate /etc/letsencrypt/live/glassbeadedwallpaper.com/fullchain.pem;
+    ssl_certificate_key /etc/letsencrypt/live/glassbeadedwallpaper.com/privkey.pem;
+    ssl_protocols TLSv1.2 TLSv1.3;
+    ssl_ciphers HIGH:!aNULL:!MD5;
+    ssl_prefer_server_ciphers on;
+
+    # CloudFlare IP Detection
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+
+    # Block CopyrightAgent crawlers
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") {
+        return 403;
+    }
+
+    # Let's Encrypt ACME challenge
+    location /.well-known/acme-challenge/ {
+        root /var/www/html;
+    }
+
+    location / {
+        proxy_pass http://localhost:9888;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_cache_bypass $http_upgrade;
+    }
+}
diff --git a/sites-available/glitterwalls.com b/sites-available/glitterwalls.com
new file mode 100644
index 0000000..600294d
--- /dev/null
+++ b/sites-available/glitterwalls.com
@@ -0,0 +1,42 @@
+server {
+    server_name glitterwalls.com www.glitterwalls.com;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9884;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    }
+    include snippets/dw-frame-allow.conf;
+    include snippets/cloudflare.conf;
+    listen 443 ssl; # managed by Certbot
+    listen [::]:443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/glitterwalls.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/glitterwalls.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.glitterwalls.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = glitterwalls.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80; listen [::]:80;
+    server_name glitterwalls.com www.glitterwalls.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/glitterwalls.com.bak.1778227778 b/sites-available/glitterwalls.com.bak.1778227778
new file mode 100644
index 0000000..43902b4
--- /dev/null
+++ b/sites-available/glitterwalls.com.bak.1778227778
@@ -0,0 +1,41 @@
+server {
+    server_name glitterwalls.com www.glitterwalls.com;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9884;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    }
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    listen [::]:443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/glitterwalls.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/glitterwalls.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.glitterwalls.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = glitterwalls.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80; listen [::]:80;
+    server_name glitterwalls.com www.glitterwalls.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/gmail.agentabrams.com b/sites-available/gmail.agentabrams.com
new file mode 100644
index 0000000..03f8865
--- /dev/null
+++ b/sites-available/gmail.agentabrams.com
@@ -0,0 +1,75 @@
+# Gmail.AgentAbrams.com - Gmail Cleanup Tool
+# Reverse proxy to local Gmail API server on port 8002
+# OAuth authentication handled by application
+
+server {
+    server_name gmail.agentabrams.com;
+    auth_basic "gmail.agentabrams.com — admin only";
+    auth_basic_user_file /etc/nginx/.htpasswd-builds;
+
+
+    # Security headers
+    add_header X-Frame-Options "SAMEORIGIN" always;
+    add_header X-Content-Type-Options "nosniff" always;
+    add_header X-XSS-Protection "1; mode=block" always;
+
+    # Proxy settings
+    proxy_http_version 1.1;
+    proxy_set_header Host $host;
+    proxy_set_header X-Real-IP $remote_addr;
+    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    proxy_set_header X-Forwarded-Proto $scheme;
+    proxy_set_header Upgrade $http_upgrade;
+    proxy_set_header Connection "upgrade";
+    proxy_connect_timeout 60s;
+    proxy_send_timeout 60s;
+    proxy_read_timeout 60s;
+    proxy_cache_bypass $http_upgrade;
+
+    # Main application - proxy to Gmail API server
+    location / {
+        proxy_pass http://127.0.0.1:8002;
+    }
+
+    # API endpoints
+    location /delete {
+        proxy_pass http://127.0.0.1:8002;
+    }
+
+    location /archive {
+        proxy_pass http://127.0.0.1:8002;
+    }
+
+    location /extract {
+        proxy_pass http://127.0.0.1:8002;
+    }
+
+    # JSON data endpoints
+    location /gmail_data.json {
+        proxy_pass http://127.0.0.1:8002;
+    }
+
+    location /gmail_user_profile.json {
+        proxy_pass http://127.0.0.1:8002;
+    }
+
+    # Access logs
+    access_log /var/log/nginx/gmail.agentabrams.com.access.log;
+    error_log /var/log/nginx/gmail.agentabrams.com.error.log;
+
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/gmail.agentabrams.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/gmail.agentabrams.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+}
+
+server {
+    if ($host = gmail.agentabrams.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+    listen 80;
+    server_name gmail.agentabrams.com;
+    return 404; # managed by Certbot
+}
diff --git a/sites-available/goldleafwallpaper.com b/sites-available/goldleafwallpaper.com
new file mode 100644
index 0000000..8d7ad05
--- /dev/null
+++ b/sites-available/goldleafwallpaper.com
@@ -0,0 +1,74 @@
+# HTTP - Proxy to local Node.js service (port 9890)
+server {
+    server_name goldleafwallpaper.com www.goldleafwallpaper.com;
+
+    # CloudFlare IP Detection
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+
+    # Block CopyrightAgent crawlers
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") {
+        return 403;
+    }
+
+    # Let's Encrypt ACME challenge
+    location /.well-known/acme-challenge/ {
+        root /var/www/html;
+    }
+
+    location / {
+        proxy_pass http://localhost:9890;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_cache_bypass $http_upgrade;
+    }
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    listen [::]:443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/goldleafwallpaper.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/goldleafwallpaper.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+
+server {
+    if ($host = www.goldleafwallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = goldleafwallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name goldleafwallpaper.com www.goldleafwallpaper.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/goodquestion.ai b/sites-available/goodquestion.ai
new file mode 100644
index 0000000..30523fa
--- /dev/null
+++ b/sites-available/goodquestion.ai
@@ -0,0 +1,86 @@
+# Rate limiting zone — 10 requests/sec per IP
+limit_req_zone $binary_remote_addr zone=goodquestion:10m rate=10r/s;
+
+# HTTP → HTTPS redirect
+server {
+    listen 80;
+    server_name goodquestion.ai www.goodquestion.ai;
+    return 301 https://goodquestion.ai$request_uri;
+}
+
+# www → apex redirect
+server {
+    listen 443 ssl http2;
+    server_name www.goodquestion.ai;
+
+    ssl_certificate /etc/ssl/certs/goodquestion.crt;
+    ssl_certificate_key /etc/ssl/private/goodquestion.key;
+
+    return 301 https://goodquestion.ai$request_uri;
+}
+
+# Main server block
+server {
+    listen 443 ssl http2;
+    server_name goodquestion.ai;
+
+    # SSL
+    ssl_certificate /etc/ssl/certs/goodquestion.crt;
+    ssl_certificate_key /etc/ssl/private/goodquestion.key;
+    ssl_protocols TLSv1.2 TLSv1.3;
+    ssl_ciphers HIGH:!aNULL:!MD5;
+    ssl_prefer_server_ciphers on;
+    ssl_session_cache shared:SSL:10m;
+    ssl_session_timeout 10m;
+
+    # Security headers
+    add_header X-Content-Type-Options "nosniff" always;
+    add_header X-Frame-Options "SAMEORIGIN" always;
+    add_header X-XSS-Protection "1; mode=block" always;
+    add_header Referrer-Policy "strict-origin-when-cross-origin" always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; frame-src https://www.youtube.com https://youtube.com; font-src 'self' data:; connect-src 'self';" always;
+
+    # Rate limiting (burst allows short spikes)
+    limit_req zone=goodquestion burst=20 nodelay;
+    limit_req_status 429;
+
+    # Gzip compression
+    gzip on;
+    gzip_vary on;
+    gzip_min_length 1024;
+    gzip_types text/plain text/css text/xml text/javascript application/javascript application/json application/xml image/svg+xml;
+
+    # Static asset caching
+    location ~* \.(css|js|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
+        proxy_pass http://127.0.0.1:9883;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        expires 7d;
+        add_header Cache-Control "public, immutable";
+        add_header X-Content-Type-Options "nosniff" always;
+    }
+
+    # Block common exploit paths
+    location ~* (\.php|\.asp|\.aspx|\.jsp|\.cgi|wp-admin|wp-login|\.env|\.git) {
+        return 444;
+    }
+
+    # Main proxy
+    location / {
+        proxy_pass http://127.0.0.1:9883;
+        proxy_http_version 1.1;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_set_header Host $host;
+        proxy_cache_bypass $http_upgrade;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+
+        # Timeouts
+        proxy_connect_timeout 10s;
+        proxy_send_timeout 30s;
+        proxy_read_timeout 30s;
+    }
+}
diff --git a/sites-available/grassclothwallcovering.com.conf b/sites-available/grassclothwallcovering.com.conf
new file mode 100644
index 0000000..05c75a0
--- /dev/null
+++ b/sites-available/grassclothwallcovering.com.conf
@@ -0,0 +1,21 @@
+# grassclothwallcovering.com — dwf-grassclothwallcovering :10019
+server {
+    listen 80;
+    listen [::]:80;
+    server_name grassclothwallcovering.com www.grassclothwallcovering.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10019;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/grassclothwallcoverings b/sites-available/grassclothwallcoverings
new file mode 100644
index 0000000..e74361e
--- /dev/null
+++ b/sites-available/grassclothwallcoverings
@@ -0,0 +1,17 @@
+server {
+    listen 80;
+    listen [::]:80;
+    server_name grassclothwallcoverings.com www.grassclothwallcoverings.com;
+
+    location / {
+        proxy_pass http://localhost:8082;
+        proxy_http_version 1.1;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_set_header Host $host;
+        proxy_cache_bypass $http_upgrade;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
\ No newline at end of file
diff --git a/sites-available/grassclothwallcoverings-redirect b/sites-available/grassclothwallcoverings-redirect
new file mode 100644
index 0000000..e50b3e3
--- /dev/null
+++ b/sites-available/grassclothwallcoverings-redirect
@@ -0,0 +1,8 @@
+server {
+    listen 80;
+    listen [::]:80;
+    server_name grassclothwallcoverings.com www.grassclothwallcoverings.com;
+
+    # Redirect all traffic to port 8082
+    return 301 http://$host:8082$request_uri;
+}
\ No newline at end of file
diff --git a/sites-available/grassclothwallcoverings.com b/sites-available/grassclothwallcoverings.com
new file mode 100644
index 0000000..55c0809
--- /dev/null
+++ b/sites-available/grassclothwallcoverings.com
@@ -0,0 +1,175 @@
+server {
+    listen 80;
+    listen [::]:80;
+    server_name grassclothwallcoverings.com www.grassclothwallcoverings.com;
+
+    # CloudFlare real IP
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/12;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+
+    # Block CopyrightAgent crawlers
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") {
+        return 403;
+    }
+
+    # Color API proxy (public read-only for Shopify embed)
+    location /color-api/ {
+        proxy_pass http://localhost:9876/api/public/color/;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+
+        # CORS for Shopify storefront
+        add_header Access-Control-Allow-Origin "https://www.designerwallcoverings.com" always;
+        add_header Access-Control-Allow-Methods "GET, OPTIONS" always;
+        add_header Access-Control-Allow-Headers "Content-Type" always;
+        add_header Access-Control-Max-Age 86400 always;
+
+        if ($request_method = OPTIONS) {
+            return 204;
+        }
+
+        # Rate limit: 30 req/min per IP
+        limit_req zone=colorapi burst=10 nodelay;
+    }
+
+    # Color swatches proxy (paint chip images)
+    location /color-swatches/ {
+        proxy_pass http://localhost:9876/swatches/;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_cache_bypass $http_upgrade;
+        add_header Access-Control-Allow-Origin "https://www.designerwallcoverings.com" always;
+        add_header Cache-Control "public, max-age=86400" always;
+    }
+
+    # Trade Program API proxy
+    location /api/trade/ {
+        proxy_pass http://127.0.0.1:9887/api/trade/;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        add_header Access-Control-Allow-Origin "*" always;
+        add_header Access-Control-Allow-Methods "POST, GET, OPTIONS" always;
+        add_header Access-Control-Allow-Headers "Content-Type" always;
+        if ($request_method = OPTIONS) { return 204; }
+    }
+
+    # Proxy to local GrassclothWallcoverings app
+    location / {
+        proxy_pass http://localhost:9080;
+        proxy_http_version 1.1;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_set_header Host $host;
+        proxy_cache_bypass $http_upgrade;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_set_header CF-Connecting-IP $http_cf_connecting_ip;
+    }
+}
+
+server {
+    listen 443 ssl http2;
+    listen [::]:443 ssl http2;
+    server_name grassclothwallcoverings.com www.grassclothwallcoverings.com;
+
+    ssl_certificate /etc/letsencrypt/live/grassclothwallcoverings.com/fullchain.pem;
+    ssl_certificate_key /etc/letsencrypt/live/grassclothwallcoverings.com/privkey.pem;
+
+    # CloudFlare real IP
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/12;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+
+    # Block CopyrightAgent crawlers
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") {
+        return 403;
+    }
+
+    # Color API proxy (public read-only for Shopify embed)
+    location /color-api/ {
+        proxy_pass http://localhost:9876/api/public/color/;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+
+        add_header Access-Control-Allow-Origin "https://www.designerwallcoverings.com" always;
+        add_header Access-Control-Allow-Methods "GET, OPTIONS" always;
+        add_header Access-Control-Allow-Headers "Content-Type" always;
+        add_header Access-Control-Max-Age 86400 always;
+
+        if ($request_method = OPTIONS) {
+            return 204;
+        }
+
+        limit_req zone=colorapi burst=10 nodelay;
+    }
+
+    # Color swatches proxy
+    location /color-swatches/ {
+        proxy_pass http://localhost:9876/swatches/;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        add_header Access-Control-Allow-Origin "https://www.designerwallcoverings.com" always;
+        add_header Cache-Control "public, max-age=86400" always;
+    }
+
+    # Trade Program API proxy
+    location /api/trade/ {
+        proxy_pass http://127.0.0.1:9887/api/trade/;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        add_header Access-Control-Allow-Origin "*" always;
+        add_header Access-Control-Allow-Methods "POST, GET, OPTIONS" always;
+        add_header Access-Control-Allow-Headers "Content-Type" always;
+        if ($request_method = OPTIONS) { return 204; }
+    }
+
+    # Proxy to local GrassclothWallcoverings app
+    location / {
+        proxy_pass http://localhost:9080;
+        proxy_http_version 1.1;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_set_header Host $host;
+        proxy_cache_bypass $http_upgrade;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_set_header CF-Connecting-IP $http_cf_connecting_ip;
+    }
+}
diff --git a/sites-available/grassclothwallpaper.com b/sites-available/grassclothwallpaper.com
new file mode 100644
index 0000000..2e75557
--- /dev/null
+++ b/sites-available/grassclothwallpaper.com
@@ -0,0 +1,118 @@
+# HTTP - Proxy to local Node.js service
+server {
+    listen 80;
+    listen [::]:80;
+    server_name grassclothwallpaper.com www.grassclothwallpaper.com;
+
+    # CloudFlare IP Detection
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+
+    # Block CopyrightAgent crawlers
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") {
+        return 403;
+    }
+
+    # DW API proxy — Full Monte Express enrichment for Shopify storefront
+    location /dw-api/ {
+        add_header Access-Control-Allow-Origin "*" always;
+        add_header Access-Control-Allow-Methods "GET, POST, OPTIONS" always;
+        add_header Access-Control-Allow-Headers "Content-Type" always;
+        if ($request_method = OPTIONS) { return 204; }
+        add_header Retry-After 3600 always; return 503;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+
+    location / {
+        proxy_pass http://localhost:8123;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_cache_bypass $http_upgrade;
+    }
+}
+
+# HTTPS - Proxy to local Node.js service
+server {
+    listen 443 ssl http2;
+    listen [::]:443 ssl http2;
+    server_name grassclothwallpaper.com www.grassclothwallpaper.com;
+
+    # SSL Configuration
+    ssl_certificate /etc/letsencrypt/live/grassclothwallpaper.com/fullchain.pem;
+    ssl_certificate_key /etc/letsencrypt/live/grassclothwallpaper.com/privkey.pem;
+    ssl_protocols TLSv1.2 TLSv1.3;
+    ssl_ciphers HIGH:!aNULL:!MD5;
+    ssl_prefer_server_ciphers on;
+
+    # CloudFlare IP Detection
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+
+    # Block CopyrightAgent crawlers
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") {
+        return 403;
+    }
+
+    # DW API proxy — Full Monte Express enrichment for Shopify storefront
+    location /dw-api/ {
+        add_header Access-Control-Allow-Origin "*" always;
+        add_header Access-Control-Allow-Methods "GET, POST, OPTIONS" always;
+        add_header Access-Control-Allow-Headers "Content-Type" always;
+        if ($request_method = OPTIONS) { return 204; }
+        add_header Retry-After 3600 always; return 503;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+
+    location / {
+        proxy_pass http://localhost:8123;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_cache_bypass $http_upgrade;
+    }
+}
diff --git a/sites-available/grassclothwallpaper.com.backup b/sites-available/grassclothwallpaper.com.backup
new file mode 100644
index 0000000..49d3923
--- /dev/null
+++ b/sites-available/grassclothwallpaper.com.backup
@@ -0,0 +1,100 @@
+server {
+    listen 80;
+    listen [::]:80;
+    server_name grassclothwallcoverings.com www.grassclothwallcoverings.com;
+
+    # CloudFlare real IP
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/12;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+
+    # Cache static assets
+    location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
+        proxy_pass http://localhost:9080;
+        proxy_cache_valid 200 30d;
+        expires 30d;
+        add_header Cache-Control "public, immutable";
+        add_header Access-Control-Allow-Origin "*";
+        add_header Access-Control-Allow-Methods "GET, OPTIONS";
+        add_header Access-Control-Allow-Headers "Content-Type";
+    }
+
+    location / {
+        proxy_pass https://designer-laboratory-sandbox.myshopify.com;
+        proxy_http_version 1.1;
+        proxy_ssl_server_name on;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_set_header Host designer-laboratory-sandbox.myshopify.com;
+        proxy_cache_bypass $http_upgrade;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_set_header CF-Connecting-IP $http_cf_connecting_ip;
+        proxy_set_header X-Forwarded-Host $host;
+    }
+}
+
+server {
+    listen 443 ssl http2;
+    listen [::]:443 ssl http2;
+    server_name grassclothwallcoverings.com www.grassclothwallcoverings.com;
+
+    ssl_certificate /etc/letsencrypt/live/grassclothwallcoverings.com/fullchain.pem;
+    ssl_certificate_key /etc/letsencrypt/live/grassclothwallcoverings.com/privkey.pem;
+
+    # CloudFlare real IP
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/12;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+
+    # Cache static assets
+    location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
+        proxy_pass http://localhost:9080;
+        proxy_cache_valid 200 30d;
+        expires 30d;
+        add_header Cache-Control "public, immutable";
+        add_header Access-Control-Allow-Origin "*";
+        add_header Access-Control-Allow-Methods "GET, OPTIONS";
+        add_header Access-Control-Allow-Headers "Content-Type";
+    }
+
+    location / {
+        proxy_pass https://designer-laboratory-sandbox.myshopify.com;
+        proxy_http_version 1.1;
+        proxy_ssl_server_name on;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_set_header Host designer-laboratory-sandbox.myshopify.com;
+        proxy_cache_bypass $http_upgrade;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_set_header CF-Connecting-IP $http_cf_connecting_ip;
+        proxy_set_header X-Forwarded-Host $host;
+    }
+}
\ No newline at end of file
diff --git a/sites-available/greendomainbrokers.com b/sites-available/greendomainbrokers.com
new file mode 100644
index 0000000..3bbd3c9
--- /dev/null
+++ b/sites-available/greendomainbrokers.com
@@ -0,0 +1,43 @@
+server {
+    listen 80;
+    server_name greendomainbrokers.com www.greendomainbrokers.com;
+
+    # Redirect all HTTP traffic to HTTPS
+    return 301 https://$server_name$request_uri;
+}
+
+server {
+    listen 443 ssl http2;
+    server_name greendomainbrokers.com www.greendomainbrokers.com;
+
+    # SSL certificates (will be added by certbot)
+    ssl_certificate /etc/letsencrypt/live/greendomainbrokers.com/fullchain.pem;
+    ssl_certificate_key /etc/letsencrypt/live/greendomainbrokers.com/privkey.pem;
+
+    # SSL configuration
+    ssl_protocols TLSv1.2 TLSv1.3;
+    ssl_ciphers HIGH:!aNULL:!MD5;
+    ssl_prefer_server_ciphers on;
+
+    # Proxy to Node.js auth server on port 9999
+    location / {
+        proxy_pass http://localhost:9900;
+        proxy_http_version 1.1;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_cache_bypass $http_upgrade;
+
+        # Timeouts
+        proxy_connect_timeout 60s;
+        proxy_send_timeout 60s;
+        proxy_read_timeout 60s;
+    }
+
+    # Logging
+    access_log /var/log/nginx/greendomainbrokers.com.access.log;
+    error_log /var/log/nginx/greendomainbrokers.com.error.log;
+}
diff --git a/sites-available/greendomainbrokers.com.temp b/sites-available/greendomainbrokers.com.temp
new file mode 100644
index 0000000..8b41e71
--- /dev/null
+++ b/sites-available/greendomainbrokers.com.temp
@@ -0,0 +1,13 @@
+server {
+    listen 80;
+    server_name greendomainbrokers.com www.greendomainbrokers.com;
+
+    # Temporary config for certbot validation
+    location /.well-known/acme-challenge/ {
+        root /var/www/html;
+    }
+
+    location / {
+        return 301 https://$server_name$request_uri;
+    }
+}
diff --git a/sites-available/greenwallcoverings.com b/sites-available/greenwallcoverings.com
new file mode 100644
index 0000000..8e12c57
--- /dev/null
+++ b/sites-available/greenwallcoverings.com
@@ -0,0 +1,42 @@
+server {
+    server_name greenwallcoverings.com www.greenwallcoverings.com;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9885;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    }
+
+    listen [::]:443 ssl; # managed by Certbot
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/greenwallcoverings.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/greenwallcoverings.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.greenwallcoverings.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = greenwallcoverings.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80; listen [::]:80;
+    server_name greenwallcoverings.com www.greenwallcoverings.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/handcraftedwallpaper.com b/sites-available/handcraftedwallpaper.com
new file mode 100644
index 0000000..3b6b44c
--- /dev/null
+++ b/sites-available/handcraftedwallpaper.com
@@ -0,0 +1,42 @@
+server {
+    server_name handcraftedwallpaper.com www.handcraftedwallpaper.com;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9895;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    }
+
+    listen [::]:443 ssl; # managed by Certbot
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/handcraftedwallpaper.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/handcraftedwallpaper.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.handcraftedwallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = handcraftedwallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80; listen [::]:80;
+    server_name handcraftedwallpaper.com www.handcraftedwallpaper.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/handmadewallcovering.com.conf b/sites-available/handmadewallcovering.com.conf
new file mode 100644
index 0000000..6909f2a
--- /dev/null
+++ b/sites-available/handmadewallcovering.com.conf
@@ -0,0 +1,21 @@
+# handmadewallcovering.com — dwf-handmadewallcovering :10020
+server {
+    listen 80;
+    listen [::]:80;
+    server_name handmadewallcovering.com www.handmadewallcovering.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10020;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/healthcarewallpaper.com b/sites-available/healthcarewallpaper.com
new file mode 100644
index 0000000..afc9a30
--- /dev/null
+++ b/sites-available/healthcarewallpaper.com
@@ -0,0 +1,43 @@
+server {
+    server_name healthcarewallpaper.com www.healthcarewallpaper.com;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9859;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+
+    listen [::]:443 ssl; # managed by Certbot
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/healthcarewallpaper.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/healthcarewallpaper.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.healthcarewallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = healthcarewallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80; listen [::]:80;
+    server_name healthcarewallpaper.com www.healthcarewallpaper.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/hollywoodwallcovering.com.conf b/sites-available/hollywoodwallcovering.com.conf
new file mode 100644
index 0000000..1c52c58
--- /dev/null
+++ b/sites-available/hollywoodwallcovering.com.conf
@@ -0,0 +1,21 @@
+# hollywoodwallcovering.com — dwf-hollywoodwallcovering :10021
+server {
+    listen 80;
+    listen [::]:80;
+    server_name hollywoodwallcovering.com www.hollywoodwallcovering.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10021;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/hollywoodwallcoverings.com b/sites-available/hollywoodwallcoverings.com
new file mode 100644
index 0000000..b9e5055
--- /dev/null
+++ b/sites-available/hollywoodwallcoverings.com
@@ -0,0 +1,62 @@
+server {
+    server_name hollywoodwallcoverings.com www.hollywoodwallcoverings.com;
+
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+
+    location / {
+        proxy_pass http://127.0.0.1:9832;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    listen [::]:443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/hollywoodwallcoverings.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/hollywoodwallcoverings.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.hollywoodwallcoverings.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = hollywoodwallcoverings.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name hollywoodwallcoverings.com www.hollywoodwallcoverings.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/hormuzy.agentabrams.com b/sites-available/hormuzy.agentabrams.com
new file mode 100644
index 0000000..f5fd04c
--- /dev/null
+++ b/sites-available/hormuzy.agentabrams.com
@@ -0,0 +1,30 @@
+server {
+    server_name hormuzy.agentabrams.com;
+    root /var/www/hormuzy.agentabrams.com;
+    index index.html;
+    auth_basic "Hormuz Mockups";
+    auth_basic_user_file /etc/nginx/.htpasswd-hormuzy;
+    access_log /var/log/nginx/hormuzy.agentabrams.com.access.log;
+    error_log /var/log/nginx/hormuzy.agentabrams.com.error.log;
+    add_header X-Frame-Options "SAMEORIGIN" always;
+    location / { try_files $uri $uri/ $uri/index.html =404; }
+
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/hormuzy.agentabrams.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/hormuzy.agentabrams.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+}
+server {
+    if ($host = hormuzy.agentabrams.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    server_name hormuzy.agentabrams.com;
+    return 404; # managed by Certbot
+
+
+}
\ No newline at end of file
diff --git a/sites-available/hospitalitydesignreps.com b/sites-available/hospitalitydesignreps.com
new file mode 100644
index 0000000..0eddd53
--- /dev/null
+++ b/sites-available/hospitalitydesignreps.com
@@ -0,0 +1,19 @@
+server {
+    listen 80;
+    listen [::]:80;
+    server_name hospitalitydesignreps.com www.hospitalitydesignreps.com;
+
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+
+    location / {
+        proxy_pass http://localhost:9927;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/hospitalitysalesagency.com.conf b/sites-available/hospitalitysalesagency.com.conf
new file mode 100644
index 0000000..46af5aa
--- /dev/null
+++ b/sites-available/hospitalitysalesagency.com.conf
@@ -0,0 +1,21 @@
+# hospitalitysalesagency.com — dwf-hospitalitysalesagency :10022
+server {
+    listen 80;
+    listen [::]:80;
+    server_name hospitalitysalesagency.com www.hospitalitysalesagency.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10022;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/hospitalitysalesrepresentatives.com b/sites-available/hospitalitysalesrepresentatives.com
new file mode 100644
index 0000000..cb108eb
--- /dev/null
+++ b/sites-available/hospitalitysalesrepresentatives.com
@@ -0,0 +1,18 @@
+# 301 redirect: hospitalitysalesrepresentatives.com -> hospitalitydesignreps.com
+# Build-only phase (DNS not yet flipped); :80 only, no TLS until later wave.
+server {
+    listen 80;
+    listen [::]:80;
+    server_name hospitalitysalesrepresentatives.com www.hospitalitysalesrepresentatives.com;
+
+    location ^~ /.well-known/acme-challenge/ {
+        root /var/www/html;
+        default_type "text/plain";
+        try_files $uri =404;
+    }
+
+    location / {
+        add_header Cache-Control "no-store, must-revalidate" always;
+        return 301 https://hospitalitydesignreps.com$request_uri;
+    }
+}
diff --git a/sites-available/hospitalitywallcoverings.com b/sites-available/hospitalitywallcoverings.com
new file mode 100644
index 0000000..ca4c4c9
--- /dev/null
+++ b/sites-available/hospitalitywallcoverings.com
@@ -0,0 +1,42 @@
+# hospitalitywallcoverings.com — staged 2026-05-10 by gtag-rollout work
+# HTTP-only initially. Once DNS flips from GoDaddy to Cloudflare→Kamatera,
+# run: certbot --nginx -d hospitalitywallcoverings.com -d www.hospitalitywallcoverings.com --non-interactive --agree-tos -m steve@designerwallcoverings.com
+server {
+  server_name hospitalitywallcoverings.com www.hospitalitywallcoverings.com;
+  add_header Cache-Control "no-store, must-revalidate" always;
+  location / {
+    proxy_pass http://127.0.0.1:9866;
+    proxy_set_header Host $host;
+    proxy_set_header X-Real-IP $remote_addr;
+    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    proxy_set_header X-Forwarded-Proto $scheme;
+  }
+
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/hospitalitywallcoverings.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/hospitalitywallcoverings.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+
+server {
+    if ($host = www.hospitalitywallcoverings.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = hospitalitywallcoverings.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+  listen 80;
+  server_name hospitalitywallcoverings.com www.hospitalitywallcoverings.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/hospitalitywallpaper.com b/sites-available/hospitalitywallpaper.com
new file mode 100644
index 0000000..967845b
--- /dev/null
+++ b/sites-available/hospitalitywallpaper.com
@@ -0,0 +1,42 @@
+server {
+    server_name hospitalitywallpaper.com www.hospitalitywallpaper.com;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9855;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    listen [::]:443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/hospitalitywallpaper.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/hospitalitywallpaper.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.hospitalitywallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = hospitalitywallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80; listen [::]:80;
+    server_name hospitalitywallpaper.com www.hospitalitywallpaper.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/hotelwallcoverings.com b/sites-available/hotelwallcoverings.com
new file mode 100644
index 0000000..b7916bc
--- /dev/null
+++ b/sites-available/hotelwallcoverings.com
@@ -0,0 +1,61 @@
+server {
+    server_name hotelwallcoverings.com www.hotelwallcoverings.com;
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9851;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    listen [::]:443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/hotelwallcoverings.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/hotelwallcoverings.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+
+
+}
+server {
+    if ($host = www.hotelwallcoverings.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = hotelwallcoverings.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name hotelwallcoverings.com www.hotelwallcoverings.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/ideas.agentabrams.com b/sites-available/ideas.agentabrams.com
new file mode 100644
index 0000000..1e4f56f
--- /dev/null
+++ b/sites-available/ideas.agentabrams.com
@@ -0,0 +1,49 @@
+# ideas.agentabrams.com — Contact Mailer ideas viewer (yolo loop)
+# Reverse proxy to local pm2 ideas-agentabrams on 127.0.0.1:9773
+# Data files at /root/Projects/contact-mailer-ideas/data/ synced from Mac2
+
+server {
+    server_name ideas.agentabrams.com;
+
+    access_log /var/log/nginx/ideas.agentabrams.com.access.log;
+    error_log /var/log/nginx/ideas.agentabrams.com.error.log;
+
+    add_header X-Content-Type-Options "nosniff" always;
+    add_header Referrer-Policy "strict-origin-when-cross-origin" always;
+    add_header Cache-Control "no-store, must-revalidate" always;
+
+    auth_basic "ideas.agentabrams.com — admin only";
+    auth_basic_user_file /etc/nginx/.htpasswd-ideas;
+
+    location / {
+        proxy_pass http://127.0.0.1:9773;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_connect_timeout 10s;
+        proxy_read_timeout 30s;
+    }
+
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/ideas.agentabrams.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/ideas.agentabrams.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+}
+
+
+server {
+    if ($host = ideas.agentabrams.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    server_name ideas.agentabrams.com;
+    return 404; # managed by Certbot
+
+
+}
\ No newline at end of file
diff --git a/sites-available/jutewallpaper.com b/sites-available/jutewallpaper.com
new file mode 100644
index 0000000..a6e8a2b
--- /dev/null
+++ b/sites-available/jutewallpaper.com
@@ -0,0 +1,44 @@
+server {
+    server_name jutewallpaper.com www.jutewallpaper.com;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9843;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    listen [::]:443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/jutewallpaper.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/jutewallpaper.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+
+
+}
+server {
+    if ($host = www.jutewallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = jutewallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80; listen [::]:80;
+    server_name jutewallpaper.com www.jutewallpaper.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/lacountyeats.com.conf b/sites-available/lacountyeats.com.conf
new file mode 100644
index 0000000..e14faf2
--- /dev/null
+++ b/sites-available/lacountyeats.com.conf
@@ -0,0 +1,117 @@
+# lacountyeats.com — static coming-soon
+# Day-1: direct A → Kamatera (no Cloudflare proxy)
+# CF IP blocks included so vhost is CF-ready when proxy is added later
+
+# HTTP — redirect all traffic to HTTPS apex
+server {
+    listen 80;
+    listen [::]:80;
+    server_name lacountyeats.com www.lacountyeats.com;
+
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+
+    location /.well-known/acme-challenge/ {
+        # proxied to lacountyeats Express on :9744
+    }
+
+    location / { proxy_pass http://127.0.0.1:9744; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https;
+        return 301 https://lacountyeats.com$request_uri;
+    }
+}
+
+# HTTPS — www → apex 301
+server {
+    listen 443 ssl http2;
+    listen [::]:443 ssl http2;
+    server_name www.lacountyeats.com;
+
+    ssl_certificate /etc/letsencrypt/live/lacountyeats.com/fullchain.pem;
+    ssl_certificate_key /etc/letsencrypt/live/lacountyeats.com/privkey.pem;
+    include /etc/letsencrypt/options-ssl-nginx.conf;
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
+
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+
+    return 301 https://lacountyeats.com$request_uri;
+}
+
+# HTTPS — apex, serves static coming-soon
+server {
+    listen 443 ssl http2;
+    listen [::]:443 ssl http2;
+    server_name lacountyeats.com;
+
+    ssl_certificate /etc/letsencrypt/live/lacountyeats.com/fullchain.pem;
+    ssl_certificate_key /etc/letsencrypt/live/lacountyeats.com/privkey.pem;
+    include /etc/letsencrypt/options-ssl-nginx.conf;
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
+
+    # Security headers + HSTS
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options "SAMEORIGIN" always;
+    add_header X-Content-Type-Options "nosniff" always;
+    add_header X-XSS-Protection "1; mode=block" always;
+    add_header Referrer-Policy "strict-origin-when-cross-origin" always;
+
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") {
+        return 403;
+    }
+
+    location /.well-known/acme-challenge/ {
+        # proxied to lacountyeats Express on :9744
+    }
+
+    # proxied to lacountyeats Express on :9744
+    
+
+    location / { proxy_pass http://127.0.0.1:9744; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https;
+        
+    }
+}
diff --git a/sites-available/lang.bubbe.ai b/sites-available/lang.bubbe.ai
new file mode 100644
index 0000000..8b51355
--- /dev/null
+++ b/sites-available/lang.bubbe.ai
@@ -0,0 +1,66 @@
+# HTTP - Redirect to HTTPS
+server {
+    listen 80;
+    listen [::]:80;
+    server_name lang.bubbe.ai;
+
+    # Let's Encrypt verification
+    location ^~ /.well-known/acme-challenge/ {
+        root /var/www/html;
+        default_type "text/plain";
+        try_files $uri =404;
+    }
+
+    # Redirect all HTTP to HTTPS
+    location / {
+        return 301 https://$server_name$request_uri;
+    }
+}
+
+# HTTPS - Language API Service
+server {
+    listen 443 ssl http2;
+    listen [::]:443 ssl http2;
+    server_name lang.bubbe.ai;
+
+    # SSL Configuration
+    ssl_certificate /etc/letsencrypt/live/lang.bubbe.ai/fullchain.pem;
+    ssl_certificate_key /etc/letsencrypt/live/lang.bubbe.ai/privkey.pem;
+    ssl_protocols TLSv1.2 TLSv1.3;
+    ssl_ciphers HIGH:!aNULL:!MD5;
+    ssl_prefer_server_ciphers on;
+
+    # Security Headers
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options "SAMEORIGIN" always;
+    add_header X-Content-Type-Options "nosniff" always;
+    add_header X-XSS-Protection "1; mode=block" always;
+
+    # CORS headers for API
+    add_header Access-Control-Allow-Origin "*" always;
+    add_header Access-Control-Allow-Methods "GET, POST, OPTIONS" always;
+    add_header Access-Control-Allow-Headers "Content-Type, Authorization" always;
+
+    # Proxy to language service on port 8000
+    location / {
+        # Handle OPTIONS for CORS preflight
+        if ($request_method = OPTIONS) {
+            add_header Access-Control-Allow-Origin "*";
+            add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
+            add_header Access-Control-Allow-Headers "Content-Type, Authorization";
+            add_header Content-Length 0;
+            add_header Content-Type text/plain;
+            return 204;
+        }
+
+        proxy_pass http://localhost:9894;
+        proxy_http_version 1.1;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_cache_bypass $http_upgrade;
+    }
+}
diff --git a/sites-available/latino-gardens b/sites-available/latino-gardens
new file mode 100644
index 0000000..2be8ad2
--- /dev/null
+++ b/sites-available/latino-gardens
@@ -0,0 +1,19 @@
+server {
+    listen 80;
+    server_name losgardeners.com www.losgardeners.com latinogardens.greendomainbrokers.com;
+
+    location / {
+        proxy_pass http://127.0.0.1:3000;
+        proxy_http_version 1.1;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_cache_bypass $http_upgrade;
+        proxy_connect_timeout 60s;
+        proxy_send_timeout 60s;
+        proxy_read_timeout 60s;
+    }
+}
diff --git a/sites-available/latinogardens b/sites-available/latinogardens
new file mode 100644
index 0000000..a26c6b1
--- /dev/null
+++ b/sites-available/latinogardens
@@ -0,0 +1,19 @@
+server {
+    listen 80;
+    server_name latinogardens.greendomainbrokers.com;
+    
+    location / {
+        proxy_pass http://localhost:3000;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/latinogardens.greendomainbrokers.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/latinogardens.greendomainbrokers.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+}
diff --git a/sites-available/lawyers.agentabrams.com b/sites-available/lawyers.agentabrams.com
new file mode 100644
index 0000000..a6b1560
--- /dev/null
+++ b/sites-available/lawyers.agentabrams.com
@@ -0,0 +1,18 @@
+# Site taken private 2026-05-04 — directory data made local-only per operator decision.
+# Returns 410 Gone so search engines de-index, not 503 (which suggests temporary outage).
+server {
+  listen 80;
+  listen 443 ssl http2;
+  server_name lawyers.agentabrams.com;
+
+  ssl_certificate /etc/letsencrypt/live/lawyers.agentabrams.com/fullchain.pem;
+  ssl_certificate_key /etc/letsencrypt/live/lawyers.agentabrams.com/privkey.pem;
+
+  add_header X-Robots-Tag 'noindex, nofollow, noarchive' always;
+  add_header Cache-Control 'no-store' always;
+
+  location / {
+    return 410 'This directory is no longer publicly available.\n';
+    default_type text/plain;
+  }
+}
diff --git a/sites-available/leads.venturaclaw.com b/sites-available/leads.venturaclaw.com
new file mode 100644
index 0000000..155ae8d
--- /dev/null
+++ b/sites-available/leads.venturaclaw.com
@@ -0,0 +1,34 @@
+server {
+    server_name leads.venturaclaw.com;
+
+    location / {
+        proxy_pass http://127.0.0.1:9789;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_read_timeout 60s;
+    }
+
+    listen 443 ssl; # managed by Certbot
+    listen [::]:443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/leads.venturaclaw.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/leads.venturaclaw.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+}
+server {
+    if ($host = leads.venturaclaw.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name leads.venturaclaw.com;
+    return 404; # managed by Certbot
+
+
+}
\ No newline at end of file
diff --git a/sites-available/letsbegin.greendomainbrokers.com b/sites-available/letsbegin.greendomainbrokers.com
new file mode 100644
index 0000000..e924dbd
--- /dev/null
+++ b/sites-available/letsbegin.greendomainbrokers.com
@@ -0,0 +1,28 @@
+# letsbegin.greendomainbrokers.com - PRD Generator & Ralphy Boy Automation
+server {
+    server_name letsbegin.greendomainbrokers.com;
+
+    # Security headers
+    add_header X-Frame-Options "SAMEORIGIN" always;
+    add_header X-Content-Type-Options "nosniff" always;
+    add_header X-XSS-Protection "1; mode=block" always;
+
+    # Proxy settings
+    proxy_http_version 1.1;
+    proxy_set_header Host $host;
+    proxy_set_header X-Real-IP $remote_addr;
+    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    proxy_set_header X-Forwarded-Proto $scheme;
+    proxy_set_header Upgrade $http_upgrade;
+    proxy_set_header Connection 'upgrade';
+    proxy_connect_timeout 60s;
+    proxy_send_timeout 60s;
+    proxy_read_timeout 60s;
+
+    location / {
+        proxy_pass http://127.0.0.1:7300;
+    }
+
+    listen 80;
+    listen [::]:80;
+}
diff --git a/sites-available/linenwallpaper.com b/sites-available/linenwallpaper.com
new file mode 100644
index 0000000..a05c104
--- /dev/null
+++ b/sites-available/linenwallpaper.com
@@ -0,0 +1,61 @@
+server {
+    server_name linenwallpaper.com www.linenwallpaper.com;
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9842;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    listen [::]:443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/linenwallpaper.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/linenwallpaper.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+
+
+}
+server {
+    if ($host = www.linenwallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = linenwallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name linenwallpaper.com www.linenwallpaper.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/livesiteaudit.agentabrams.com b/sites-available/livesiteaudit.agentabrams.com
new file mode 100644
index 0000000..51a7fa6
--- /dev/null
+++ b/sites-available/livesiteaudit.agentabrams.com
@@ -0,0 +1,51 @@
+# livesiteaudit.agentabrams.com — consumer-facing Website Analysis tool
+# No auth gate — public access to /website-analysis and all app routes.
+# Proxies entirely to smb-builder (Mac2 via tailnet 100.65.187.120:9760).
+# Express uses X-Forwarded-Host to distinguish this public host from
+# builds.agentabrams.com (admin) and serve only /website-analysis surface.
+
+server {
+    server_name livesiteaudit.agentabrams.com;
+
+    access_log /var/log/nginx/livesiteaudit.agentabrams.com.access.log;
+    error_log /var/log/nginx/livesiteaudit.agentabrams.com.error.log;
+
+    add_header X-Content-Type-Options "nosniff" always;
+    add_header Referrer-Policy "strict-origin-when-cross-origin" always;
+
+    # Proxy all traffic to smb-builder on Mac2 via tailnet.
+    # Express reads X-Forwarded-Host to identify this as the public host
+    # and block admin routes (/builds, /api/builds/*, etc.).
+    location / {
+        proxy_pass http://100.65.187.120:9760;
+        proxy_set_header Host livesiteaudit.agentabrams.com;
+        proxy_set_header X-Forwarded-Host livesiteaudit.agentabrams.com;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_connect_timeout 30s;
+        proxy_read_timeout 30s;
+    }
+
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/livesiteaudit.agentabrams.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/livesiteaudit.agentabrams.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+}
+
+
+server {
+    if ($host = livesiteaudit.agentabrams.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    server_name livesiteaudit.agentabrams.com;
+
+    listen 80;
+    return 404; # managed by Certbot
+
+
+}
\ No newline at end of file
diff --git a/sites-available/losangelesfabrics.com b/sites-available/losangelesfabrics.com
new file mode 100644
index 0000000..9d0acb4
--- /dev/null
+++ b/sites-available/losangelesfabrics.com
@@ -0,0 +1,63 @@
+server {
+    server_name losangelesfabrics.com www.losangelesfabrics.com;
+
+    # Cloudflare-aware (kept for future CF migration)
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+
+    location /.well-known/acme-challenge/ {
+        root /var/www/letsencrypt;
+    }
+
+    location / {
+        proxy_pass http://127.0.0.1:9882;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+
+    listen 443 ssl; # managed by Certbot
+    listen [::]:443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/losangelesfabrics.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/losangelesfabrics.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.losangelesfabrics.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = losangelesfabrics.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    server_name losangelesfabrics.com www.losangelesfabrics.com;
+    listen 80;
+    listen [::]:80;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/losgardeners.conf b/sites-available/losgardeners.conf
new file mode 100644
index 0000000..ca8281e
--- /dev/null
+++ b/sites-available/losgardeners.conf
@@ -0,0 +1,60 @@
+server {
+  listen 80;
+  server_name losgardeners.com www.losgardeners.com;
+
+  # Let's Encrypt ACME challenge
+  location /.well-known/acme-challenge/ {
+    root /var/www/html;
+  }
+
+  location / {
+    return 301 https://losgardeners.com$request_uri;
+  }
+}
+
+server {
+  listen 443 ssl http2;
+  server_name losgardeners.com www.losgardeners.com;
+    ssl_certificate /etc/letsencrypt/live/losgardeners.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/losgardeners.com/privkey.pem; # managed by Certbot
+
+  # Serve static files from the latino-gardens-la/public directory
+  root /opt/WebsitesMisc/latino-gardens-la/public;
+  index index.html;
+
+  # Let's Encrypt ACME challenge
+  location /.well-known/acme-challenge/ {
+    root /var/www/html;
+  }
+
+  # Handle main page and static files
+  location / {
+    try_files $uri $uri/ /index.html;
+  }
+
+  # Proxy API requests to Node.js backend
+  location /api/ {
+    proxy_pass http://localhost:3000;
+    proxy_http_version 1.1;
+    proxy_set_header Upgrade $http_upgrade;
+    proxy_set_header Connection 'upgrade';
+    proxy_set_header Host $host;
+    proxy_set_header X-Real-IP $remote_addr;
+    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    proxy_set_header X-Forwarded-Proto $scheme;
+    proxy_cache_bypass $http_upgrade;
+  }
+  
+  # Proxy OAuth routes to Node.js backend
+  location /auth/ {
+    proxy_pass http://localhost:3000;
+    proxy_http_version 1.1;
+    proxy_set_header Upgrade $http_upgrade;
+    proxy_set_header Connection 'upgrade';
+    proxy_set_header Host $host;
+    proxy_set_header X-Real-IP $remote_addr;
+    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    proxy_set_header X-Forwarded-Proto $scheme;
+    proxy_cache_bypass $http_upgrade;
+  }
+}
diff --git a/sites-available/madagascarwallpaper.com b/sites-available/madagascarwallpaper.com
new file mode 100644
index 0000000..be33d02
--- /dev/null
+++ b/sites-available/madagascarwallpaper.com
@@ -0,0 +1,43 @@
+server {
+    server_name madagascarwallpaper.com www.madagascarwallpaper.com;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9865;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+
+    listen [::]:443 ssl; # managed by Certbot
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/madagascarwallpaper.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/madagascarwallpaper.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.madagascarwallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = madagascarwallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80; listen [::]:80;
+    server_name madagascarwallpaper.com www.madagascarwallpaper.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/malibuwallpaper.com.conf b/sites-available/malibuwallpaper.com.conf
new file mode 100644
index 0000000..4205807
--- /dev/null
+++ b/sites-available/malibuwallpaper.com.conf
@@ -0,0 +1,21 @@
+# malibuwallpaper.com — dwf-malibuwallpaper :10023
+server {
+    listen 80;
+    listen [::]:80;
+    server_name malibuwallpaper.com www.malibuwallpaper.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10023;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/melanie.grassclothwallpaper.com b/sites-available/melanie.grassclothwallpaper.com
new file mode 100644
index 0000000..664a16e
--- /dev/null
+++ b/sites-available/melanie.grassclothwallpaper.com
@@ -0,0 +1,82 @@
+server {
+    listen 80;
+    listen [::]:80;
+    server_name melanie.grassclothwallpaper.com;
+
+    # Redirect HTTP to HTTPS
+    return 301 https://$server_name$request_uri;
+}
+
+server {
+    listen 443 ssl http2;
+    listen [::]:443 ssl http2;
+    server_name melanie.grassclothwallpaper.com;
+
+    # Cloudflare Origin Certificate
+    ssl_certificate /etc/ssl/cloudflare/melanie.grassclothwallpaper.com.pem;
+    ssl_certificate_key /etc/ssl/cloudflare/melanie.grassclothwallpaper.com.key;
+
+    # SSL Configuration
+    ssl_protocols TLSv1.2 TLSv1.3;
+    ssl_ciphers HIGH:!aNULL:!MD5;
+    ssl_prefer_server_ciphers on;
+
+    # Cloudflare Real IP
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+
+    # Logs
+    access_log /var/log/nginx/melanie.access.log;
+    error_log /var/log/nginx/melanie.error.log;
+
+    # Proxy to Node.js app on port 9876
+    location / {
+        proxy_pass https://localhost:9876;
+        proxy_http_version 1.1;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_cache_bypass $http_upgrade;
+
+        # Increase timeouts for AI processing
+        proxy_connect_timeout 300s;
+        proxy_send_timeout 300s;
+        proxy_read_timeout 300s;
+
+        # Allow large file uploads
+        client_max_body_size 50M;
+
+        # Disable SSL verification for self-signed cert
+        proxy_ssl_verify off;
+    }
+
+    # WebSocket support for agent dashboard
+    location /ws {
+        proxy_pass https://localhost:9876;
+        proxy_http_version 1.1;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection "upgrade";
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_ssl_verify off;
+    }
+}
diff --git a/sites-available/metallicwallpaper.com b/sites-available/metallicwallpaper.com
new file mode 100644
index 0000000..909d2df
--- /dev/null
+++ b/sites-available/metallicwallpaper.com
@@ -0,0 +1,42 @@
+server {
+    server_name metallicwallpaper.com www.metallicwallpaper.com;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9847;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    listen [::]:443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/metallicwallpaper.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/metallicwallpaper.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.metallicwallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = metallicwallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80; listen [::]:80;
+    server_name metallicwallpaper.com www.metallicwallpaper.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/micawallpaper.com b/sites-available/micawallpaper.com
new file mode 100644
index 0000000..9663d4f
--- /dev/null
+++ b/sites-available/micawallpaper.com
@@ -0,0 +1,43 @@
+server {
+    server_name micawallpaper.com www.micawallpaper.com;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9864;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+
+    listen [::]:443 ssl; # managed by Certbot
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/micawallpaper.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/micawallpaper.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.micawallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = micawallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80; listen [::]:80;
+    server_name micawallpaper.com www.micawallpaper.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/montereywallpaper.com.conf b/sites-available/montereywallpaper.com.conf
new file mode 100644
index 0000000..97e5629
--- /dev/null
+++ b/sites-available/montereywallpaper.com.conf
@@ -0,0 +1,21 @@
+# montereywallpaper.com — dwf-montereywallpaper :10024
+server {
+    listen 80;
+    listen [::]:80;
+    server_name montereywallpaper.com www.montereywallpaper.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10024;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/museumwallpaper.com b/sites-available/museumwallpaper.com
new file mode 100644
index 0000000..d25493b
--- /dev/null
+++ b/sites-available/museumwallpaper.com
@@ -0,0 +1,41 @@
+server {
+    server_name museumwallpaper.com www.museumwallpaper.com;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9881;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    }
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    listen [::]:443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/museumwallpaper.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/museumwallpaper.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.museumwallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = museumwallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80; listen [::]:80;
+    server_name museumwallpaper.com www.museumwallpaper.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/mylarwallpaper.com b/sites-available/mylarwallpaper.com
new file mode 100644
index 0000000..b45fe42
--- /dev/null
+++ b/sites-available/mylarwallpaper.com
@@ -0,0 +1,41 @@
+server {
+    server_name mylarwallpaper.com www.mylarwallpaper.com;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9878;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    }
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    listen [::]:443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/mylarwallpaper.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/mylarwallpaper.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.mylarwallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = mylarwallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80; listen [::]:80;
+    server_name mylarwallpaper.com www.mylarwallpaper.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/n8n.conf b/sites-available/n8n.conf
new file mode 100644
index 0000000..10969a6
--- /dev/null
+++ b/sites-available/n8n.conf
@@ -0,0 +1,60 @@
+server {
+  listen 80;
+  server_name n8n.greendomainbrokers.com;
+  location /.well-known/acme-challenge/ { root /var/www/letsencrypt; }
+  location / { return 301 https://$host$request_uri; }
+}
+
+server {
+  listen 443 ssl http2;
+  server_name n8n.greendomainbrokers.com;
+
+  ssl_certificate     /etc/letsencrypt/live/n8n.greendomainbrokers.com/fullchain.pem;
+  ssl_certificate_key /etc/letsencrypt/live/n8n.greendomainbrokers.com/privkey.pem;
+
+  # Handle REST API endpoints
+  location /rest/ {
+    proxy_pass http://45.61.58.125:5679/rest/;
+    proxy_set_header Host $host;
+    proxy_set_header X-Real-IP $remote_addr;
+    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    proxy_set_header X-Forwarded-Proto $scheme;
+    proxy_http_version 1.1;
+    proxy_buffering off;
+  }
+
+  # Handle webhook endpoints
+  location /webhook/ {
+    proxy_pass http://45.61.58.125:5679/webhook/;
+    proxy_set_header Host $host;
+    proxy_set_header X-Real-IP $remote_addr;
+    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    proxy_set_header X-Forwarded-Proto $scheme;
+    proxy_http_version 1.1;
+    proxy_buffering off;
+  }
+
+  # Handle webhook-test endpoints
+  location /webhook-test/ {
+    proxy_pass http://45.61.58.125:5679/webhook-test/;
+    proxy_set_header Host $host;
+    proxy_set_header X-Real-IP $remote_addr;
+    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    proxy_set_header X-Forwarded-Proto $scheme;
+    proxy_http_version 1.1;
+    proxy_buffering off;
+  }
+
+  # Default location for everything else
+  location / {
+    proxy_pass http://45.61.58.125:5679;
+    proxy_set_header Host $host;
+    proxy_set_header X-Real-IP $remote_addr;
+    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    proxy_set_header X-Forwarded-Proto $scheme;
+    proxy_http_version 1.1;
+    proxy_set_header Upgrade $http_upgrade;
+    proxy_set_header Connection "upgrade";
+    proxy_buffering off;
+  }
+}
diff --git a/sites-available/nationalpaperhangers.com b/sites-available/nationalpaperhangers.com
new file mode 100644
index 0000000..afe376f
--- /dev/null
+++ b/sites-available/nationalpaperhangers.com
@@ -0,0 +1,46 @@
+server {
+    server_name nationalpaperhangers.com www.nationalpaperhangers.com;
+    location /.well-known/acme-challenge/ { root /var/www/letsencrypt; }
+    location /uploads/ {
+        alias /root/Projects/NationalPaperHangers/public/uploads/;
+        access_log off; expires 30d;
+        add_header Cache-Control "public, immutable";
+    }
+    location / {
+        proxy_pass http://127.0.0.1:9765;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        client_max_body_size 12m;
+    }
+
+    listen 443 ssl; # managed by Certbot
+    listen [::]:443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/nationalpaperhangers.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/nationalpaperhangers.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.nationalpaperhangers.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = nationalpaperhangers.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name nationalpaperhangers.com www.nationalpaperhangers.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/naturaltextilewallpaper.com b/sites-available/naturaltextilewallpaper.com
new file mode 100644
index 0000000..03dfac0
--- /dev/null
+++ b/sites-available/naturaltextilewallpaper.com
@@ -0,0 +1,45 @@
+server {
+    server_name naturaltextilewallpaper.com www.naturaltextilewallpaper.com;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9897;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        add_header Cache-Control "no-store, must-revalidate" always;
+    }
+
+    listen [::]:443 ssl; # managed by Certbot
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/naturaltextilewallpaper.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/naturaltextilewallpaper.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+
+
+}
+server {
+    if ($host = www.naturaltextilewallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = naturaltextilewallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name naturaltextilewallpaper.com www.naturaltextilewallpaper.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/naturalwallcoverings.com b/sites-available/naturalwallcoverings.com
new file mode 100644
index 0000000..0bf6536
--- /dev/null
+++ b/sites-available/naturalwallcoverings.com
@@ -0,0 +1,42 @@
+server {
+    server_name naturalwallcoverings.com www.naturalwallcoverings.com;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9871;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    }
+
+    listen [::]:443 ssl; # managed by Certbot
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/naturalwallcoverings.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/naturalwallcoverings.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.naturalwallcoverings.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = naturalwallcoverings.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80; listen [::]:80;
+    server_name naturalwallcoverings.com www.naturalwallcoverings.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/naturalwalltextures.com.conf b/sites-available/naturalwalltextures.com.conf
new file mode 100644
index 0000000..161529c
--- /dev/null
+++ b/sites-available/naturalwalltextures.com.conf
@@ -0,0 +1,21 @@
+# naturalwalltextures.com — dwf-naturalwalltextures :10025
+server {
+    listen 80;
+    listen [::]:80;
+    server_name naturalwalltextures.com www.naturalwalltextures.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10025;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/novasuede b/sites-available/novasuede
new file mode 100644
index 0000000..b01ce56
--- /dev/null
+++ b/sites-available/novasuede
@@ -0,0 +1,100 @@
+server {
+    listen 80;
+    listen [::]:80;
+    server_name novasuede www.novasuede;
+
+    # CloudFlare real IP
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/12;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+
+    # Cache static assets
+    location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
+        proxy_pass http://localhost:9080;
+        proxy_cache_valid 200 30d;
+        expires 30d;
+        add_header Cache-Control "public, immutable";
+        add_header Access-Control-Allow-Origin "*";
+        add_header Access-Control-Allow-Methods "GET, OPTIONS";
+        add_header Access-Control-Allow-Headers "Content-Type";
+    }
+
+    location / {
+        proxy_pass https://designer-laboratory-sandbox.myshopify.com;
+        proxy_http_version 1.1;
+        proxy_ssl_server_name on;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_set_header Host designer-laboratory-sandbox.myshopify.com;
+        proxy_cache_bypass $http_upgrade;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_set_header CF-Connecting-IP $http_cf_connecting_ip;
+        proxy_set_header X-Forwarded-Host $host;
+    }
+}
+
+server {
+    listen 443 ssl http2;
+    listen [::]:443 ssl http2;
+    server_name novasuede www.novasuede;
+
+    ssl_certificate /etc/letsencrypt/live/novasuede/fullchain.pem;
+    ssl_certificate_key /etc/letsencrypt/live/novasuede/privkey.pem;
+
+    # CloudFlare real IP
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/12;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+
+    # Cache static assets
+    location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
+        proxy_pass http://localhost:9080;
+        proxy_cache_valid 200 30d;
+        expires 30d;
+        add_header Cache-Control "public, immutable";
+        add_header Access-Control-Allow-Origin "*";
+        add_header Access-Control-Allow-Methods "GET, OPTIONS";
+        add_header Access-Control-Allow-Headers "Content-Type";
+    }
+
+    location / {
+        proxy_pass https://designer-laboratory-sandbox.myshopify.com;
+        proxy_http_version 1.1;
+        proxy_ssl_server_name on;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_set_header Host designer-laboratory-sandbox.myshopify.com;
+        proxy_cache_bypass $http_upgrade;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_set_header CF-Connecting-IP $http_cf_connecting_ip;
+        proxy_set_header X-Forwarded-Host $host;
+    }
+}
\ No newline at end of file
diff --git a/sites-available/novasuede.com b/sites-available/novasuede.com
new file mode 100644
index 0000000..b559772
--- /dev/null
+++ b/sites-available/novasuede.com
@@ -0,0 +1,134 @@
+# HTTP - Proxy to local Node.js service
+server {
+    listen 80;
+    listen [::]:80;
+    server_name novasuede.com www.novasuede.com;
+
+    # CloudFlare IP Detection
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+
+    # Block CopyrightAgent crawlers
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") {
+        return 403;
+    }
+
+    # Let's Encrypt ACME challenge
+    location /.well-known/acme-challenge/ {
+        root /var/www/html;
+    }
+
+    location ~* \.(html|htm)$ {
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_pass http://localhost:8100;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+
+    location / {
+        proxy_pass http://localhost:8100;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_cache_bypass $http_upgrade;
+    }
+}
+
+# HTTPS - Main configuration
+server {
+    listen 443 ssl http2;
+    listen [::]:443 ssl http2;
+    server_name novasuede.com www.novasuede.com;
+
+    # SSL Configuration
+    ssl_certificate /etc/letsencrypt/live/novasuede.com/fullchain.pem;
+    ssl_certificate_key /etc/letsencrypt/live/novasuede.com/privkey.pem;
+    ssl_protocols TLSv1.2 TLSv1.3;
+    ssl_ciphers HIGH:!aNULL:!MD5;
+    ssl_prefer_server_ciphers on;
+
+    # Security Headers
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options "SAMEORIGIN" always;
+    add_header X-Content-Type-Options "nosniff" always;
+    add_header X-XSS-Protection "1; mode=block" always;
+    add_header Referrer-Policy "strict-origin-when-cross-origin" always;
+
+    # CloudFlare IP Detection
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    set_real_ip_from 2400:cb00::/32;
+    set_real_ip_from 2606:4700::/32;
+    set_real_ip_from 2803:f800::/32;
+    set_real_ip_from 2405:b500::/32;
+    set_real_ip_from 2405:8100::/32;
+    set_real_ip_from 2a06:98c0::/29;
+    set_real_ip_from 2c0f:f248::/32;
+    real_ip_header CF-Connecting-IP;
+
+    # Block CopyrightAgent crawlers
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") {
+        return 403;
+    }
+
+    # Let's Encrypt ACME challenge
+    location /.well-known/acme-challenge/ {
+        root /var/www/html;
+    }
+
+    location ~* \.(html|htm)$ {
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_pass http://localhost:8100;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+
+    location / {
+        proxy_pass http://localhost:8100;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_cache_bypass $http_upgrade;
+    }
+}
diff --git a/sites-available/pairs.designerwallcoverings.com b/sites-available/pairs.designerwallcoverings.com
new file mode 100644
index 0000000..cbf3910
--- /dev/null
+++ b/sites-available/pairs.designerwallcoverings.com
@@ -0,0 +1,42 @@
+server {
+    server_name pairs.designerwallcoverings.com;
+
+    # HTTP is left open here ONLY long enough for certbot's HTTP-01 challenge.
+    # Certbot will rewrite this file to redirect → HTTPS after issuance.
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+
+    location / {
+        proxy_pass         http://127.0.0.1:9813;
+        proxy_http_version 1.1;
+        proxy_set_header   Host              $host;
+        proxy_set_header   X-Real-IP         $remote_addr;
+        proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
+        proxy_set_header   X-Forwarded-Proto $scheme;
+        proxy_connect_timeout 5s;
+        proxy_read_timeout    30s;
+    }
+
+    access_log /var/log/nginx/pairs.designerwallcoverings.com.access.log;
+    error_log  /var/log/nginx/pairs.designerwallcoverings.com.error.log;
+
+    listen 443 ssl; # managed by Certbot
+    listen [::]:443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/pairs.designerwallcoverings.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/pairs.designerwallcoverings.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+}
+server {
+    if ($host = pairs.designerwallcoverings.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name pairs.designerwallcoverings.com;
+    return 404; # managed by Certbot
+
+
+}
\ No newline at end of file
diff --git a/sites-available/pastelwallpaper.com b/sites-available/pastelwallpaper.com
new file mode 100644
index 0000000..95deee8
--- /dev/null
+++ b/sites-available/pastelwallpaper.com
@@ -0,0 +1,42 @@
+server {
+    server_name pastelwallpaper.com www.pastelwallpaper.com;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9893;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    }
+
+    listen [::]:443 ssl; # managed by Certbot
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/pastelwallpaper.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/pastelwallpaper.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.pastelwallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = pastelwallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80; listen [::]:80;
+    server_name pastelwallpaper.com www.pastelwallpaper.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/patterndesignlab.com.conf b/sites-available/patterndesignlab.com.conf
new file mode 100644
index 0000000..b08e007
--- /dev/null
+++ b/sites-available/patterndesignlab.com.conf
@@ -0,0 +1,21 @@
+# patterndesignlab.com — dwf-patterndesignlab :10026
+server {
+    listen 80;
+    listen [::]:80;
+    server_name patterndesignlab.com www.patterndesignlab.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10026;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/philipperomano.com b/sites-available/philipperomano.com
new file mode 100644
index 0000000..c4f863c
--- /dev/null
+++ b/sites-available/philipperomano.com
@@ -0,0 +1,63 @@
+server {
+    server_name philipperomano.com www.philipperomano.com;
+
+    # CloudFlare IP ranges
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+
+    location / {
+        proxy_pass http://127.0.0.1:9831;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    listen [::]:443 ssl ipv6only=on; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/philipperomano.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/philipperomano.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.philipperomano.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = philipperomano.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name philipperomano.com www.philipperomano.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/philliperomano.com.conf b/sites-available/philliperomano.com.conf
new file mode 100644
index 0000000..dfa30f0
--- /dev/null
+++ b/sites-available/philliperomano.com.conf
@@ -0,0 +1,21 @@
+# philliperomano.com — dwf-philliperomano :10027
+server {
+    listen 80;
+    listen [::]:80;
+    server_name philliperomano.com www.philliperomano.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10027;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/pitch.sdcc.agentabrams.com b/sites-available/pitch.sdcc.agentabrams.com
new file mode 100644
index 0000000..9e22bb6
--- /dev/null
+++ b/sites-available/pitch.sdcc.agentabrams.com
@@ -0,0 +1,26 @@
+server {
+    listen 443 ssl http2;
+    listen [::]:443 ssl http2;
+    server_name pitch.sdcc.agentabrams.com;
+
+    ssl_certificate     /etc/letsencrypt/live/pitch.sdcc.agentabrams.com/fullchain.pem;
+    ssl_certificate_key /etc/letsencrypt/live/pitch.sdcc.agentabrams.com/privkey.pem;
+
+    location / {
+        proxy_pass http://127.0.0.1:9720;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection "upgrade";
+    }
+}
+
+server {
+    listen 80;
+    listen [::]:80;
+    server_name pitch.sdcc.agentabrams.com;
+    return 301 https://$host$request_uri;
+}
diff --git a/sites-available/pm.greendomainbrokers.com b/sites-available/pm.greendomainbrokers.com
new file mode 100644
index 0000000..0e0eba1
--- /dev/null
+++ b/sites-available/pm.greendomainbrokers.com
@@ -0,0 +1,61 @@
+server {
+    listen 80;
+    listen [::]:80;
+    server_name pm.greendomainbrokers.com;
+
+    location ^~ /.well-known/acme-challenge/ {
+        root /var/www/html;
+        default_type "text/plain";
+        try_files $uri =404;
+    }
+
+    location / {
+        return 301 https://$server_name$request_uri;
+    }
+}
+
+server {
+    listen 443 ssl http2;
+    listen [::]:443 ssl http2;
+    server_name pm.greendomainbrokers.com;
+
+    ssl_certificate /etc/letsencrypt/live/dw.greendomainbrokers.com/fullchain.pem;
+    ssl_certificate_key /etc/letsencrypt/live/dw.greendomainbrokers.com/privkey.pem;
+    include /etc/letsencrypt/options-ssl-nginx.conf;
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
+
+    # Cloudflare Real IP
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options "SAMEORIGIN" always;
+    add_header X-Content-Type-Options "nosniff" always;
+    add_header X-XSS-Protection "1; mode=block" always;
+
+    location / {
+        proxy_pass http://127.0.0.1:7809;
+        proxy_http_version 1.1;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_cache_bypass $http_upgrade;
+    }
+}
diff --git a/sites-available/port-viewer b/sites-available/port-viewer
new file mode 100644
index 0000000..52c46fd
--- /dev/null
+++ b/sites-available/port-viewer
@@ -0,0 +1,17 @@
+server {
+    listen 80;
+    listen [::]:80;
+    server_name 45.61.58.125;
+
+    location / {
+        proxy_pass http://localhost:8888;
+        proxy_http_version 1.1;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_set_header Host $host;
+        proxy_cache_bypass $http_upgrade;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/printmurals.com.conf b/sites-available/printmurals.com.conf
new file mode 100644
index 0000000..c2a8368
--- /dev/null
+++ b/sites-available/printmurals.com.conf
@@ -0,0 +1,21 @@
+# printmurals.com — dwf-printmurals :10028
+server {
+    listen 80;
+    listen [::]:80;
+    server_name printmurals.com www.printmurals.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10028;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/raffiawallcoverings.com b/sites-available/raffiawallcoverings.com
new file mode 100644
index 0000000..a555c5f
--- /dev/null
+++ b/sites-available/raffiawallcoverings.com
@@ -0,0 +1,60 @@
+server {
+    server_name raffiawallcoverings.com www.raffiawallcoverings.com;
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9845;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+
+    listen [::]:443 ssl; # managed by Certbot
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/raffiawallcoverings.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/raffiawallcoverings.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.raffiawallcoverings.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = raffiawallcoverings.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name raffiawallcoverings.com www.raffiawallcoverings.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/raffiawalls.com b/sites-available/raffiawalls.com
new file mode 100644
index 0000000..ad692d6
--- /dev/null
+++ b/sites-available/raffiawalls.com
@@ -0,0 +1,41 @@
+server {
+    server_name raffiawalls.com www.raffiawalls.com;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9887;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    }
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    listen [::]:443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/raffiawalls.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/raffiawalls.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.raffiawalls.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = raffiawalls.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80; listen [::]:80;
+    server_name raffiawalls.com www.raffiawalls.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/recycledwallpaper.com b/sites-available/recycledwallpaper.com
new file mode 100644
index 0000000..e2e63ec
--- /dev/null
+++ b/sites-available/recycledwallpaper.com
@@ -0,0 +1,36 @@
+server {
+    server_name recycledwallpaper.com www.recycledwallpaper.com;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        return 301 https://naturalwallcoverings.com$request_uri;
+    }
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    listen [::]:443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/recycledwallpaper.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/recycledwallpaper.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.recycledwallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = recycledwallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80; listen [::]:80;
+    server_name recycledwallpaper.com www.recycledwallpaper.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/restaurantfabrics.com.conf b/sites-available/restaurantfabrics.com.conf
new file mode 100644
index 0000000..dc85f6a
--- /dev/null
+++ b/sites-available/restaurantfabrics.com.conf
@@ -0,0 +1,21 @@
+# restaurantfabrics.com — dwf-restaurantfabrics :10029
+server {
+    listen 80;
+    listen [::]:80;
+    server_name restaurantfabrics.com www.restaurantfabrics.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10029;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/restaurantmurals.com.conf b/sites-available/restaurantmurals.com.conf
new file mode 100644
index 0000000..6c0d31d
--- /dev/null
+++ b/sites-available/restaurantmurals.com.conf
@@ -0,0 +1,21 @@
+# restaurantmurals.com — dwf-restaurantmurals :10030
+server {
+    listen 80;
+    listen [::]:80;
+    server_name restaurantmurals.com www.restaurantmurals.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10030;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/restaurantwallpaper.com b/sites-available/restaurantwallpaper.com
new file mode 100644
index 0000000..bfae9da
--- /dev/null
+++ b/sites-available/restaurantwallpaper.com
@@ -0,0 +1,35 @@
+server {
+    server_name restaurantwallpaper.com www.restaurantwallpaper.com;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9854;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+
+    listen [::]:443 ssl; # managed by Certbot
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/restaurantwallpaper.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/restaurantwallpaper.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+}
+server {
+    if ($host = restaurantwallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80; listen [::]:80;
+    server_name restaurantwallpaper.com www.restaurantwallpaper.com;
+    return 404; # managed by Certbot
+
+
+}
\ No newline at end of file
diff --git a/sites-available/restorationwallpaper.com b/sites-available/restorationwallpaper.com
new file mode 100644
index 0000000..448b15b
--- /dev/null
+++ b/sites-available/restorationwallpaper.com
@@ -0,0 +1,42 @@
+server {
+    server_name restorationwallpaper.com www.restorationwallpaper.com;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9892;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    }
+
+    listen [::]:443 ssl; # managed by Certbot
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/restorationwallpaper.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/restorationwallpaper.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.restorationwallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = restorationwallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80; listen [::]:80;
+    server_name restorationwallpaper.com www.restorationwallpaper.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/retrowalls.com b/sites-available/retrowalls.com
new file mode 100644
index 0000000..c33e717
--- /dev/null
+++ b/sites-available/retrowalls.com
@@ -0,0 +1,81 @@
+# HTTP only — certbot will inject 443 + redirect after LE issuance
+server {
+    server_name retrowalls.com www.retrowalls.com;
+
+    # CloudFlare IP detection (matches goldleaf pattern)
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") {
+        return 403;
+    }
+
+    location /.well-known/acme-challenge/ {
+        root /var/www/html;
+    }
+
+    location = /universe { return 301 /universe/; }
+    location /universe/ {
+        proxy_pass http://localhost:9466/;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    }
+    location / {
+        proxy_pass http://localhost:9833;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_cache_bypass $http_upgrade;
+    }
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    listen [::]:443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/retrowalls.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/retrowalls.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+
+server {
+    if ($host = www.retrowalls.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = retrowalls.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name retrowalls.com www.retrowalls.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/roomsettings.com.conf b/sites-available/roomsettings.com.conf
new file mode 100644
index 0000000..3eb5475
--- /dev/null
+++ b/sites-available/roomsettings.com.conf
@@ -0,0 +1,21 @@
+# roomsettings.com — dwf-roomsettings :10031
+server {
+    listen 80;
+    listen [::]:80;
+    server_name roomsettings.com www.roomsettings.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10031;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/saloonwallpaper.com b/sites-available/saloonwallpaper.com
new file mode 100644
index 0000000..a4c163b
--- /dev/null
+++ b/sites-available/saloonwallpaper.com
@@ -0,0 +1,42 @@
+server {
+    server_name saloonwallpaper.com www.saloonwallpaper.com;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9889;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    }
+
+    listen [::]:443 ssl; # managed by Certbot
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/saloonwallpaper.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/saloonwallpaper.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.saloonwallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = saloonwallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80; listen [::]:80;
+    server_name saloonwallpaper.com www.saloonwallpaper.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/screenprintedwallpaper.com b/sites-available/screenprintedwallpaper.com
new file mode 100644
index 0000000..6489732
--- /dev/null
+++ b/sites-available/screenprintedwallpaper.com
@@ -0,0 +1,17 @@
+server {
+    listen 80; listen [::]:80;
+    server_name screenprintedwallpaper.com www.screenprintedwallpaper.com;
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / { return 302 https://blockprintedwallpaper.com$request_uri; }
+}
+server {
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl;
+    listen [::]:443 ssl;
+    server_name screenprintedwallpaper.com www.screenprintedwallpaper.com;
+    ssl_certificate /etc/letsencrypt/live/screenprintedwallpaper.com/fullchain.pem;
+    ssl_certificate_key /etc/letsencrypt/live/screenprintedwallpaper.com/privkey.pem;
+    include /etc/letsencrypt/options-ssl-nginx.conf;
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
+    location / { return 302 https://blockprintedwallpaper.com$request_uri; }
+}
diff --git a/sites-available/sdcc.agentabrams.com b/sites-available/sdcc.agentabrams.com
new file mode 100644
index 0000000..f989fa3
--- /dev/null
+++ b/sites-available/sdcc.agentabrams.com
@@ -0,0 +1,38 @@
+server {
+    server_name sdcc.agentabrams.com;
+    access_log /var/log/nginx/sdcc-pitch.access.log;
+    error_log  /var/log/nginx/sdcc-pitch.error.log;
+
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+
+    location / {
+        proxy_pass http://127.0.0.1:7400;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_read_timeout 60s;
+    }
+
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/sdcc.agentabrams.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/sdcc.agentabrams.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+}
+server {
+    if ($host = sdcc.agentabrams.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    server_name sdcc.agentabrams.com;
+    return 404; # managed by Certbot
+
+
+}
\ No newline at end of file
diff --git a/sites-available/sdccanalysis.agentabrams.com b/sites-available/sdccanalysis.agentabrams.com
new file mode 100644
index 0000000..ba9ab52
--- /dev/null
+++ b/sites-available/sdccanalysis.agentabrams.com
@@ -0,0 +1,43 @@
+# sdccanalysis.agentabrams.com — Steve's audit report for studentdebtcrisis.org (private)
+server {
+    server_name sdccanalysis.agentabrams.com;
+
+    access_log /var/log/nginx/sdccanalysis.agentabrams.com.access.log;
+    error_log /var/log/nginx/sdccanalysis.agentabrams.com.error.log;
+
+    add_header X-Frame-Options "SAMEORIGIN" always;
+    add_header X-Content-Type-Options "nosniff" always;
+    add_header Referrer-Policy "strict-origin-when-cross-origin" always;
+    add_header X-Robots-Tag "noindex, nofollow, noarchive" always;
+
+    auth_basic "sdccanalysis.agentabrams.com — admin only";
+    auth_basic_user_file /etc/nginx/.htpasswd-sdccanalysis;
+
+    root /var/www/sdccanalysis.agentabrams.com;
+    index index.html;
+    autoindex off;
+
+    location / {
+        try_files $uri $uri/ $uri.html =404;
+    }
+
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/sdccanalysis.agentabrams.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/sdccanalysis.agentabrams.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+}
+
+server {
+    if ($host = sdccanalysis.agentabrams.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    server_name sdccanalysis.agentabrams.com;
+    return 404; # managed by Certbot
+
+
+}
\ No newline at end of file
diff --git a/sites-available/selfadhesivewallpaper.com b/sites-available/selfadhesivewallpaper.com
new file mode 100644
index 0000000..0967c7f
--- /dev/null
+++ b/sites-available/selfadhesivewallpaper.com
@@ -0,0 +1,17 @@
+server {
+    listen 80; listen [::]:80;
+    server_name selfadhesivewallpaper.com www.selfadhesivewallpaper.com;
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / { return 302 https://apartmentwallpaper.com$request_uri; }
+}
+server {
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl;
+    listen [::]:443 ssl;
+    server_name selfadhesivewallpaper.com www.selfadhesivewallpaper.com;
+    ssl_certificate /etc/letsencrypt/live/selfadhesivewallpaper.com/fullchain.pem;
+    ssl_certificate_key /etc/letsencrypt/live/selfadhesivewallpaper.com/privkey.pem;
+    include /etc/letsencrypt/options-ssl-nginx.conf;
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
+    location / { return 302 https://apartmentwallpaper.com$request_uri; }
+}
diff --git a/sites-available/sheltermagazines.com.conf b/sites-available/sheltermagazines.com.conf
new file mode 100644
index 0000000..2729c01
--- /dev/null
+++ b/sites-available/sheltermagazines.com.conf
@@ -0,0 +1,21 @@
+# sheltermagazines.com — dwf-sheltermagazines :10032
+server {
+    listen 80;
+    listen [::]:80;
+    server_name sheltermagazines.com www.sheltermagazines.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10032;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/silkwallcoverings.com b/sites-available/silkwallcoverings.com
new file mode 100644
index 0000000..016250b
--- /dev/null
+++ b/sites-available/silkwallcoverings.com
@@ -0,0 +1,42 @@
+server {
+    server_name silkwallcoverings.com www.silkwallcoverings.com;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9894;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    }
+
+    listen [::]:443 ssl; # managed by Certbot
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/silkwallcoverings.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/silkwallcoverings.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.silkwallcoverings.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = silkwallcoverings.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80; listen [::]:80;
+    server_name silkwallcoverings.com www.silkwallcoverings.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/silkwallpaper.com b/sites-available/silkwallpaper.com
new file mode 100644
index 0000000..89ba627
--- /dev/null
+++ b/sites-available/silkwallpaper.com
@@ -0,0 +1,61 @@
+server {
+    server_name silkwallpaper.com www.silkwallpaper.com;
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9841;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    listen [::]:443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/silkwallpaper.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/silkwallpaper.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+
+
+}
+server {
+    if ($host = www.silkwallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = silkwallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name silkwallpaper.com www.silkwallpaper.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/silverleafwallpaper.com b/sites-available/silverleafwallpaper.com
new file mode 100644
index 0000000..ac55b91
--- /dev/null
+++ b/sites-available/silverleafwallpaper.com
@@ -0,0 +1,45 @@
+server {
+    server_name silverleafwallpaper.com www.silverleafwallpaper.com;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9852;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+
+    listen [::]:443 ssl; # managed by Certbot
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/silverleafwallpaper.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/silverleafwallpaper.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+
+
+}
+server {
+    if ($host = www.silverleafwallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = silverleafwallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80; listen [::]:80;
+    server_name silverleafwallpaper.com www.silverleafwallpaper.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/specifywallpaper.com.conf b/sites-available/specifywallpaper.com.conf
new file mode 100644
index 0000000..8334aed
--- /dev/null
+++ b/sites-available/specifywallpaper.com.conf
@@ -0,0 +1,21 @@
+# specifywallpaper.com — dwf-specifywallpaper :10033
+server {
+    listen 80;
+    listen [::]:80;
+    server_name specifywallpaper.com www.specifywallpaper.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10033;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/starsofdesign.com b/sites-available/starsofdesign.com
new file mode 100644
index 0000000..3f00072
--- /dev/null
+++ b/sites-available/starsofdesign.com
@@ -0,0 +1,49 @@
+server {
+    server_name starsofdesign.com www.starsofdesign.com;
+
+    access_log /var/log/nginx/starsofdesign.access.log;
+    error_log  /var/log/nginx/starsofdesign.error.log;
+
+    add_header Cache-Control "no-store, must-revalidate" always;
+
+    location / {
+        proxy_pass http://127.0.0.1:9928;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection "upgrade";
+        proxy_read_timeout 60s;
+    }
+
+    listen [::]:443 ssl; # managed by Certbot
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/starsofdesign.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/starsofdesign.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.starsofdesign.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = starsofdesign.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name starsofdesign.com www.starsofdesign.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/stevenabramsphotography.com.conf b/sites-available/stevenabramsphotography.com.conf
new file mode 100644
index 0000000..e15a5f9
--- /dev/null
+++ b/sites-available/stevenabramsphotography.com.conf
@@ -0,0 +1,21 @@
+# stevenabramsphotography.com — dwf-stevenabramsphotography :10034
+server {
+    listen 80;
+    listen [::]:80;
+    server_name stevenabramsphotography.com www.stevenabramsphotography.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10034;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/stringwallpaper.com b/sites-available/stringwallpaper.com
new file mode 100644
index 0000000..c37152d
--- /dev/null
+++ b/sites-available/stringwallpaper.com
@@ -0,0 +1,37 @@
+server {
+    server_name stringwallpaper.com www.stringwallpaper.com;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        return 301 https://linenwallpaper.com$request_uri;
+    }
+
+    listen [::]:443 ssl; # managed by Certbot
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/stringwallpaper.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/stringwallpaper.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.stringwallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = stringwallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80; listen [::]:80;
+    server_name stringwallpaper.com www.stringwallpaper.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/suedewallpaper.com b/sites-available/suedewallpaper.com
new file mode 100644
index 0000000..092acba
--- /dev/null
+++ b/sites-available/suedewallpaper.com
@@ -0,0 +1,41 @@
+server {
+    server_name suedewallpaper.com www.suedewallpaper.com;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9872;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    }
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    listen [::]:443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/suedewallpaper.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/suedewallpaper.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.suedewallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = suedewallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80; listen [::]:80;
+    server_name suedewallpaper.com www.suedewallpaper.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/textiletuesday.com b/sites-available/textiletuesday.com
new file mode 100644
index 0000000..60ca272
--- /dev/null
+++ b/sites-available/textiletuesday.com
@@ -0,0 +1,77 @@
+server {
+    listen 80;
+    listen [::]:80;
+    server_name textiletuesday.com www.textiletuesday.com;
+
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / { return 301 https://$host$request_uri; }
+}
+
+server {
+    listen 443 ssl http2;
+    listen [::]:443 ssl http2;
+    server_name textiletuesday.com www.textiletuesday.com;
+
+    ssl_certificate /etc/letsencrypt/live/textiletuesday.com/fullchain.pem;
+    ssl_certificate_key /etc/letsencrypt/live/textiletuesday.com/privkey.pem;
+    ssl_protocols TLSv1.2 TLSv1.3;
+    ssl_prefer_server_ciphers off;
+
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+
+    location ~* \.(html|htm)$ {
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_pass http://localhost:9899;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+
+    location / {
+        proxy_pass http://localhost:9899;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_cache_bypass $http_upgrade;
+    }
+}
diff --git a/sites-available/textilewallpaper.com b/sites-available/textilewallpaper.com
new file mode 100644
index 0000000..fe18c83
--- /dev/null
+++ b/sites-available/textilewallpaper.com
@@ -0,0 +1,42 @@
+server {
+    server_name textilewallpaper.com www.textilewallpaper.com;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9869;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    }
+
+    listen [::]:443 ssl; # managed by Certbot
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/textilewallpaper.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/textilewallpaper.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.textilewallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = textilewallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80; listen [::]:80;
+    server_name textilewallpaper.com www.textilewallpaper.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/thehotelwallpaper.com.conf b/sites-available/thehotelwallpaper.com.conf
new file mode 100644
index 0000000..74ba127
--- /dev/null
+++ b/sites-available/thehotelwallpaper.com.conf
@@ -0,0 +1,21 @@
+# thehotelwallpaper.com — dwf-thehotelwallpaper :10035
+server {
+    listen 80;
+    listen [::]:80;
+    server_name thehotelwallpaper.com www.thehotelwallpaper.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10035;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/thesetdecorator.com b/sites-available/thesetdecorator.com
new file mode 100644
index 0000000..2b264b1
--- /dev/null
+++ b/sites-available/thesetdecorator.com
@@ -0,0 +1,62 @@
+server {
+    server_name thesetdecorator.com www.thesetdecorator.com;
+    access_log /var/log/nginx/thesetdecorator.com.access.log;
+    error_log /var/log/nginx/thesetdecorator.com.error.log;
+    add_header X-Content-Type-Options "nosniff" always;
+    add_header Referrer-Policy "strict-origin-when-cross-origin" always;
+    add_header Cache-Control "no-store, must-revalidate" always;
+
+    location ^~ /.well-known/acme-challenge/ {
+        root /var/www/html;
+    }
+
+    # Proxy /api/art-archive/photos/* over tailnet to Mac2 where the 4.2 GB
+    # of original JPEGs live. Keeps the heavy image bytes off Kamatera disk.
+    location /api/art-archive/photos/ {
+        proxy_pass http://100.65.187.120:9716;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_buffering off;
+        proxy_read_timeout 60s;
+        client_max_body_size 50m;
+    }
+
+    location / {
+        proxy_pass http://127.0.0.1:9716;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_connect_timeout 10s;
+        proxy_read_timeout 60s;
+        client_max_body_size 25m;
+    }
+
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/thesetdecorator.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/thesetdecorator.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.thesetdecorator.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = thesetdecorator.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    server_name thesetdecorator.com www.thesetdecorator.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
diff --git a/sites-available/traditionalwhimsy.com.conf b/sites-available/traditionalwhimsy.com.conf
new file mode 100644
index 0000000..8cad207
--- /dev/null
+++ b/sites-available/traditionalwhimsy.com.conf
@@ -0,0 +1,21 @@
+# traditionalwhimsy.com — dwf-traditionalwhimsy :10036
+server {
+    listen 80;
+    listen [::]:80;
+    server_name traditionalwhimsy.com www.traditionalwhimsy.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10036;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/typo-redirect-1800wallcoverings.com b/sites-available/typo-redirect-1800wallcoverings.com
new file mode 100644
index 0000000..6f5f6ee
--- /dev/null
+++ b/sites-available/typo-redirect-1800wallcoverings.com
@@ -0,0 +1,34 @@
+server {
+    server_name 1800wallcoverings.com www.1800wallcoverings.com;
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    return 301 https://www.designerwallcoverings.com$request_uri;
+
+    listen [::]:443 ssl; # managed by Certbot
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/1800wallcoverings.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/1800wallcoverings.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.1800wallcoverings.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = 1800wallcoverings.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name 1800wallcoverings.com www.1800wallcoverings.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/typo-redirect-1800wallpapers.com b/sites-available/typo-redirect-1800wallpapers.com
new file mode 100644
index 0000000..5dd03d0
--- /dev/null
+++ b/sites-available/typo-redirect-1800wallpapers.com
@@ -0,0 +1,34 @@
+server {
+    server_name 1800wallpapers.com www.1800wallpapers.com;
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    return 301 https://www.designerwallcoverings.com$request_uri;
+
+    listen [::]:443 ssl; # managed by Certbot
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/1800wallpapers.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/1800wallpapers.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.1800wallpapers.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = 1800wallpapers.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name 1800wallpapers.com www.1800wallpapers.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/typo-redirect-800wallpaper.com b/sites-available/typo-redirect-800wallpaper.com
new file mode 100644
index 0000000..fc154f0
--- /dev/null
+++ b/sites-available/typo-redirect-800wallpaper.com
@@ -0,0 +1,34 @@
+server {
+    server_name 800wallpaper.com www.800wallpaper.com;
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    return 301 https://www.designerwallcoverings.com$request_uri;
+
+    listen 443 ssl; # managed by Certbot
+    listen [::]:443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/800wallpaper.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/800wallpaper.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.800wallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = 800wallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name 800wallpaper.com www.800wallpaper.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/typo-redirect-designerwallcover.com b/sites-available/typo-redirect-designerwallcover.com
new file mode 100644
index 0000000..f72d214
--- /dev/null
+++ b/sites-available/typo-redirect-designerwallcover.com
@@ -0,0 +1,34 @@
+server {
+    server_name designerwallcover.com www.designerwallcover.com;
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    return 301 https://www.designerwallcoverings.com$request_uri;
+
+    listen [::]:443 ssl; # managed by Certbot
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/designerwallcover.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/designerwallcover.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.designerwallcover.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = designerwallcover.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name designerwallcover.com www.designerwallcover.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/typo-redirect-designerwallcovering.com b/sites-available/typo-redirect-designerwallcovering.com
new file mode 100644
index 0000000..788ac14
--- /dev/null
+++ b/sites-available/typo-redirect-designerwallcovering.com
@@ -0,0 +1,34 @@
+server {
+    server_name designerwallcovering.com www.designerwallcovering.com;
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    return 301 https://www.designerwallcoverings.com$request_uri;
+
+    listen [::]:443 ssl; # managed by Certbot
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/designerwallcovering.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/designerwallcovering.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.designerwallcovering.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = designerwallcovering.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name designerwallcovering.com www.designerwallcovering.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/unitedstateswallpaper.com.conf b/sites-available/unitedstateswallpaper.com.conf
new file mode 100644
index 0000000..0db2c2a
--- /dev/null
+++ b/sites-available/unitedstateswallpaper.com.conf
@@ -0,0 +1,21 @@
+# unitedstateswallpaper.com — dwf-unitedstateswallpaper :10037
+server {
+    listen 80;
+    listen [::]:80;
+    server_name unitedstateswallpaper.com www.unitedstateswallpaper.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10037;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/venturablvd.agentabrams.com b/sites-available/venturablvd.agentabrams.com
new file mode 100644
index 0000000..c45accf
--- /dev/null
+++ b/sites-available/venturablvd.agentabrams.com
@@ -0,0 +1,25 @@
+# venturablvd.agentabrams.com — Ventura corridor public deploy
+# Authorized 2026-05-05 (deploy-intent: 'deploy ventura-corridor public')
+server {
+  listen 80;
+  server_name venturablvd.agentabrams.com;
+  location /.well-known/acme-challenge/ { root /var/www/letsencrypt; }
+  location / { return 301 https://$host$request_uri; }
+}
+server {
+  listen 443 ssl http2;
+  server_name venturablvd.agentabrams.com;
+  ssl_certificate     /etc/letsencrypt/live/venturablvd.agentabrams.com/fullchain.pem;
+  ssl_certificate_key /etc/letsencrypt/live/venturablvd.agentabrams.com/privkey.pem;
+  client_max_body_size 5m;
+  add_header X-Content-Type-Options 'nosniff' always;
+  add_header Referrer-Policy 'strict-origin-when-cross-origin' always;
+  location / {
+    proxy_pass http://127.0.0.1:9780;
+    proxy_set_header Host $host;
+    proxy_set_header X-Real-IP $remote_addr;
+    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    proxy_set_header X-Forwarded-Proto $scheme;
+    proxy_read_timeout 60s;
+  }
+}
diff --git a/sites-available/venturaclaw.agentabrams.com b/sites-available/venturaclaw.agentabrams.com
new file mode 100644
index 0000000..ac4d0a1
--- /dev/null
+++ b/sites-available/venturaclaw.agentabrams.com
@@ -0,0 +1,32 @@
+server {
+  listen 80;
+  server_name venturaclaw.agentabrams.com;
+  if ($host = venturaclaw.agentabrams.com) { return 301 https://venturaclaw.com$request_uri; }
+  return 404;
+}
+server {
+  listen 443 ssl;
+  server_name venturaclaw.agentabrams.com;
+  ssl_certificate /etc/letsencrypt/live/venturaclaw.agentabrams.com/fullchain.pem;
+  ssl_certificate_key /etc/letsencrypt/live/venturaclaw.agentabrams.com/privkey.pem;
+  include /etc/letsencrypt/options-ssl-nginx.conf;
+  ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
+
+  # OAuth callback URLs registered in provider consoles still resolve here.
+  location /oauth/ {
+    proxy_pass http://127.0.0.1:9788;
+    proxy_http_version 1.1;
+    proxy_set_header Host $host;
+    proxy_set_header X-Real-IP $remote_addr;
+    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    proxy_set_header X-Forwarded-Proto $scheme;
+    proxy_read_timeout 60s;
+  }
+  location = /healthz {
+    proxy_pass http://127.0.0.1:9788;
+    proxy_set_header Host $host;
+  }
+  location / {
+    return 301 https://venturaclaw.com$request_uri;
+  }
+}
diff --git a/sites-available/venturaclaw.com b/sites-available/venturaclaw.com
new file mode 100644
index 0000000..ec74cf7
--- /dev/null
+++ b/sites-available/venturaclaw.com
@@ -0,0 +1,71 @@
+# venturaclaw.com — coming-soon page + read-only /services hub.
+# / = static teaser landing
+# /services, /legal-notice, /api/services-chat, /static/* = proxied to ventura-claw :9788
+# Everything else (login, admin, chat) stays gated.
+
+server {
+    listen 80;
+    listen [::]:80;
+    server_name venturaclaw.com www.venturaclaw.com;
+    return 301 https://$host$request_uri;
+}
+
+server {
+    listen 443 ssl http2;
+    listen [::]:443 ssl;
+    server_name venturaclaw.com www.venturaclaw.com;
+
+    ssl_certificate     /etc/letsencrypt/live/venturaclaw.com/fullchain.pem;
+    ssl_certificate_key /etc/letsencrypt/live/venturaclaw.com/privkey.pem;
+    ssl_session_cache shared:SSL:10m;
+    ssl_session_timeout 1d;
+    ssl_protocols TLSv1.2 TLSv1.3;
+
+    root /var/www/venturaclaw-comingsoon;
+    index index.html;
+
+    # ---- Public services hub: /services, /legal-notice, /api/services-chat ----
+    # These three paths and their static deps proxy to the ventura-claw Express app on :9788.
+    location = /services        { proxy_pass http://127.0.0.1:9788; include /etc/nginx/proxy_params; proxy_set_header Host $host; }
+    location = /legal-notice    { proxy_pass http://127.0.0.1:9788; include /etc/nginx/proxy_params; proxy_set_header Host $host; }
+    location = /privacy         { proxy_pass http://127.0.0.1:9788; include /etc/nginx/proxy_params; proxy_set_header Host $host; }
+    location = /terms           { proxy_pass http://127.0.0.1:9788; include /etc/nginx/proxy_params; proxy_set_header Host $host; }
+    location = /faq             { proxy_pass http://127.0.0.1:9788; include /etc/nginx/proxy_params; proxy_set_header Host $host; }
+    location = /docs            { proxy_pass http://127.0.0.1:9788; include /etc/nginx/proxy_params; proxy_set_header Host $host; }
+    location = /about           { proxy_pass http://127.0.0.1:9788; include /etc/nginx/proxy_params; proxy_set_header Host $host; }
+    location = /how-it-works    { proxy_pass http://127.0.0.1:9788; include /etc/nginx/proxy_params; proxy_set_header Host $host; }
+    location ~ ^/connectors(/|$) { proxy_pass http://127.0.0.1:9788; include /etc/nginx/proxy_params; proxy_set_header Host $host; }
+    location = /pricing         { proxy_pass http://127.0.0.1:9788; include /etc/nginx/proxy_params; proxy_set_header Host $host; }
+    location = /sitemap.xml { proxy_pass http://127.0.0.1:9788; include /etc/nginx/proxy_params; proxy_set_header Host $host; }
+    location = /robots.txt { proxy_pass http://127.0.0.1:9788; include /etc/nginx/proxy_params; proxy_set_header Host $host; }
+    location = /changelog       { proxy_pass http://127.0.0.1:9788; include /etc/nginx/proxy_params; proxy_set_header Host $host; }
+    location = /feed            { proxy_pass http://127.0.0.1:9788; include /etc/nginx/proxy_params; proxy_set_header Host $host; }
+    location = /api/public/services { proxy_pass http://127.0.0.1:9788; include /etc/nginx/proxy_params; proxy_set_header Host $host; }
+    location = /api/services-demo/domain-email {
+        proxy_pass http://127.0.0.1:9788;
+        include /etc/nginx/proxy_params;
+        proxy_set_header Host $host;
+        proxy_read_timeout 30s;
+    }
+    location = /api/services-lead {
+        proxy_pass http://127.0.0.1:9788;
+        include /etc/nginx/proxy_params;
+        proxy_set_header Host $host;
+        proxy_read_timeout 30s;
+    }
+    location = /api/services-chat {
+        proxy_pass http://127.0.0.1:9788;
+        include /etc/nginx/proxy_params;
+        proxy_set_header Host $host;
+        proxy_read_timeout 90s;
+    }
+
+    # / = static teaser
+    location / {
+        try_files /index.html =404;
+        add_header Cache-Control "public, max-age=300";
+    }
+
+    # Block any other /api/* path (login, admin, etc.) — gated to hidden door later.
+    location /api/ { return 404; }
+}
diff --git a/sites-available/videos.agentabrams.com b/sites-available/videos.agentabrams.com
new file mode 100644
index 0000000..d32eec1
--- /dev/null
+++ b/sites-available/videos.agentabrams.com
@@ -0,0 +1,48 @@
+server {
+    server_name videos.agentabrams.com;
+
+    access_log /var/log/nginx/videos.agentabrams.com.access.log;
+    error_log /var/log/nginx/videos.agentabrams.com.error.log;
+
+    add_header X-Content-Type-Options "nosniff" always;
+    add_header Referrer-Policy "strict-origin-when-cross-origin" always;
+
+    auth_basic "videos.agentabrams.com — admin only";
+    auth_basic_user_file /etc/nginx/.htpasswd-builds;
+
+    root /var/www/videos.agentabrams.com;
+    index index.html;
+    autoindex off;
+
+    location ^~ /api/ {
+        proxy_pass http://127.0.0.1:9783;
+        proxy_set_header Host $host;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_connect_timeout 10s;
+        proxy_read_timeout 30s;
+    }
+
+    location / {
+        try_files $uri $uri/ =404;
+    }
+
+    location ~* \.mp4$ {
+        add_header Accept-Ranges bytes;
+    }
+
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/videos.agentabrams.com/fullchain.pem;
+    ssl_certificate_key /etc/letsencrypt/live/videos.agentabrams.com/privkey.pem;
+    include /etc/letsencrypt/options-ssl-nginx.conf;
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
+}
+
+server {
+    if ($host = videos.agentabrams.com) {
+        return 301 https://$host$request_uri;
+    }
+    listen 80;
+    server_name videos.agentabrams.com;
+    return 404;
+}
diff --git a/sites-available/vinylwallpaper.com b/sites-available/vinylwallpaper.com
new file mode 100644
index 0000000..5e60c88
--- /dev/null
+++ b/sites-available/vinylwallpaper.com
@@ -0,0 +1,42 @@
+server {
+    server_name vinylwallpaper.com www.vinylwallpaper.com;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9863;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+    include snippets/dw-frame-allow.conf;
+    listen 443 ssl; # managed by Certbot
+    listen [::]:443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/vinylwallpaper.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/vinylwallpaper.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.vinylwallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = vinylwallpaper.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80; listen [::]:80;
+    server_name vinylwallpaper.com www.vinylwallpaper.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/wallco.ai b/sites-available/wallco.ai
new file mode 100644
index 0000000..33c8668
--- /dev/null
+++ b/sites-available/wallco.ai
@@ -0,0 +1,87 @@
+server {
+    server_name wallco.ai www.wallco.ai;
+    client_max_body_size 30M;
+
+    # Cloudflare real IP passthrough (per feedback_cloudflare_html_caching.md)
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 131.0.72.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 2400:cb00::/32;
+    set_real_ip_from 2606:4700::/32;
+    set_real_ip_from 2803:f800::/32;
+    set_real_ip_from 2405:b500::/32;
+    set_real_ip_from 2405:8100::/32;
+    set_real_ip_from 2a06:98c0::/29;
+    set_real_ip_from 2c0f:f248::/32;
+    real_ip_header CF-Connecting-IP;
+
+    # certbot challenge
+    location /.well-known/acme-challenge/ {
+        root /var/www/html;
+    }
+
+    location / {
+        proxy_pass http://127.0.0.1:9905;
+        proxy_http_version 1.1;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection keep-alive;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_cache_bypass $http_upgrade;
+
+        # Cache-Control: no-store on HTML (per feedback_cloudflare_html_caching.md)
+        add_header Cache-Control "no-store, must-revalidate" always;
+
+        # Security headers
+        add_header X-Frame-Options SAMEORIGIN always;
+        add_header X-Content-Type-Options nosniff always;
+        add_header Cross-Origin-Opener-Policy same-origin always;
+        add_header Referrer-Policy strict-origin-when-cross-origin always;
+        add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    }
+
+    listen [::]:443 ssl; # managed by Certbot
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/wallco.ai/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/wallco.ai/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.wallco.ai) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = wallco.ai) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name wallco.ai www.wallco.ai;
+    client_max_body_size 30M;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/wallcovering.net.conf b/sites-available/wallcovering.net.conf
new file mode 100644
index 0000000..7d5c0ed
--- /dev/null
+++ b/sites-available/wallcovering.net.conf
@@ -0,0 +1,21 @@
+# wallcovering.net — dwf-wallcovering :10038
+server {
+    listen 80;
+    listen [::]:80;
+    server_name wallcovering.net www.wallcovering.net;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10038;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/wallpapercanada.com b/sites-available/wallpapercanada.com
new file mode 100644
index 0000000..1729748
--- /dev/null
+++ b/sites-available/wallpapercanada.com
@@ -0,0 +1,42 @@
+# wallpapercanada.com — staged 2026-05-10 by gtag-rollout work
+# HTTP-only initially. Once DNS flips from GoDaddy to Cloudflare→Kamatera,
+# run: certbot --nginx -d wallpapercanada.com -d www.wallpapercanada.com --non-interactive --agree-tos -m steve@designerwallcoverings.com
+server {
+  server_name wallpapercanada.com www.wallpapercanada.com;
+  add_header Cache-Control "no-store, must-revalidate" always;
+  location / {
+    proxy_pass http://127.0.0.1:9873;
+    proxy_set_header Host $host;
+    proxy_set_header X-Real-IP $remote_addr;
+    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    proxy_set_header X-Forwarded-Proto $scheme;
+  }
+
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/wallpapercanada.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/wallpapercanada.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+
+server {
+    if ($host = www.wallpapercanada.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = wallpapercanada.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+  listen 80;
+  server_name wallpapercanada.com www.wallpapercanada.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/wallpapercontractor.com b/sites-available/wallpapercontractor.com
new file mode 100644
index 0000000..655d89f
--- /dev/null
+++ b/sites-available/wallpapercontractor.com
@@ -0,0 +1,22 @@
+server {
+    listen 80;
+    listen [::]:80;
+    server_name wallpapercontractor.com www.wallpapercontractor.com;
+
+    access_log /var/log/nginx/wallpapercontractor.access.log;
+    error_log  /var/log/nginx/wallpapercontractor.error.log;
+
+    location / {
+        proxy_pass http://127.0.0.1:9930;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection "upgrade";
+        proxy_read_timeout 60s;
+    }
+
+    add_header Cache-Control "no-store, must-revalidate" always;
+}
diff --git a/sites-available/wallpaperdefinitions.com b/sites-available/wallpaperdefinitions.com
new file mode 100644
index 0000000..409992f
--- /dev/null
+++ b/sites-available/wallpaperdefinitions.com
@@ -0,0 +1,65 @@
+server {
+    server_name wallpaperdefinitions.com www.wallpaperdefinitions.com;
+
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+
+    location /.well-known/acme-challenge/ {
+        root /var/www/html;
+    }
+
+    location / {
+        proxy_pass http://localhost:9901;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_cache_bypass $http_upgrade;
+    }
+
+    listen 443 ssl; # managed by Certbot
+    listen [::]:443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/wallpaperdefinitions.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/wallpaperdefinitions.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.wallpaperdefinitions.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = wallpaperdefinitions.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name wallpaperdefinitions.com www.wallpaperdefinitions.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/wallpaperdictionary.com b/sites-available/wallpaperdictionary.com
new file mode 100644
index 0000000..7c59951
--- /dev/null
+++ b/sites-available/wallpaperdictionary.com
@@ -0,0 +1,65 @@
+server {
+    server_name wallpaperdictionary.com www.wallpaperdictionary.com;
+
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+
+    location /.well-known/acme-challenge/ {
+        root /var/www/html;
+    }
+
+    location / {
+        proxy_pass http://localhost:9904;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_cache_bypass $http_upgrade;
+    }
+
+    listen [::]:443 ssl; # managed by Certbot
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/wallpaperdictionary.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/wallpaperdictionary.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.wallpaperdictionary.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = wallpaperdictionary.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name wallpaperdictionary.com www.wallpaperdictionary.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/wallpaperdistributors.com b/sites-available/wallpaperdistributors.com
new file mode 100644
index 0000000..b028907
--- /dev/null
+++ b/sites-available/wallpaperdistributors.com
@@ -0,0 +1,22 @@
+server {
+    listen 80;
+    listen [::]:80;
+    server_name wallpaperdistributors.com www.wallpaperdistributors.com;
+
+    access_log /var/log/nginx/wallpaperdistributors.access.log;
+    error_log  /var/log/nginx/wallpaperdistributors.error.log;
+
+    location / {
+        proxy_pass http://127.0.0.1:9932;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection "upgrade";
+        proxy_read_timeout 60s;
+    }
+
+    add_header Cache-Control "no-store, must-revalidate" always;
+}
diff --git a/sites-available/wallpaperestimator.com b/sites-available/wallpaperestimator.com
new file mode 100644
index 0000000..57b4562
--- /dev/null
+++ b/sites-available/wallpaperestimator.com
@@ -0,0 +1,38 @@
+# wallpaperestimator.com — phase: build_only (DNS not yet flipped)
+# :80 only, no TLS until DNS points here. CF proxy + certbot come in a later wave.
+server {
+    listen 80;
+    listen [::]:80;
+    server_name wallpaperestimator.com www.wallpaperestimator.com;
+
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+
+    location / {
+        proxy_pass http://localhost:9933;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/wallpaperexports.com.conf b/sites-available/wallpaperexports.com.conf
new file mode 100644
index 0000000..b0768bb
--- /dev/null
+++ b/sites-available/wallpaperexports.com.conf
@@ -0,0 +1,21 @@
+# wallpaperexports.com — dwf-wallpaperexports :10039
+server {
+    listen 80;
+    listen [::]:80;
+    server_name wallpaperexports.com www.wallpaperexports.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10039;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/wallpaperfromthe80s.com.conf b/sites-available/wallpaperfromthe80s.com.conf
new file mode 100644
index 0000000..afbbfa1
--- /dev/null
+++ b/sites-available/wallpaperfromthe80s.com.conf
@@ -0,0 +1,21 @@
+# wallpaperfromthe80s.com — dwf-wallpaperfromthe80s :10040
+server {
+    listen 80;
+    listen [::]:80;
+    server_name wallpaperfromthe80s.com www.wallpaperfromthe80s.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10040;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/wallpaperglossary.com b/sites-available/wallpaperglossary.com
new file mode 100644
index 0000000..2f5a89a
--- /dev/null
+++ b/sites-available/wallpaperglossary.com
@@ -0,0 +1,65 @@
+server {
+    server_name wallpaperglossary.com www.wallpaperglossary.com;
+
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+
+    location /.well-known/acme-challenge/ {
+        root /var/www/html;
+    }
+
+    location / {
+        proxy_pass http://localhost:9902;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_cache_bypass $http_upgrade;
+    }
+
+    listen 443 ssl; # managed by Certbot
+    listen [::]:443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/wallpaperglossary.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/wallpaperglossary.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.wallpaperglossary.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = wallpaperglossary.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name wallpaperglossary.com www.wallpaperglossary.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/wallpaperhistory.com b/sites-available/wallpaperhistory.com
new file mode 100644
index 0000000..04442dd
--- /dev/null
+++ b/sites-available/wallpaperhistory.com
@@ -0,0 +1,65 @@
+server {
+    server_name wallpaperhistory.com www.wallpaperhistory.com;
+
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+
+    location /.well-known/acme-challenge/ {
+        root /var/www/html;
+    }
+
+    location / {
+        proxy_pass http://localhost:9903;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_cache_bypass $http_upgrade;
+    }
+
+    listen [::]:443 ssl; # managed by Certbot
+    listen 443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/wallpaperhistory.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/wallpaperhistory.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.wallpaperhistory.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = wallpaperhistory.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name wallpaperhistory.com www.wallpaperhistory.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/wallpaperny.com.conf b/sites-available/wallpaperny.com.conf
new file mode 100644
index 0000000..6d5a228
--- /dev/null
+++ b/sites-available/wallpaperny.com.conf
@@ -0,0 +1,21 @@
+# wallpaperny.com — dwf-wallpaperny :10041
+server {
+    listen 80;
+    listen [::]:80;
+    server_name wallpaperny.com www.wallpaperny.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10041;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/wallpaperpurchasing.com.conf b/sites-available/wallpaperpurchasing.com.conf
new file mode 100644
index 0000000..8667138
--- /dev/null
+++ b/sites-available/wallpaperpurchasing.com.conf
@@ -0,0 +1,21 @@
+# wallpaperpurchasing.com — dwf-wallpaperpurchasing :10042
+server {
+    listen 80;
+    listen [::]:80;
+    server_name wallpaperpurchasing.com www.wallpaperpurchasing.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10042;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/wallpapersback.com b/sites-available/wallpapersback.com
new file mode 100644
index 0000000..4045426
--- /dev/null
+++ b/sites-available/wallpapersback.com
@@ -0,0 +1,59 @@
+server {
+    server_name wallpapersback.com www.wallpapersback.com;
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+    if ($http_user_agent ~* "copyrightagent|copyrightbot") { return 403; }
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / {
+        proxy_pass http://localhost:9835;
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+
+    listen 443 ssl; # managed by Certbot
+    listen [::]:443 ssl; # managed by Certbot
+    ssl_certificate /etc/letsencrypt/live/wallpapersback.com/fullchain.pem; # managed by Certbot
+    ssl_certificate_key /etc/letsencrypt/live/wallpapersback.com/privkey.pem; # managed by Certbot
+    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+
+}
+server {
+    if ($host = www.wallpapersback.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    if ($host = wallpapersback.com) {
+        return 301 https://$host$request_uri;
+    } # managed by Certbot
+
+
+    listen 80;
+    listen [::]:80;
+    server_name wallpapersback.com www.wallpapersback.com;
+    return 404; # managed by Certbot
+
+
+
+
+}
\ No newline at end of file
diff --git a/sites-available/wallpaperwednesday.com b/sites-available/wallpaperwednesday.com
new file mode 100644
index 0000000..be14fcb
--- /dev/null
+++ b/sites-available/wallpaperwednesday.com
@@ -0,0 +1,77 @@
+server {
+    listen 80;
+    listen [::]:80;
+    server_name wallpaperwednesday.com www.wallpaperwednesday.com;
+
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+    location / { return 301 https://$host$request_uri; }
+}
+
+server {
+    listen 443 ssl http2;
+    listen [::]:443 ssl http2;
+    server_name wallpaperwednesday.com www.wallpaperwednesday.com;
+
+    ssl_certificate /etc/letsencrypt/live/wallpaperwednesday.com/fullchain.pem;
+    ssl_certificate_key /etc/letsencrypt/live/wallpaperwednesday.com/privkey.pem;
+    ssl_protocols TLSv1.2 TLSv1.3;
+    ssl_prefer_server_ciphers off;
+
+    set_real_ip_from 173.245.48.0/20;
+    set_real_ip_from 103.21.244.0/22;
+    set_real_ip_from 103.22.200.0/22;
+    set_real_ip_from 103.31.4.0/22;
+    set_real_ip_from 141.101.64.0/18;
+    set_real_ip_from 108.162.192.0/18;
+    set_real_ip_from 190.93.240.0/20;
+    set_real_ip_from 188.114.96.0/20;
+    set_real_ip_from 197.234.240.0/22;
+    set_real_ip_from 198.41.128.0/17;
+    set_real_ip_from 162.158.0.0/15;
+    set_real_ip_from 104.16.0.0/13;
+    set_real_ip_from 104.24.0.0/14;
+    set_real_ip_from 172.64.0.0/13;
+    set_real_ip_from 131.0.72.0/22;
+    real_ip_header CF-Connecting-IP;
+
+    location /.well-known/acme-challenge/ { root /var/www/html; }
+
+    location ~* \.(html|htm)$ {
+        add_header Cache-Control "no-store, must-revalidate" always;
+        proxy_pass http://localhost:9900;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+
+    location / {
+        proxy_pass http://localhost:9900;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_cache_bypass $http_upgrade;
+    }
+}
diff --git a/sites-available/wallpaperweekly.com.conf b/sites-available/wallpaperweekly.com.conf
new file mode 100644
index 0000000..9823c48
--- /dev/null
+++ b/sites-available/wallpaperweekly.com.conf
@@ -0,0 +1,21 @@
+# wallpaperweekly.com — dwf-wallpaperweekly :10043
+server {
+    listen 80;
+    listen [::]:80;
+    server_name wallpaperweekly.com www.wallpaperweekly.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10043;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/wallsandfabrics.com b/sites-available/wallsandfabrics.com
new file mode 100644
index 0000000..af33104
--- /dev/null
+++ b/sites-available/wallsandfabrics.com
@@ -0,0 +1,23 @@
+# wallsandfabrics.com — DW combo storefront (build_only phase, :80 only)
+# DNS not yet flipped — TLS comes after DNS cutover.
+server {
+    listen 80;
+    listen [::]:80;
+    server_name wallsandfabrics.com www.wallsandfabrics.com;
+
+    access_log /var/log/nginx/wallsandfabrics.access.log;
+    error_log  /var/log/nginx/wallsandfabrics.error.log;
+
+    location / {
+        proxy_pass http://127.0.0.1:9934;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_read_timeout 30s;
+
+        # CF caches HTML by default — opt out for the dynamic pages.
+        add_header Cache-Control "no-store, must-revalidate" always;
+    }
+}
diff --git a/sites-available/wc01wallcoverings.com.conf b/sites-available/wc01wallcoverings.com.conf
new file mode 100644
index 0000000..5216070
--- /dev/null
+++ b/sites-available/wc01wallcoverings.com.conf
@@ -0,0 +1,21 @@
+# wc01wallcoverings.com — dwf-wc01wallcoverings :10044
+server {
+    listen 80;
+    listen [::]:80;
+    server_name wc01wallcoverings.com www.wc01wallcoverings.com;
+
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options SAMEORIGIN always;
+    add_header X-Content-Type-Options nosniff always;
+    add_header Referrer-Policy strict-origin-when-cross-origin always;
+    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
+    add_header Cross-Origin-Opener-Policy same-origin always;
+    location / {
+        proxy_pass http://127.0.0.1:10044;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+}
diff --git a/sites-available/wholivedthere.com.conf b/sites-available/wholivedthere.com.conf
new file mode 100644
index 0000000..f0f70bc
--- /dev/null
+++ b/sites-available/wholivedthere.com.conf
@@ -0,0 +1,46 @@
+# HTTP → HTTPS redirect
+server {
+    listen 80;
+    server_name wholivedthere.com www.wholivedthere.com;
+    return 301 https://$host$request_uri;
+}
+
+# HTTPS → Next.js
+server {
+    listen 443 ssl http2;
+    server_name wholivedthere.com www.wholivedthere.com;
+
+    ssl_certificate /etc/letsencrypt/live/wholivedthere.com/fullchain.pem;
+    ssl_certificate_key /etc/letsencrypt/live/wholivedthere.com/privkey.pem;
+    include /etc/letsencrypt/options-ssl-nginx.conf;
+    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
+
+    # Security headers
+    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+    add_header X-Frame-Options "SAMEORIGIN" always;
+    add_header X-Content-Type-Options "nosniff" always;
+    add_header Referrer-Policy "strict-origin-when-cross-origin" always;
+    add_header Permissions-Policy "geolocation=(self), microphone=(), camera=()" always;
+
+    # Site Factory routes (Stripe + auth + health + webhook + claim) → SF port 3091
+    location ~ ^/api/(auth|checkout|health|webhook)(/|$) {
+        proxy_pass http://127.0.0.1:3091;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_http_version 1.1;
+        # Stripe webhook sig verify needs raw body
+        proxy_request_buffering off;
+    }
+
+    # Everything else → pastdoor (port 9821)
+    location / {
+        proxy_pass http://127.0.0.1:9821;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_http_version 1.1;
+    }
+}
diff --git a/sites-available/zendesk-chat-proxy b/sites-available/zendesk-chat-proxy
new file mode 100644
index 0000000..92af1c8
--- /dev/null
+++ b/sites-available/zendesk-chat-proxy
@@ -0,0 +1,20 @@
+server {
+    listen 80;
+    server_name 45.61.58.125;
+
+    location /zendesk-chat {
+        proxy_pass http://localhost:9886;
+        proxy_http_version 1.1;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection 'upgrade';
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_cache_bypass $http_upgrade;
+
+        # Remove /zendesk-chat prefix when forwarding
+        rewrite ^/zendesk-chat/(.*) /$1 break;
+        rewrite ^/zendesk-chat$ / break;
+    }
+}
diff --git a/sites-enabled/1800swallpaper.com b/sites-enabled/1800swallpaper.com
new file mode 120000
index 0000000..2c102d0
--- /dev/null
+++ b/sites-enabled/1800swallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/1800swallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/1800wallcoverings.com.conf b/sites-enabled/1800wallcoverings.com.conf
new file mode 120000
index 0000000..78b5d3e
--- /dev/null
+++ b/sites-enabled/1800wallcoverings.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/1800wallcoverings.com.conf
\ No newline at end of file
diff --git a/sites-enabled/1890swallpaper.com b/sites-enabled/1890swallpaper.com
new file mode 120000
index 0000000..04ef6e1
--- /dev/null
+++ b/sites-enabled/1890swallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/1890swallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/1900swallpaper.com b/sites-enabled/1900swallpaper.com
new file mode 120000
index 0000000..f2e4f9d
--- /dev/null
+++ b/sites-enabled/1900swallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/1900swallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/1920swallpaper.com b/sites-enabled/1920swallpaper.com
new file mode 120000
index 0000000..b971bcf
--- /dev/null
+++ b/sites-enabled/1920swallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/1920swallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/1930swallpaper.com b/sites-enabled/1930swallpaper.com
new file mode 120000
index 0000000..47ebad6
--- /dev/null
+++ b/sites-enabled/1930swallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/1930swallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/1940swallpaper.com b/sites-enabled/1940swallpaper.com
new file mode 120000
index 0000000..1448640
--- /dev/null
+++ b/sites-enabled/1940swallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/1940swallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/1950swallpaper.com b/sites-enabled/1950swallpaper.com
new file mode 120000
index 0000000..3041095
--- /dev/null
+++ b/sites-enabled/1950swallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/1950swallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/1960swallpaper.com b/sites-enabled/1960swallpaper.com
new file mode 120000
index 0000000..605a0f4
--- /dev/null
+++ b/sites-enabled/1960swallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/1960swallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/1970swallpaper.com b/sites-enabled/1970swallpaper.com
new file mode 120000
index 0000000..8aa47ff
--- /dev/null
+++ b/sites-enabled/1970swallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/1970swallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/1980swallpaper.com b/sites-enabled/1980swallpaper.com
new file mode 120000
index 0000000..d4c5923
--- /dev/null
+++ b/sites-enabled/1980swallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/1980swallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/4square.agentabrams.com b/sites-enabled/4square.agentabrams.com
new file mode 120000
index 0000000..1c1c1ca
--- /dev/null
+++ b/sites-enabled/4square.agentabrams.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/4square.agentabrams.com
\ No newline at end of file
diff --git a/sites-enabled/abramsatlas.com.conf b/sites-enabled/abramsatlas.com.conf
new file mode 120000
index 0000000..30e5d1d
--- /dev/null
+++ b/sites-enabled/abramsatlas.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/abramsatlas.com.conf
\ No newline at end of file
diff --git a/sites-enabled/abramscivic.com.conf b/sites-enabled/abramscivic.com.conf
new file mode 120000
index 0000000..26b276c
--- /dev/null
+++ b/sites-enabled/abramscivic.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/abramscivic.com.conf
\ No newline at end of file
diff --git a/sites-enabled/abramsdirectory.com.conf b/sites-enabled/abramsdirectory.com.conf
new file mode 120000
index 0000000..e1eb111
--- /dev/null
+++ b/sites-enabled/abramsdirectory.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/abramsdirectory.com.conf
\ No newline at end of file
diff --git a/sites-enabled/abramsguide.com.conf b/sites-enabled/abramsguide.com.conf
new file mode 120000
index 0000000..267d293
--- /dev/null
+++ b/sites-enabled/abramsguide.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/abramsguide.com.conf
\ No newline at end of file
diff --git a/sites-enabled/abramsindex.com.conf b/sites-enabled/abramsindex.com.conf
new file mode 120000
index 0000000..09ff6a9
--- /dev/null
+++ b/sites-enabled/abramsindex.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/abramsindex.com.conf
\ No newline at end of file
diff --git a/sites-enabled/abramsindustries.com.conf b/sites-enabled/abramsindustries.com.conf
new file mode 120000
index 0000000..ae9bc2d
--- /dev/null
+++ b/sites-enabled/abramsindustries.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/abramsindustries.com.conf
\ No newline at end of file
diff --git a/sites-enabled/abramsintel.com.conf b/sites-enabled/abramsintel.com.conf
new file mode 120000
index 0000000..a12fb4c
--- /dev/null
+++ b/sites-enabled/abramsintel.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/abramsintel.com.conf
\ No newline at end of file
diff --git a/sites-enabled/abramsintelligence.com.conf b/sites-enabled/abramsintelligence.com.conf
new file mode 120000
index 0000000..95ac5e7
--- /dev/null
+++ b/sites-enabled/abramsintelligence.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/abramsintelligence.com.conf
\ No newline at end of file
diff --git a/sites-enabled/abramslive.com.conf b/sites-enabled/abramslive.com.conf
new file mode 120000
index 0000000..f17dc52
--- /dev/null
+++ b/sites-enabled/abramslive.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/abramslive.com.conf
\ No newline at end of file
diff --git a/sites-enabled/abramslocal.com.conf b/sites-enabled/abramslocal.com.conf
new file mode 120000
index 0000000..43d086f
--- /dev/null
+++ b/sites-enabled/abramslocal.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/abramslocal.com.conf
\ No newline at end of file
diff --git a/sites-enabled/abramsmaps.com.conf b/sites-enabled/abramsmaps.com.conf
new file mode 120000
index 0000000..252fa1d
--- /dev/null
+++ b/sites-enabled/abramsmaps.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/abramsmaps.com.conf
\ No newline at end of file
diff --git a/sites-enabled/abramsmarkets.com.conf b/sites-enabled/abramsmarkets.com.conf
new file mode 120000
index 0000000..336d433
--- /dev/null
+++ b/sites-enabled/abramsmarkets.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/abramsmarkets.com.conf
\ No newline at end of file
diff --git a/sites-enabled/abramsos.com.conf b/sites-enabled/abramsos.com.conf
new file mode 120000
index 0000000..a62491a
--- /dev/null
+++ b/sites-enabled/abramsos.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/abramsos.com.conf
\ No newline at end of file
diff --git a/sites-enabled/abramsprotection.com.conf b/sites-enabled/abramsprotection.com.conf
new file mode 120000
index 0000000..771486a
--- /dev/null
+++ b/sites-enabled/abramsprotection.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/abramsprotection.com.conf
\ No newline at end of file
diff --git a/sites-enabled/abramsreport.agentabrams.com.conf b/sites-enabled/abramsreport.agentabrams.com.conf
new file mode 120000
index 0000000..32b0505
--- /dev/null
+++ b/sites-enabled/abramsreport.agentabrams.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/abramsreport.agentabrams.com.conf
\ No newline at end of file
diff --git a/sites-enabled/abramsspace.com.conf b/sites-enabled/abramsspace.com.conf
new file mode 120000
index 0000000..0f3f16f
--- /dev/null
+++ b/sites-enabled/abramsspace.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/abramsspace.com.conf
\ No newline at end of file
diff --git a/sites-enabled/abramsterminal.com.conf b/sites-enabled/abramsterminal.com.conf
new file mode 120000
index 0000000..39c1403
--- /dev/null
+++ b/sites-enabled/abramsterminal.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/abramsterminal.com.conf
\ No newline at end of file
diff --git a/sites-enabled/abramsvc.com.conf b/sites-enabled/abramsvc.com.conf
new file mode 120000
index 0000000..3768c54
--- /dev/null
+++ b/sites-enabled/abramsvc.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/abramsvc.com.conf
\ No newline at end of file
diff --git a/sites-enabled/admin.agentabrams.com b/sites-enabled/admin.agentabrams.com
new file mode 120000
index 0000000..1af72e0
--- /dev/null
+++ b/sites-enabled/admin.agentabrams.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/admin.agentabrams.com
\ No newline at end of file
diff --git a/sites-enabled/agedwallpaper.com b/sites-enabled/agedwallpaper.com
new file mode 120000
index 0000000..bdad41b
--- /dev/null
+++ b/sites-enabled/agedwallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/agedwallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/agentabrams.com b/sites-enabled/agentabrams.com
new file mode 120000
index 0000000..307a604
--- /dev/null
+++ b/sites-enabled/agentabrams.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/agentabrams.com
\ No newline at end of file
diff --git a/sites-enabled/animals.agentabrams.com b/sites-enabled/animals.agentabrams.com
new file mode 120000
index 0000000..cc96e9d
--- /dev/null
+++ b/sites-enabled/animals.agentabrams.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/animals.agentabrams.com
\ No newline at end of file
diff --git a/sites-enabled/apartmentwallpaper.com b/sites-enabled/apartmentwallpaper.com
new file mode 120000
index 0000000..9e8bb49
--- /dev/null
+++ b/sites-enabled/apartmentwallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/apartmentwallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/app.venturaclaw.com b/sites-enabled/app.venturaclaw.com
new file mode 120000
index 0000000..6d45947
--- /dev/null
+++ b/sites-enabled/app.venturaclaw.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/app.venturaclaw.com
\ No newline at end of file
diff --git a/sites-enabled/architecturalwallcoverings.com b/sites-enabled/architecturalwallcoverings.com
new file mode 120000
index 0000000..90cffb5
--- /dev/null
+++ b/sites-enabled/architecturalwallcoverings.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/architecturalwallcoverings.com
\ No newline at end of file
diff --git a/sites-enabled/asseeninhotels.com.conf b/sites-enabled/asseeninhotels.com.conf
new file mode 120000
index 0000000..417c2e2
--- /dev/null
+++ b/sites-enabled/asseeninhotels.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/asseeninhotels.com.conf
\ No newline at end of file
diff --git a/sites-enabled/asseeninla.com.conf b/sites-enabled/asseeninla.com.conf
new file mode 120000
index 0000000..b9cf1c0
--- /dev/null
+++ b/sites-enabled/asseeninla.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/asseeninla.com.conf
\ No newline at end of file
diff --git a/sites-enabled/asseeninmovies.com.conf b/sites-enabled/asseeninmovies.com.conf
new file mode 120000
index 0000000..65fe180
--- /dev/null
+++ b/sites-enabled/asseeninmovies.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/asseeninmovies.com.conf
\ No newline at end of file
diff --git a/sites-enabled/asseeninshowrooms.com.conf b/sites-enabled/asseeninshowrooms.com.conf
new file mode 120000
index 0000000..4fc447e
--- /dev/null
+++ b/sites-enabled/asseeninshowrooms.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/asseeninshowrooms.com.conf
\ No newline at end of file
diff --git a/sites-enabled/auth.agentabrams.com b/sites-enabled/auth.agentabrams.com
new file mode 120000
index 0000000..8ceade5
--- /dev/null
+++ b/sites-enabled/auth.agentabrams.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/auth.agentabrams.com
\ No newline at end of file
diff --git a/sites-enabled/auth.grassclothwallpaper.com b/sites-enabled/auth.grassclothwallpaper.com
new file mode 120000
index 0000000..61b602e
--- /dev/null
+++ b/sites-enabled/auth.grassclothwallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/auth.grassclothwallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/barwallpaper.com.conf b/sites-enabled/barwallpaper.com.conf
new file mode 120000
index 0000000..efa6065
--- /dev/null
+++ b/sites-enabled/barwallpaper.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/barwallpaper.com.conf
\ No newline at end of file
diff --git a/sites-enabled/bertha.grassclothwallpaper.com b/sites-enabled/bertha.grassclothwallpaper.com
new file mode 120000
index 0000000..d12072b
--- /dev/null
+++ b/sites-enabled/bertha.grassclothwallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/bertha.grassclothwallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/bestwallpaperplace.com b/sites-enabled/bestwallpaperplace.com
new file mode 120000
index 0000000..9ecc087
--- /dev/null
+++ b/sites-enabled/bestwallpaperplace.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/bestwallpaperplace.com
\ No newline at end of file
diff --git a/sites-enabled/blankstocklining.com.conf b/sites-enabled/blankstocklining.com.conf
new file mode 120000
index 0000000..bf652aa
--- /dev/null
+++ b/sites-enabled/blankstocklining.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/blankstocklining.com.conf
\ No newline at end of file
diff --git a/sites-enabled/bleachfriendly.com.conf b/sites-enabled/bleachfriendly.com.conf
new file mode 120000
index 0000000..9f835d3
--- /dev/null
+++ b/sites-enabled/bleachfriendly.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/bleachfriendly.com.conf
\ No newline at end of file
diff --git a/sites-enabled/bleachresistantfabrics.com b/sites-enabled/bleachresistantfabrics.com
new file mode 120000
index 0000000..6d38c7f
--- /dev/null
+++ b/sites-enabled/bleachresistantfabrics.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/bleachresistantfabrics.com
\ No newline at end of file
diff --git a/sites-enabled/blockprintedwallpaper.com b/sites-enabled/blockprintedwallpaper.com
new file mode 120000
index 0000000..7ba17cc
--- /dev/null
+++ b/sites-enabled/blockprintedwallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/blockprintedwallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/bubbe.ai b/sites-enabled/bubbe.ai
new file mode 120000
index 0000000..405f5d9
--- /dev/null
+++ b/sites-enabled/bubbe.ai
@@ -0,0 +1 @@
+/etc/nginx/sites-available/bubbe.ai
\ No newline at end of file
diff --git a/sites-enabled/bubbesblock.com.conf b/sites-enabled/bubbesblock.com.conf
new file mode 120000
index 0000000..4d4aea3
--- /dev/null
+++ b/sites-enabled/bubbesblock.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/bubbesblock.com.conf
\ No newline at end of file
diff --git a/sites-enabled/builds.agentabrams.com b/sites-enabled/builds.agentabrams.com
new file mode 120000
index 0000000..cfecdf2
--- /dev/null
+++ b/sites-enabled/builds.agentabrams.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/builds.agentabrams.com
\ No newline at end of file
diff --git a/sites-enabled/businessclaw.agentabrams.com b/sites-enabled/businessclaw.agentabrams.com
new file mode 120000
index 0000000..f95205b
--- /dev/null
+++ b/sites-enabled/businessclaw.agentabrams.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/businessclaw.agentabrams.com
\ No newline at end of file
diff --git a/sites-enabled/butlr.agentabrams.com b/sites-enabled/butlr.agentabrams.com
new file mode 120000
index 0000000..bbefc71
--- /dev/null
+++ b/sites-enabled/butlr.agentabrams.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/butlr.agentabrams.com
\ No newline at end of file
diff --git a/sites-enabled/carmelwallpaper.com.conf b/sites-enabled/carmelwallpaper.com.conf
new file mode 120000
index 0000000..f0ac810
--- /dev/null
+++ b/sites-enabled/carmelwallpaper.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/carmelwallpaper.com.conf
\ No newline at end of file
diff --git a/sites-enabled/carmelwallpapers.com b/sites-enabled/carmelwallpapers.com
new file mode 120000
index 0000000..6f47ef9
--- /dev/null
+++ b/sites-enabled/carmelwallpapers.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/carmelwallpapers.com
\ No newline at end of file
diff --git a/sites-enabled/cfafabrics.com.conf b/sites-enabled/cfafabrics.com.conf
new file mode 120000
index 0000000..ac3fa31
--- /dev/null
+++ b/sites-enabled/cfafabrics.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/cfafabrics.com.conf
\ No newline at end of file
diff --git a/sites-enabled/chat.designerwallcoverings.com b/sites-enabled/chat.designerwallcoverings.com
new file mode 120000
index 0000000..7dcd10e
--- /dev/null
+++ b/sites-enabled/chat.designerwallcoverings.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/chat.designerwallcoverings.com
\ No newline at end of file
diff --git a/sites-enabled/chinoiseriewallpaper.com b/sites-enabled/chinoiseriewallpaper.com
new file mode 120000
index 0000000..aff8e42
--- /dev/null
+++ b/sites-enabled/chinoiseriewallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/chinoiseriewallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/claimmyaddress.com.conf b/sites-enabled/claimmyaddress.com.conf
new file mode 120000
index 0000000..f898f25
--- /dev/null
+++ b/sites-enabled/claimmyaddress.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/claimmyaddress.com.conf
\ No newline at end of file
diff --git a/sites-enabled/classawallcovering.com.conf b/sites-enabled/classawallcovering.com.conf
new file mode 120000
index 0000000..b127a1c
--- /dev/null
+++ b/sites-enabled/classawallcovering.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/classawallcovering.com.conf
\ No newline at end of file
diff --git a/sites-enabled/commercialdesignreps.com b/sites-enabled/commercialdesignreps.com
new file mode 120000
index 0000000..da3cbc3
--- /dev/null
+++ b/sites-enabled/commercialdesignreps.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/commercialdesignreps.com
\ No newline at end of file
diff --git a/sites-enabled/commercialsalesreps.com.conf b/sites-enabled/commercialsalesreps.com.conf
new file mode 120000
index 0000000..e50347d
--- /dev/null
+++ b/sites-enabled/commercialsalesreps.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/commercialsalesreps.com.conf
\ No newline at end of file
diff --git a/sites-enabled/commercialwallcovering.com.conf b/sites-enabled/commercialwallcovering.com.conf
new file mode 120000
index 0000000..ac11068
--- /dev/null
+++ b/sites-enabled/commercialwallcovering.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/commercialwallcovering.com.conf
\ No newline at end of file
diff --git a/sites-enabled/contractwallpaper.com b/sites-enabled/contractwallpaper.com
new file mode 120000
index 0000000..f862f06
--- /dev/null
+++ b/sites-enabled/contractwallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/contractwallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/corkwallcovering.com b/sites-enabled/corkwallcovering.com
new file mode 120000
index 0000000..8258123
--- /dev/null
+++ b/sites-enabled/corkwallcovering.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/corkwallcovering.com
\ No newline at end of file
diff --git a/sites-enabled/costarica.agentabrams.com b/sites-enabled/costarica.agentabrams.com
new file mode 120000
index 0000000..f9ac97b
--- /dev/null
+++ b/sites-enabled/costarica.agentabrams.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/costarica.agentabrams.com
\ No newline at end of file
diff --git a/sites-enabled/customdigitalmurals.com b/sites-enabled/customdigitalmurals.com
new file mode 120000
index 0000000..aaa2b3e
--- /dev/null
+++ b/sites-enabled/customdigitalmurals.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/customdigitalmurals.com
\ No newline at end of file
diff --git a/sites-enabled/cypresawards.com b/sites-enabled/cypresawards.com
new file mode 120000
index 0000000..133b565
--- /dev/null
+++ b/sites-enabled/cypresawards.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/cypresawards.com
\ No newline at end of file
diff --git a/sites-enabled/deadradio.agentabrams.com b/sites-enabled/deadradio.agentabrams.com
new file mode 120000
index 0000000..eecc29c
--- /dev/null
+++ b/sites-enabled/deadradio.agentabrams.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/deadradio.agentabrams.com
\ No newline at end of file
diff --git a/sites-enabled/default b/sites-enabled/default
new file mode 120000
index 0000000..ad35b83
--- /dev/null
+++ b/sites-enabled/default
@@ -0,0 +1 @@
+/etc/nginx/sites-available/default
\ No newline at end of file
diff --git a/sites-enabled/designerline.agentabrams.com b/sites-enabled/designerline.agentabrams.com
new file mode 120000
index 0000000..ccaf38f
--- /dev/null
+++ b/sites-enabled/designerline.agentabrams.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/designerline.agentabrams.com
\ No newline at end of file
diff --git a/sites-enabled/designerlookbooks.com b/sites-enabled/designerlookbooks.com
new file mode 120000
index 0000000..b7ae33b
--- /dev/null
+++ b/sites-enabled/designerlookbooks.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/designerlookbooks.com
\ No newline at end of file
diff --git a/sites-enabled/designermagnetics.com.conf b/sites-enabled/designermagnetics.com.conf
new file mode 120000
index 0000000..c86a1f8
--- /dev/null
+++ b/sites-enabled/designermagnetics.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/designermagnetics.com.conf
\ No newline at end of file
diff --git a/sites-enabled/designerrepresentatives.com b/sites-enabled/designerrepresentatives.com
new file mode 120000
index 0000000..c33f08e
--- /dev/null
+++ b/sites-enabled/designerrepresentatives.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/designerrepresentatives.com
\ No newline at end of file
diff --git a/sites-enabled/designerssalesreps.com b/sites-enabled/designerssalesreps.com
new file mode 120000
index 0000000..d24601d
--- /dev/null
+++ b/sites-enabled/designerssalesreps.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/designerssalesreps.com
\ No newline at end of file
diff --git a/sites-enabled/designerwallcoverings.ai b/sites-enabled/designerwallcoverings.ai
new file mode 120000
index 0000000..a9e8f52
--- /dev/null
+++ b/sites-enabled/designerwallcoverings.ai
@@ -0,0 +1 @@
+/etc/nginx/sites-available/designerwallcoverings.ai
\ No newline at end of file
diff --git a/sites-enabled/designtradelive.com b/sites-enabled/designtradelive.com
new file mode 120000
index 0000000..2d52d44
--- /dev/null
+++ b/sites-enabled/designtradelive.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/designtradelive.com
\ No newline at end of file
diff --git a/sites-enabled/dw-admin-auth b/sites-enabled/dw-admin-auth
new file mode 120000
index 0000000..929c95f
--- /dev/null
+++ b/sites-enabled/dw-admin-auth
@@ -0,0 +1 @@
+/etc/nginx/sites-available/dw-admin-auth
\ No newline at end of file
diff --git a/sites-enabled/dw.greendomainbrokers.com b/sites-enabled/dw.greendomainbrokers.com
new file mode 120000
index 0000000..8c896bd
--- /dev/null
+++ b/sites-enabled/dw.greendomainbrokers.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/dw.greendomainbrokers.com
\ No newline at end of file
diff --git a/sites-enabled/embroideredwallpaper.com b/sites-enabled/embroideredwallpaper.com
new file mode 120000
index 0000000..c2164e4
--- /dev/null
+++ b/sites-enabled/embroideredwallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/embroideredwallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/etciemurals.com.conf b/sites-enabled/etciemurals.com.conf
new file mode 120000
index 0000000..90e0171
--- /dev/null
+++ b/sites-enabled/etciemurals.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/etciemurals.com.conf
\ No newline at end of file
diff --git a/sites-enabled/fabricfriday.com b/sites-enabled/fabricfriday.com
new file mode 120000
index 0000000..4fd44bb
--- /dev/null
+++ b/sites-enabled/fabricfriday.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/fabricfriday.com
\ No newline at end of file
diff --git a/sites-enabled/fabricfridays.com.conf b/sites-enabled/fabricfridays.com.conf
new file mode 120000
index 0000000..75eee9a
--- /dev/null
+++ b/sites-enabled/fabricfridays.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/fabricfridays.com.conf
\ No newline at end of file
diff --git a/sites-enabled/fabricwallpaper.com b/sites-enabled/fabricwallpaper.com
new file mode 120000
index 0000000..d5444b0
--- /dev/null
+++ b/sites-enabled/fabricwallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/fabricwallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/ffepurchasing.com b/sites-enabled/ffepurchasing.com
new file mode 120000
index 0000000..e900b64
--- /dev/null
+++ b/sites-enabled/ffepurchasing.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/ffepurchasing.com
\ No newline at end of file
diff --git a/sites-enabled/fireratedwallcovering.com.conf b/sites-enabled/fireratedwallcovering.com.conf
new file mode 120000
index 0000000..154957e
--- /dev/null
+++ b/sites-enabled/fireratedwallcovering.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/fireratedwallcovering.com.conf
\ No newline at end of file
diff --git a/sites-enabled/flocked.org.conf b/sites-enabled/flocked.org.conf
new file mode 120000
index 0000000..3fba224
--- /dev/null
+++ b/sites-enabled/flocked.org.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/flocked.org.conf
\ No newline at end of file
diff --git a/sites-enabled/flockedwallpaper.com b/sites-enabled/flockedwallpaper.com
new file mode 120000
index 0000000..4409b1a
--- /dev/null
+++ b/sites-enabled/flockedwallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/flockedwallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/forza.agentabrams.com b/sites-enabled/forza.agentabrams.com
new file mode 120000
index 0000000..dea310a
--- /dev/null
+++ b/sites-enabled/forza.agentabrams.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/forza.agentabrams.com
\ No newline at end of file
diff --git a/sites-enabled/glassbeadedwallpaper.com b/sites-enabled/glassbeadedwallpaper.com
new file mode 120000
index 0000000..c2a8d9a
--- /dev/null
+++ b/sites-enabled/glassbeadedwallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/glassbeadedwallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/glitterwalls.com b/sites-enabled/glitterwalls.com
new file mode 120000
index 0000000..951866b
--- /dev/null
+++ b/sites-enabled/glitterwalls.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/glitterwalls.com
\ No newline at end of file
diff --git a/sites-enabled/gmail.agentabrams.com b/sites-enabled/gmail.agentabrams.com
new file mode 120000
index 0000000..df66e15
--- /dev/null
+++ b/sites-enabled/gmail.agentabrams.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/gmail.agentabrams.com
\ No newline at end of file
diff --git a/sites-enabled/goldleafwallpaper.com b/sites-enabled/goldleafwallpaper.com
new file mode 120000
index 0000000..7726661
--- /dev/null
+++ b/sites-enabled/goldleafwallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/goldleafwallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/goodquestion.ai b/sites-enabled/goodquestion.ai
new file mode 120000
index 0000000..0b43898
--- /dev/null
+++ b/sites-enabled/goodquestion.ai
@@ -0,0 +1 @@
+/etc/nginx/sites-available/goodquestion.ai
\ No newline at end of file
diff --git a/sites-enabled/grassclothwallcovering.com.conf b/sites-enabled/grassclothwallcovering.com.conf
new file mode 120000
index 0000000..8008bb4
--- /dev/null
+++ b/sites-enabled/grassclothwallcovering.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/grassclothwallcovering.com.conf
\ No newline at end of file
diff --git a/sites-enabled/grassclothwallcoverings.com b/sites-enabled/grassclothwallcoverings.com
new file mode 120000
index 0000000..c4e6260
--- /dev/null
+++ b/sites-enabled/grassclothwallcoverings.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/grassclothwallcoverings.com
\ No newline at end of file
diff --git a/sites-enabled/grassclothwallpaper.com b/sites-enabled/grassclothwallpaper.com
new file mode 120000
index 0000000..92ea8cf
--- /dev/null
+++ b/sites-enabled/grassclothwallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/grassclothwallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/greendomainbrokers.com b/sites-enabled/greendomainbrokers.com
new file mode 120000
index 0000000..350ddb4
--- /dev/null
+++ b/sites-enabled/greendomainbrokers.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/greendomainbrokers.com.temp
\ No newline at end of file
diff --git a/sites-enabled/greenwallcoverings.com b/sites-enabled/greenwallcoverings.com
new file mode 120000
index 0000000..4db0283
--- /dev/null
+++ b/sites-enabled/greenwallcoverings.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/greenwallcoverings.com
\ No newline at end of file
diff --git a/sites-enabled/handcraftedwallpaper.com b/sites-enabled/handcraftedwallpaper.com
new file mode 120000
index 0000000..a0b6c66
--- /dev/null
+++ b/sites-enabled/handcraftedwallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/handcraftedwallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/handmadewallcovering.com.conf b/sites-enabled/handmadewallcovering.com.conf
new file mode 120000
index 0000000..f606213
--- /dev/null
+++ b/sites-enabled/handmadewallcovering.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/handmadewallcovering.com.conf
\ No newline at end of file
diff --git a/sites-enabled/healthcarewallpaper.com b/sites-enabled/healthcarewallpaper.com
new file mode 120000
index 0000000..0a03d3a
--- /dev/null
+++ b/sites-enabled/healthcarewallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/healthcarewallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/hollywoodwallcovering.com.conf b/sites-enabled/hollywoodwallcovering.com.conf
new file mode 120000
index 0000000..1626c6a
--- /dev/null
+++ b/sites-enabled/hollywoodwallcovering.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/hollywoodwallcovering.com.conf
\ No newline at end of file
diff --git a/sites-enabled/hollywoodwallcoverings.com b/sites-enabled/hollywoodwallcoverings.com
new file mode 120000
index 0000000..4292d54
--- /dev/null
+++ b/sites-enabled/hollywoodwallcoverings.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/hollywoodwallcoverings.com
\ No newline at end of file
diff --git a/sites-enabled/hormuzy.agentabrams.com b/sites-enabled/hormuzy.agentabrams.com
new file mode 120000
index 0000000..1172c99
--- /dev/null
+++ b/sites-enabled/hormuzy.agentabrams.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/hormuzy.agentabrams.com
\ No newline at end of file
diff --git a/sites-enabled/hospitalitydesignreps.com b/sites-enabled/hospitalitydesignreps.com
new file mode 120000
index 0000000..35e2b66
--- /dev/null
+++ b/sites-enabled/hospitalitydesignreps.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/hospitalitydesignreps.com
\ No newline at end of file
diff --git a/sites-enabled/hospitalitysalesagency.com.conf b/sites-enabled/hospitalitysalesagency.com.conf
new file mode 120000
index 0000000..2210d9d
--- /dev/null
+++ b/sites-enabled/hospitalitysalesagency.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/hospitalitysalesagency.com.conf
\ No newline at end of file
diff --git a/sites-enabled/hospitalitysalesrepresentatives.com b/sites-enabled/hospitalitysalesrepresentatives.com
new file mode 120000
index 0000000..d4ef221
--- /dev/null
+++ b/sites-enabled/hospitalitysalesrepresentatives.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/hospitalitysalesrepresentatives.com
\ No newline at end of file
diff --git a/sites-enabled/hospitalitywallcoverings.com b/sites-enabled/hospitalitywallcoverings.com
new file mode 120000
index 0000000..d03f0cd
--- /dev/null
+++ b/sites-enabled/hospitalitywallcoverings.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/hospitalitywallcoverings.com
\ No newline at end of file
diff --git a/sites-enabled/hospitalitywallpaper.com b/sites-enabled/hospitalitywallpaper.com
new file mode 120000
index 0000000..75141c5
--- /dev/null
+++ b/sites-enabled/hospitalitywallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/hospitalitywallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/hotelwallcoverings.com b/sites-enabled/hotelwallcoverings.com
new file mode 120000
index 0000000..86e4537
--- /dev/null
+++ b/sites-enabled/hotelwallcoverings.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/hotelwallcoverings.com
\ No newline at end of file
diff --git a/sites-enabled/ideas.agentabrams.com b/sites-enabled/ideas.agentabrams.com
new file mode 120000
index 0000000..80a5ce9
--- /dev/null
+++ b/sites-enabled/ideas.agentabrams.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/ideas.agentabrams.com
\ No newline at end of file
diff --git a/sites-enabled/jutewallpaper.com b/sites-enabled/jutewallpaper.com
new file mode 120000
index 0000000..0e1f3f5
--- /dev/null
+++ b/sites-enabled/jutewallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/jutewallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/lacountyeats.com.conf b/sites-enabled/lacountyeats.com.conf
new file mode 120000
index 0000000..c89f06c
--- /dev/null
+++ b/sites-enabled/lacountyeats.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/lacountyeats.com.conf
\ No newline at end of file
diff --git a/sites-enabled/lang.bubbe.ai b/sites-enabled/lang.bubbe.ai
new file mode 120000
index 0000000..b854463
--- /dev/null
+++ b/sites-enabled/lang.bubbe.ai
@@ -0,0 +1 @@
+/etc/nginx/sites-available/lang.bubbe.ai
\ No newline at end of file
diff --git a/sites-enabled/latinogardens b/sites-enabled/latinogardens
new file mode 120000
index 0000000..799ea0f
--- /dev/null
+++ b/sites-enabled/latinogardens
@@ -0,0 +1 @@
+/etc/nginx/sites-available/latinogardens
\ No newline at end of file
diff --git a/sites-enabled/lawyers.agentabrams.com b/sites-enabled/lawyers.agentabrams.com
new file mode 120000
index 0000000..1adec85
--- /dev/null
+++ b/sites-enabled/lawyers.agentabrams.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/lawyers.agentabrams.com
\ No newline at end of file
diff --git a/sites-enabled/leads.venturaclaw.com b/sites-enabled/leads.venturaclaw.com
new file mode 120000
index 0000000..f75a50b
--- /dev/null
+++ b/sites-enabled/leads.venturaclaw.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/leads.venturaclaw.com
\ No newline at end of file
diff --git a/sites-enabled/letsbegin.greendomainbrokers.com b/sites-enabled/letsbegin.greendomainbrokers.com
new file mode 120000
index 0000000..9b21348
--- /dev/null
+++ b/sites-enabled/letsbegin.greendomainbrokers.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/letsbegin.greendomainbrokers.com
\ No newline at end of file
diff --git a/sites-enabled/linenwallpaper.com b/sites-enabled/linenwallpaper.com
new file mode 120000
index 0000000..987d2a3
--- /dev/null
+++ b/sites-enabled/linenwallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/linenwallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/losangelesfabrics.com b/sites-enabled/losangelesfabrics.com
new file mode 120000
index 0000000..860b089
--- /dev/null
+++ b/sites-enabled/losangelesfabrics.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/losangelesfabrics.com
\ No newline at end of file
diff --git a/sites-enabled/losgardeners.conf b/sites-enabled/losgardeners.conf
new file mode 120000
index 0000000..19eeee0
--- /dev/null
+++ b/sites-enabled/losgardeners.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/losgardeners.conf
\ No newline at end of file
diff --git a/sites-enabled/madagascarwallpaper.com b/sites-enabled/madagascarwallpaper.com
new file mode 120000
index 0000000..ff34f76
--- /dev/null
+++ b/sites-enabled/madagascarwallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/madagascarwallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/malibuwallpaper.com.conf b/sites-enabled/malibuwallpaper.com.conf
new file mode 120000
index 0000000..31655c5
--- /dev/null
+++ b/sites-enabled/malibuwallpaper.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/malibuwallpaper.com.conf
\ No newline at end of file
diff --git a/sites-enabled/metallicwallpaper.com b/sites-enabled/metallicwallpaper.com
new file mode 120000
index 0000000..b0b4bfc
--- /dev/null
+++ b/sites-enabled/metallicwallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/metallicwallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/micawallpaper.com b/sites-enabled/micawallpaper.com
new file mode 120000
index 0000000..4d915d7
--- /dev/null
+++ b/sites-enabled/micawallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/micawallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/montereywallpaper.com.conf b/sites-enabled/montereywallpaper.com.conf
new file mode 120000
index 0000000..adee6c3
--- /dev/null
+++ b/sites-enabled/montereywallpaper.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/montereywallpaper.com.conf
\ No newline at end of file
diff --git a/sites-enabled/museumwallpaper.com b/sites-enabled/museumwallpaper.com
new file mode 120000
index 0000000..2846812
--- /dev/null
+++ b/sites-enabled/museumwallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/museumwallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/mylarwallpaper.com b/sites-enabled/mylarwallpaper.com
new file mode 120000
index 0000000..f9225b5
--- /dev/null
+++ b/sites-enabled/mylarwallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/mylarwallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/n8n.conf b/sites-enabled/n8n.conf
new file mode 120000
index 0000000..8871d1a
--- /dev/null
+++ b/sites-enabled/n8n.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/n8n.conf
\ No newline at end of file
diff --git a/sites-enabled/nationalpaperhangers.com b/sites-enabled/nationalpaperhangers.com
new file mode 120000
index 0000000..5ca0cfe
--- /dev/null
+++ b/sites-enabled/nationalpaperhangers.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/nationalpaperhangers.com
\ No newline at end of file
diff --git a/sites-enabled/naturaltextilewallpaper.com b/sites-enabled/naturaltextilewallpaper.com
new file mode 120000
index 0000000..b1e6cec
--- /dev/null
+++ b/sites-enabled/naturaltextilewallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/naturaltextilewallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/naturalwallcoverings.com b/sites-enabled/naturalwallcoverings.com
new file mode 120000
index 0000000..35954bc
--- /dev/null
+++ b/sites-enabled/naturalwallcoverings.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/naturalwallcoverings.com
\ No newline at end of file
diff --git a/sites-enabled/naturalwalltextures.com.conf b/sites-enabled/naturalwalltextures.com.conf
new file mode 120000
index 0000000..40389f2
--- /dev/null
+++ b/sites-enabled/naturalwalltextures.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/naturalwalltextures.com.conf
\ No newline at end of file
diff --git a/sites-enabled/novasuede.com b/sites-enabled/novasuede.com
new file mode 120000
index 0000000..a820c92
--- /dev/null
+++ b/sites-enabled/novasuede.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/novasuede.com
\ No newline at end of file
diff --git a/sites-enabled/pairs.designerwallcoverings.com b/sites-enabled/pairs.designerwallcoverings.com
new file mode 120000
index 0000000..2c28858
--- /dev/null
+++ b/sites-enabled/pairs.designerwallcoverings.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/pairs.designerwallcoverings.com
\ No newline at end of file
diff --git a/sites-enabled/pastelwallpaper.com b/sites-enabled/pastelwallpaper.com
new file mode 120000
index 0000000..2663822
--- /dev/null
+++ b/sites-enabled/pastelwallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/pastelwallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/patterndesignlab.com.conf b/sites-enabled/patterndesignlab.com.conf
new file mode 120000
index 0000000..bb7cfcf
--- /dev/null
+++ b/sites-enabled/patterndesignlab.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/patterndesignlab.com.conf
\ No newline at end of file
diff --git a/sites-enabled/philipperomano.com b/sites-enabled/philipperomano.com
new file mode 120000
index 0000000..6a0d1bc
--- /dev/null
+++ b/sites-enabled/philipperomano.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/philipperomano.com
\ No newline at end of file
diff --git a/sites-enabled/philliperomano.com.conf b/sites-enabled/philliperomano.com.conf
new file mode 120000
index 0000000..b983268
--- /dev/null
+++ b/sites-enabled/philliperomano.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/philliperomano.com.conf
\ No newline at end of file
diff --git a/sites-enabled/pitch.sdcc.agentabrams.com b/sites-enabled/pitch.sdcc.agentabrams.com
new file mode 120000
index 0000000..77f1037
--- /dev/null
+++ b/sites-enabled/pitch.sdcc.agentabrams.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/pitch.sdcc.agentabrams.com
\ No newline at end of file
diff --git a/sites-enabled/pm.greendomainbrokers.com b/sites-enabled/pm.greendomainbrokers.com
new file mode 120000
index 0000000..03866f3
--- /dev/null
+++ b/sites-enabled/pm.greendomainbrokers.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/pm.greendomainbrokers.com
\ No newline at end of file
diff --git a/sites-enabled/printmurals.com.conf b/sites-enabled/printmurals.com.conf
new file mode 120000
index 0000000..abad7af
--- /dev/null
+++ b/sites-enabled/printmurals.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/printmurals.com.conf
\ No newline at end of file
diff --git a/sites-enabled/raffiawallcoverings.com b/sites-enabled/raffiawallcoverings.com
new file mode 120000
index 0000000..5434807
--- /dev/null
+++ b/sites-enabled/raffiawallcoverings.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/raffiawallcoverings.com
\ No newline at end of file
diff --git a/sites-enabled/raffiawalls.com b/sites-enabled/raffiawalls.com
new file mode 120000
index 0000000..20d666c
--- /dev/null
+++ b/sites-enabled/raffiawalls.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/raffiawalls.com
\ No newline at end of file
diff --git a/sites-enabled/recycledwallpaper.com b/sites-enabled/recycledwallpaper.com
new file mode 120000
index 0000000..ad59a45
--- /dev/null
+++ b/sites-enabled/recycledwallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/recycledwallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/restaurantfabrics.com.conf b/sites-enabled/restaurantfabrics.com.conf
new file mode 120000
index 0000000..0584349
--- /dev/null
+++ b/sites-enabled/restaurantfabrics.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/restaurantfabrics.com.conf
\ No newline at end of file
diff --git a/sites-enabled/restaurantmurals.com.conf b/sites-enabled/restaurantmurals.com.conf
new file mode 120000
index 0000000..7d4e7a8
--- /dev/null
+++ b/sites-enabled/restaurantmurals.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/restaurantmurals.com.conf
\ No newline at end of file
diff --git a/sites-enabled/restaurantwallpaper.com b/sites-enabled/restaurantwallpaper.com
new file mode 120000
index 0000000..3b688fc
--- /dev/null
+++ b/sites-enabled/restaurantwallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/restaurantwallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/restorationwallpaper.com b/sites-enabled/restorationwallpaper.com
new file mode 120000
index 0000000..677c5e3
--- /dev/null
+++ b/sites-enabled/restorationwallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/restorationwallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/retrowalls.com b/sites-enabled/retrowalls.com
new file mode 120000
index 0000000..d1d043f
--- /dev/null
+++ b/sites-enabled/retrowalls.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/retrowalls.com
\ No newline at end of file
diff --git a/sites-enabled/roomsettings.com.conf b/sites-enabled/roomsettings.com.conf
new file mode 120000
index 0000000..5500193
--- /dev/null
+++ b/sites-enabled/roomsettings.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/roomsettings.com.conf
\ No newline at end of file
diff --git a/sites-enabled/saloonwallpaper.com b/sites-enabled/saloonwallpaper.com
new file mode 120000
index 0000000..33a6721
--- /dev/null
+++ b/sites-enabled/saloonwallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/saloonwallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/screenprintedwallpaper.com b/sites-enabled/screenprintedwallpaper.com
new file mode 120000
index 0000000..44334b9
--- /dev/null
+++ b/sites-enabled/screenprintedwallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/screenprintedwallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/sdcc.agentabrams.com b/sites-enabled/sdcc.agentabrams.com
new file mode 120000
index 0000000..443cf4d
--- /dev/null
+++ b/sites-enabled/sdcc.agentabrams.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/sdcc.agentabrams.com
\ No newline at end of file
diff --git a/sites-enabled/sdccanalysis.agentabrams.com b/sites-enabled/sdccanalysis.agentabrams.com
new file mode 120000
index 0000000..c116eb4
--- /dev/null
+++ b/sites-enabled/sdccanalysis.agentabrams.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/sdccanalysis.agentabrams.com
\ No newline at end of file
diff --git a/sites-enabled/selfadhesivewallpaper.com b/sites-enabled/selfadhesivewallpaper.com
new file mode 120000
index 0000000..63fc41e
--- /dev/null
+++ b/sites-enabled/selfadhesivewallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/selfadhesivewallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/sheltermagazines.com.conf b/sites-enabled/sheltermagazines.com.conf
new file mode 120000
index 0000000..1c3e50c
--- /dev/null
+++ b/sites-enabled/sheltermagazines.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/sheltermagazines.com.conf
\ No newline at end of file
diff --git a/sites-enabled/silkwallcoverings.com b/sites-enabled/silkwallcoverings.com
new file mode 120000
index 0000000..b1af613
--- /dev/null
+++ b/sites-enabled/silkwallcoverings.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/silkwallcoverings.com
\ No newline at end of file
diff --git a/sites-enabled/silkwallpaper.com b/sites-enabled/silkwallpaper.com
new file mode 120000
index 0000000..b2ee900
--- /dev/null
+++ b/sites-enabled/silkwallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/silkwallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/silverleafwallpaper.com b/sites-enabled/silverleafwallpaper.com
new file mode 120000
index 0000000..1838df8
--- /dev/null
+++ b/sites-enabled/silverleafwallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/silverleafwallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/specifywallpaper.com.conf b/sites-enabled/specifywallpaper.com.conf
new file mode 120000
index 0000000..f4075e6
--- /dev/null
+++ b/sites-enabled/specifywallpaper.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/specifywallpaper.com.conf
\ No newline at end of file
diff --git a/sites-enabled/starsofdesign.com b/sites-enabled/starsofdesign.com
new file mode 120000
index 0000000..22c8286
--- /dev/null
+++ b/sites-enabled/starsofdesign.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/starsofdesign.com
\ No newline at end of file
diff --git a/sites-enabled/stevenabramsphotography.com.conf b/sites-enabled/stevenabramsphotography.com.conf
new file mode 120000
index 0000000..a762276
--- /dev/null
+++ b/sites-enabled/stevenabramsphotography.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/stevenabramsphotography.com.conf
\ No newline at end of file
diff --git a/sites-enabled/stringwallpaper.com b/sites-enabled/stringwallpaper.com
new file mode 120000
index 0000000..027b15c
--- /dev/null
+++ b/sites-enabled/stringwallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/stringwallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/suedewallpaper.com b/sites-enabled/suedewallpaper.com
new file mode 120000
index 0000000..a725c0c
--- /dev/null
+++ b/sites-enabled/suedewallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/suedewallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/textiletuesday.com b/sites-enabled/textiletuesday.com
new file mode 120000
index 0000000..95fc7f2
--- /dev/null
+++ b/sites-enabled/textiletuesday.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/textiletuesday.com
\ No newline at end of file
diff --git a/sites-enabled/textilewallpaper.com b/sites-enabled/textilewallpaper.com
new file mode 120000
index 0000000..b68455a
--- /dev/null
+++ b/sites-enabled/textilewallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/textilewallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/thehotelwallpaper.com.conf b/sites-enabled/thehotelwallpaper.com.conf
new file mode 120000
index 0000000..e3519e6
--- /dev/null
+++ b/sites-enabled/thehotelwallpaper.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/thehotelwallpaper.com.conf
\ No newline at end of file
diff --git a/sites-enabled/thesetdecorator.com b/sites-enabled/thesetdecorator.com
new file mode 120000
index 0000000..f8307b6
--- /dev/null
+++ b/sites-enabled/thesetdecorator.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/thesetdecorator.com
\ No newline at end of file
diff --git a/sites-enabled/traditionalwhimsy.com.conf b/sites-enabled/traditionalwhimsy.com.conf
new file mode 120000
index 0000000..8f71731
--- /dev/null
+++ b/sites-enabled/traditionalwhimsy.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/traditionalwhimsy.com.conf
\ No newline at end of file
diff --git a/sites-enabled/typo-redirect-1800wallpapers.com b/sites-enabled/typo-redirect-1800wallpapers.com
new file mode 120000
index 0000000..fc56357
--- /dev/null
+++ b/sites-enabled/typo-redirect-1800wallpapers.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/typo-redirect-1800wallpapers.com
\ No newline at end of file
diff --git a/sites-enabled/typo-redirect-800wallpaper.com b/sites-enabled/typo-redirect-800wallpaper.com
new file mode 120000
index 0000000..4b7cef4
--- /dev/null
+++ b/sites-enabled/typo-redirect-800wallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/typo-redirect-800wallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/typo-redirect-designerwallcover.com b/sites-enabled/typo-redirect-designerwallcover.com
new file mode 120000
index 0000000..65a4048
--- /dev/null
+++ b/sites-enabled/typo-redirect-designerwallcover.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/typo-redirect-designerwallcover.com
\ No newline at end of file
diff --git a/sites-enabled/typo-redirect-designerwallcovering.com b/sites-enabled/typo-redirect-designerwallcovering.com
new file mode 120000
index 0000000..86030d7
--- /dev/null
+++ b/sites-enabled/typo-redirect-designerwallcovering.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/typo-redirect-designerwallcovering.com
\ No newline at end of file
diff --git a/sites-enabled/unitedstateswallpaper.com.conf b/sites-enabled/unitedstateswallpaper.com.conf
new file mode 120000
index 0000000..ffda021
--- /dev/null
+++ b/sites-enabled/unitedstateswallpaper.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/unitedstateswallpaper.com.conf
\ No newline at end of file
diff --git a/sites-enabled/venturablvd.agentabrams.com b/sites-enabled/venturablvd.agentabrams.com
new file mode 120000
index 0000000..f02a88a
--- /dev/null
+++ b/sites-enabled/venturablvd.agentabrams.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/venturablvd.agentabrams.com
\ No newline at end of file
diff --git a/sites-enabled/venturaclaw.com b/sites-enabled/venturaclaw.com
new file mode 120000
index 0000000..272d658
--- /dev/null
+++ b/sites-enabled/venturaclaw.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/venturaclaw.com
\ No newline at end of file
diff --git a/sites-enabled/videos.agentabrams.com b/sites-enabled/videos.agentabrams.com
new file mode 120000
index 0000000..419e560
--- /dev/null
+++ b/sites-enabled/videos.agentabrams.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/videos.agentabrams.com
\ No newline at end of file
diff --git a/sites-enabled/vinylwallpaper.com b/sites-enabled/vinylwallpaper.com
new file mode 120000
index 0000000..bca9624
--- /dev/null
+++ b/sites-enabled/vinylwallpaper.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/vinylwallpaper.com
\ No newline at end of file
diff --git a/sites-enabled/wallco.ai b/sites-enabled/wallco.ai
new file mode 120000
index 0000000..1c228c8
--- /dev/null
+++ b/sites-enabled/wallco.ai
@@ -0,0 +1 @@
+/etc/nginx/sites-available/wallco.ai
\ No newline at end of file
diff --git a/sites-enabled/wallcovering.net.conf b/sites-enabled/wallcovering.net.conf
new file mode 120000
index 0000000..dbf8006
--- /dev/null
+++ b/sites-enabled/wallcovering.net.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/wallcovering.net.conf
\ No newline at end of file
diff --git a/sites-enabled/wallpapercanada.com b/sites-enabled/wallpapercanada.com
new file mode 120000
index 0000000..b8ba52d
--- /dev/null
+++ b/sites-enabled/wallpapercanada.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/wallpapercanada.com
\ No newline at end of file
diff --git a/sites-enabled/wallpapercontractor.com b/sites-enabled/wallpapercontractor.com
new file mode 120000
index 0000000..f758afd
--- /dev/null
+++ b/sites-enabled/wallpapercontractor.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/wallpapercontractor.com
\ No newline at end of file
diff --git a/sites-enabled/wallpaperdefinitions.com b/sites-enabled/wallpaperdefinitions.com
new file mode 120000
index 0000000..99f3ee9
--- /dev/null
+++ b/sites-enabled/wallpaperdefinitions.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/wallpaperdefinitions.com
\ No newline at end of file
diff --git a/sites-enabled/wallpaperdictionary.com b/sites-enabled/wallpaperdictionary.com
new file mode 120000
index 0000000..ccb0006
--- /dev/null
+++ b/sites-enabled/wallpaperdictionary.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/wallpaperdictionary.com
\ No newline at end of file
diff --git a/sites-enabled/wallpaperdistributors.com b/sites-enabled/wallpaperdistributors.com
new file mode 120000
index 0000000..912e385
--- /dev/null
+++ b/sites-enabled/wallpaperdistributors.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/wallpaperdistributors.com
\ No newline at end of file
diff --git a/sites-enabled/wallpaperestimator.com b/sites-enabled/wallpaperestimator.com
new file mode 120000
index 0000000..b1fe60c
--- /dev/null
+++ b/sites-enabled/wallpaperestimator.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/wallpaperestimator.com
\ No newline at end of file
diff --git a/sites-enabled/wallpaperexports.com.conf b/sites-enabled/wallpaperexports.com.conf
new file mode 120000
index 0000000..8fdacd1
--- /dev/null
+++ b/sites-enabled/wallpaperexports.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/wallpaperexports.com.conf
\ No newline at end of file
diff --git a/sites-enabled/wallpaperfromthe80s.com.conf b/sites-enabled/wallpaperfromthe80s.com.conf
new file mode 120000
index 0000000..f15f86f
--- /dev/null
+++ b/sites-enabled/wallpaperfromthe80s.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/wallpaperfromthe80s.com.conf
\ No newline at end of file
diff --git a/sites-enabled/wallpaperglossary.com b/sites-enabled/wallpaperglossary.com
new file mode 120000
index 0000000..cee0f54
--- /dev/null
+++ b/sites-enabled/wallpaperglossary.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/wallpaperglossary.com
\ No newline at end of file
diff --git a/sites-enabled/wallpaperhistory.com b/sites-enabled/wallpaperhistory.com
new file mode 120000
index 0000000..72c1272
--- /dev/null
+++ b/sites-enabled/wallpaperhistory.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/wallpaperhistory.com
\ No newline at end of file
diff --git a/sites-enabled/wallpaperny.com.conf b/sites-enabled/wallpaperny.com.conf
new file mode 120000
index 0000000..9a1beae
--- /dev/null
+++ b/sites-enabled/wallpaperny.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/wallpaperny.com.conf
\ No newline at end of file
diff --git a/sites-enabled/wallpaperpurchasing.com.conf b/sites-enabled/wallpaperpurchasing.com.conf
new file mode 120000
index 0000000..eeb1846
--- /dev/null
+++ b/sites-enabled/wallpaperpurchasing.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/wallpaperpurchasing.com.conf
\ No newline at end of file
diff --git a/sites-enabled/wallpapersback.com b/sites-enabled/wallpapersback.com
new file mode 120000
index 0000000..4cfc335
--- /dev/null
+++ b/sites-enabled/wallpapersback.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/wallpapersback.com
\ No newline at end of file
diff --git a/sites-enabled/wallpaperwednesday.com b/sites-enabled/wallpaperwednesday.com
new file mode 120000
index 0000000..44a9d2a
--- /dev/null
+++ b/sites-enabled/wallpaperwednesday.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/wallpaperwednesday.com
\ No newline at end of file
diff --git a/sites-enabled/wallpaperweekly.com.conf b/sites-enabled/wallpaperweekly.com.conf
new file mode 120000
index 0000000..2312216
--- /dev/null
+++ b/sites-enabled/wallpaperweekly.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/wallpaperweekly.com.conf
\ No newline at end of file
diff --git a/sites-enabled/wallsandfabrics.com b/sites-enabled/wallsandfabrics.com
new file mode 120000
index 0000000..ec0593f
--- /dev/null
+++ b/sites-enabled/wallsandfabrics.com
@@ -0,0 +1 @@
+/etc/nginx/sites-available/wallsandfabrics.com
\ No newline at end of file
diff --git a/sites-enabled/wc01wallcoverings.com.conf b/sites-enabled/wc01wallcoverings.com.conf
new file mode 120000
index 0000000..2aae67a
--- /dev/null
+++ b/sites-enabled/wc01wallcoverings.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/wc01wallcoverings.com.conf
\ No newline at end of file
diff --git a/sites-enabled/wholivedthere.com.conf b/sites-enabled/wholivedthere.com.conf
new file mode 120000
index 0000000..60ac5f5
--- /dev/null
+++ b/sites-enabled/wholivedthere.com.conf
@@ -0,0 +1 @@
+/etc/nginx/sites-available/wholivedthere.com.conf
\ No newline at end of file

(oldest)  ·  back to Kamatera Nginx  ·  remove backup nginx config files and tighten .gitignore 6fbe74f →