2.7 KiB
2.7 KiB
Production Todo
Checklist of things to do before going live. Items are roughly in dependency order.
Grav 2.0 upgrade on production
- Update
make remote-upgrade-gravto use the direct download method (GPM still reports 1.7.x as latest — see CLAUDE.md §2 for the correct curl + copy steps) - Install Admin2 (
admin2plugin) on production from the grav-admin bundle - Disable old
adminplugin on production (enabled: falseinuser/plugins/admin/admin.yaml)
Infrastructure
- Set
accounts.type: flexandpages.type: flexin productionsystem.yaml(required for Admin2) - Ensure production user account has
api.super: trueandapi.access: true - Verify
session.save_pathis set to a writable path in production PHP config - Confirm JWT secret auto-generates on production (
jwt_secret: ''in api.yaml is correct — Grav generates one on first run)
Config
- Set
twig.cache: trueinuser/config/system.yaml - Run pre-launch smoke test: submit one post via
/post, confirm entry appears in/trips/japan-korea-2026/dailiesimmediately (verifies cache-on-save plugin works with Twig cache enabled) - Set
custom_base_urlinsystem.yamlto the production domain (currently set tohttp://100.96.115.96:8081) - Confirm
post-form.mdpageconfig.parentmatchesactive_tripinsite.yaml
Plugins
- Audit
plugins.txt— it is manually maintained; verify it includes all plugins currently installed (admin2, api, flex-objects, form, add-page-by-form, cache-on-save, etc.) - Run
make remote-install-pluginsafter Grav 2.0 upgrade
Map tiles
- Register a Carto account and review terms for production traffic — free tier requires registration for higher-volume usage
- Decide whether to stay on CartoDB or switch to a paid provider (Stadia, Mapbox) with an API key
Content
- Upload actual GPX route file(s) to the Japan & Korea 2026 trip page media (currently no GPX files — map renders no route)
- Set
date_starton the trip page (user/pages/01.trips/japan-korea-2026/trip.md) - Add
cover_imageto the trip page
Security
- Change admin password from the dev password to a strong production password
- Confirm
/postform requires login (access: site.login: trueenforced — unauthenticated users cannot post) - Review
custom_base_url— ensure it uses HTTPS on production
Testing
- Run full test suite (
make test-config && make test-post && make test-ui) after Grav 2.0 production upgrade - Manual smoke test all pages:
/trips/japan-korea-2026/dailies,/trips/japan-korea-2026/map,/trips/japan-korea-2026/stats,/post,/admin