3491bb7a46a6f7f85b890056a2837a19bddc5839
- Use minimal setup.php that only overrides 'page' stream - Override only page stream to avoid conflicts with Grav core streams - Environment-specific pages now load correctly per hostname - Remove unused add-streams.sh script Root cause: Grav's core streams (data, config, etc.) cannot be overridden in setup.php without causing initialization errors. The solution is to only override the 'page' stream, which allows each environment to have its own pages while sharing plugins, themes, and data with the main installation. Testing confirmed: - charters.turnsys.com → "TSYS Group Charters" - plan.knownelement.com → "Known Element Business Plan" - plan.startinglineproductions.com → "Starting Line Productions Plan" 🤖 Generated with [Crush](https://crush.cbhops.com) Assisted-by: GLM-5 via Crush <crush@charm.land>
TSYS Static Sites - Grav Multi-Site Installation
This repository contains the configuration for a Grav CMS multi-site installation hosting 21 static sites, migrated from mdbook.
Quick Start
1. Add hosts entries
Add the following to /etc/hosts:
127.0.0.1 staticsites.turnsys.com
127.0.0.1 charters.turnsys.com
127.0.0.1 plan.afabn.org
127.0.0.1 plan.ap4ap.org
127.0.0.1 plan.ezeda.org
127.0.0.1 plan.ezpodstack.org
127.0.0.1 plan.hfnoc.net
127.0.0.1 plan.knownelement.com
127.0.0.1 plan.meetmorse.com
127.0.0.1 plan.merchantsofhope.org
127.0.0.1 plan.rackrental.net
127.0.0.1 plan.redwfo.com
127.0.0.1 plan.rwscp.net
127.0.0.1 plan.sidedoorgroup.org
127.0.0.1 plan.sol-calc.com
127.0.0.1 plan.suborbital-systems.com
127.0.0.1 plan.teamrental.net
127.0.0.1 plan.thecampustradingcompany.com
127.0.0.1 plan.thepeernet.com
127.0.0.1 plan.turnsys.com
127.0.0.1 plan.yourdreamnamehere.com
127.0.0.1 plan.startinglineproductions.com
See etc-hosts-entries.txt for the complete list.
2. Start the Docker container
docker run -d \
--name tsysstatic-dev-grav \
-p 12000:80 \
-v tsysstatic_grav_data:/var/www/html \
--restart unless-stopped \
getgrav/grav:latest
3. Configure multi-site
# Copy setup.php to container
docker cp setup.php tsysstatic-dev-grav:/var/www/html/setup.php
docker exec tsysstatic-dev-grav chown www-data:www-data /var/www/html/setup.php
# Run configuration script
docker cp scripts/configure-sites.sh tsysstatic-dev-grav:/tmp/
docker exec tsysstatic-dev-grav bash /tmp/configure-sites.sh
# Clear cache
docker exec tsysstatic-dev-grav rm -rf /var/www/html/cache/* /var/www/html/tmp/*
4. Access sites
Open browser to http://staticsites.turnsys.com:12000 or any other configured domain.
Architecture
Multi-Site Configuration
Grav's native environment-based multi-site is used:
setup.php- Detects hostname and setsGRAV_ENVIRONMENTconstantuser/env/{fqdn}/- Per-site configuration and content directories
Directory Structure
user/env/{fqdn}/
├── config/
│ ├── system.yaml # Grav system settings
│ └── site.yaml # Site metadata (title, author, etc.)
├── pages/ # Site content
│ └── 01.home/
│ └── default.md
├── themes/ # Site-specific themes (optional)
├── data/ # Site-specific data files
└── accounts/ # Site-specific user accounts
Shared Resources
user/plugins/- Shared plugins (all sites)user/themes/- Shared themes (fallback if site doesn't have its own)
Sites
| FQDN | Title |
|---|---|
| charters.turnsys.com | TSYS Group Charters |
| plan.afabn.org | AFABN Business Plan |
| plan.ap4ap.org | AP4AP Business Plan |
| plan.ezeda.org | EzEDA Business Plan |
| plan.ezpodstack.org | EzPodStack Business Plan |
| plan.hfnoc.net | High Flight NOC Business Plan |
| plan.knownelement.com | Known Element Business Plan |
| plan.meetmorse.com | MeetMorse Business Plan |
| plan.merchantsofhope.org | Merchants of Hope Business Plan |
| plan.rackrental.net | RackRental Business Plan |
| plan.redwfo.com | Redwood Family Office Business Plan |
| plan.rwscp.net | RWSCP Business Plan |
| plan.sidedoorgroup.org | Side Door Group Business Plan |
| plan.sol-calc.com | Sol-Calc Business Plan |
| plan.suborbital-systems.com | Suborbital Systems Business Plan |
| plan.teamrental.net | TeamRental Business Plan |
| plan.thecampustradingcompany.com | Campus Trading Company Business Plan |
| plan.thepeernet.com | The Peer Network Business Plan |
| plan.turnsys.com | TSYS Business Plan |
| plan.yourdreamnamehere.com | Your Dream Name Here Business Plan |
| plan.startinglineproductions.com | Starting Line Productions Business Plan |
| staticsites.turnsys.com | TSYS Static Sites (default) |
Production Deployment
For Cloudron deployment:
- Deploy Grav app from Cloudron app store to staticsites.turnsys.com
- Copy
setup.phpto the Grav root - Copy
user/env/directory structure - Clear cache
Source Content
Original mdbook content is in sibling directories:
../charters.turnsys.com/
../plan.afabn.org/
../plan.ap4ap.org/
... (etc)
Content migration from mdbook to Grav format is pending.
Description
Languages
Shell
36.6%
HTML
33.5%
MDX
25%
PHP
4.9%