Repository navigation
Getting started
This guide walks you through the shortest path from installation to a working local Govard project.
Navigate to your project root and run:
cd /path/to/your/project
govard initGovard inspects composer.json or package.json, detects the framework, and writes .govard.yml.
| Framework | Detection |
|---|---|
| Magento 2 |
composer.json with magento/product-community-edition, magento/product-enterprise-edition, or magento/framework
|
| Mage-OS |
composer.json with mage-os/product-community-edition or mage-os/project-community-edition
|
| Magento 1 / OpenMage |
composer.json with magento-hackathon/magento-composer-installer, openmage/magento-lts, or colinmollenhour/modman
|
| Laravel |
artisan file + composer.json with laravel/framework
|
| Next.js |
package.json with next dependency |
| Emdash | Project markers from the Emdash scaffold (src/app layout + Emdash config) |
| Drupal |
composer.json with drupal/core or drupal/core-recommended
|
| Symfony |
composer.json with symfony/framework-bundle
|
| Shopware |
composer.json with shopware/core
|
| CakePHP |
composer.json with cakephp/cakephp
|
| PrestaShop |
config/defines.inc.php or composer.json with prestashop/prestashop
|
| WordPress |
wp-config.php or wp-login.php
|
| Django |
manage.py at project root |
| Dagster |
workspace.yaml or dagster.yaml at project root |
| Custom | Interactive stack picker (govard init --framework custom) |
govard init --framework magento2
govard init --framework customIf you are transitioning from Warden or DDEV, Govard can automatically detect your setup and seamlessly copy your local database volume so you don't lose any data:
govard init --migrate-from warden
govard init --migrate-from ddevgovard env upThis renders a per-project compose file under ~/.govard/compose/ and starts your specialized stack.
govard up --quickstart # Alias: govard env up
govard env up --pull # Pull latest images first
govard env up --fallback-local-build # Build images locally if pull fails- Detect framework context
- Validate config, Docker, ports, and prerequisites
- Render compose file into
~/.govard/compose/ - Start containers in detached mode
- Verify proxy and host wiring
| Shortcut | Equivalent |
|---|---|
govard up |
govard env up |
govard down |
govard env down |
govard restart |
govard env restart |
govard ps |
govard env ps |
govard logs |
govard env logs |
Auto-inject container settings into app/etc/env.php:
govard config autogovard config get php_version
govard config get stack.services.dbgovard shell-
PHP frameworks (Magento, Laravel, etc.): opens the
phpcontainer at/var/www/html -
Node-first frameworks (Next.js, Emdash): opens the
webcontainer at/app
Govard routes project domains through the shared Caddy proxy and provides built-in services for development:
| Target | URL | Command |
|---|---|---|
| App URL | https://<project>.test |
Open in browser |
| Admin panel | https://<project>.test/admin |
govard open admin |
| Mail testing | https://mail.govard.test |
govard open mail |
| Database admin | https://pma.govard.test |
govard open db |
| Docker management | https://portainer.govard.test |
govard open portainer |
| Service | URL | Credentials |
|---|---|---|
| Portainer | https://portainer.govard.test |
admin / AdminGovard123$
|
| PHPMyAdmin | https://pma.govard.test |
Use project's DB credentials |
| Mailpit | https://mail.govard.test |
No login required |
Govard seeds the same admin account everywhere, and the Project URLs table above opens it:
| Target | Credential |
|---|---|
| Project admin panel |
admin / AdminGovard123$
|
| Portainer |
admin / AdminGovard123$
|
The account is written during govard bootstrap, both for a fresh install and
for a clone, and the completion banner prints it whenever it was actually
applied. Three situations change what you get:
- A cloned Magento 2 or Mage-OS database usually already contains a user named
admin. Govard keeps that user and its source password, the banner prints only the admin URL, and the bootstrap output names the command that resets it to the shared credential. - A project bootstrapped before this credential existed keeps the password it was created with. Nothing rewrites an existing database.
-
govard bootstrap --no-adminonly skips the user Govard creates for a Magento 2 or Mage-OS clone. A fresh install still seeds the account throughsetup:install, and Magento 1, OpenMage, WordPress and Drupal always seed it.
The banner prints the framework's default route (/admin for Magento,
/wp-admin for WordPress). Magento 2 and Mage-OS resolve a route moved in the
database when you open the panel with govard open admin; a Magento 1 or
OpenMage project that moved its admin route in app/etc/local.xml still sees
the default in the banner.
# Open services
govard open mail # Mailpit
govard open db # PHPMyAdmin
govard open admin # Project admin panel
# Manage global services
govard svc up # Start all global services
govard svc down # Stop all global services
govard svc ps # View service status# Start work
govard up
# Follow logs
govard logs php -f
# Toggle Xdebug
govard debug on
# Enter shell
govard shell
# Stop work
govard downTo clone an existing environment from a remote server:
govard bootstrap --clone -e staging --no-pii --no-noiseFor a fresh framework installation:
govard bootstrap --framework magento2 --fresh --framework-version 2.4.9
govard env up
govard open admingovard doctor
govard doctor trust # Fix browser SSL warningsIf your browser shows HTTPS trust warnings after setup, run govard doctor trust to re-import the Root CA.
| Topic | Link |
|---|---|
| All CLI commands | CLI Commands |
| Configuration options | Configuration |
| Framework-specific notes | Frameworks |
| SSL and DNS setup | SSL and Domains |
| Remote environments | Remotes and Sync |
| Desktop app | Desktop App |
Govard โ Go-based Versatile Runtime & Development GitHub ยท Releases ยท Issues ยท MIT License