Skip to content

Infrastructure Commands

Infrastructure commands manage SSL certificates, local DNS entries, and Docker containers. These tools ensure your local development environment mirrors production as closely as possible.

SSL Commands

FORGE uses mkcert to generate locally-trusted SSL certificates, enabling HTTPS during development without browser warnings.

forge ssl:install

Install mkcert and its local certificate authority (CA).

bash
forge ssl:install

This command installs mkcert via Homebrew (macOS), Chocolatey (Windows), or your system package manager (Linux), then runs mkcert -install to register the local CA in your trust store.

TIP

You only need to run ssl:install once per machine. FORGE will remind you if mkcert is missing when you run forge new.

forge ssl:generate

Generate SSL certificates for one or more domains.

bash
forge ssl:generate [OPTIONS]
OptionTypeDefaultDescription
--domainsstringProject domainsComma-separated list of domains to include in the certificate.

Example

bash
forge ssl:generate --domains="myapp.local,api.myapp.local,admin.myapp.local"

Generated files are placed in the project's certs/ directory:

certs/
  myapp.local.pem
  myapp.local-key.pem

forge ssl:trust

Re-register the local CA in your system trust store. Useful after OS upgrades or trust store resets.

bash
forge ssl:trust

Hosts Commands

FORGE can manage /etc/hosts entries so local domains resolve to 127.0.0.1 without external DNS.

forge hosts:add

Add a domain entry to /etc/hosts.

bash
forge hosts:add [OPTIONS]
OptionTypeDefaultDescription
--domainstringDomain to add, e.g. myapp.local.

WARNING

This command requires elevated privileges. FORGE will prompt for sudo access on macOS/Linux or Administrator rights on Windows.

Example

bash
forge hosts:add --domain=myapp.local
forge hosts:add --domain=api.myapp.local
forge hosts:add --domain=admin.myapp.local

forge hosts:list

List all FORGE-managed entries currently in /etc/hosts.

bash
forge hosts:list

Example Output

FORGE hosts entries:
  127.0.0.1   myapp.local
  127.0.0.1   api.myapp.local
  127.0.0.1   admin.myapp.local

forge hosts:remove

Remove a previously added domain from /etc/hosts.

bash
forge hosts:remove --domain=myapp.local

Docker Commands

FORGE generates a Docker Compose configuration with profiles for different service combinations. Docker commands wrap docker compose with project-aware defaults.

Docker Profiles

FORGE organizes services into Docker Compose profiles:

ProfileServices Included
dbPostgreSQL, Redis
apiRust API server
webNext.js web frontend
adminNext.js admin frontend
allEvery service

Profiles allow you to start only the services you need. For example, you might run db in Docker while developing the API locally.

forge docker:up

Start Docker containers.

bash
forge docker:up [OPTIONS]
OptionTypeDefaultDescription
-dflagfalseRun containers in detached (background) mode.
--buildflagfalseRebuild images before starting.
--sslflagfalseEnable the Nginx SSL reverse proxy.
--appsstringallComma-separated profiles to start, e.g. db,api.

Examples

bash
# Start everything in the background
forge docker:up -d

# Start only the database
forge docker:up -d --apps=db

# Rebuild and start with SSL
forge docker:up -d --build --ssl

forge docker:down

Stop and remove Docker containers.

bash
forge docker:down [OPTIONS]
OptionTypeDefaultDescription
-vflagfalseAlso remove named volumes (database data, caches).

DANGER

The -v flag deletes persistent volumes including the PostgreSQL data directory. All database data will be lost.

forge docker:logs

View container logs.

bash
forge docker:logs [OPTIONS] [SERVICE]
OptionTypeDefaultDescription
-fflagfalseFollow log output in real time.
SERVICEstringOptional service name to filter logs, e.g. api, web, postgres.

Examples

bash
# Follow API logs
forge docker:logs -f api

# View all logs (last 100 lines)
forge docker:logs

forge docker:shell

Open an interactive shell inside a running container.

bash
forge docker:shell <SERVICE>

Example

bash
# Open a shell in the API container
forge docker:shell api

# Open a psql session in the database container
forge docker:shell postgres

Common Workflows

First-time local setup:

bash
forge ssl:install
forge new --name myapp
# SSL and hosts are configured automatically during project creation
forge docker:up -d

Restart with a clean database:

bash
forge docker:down -v
forge docker:up -d
forge migrate:fresh --seed

Add a new local domain:

bash
forge ssl:generate --domains="myapp.local,api.myapp.local,admin.myapp.local,docs.myapp.local"
forge hosts:add --domain=docs.myapp.local
forge docker:up -d --build --ssl

See Also

Released under the MIT License.