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 sets GRAV_ENVIRONMENT constant
  • user/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:

  1. Deploy Grav app from Cloudron app store to staticsites.turnsys.com
  2. Copy setup.php to the Grav root
  3. Copy user/env/ directory structure
  4. 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
No description provided
Readme 100 MiB
Languages
Shell 36.6%
HTML 33.5%
MDX 25%
PHP 4.9%