Skip to main content

Local Emulator Application Catalog

Which CloudForge applications can deploy to MiniStack (option 6) and LocalStack (option 8), and why others are blocked.

Discovery: Interactive Deployer loads plugins via ServiceLoader (META-INF/services/com.cloudforge.core.interfaces.ApplicationSpec). Built-in apps live in cloudforge-api; sample plugins in cfc-testing (SonarQube, Craft CMS).

Example contexts: cfc-testing/deployment-contexts/*.json


Quick reference

TargetDeploy optionPreflightRDS-backed apps
MiniStack6Strict (MINISTACK_PREFLIGHT=enforce)Blocked — no AWS::RDS::*
LocalStack8Tier/capability probe (LOCALSTACK_PREFLIGHT=enforce)Supported on Base tier when RDS capability is probed

Use authMode: none in deployment context for simplest local smoke tests unless you are explicitly testing Cognito/ALB auth on LocalStack.


MiniStack — deployable applications

Preflight blocks deploys when:

  • provisionDatabase: true, or the app requiresDatabase() (from @ApplicationPlugin / @CmsPlugin)
  • The canonical template contains unsupported CFN types (AWS::RDS::*, AWS::WAF*, AWS::Config::*, AWS::CloudTrail::*, AWS::Backup::*, AWS::GuardDuty::*)

Override: MINISTACK_PREFLIGHT=warn|off (not recommended for CI).

Supported (13 apps)

These deploy with provisionDatabase: false and pass preflight. Set authMode: none for local smoke.

Application IDDisplay nameDefault portCategoryNotes
cloudforge-managerCloudForge Manager1958operationsOperations panel; first-run setup wizard for login
jenkinsJenkins8080cicdUnlock via initialAdminPassword in container
grafanaGrafana3000monitoringDefault login admin / admin (image default)
prometheusPrometheus9090monitoring
metabaseMetabase3000analyticsEmbedded H2 when RDS not provisioned
droneDrone80cicdHost port 80 may need elevated bind on some macOS setups
giteaGitea3000vcs
vaultHashiCorp Vault8200secretsRequires init/unseal after deploy
redisRedis6379databaseTCP cache, not HTTP
nexusNexus Repository8081artifactregistryDefault 4 GiB Fargate memory in plugin metadata
postgresqlPostgreSQL5432databaseContainer Postgres (not RDS); not the same as provisionDatabase
sonarqubeSonarQube9000code-qualitycfc-testing sample plugin; 4 GiB memory recommended

Sample context files (repo): CloudForgeManager-Dev.json, Jenkins-Stack.json, Grafana-Stack.json, Prometheus-Stack.json, Metabase-Stack.json, Drone-Stack.json, Gitea-Stack.json, Vault-Stack.json, Redis-Stack.json, Nexus-Stack.json, PostgreSQL-Stack.json, SonarQube-Stack.json.

MiniStack host-port constraint

The adapter maps localhost:<containerPort> to the ECS task (MiniStackApplicationUrl). Only one stack per host port at a time.

PortApps (pick one at a time)
3000Grafana, Gitea, Metabase
80Drone (GitLab/Harbor/CMS use 80 on AWS but are RDS-blocked on MiniStack)
8080Jenkins

Other ports are unique in the supported set (1958, 6379, 8081, 8200, 9090, 9000, 5432).

Blocked on MiniStack (24+ apps) — use LocalStack or AWS

ReasonApplication IDs
Requires RDS (requiresDatabase: true)gitlab, harbor, superset, mattermost-enterprise, mattermost-team, all CMS/e-commerce/forum/CRM/LMS (see below)
CMS / @CmsPlugin (MySQL/MariaDB RDS in template)wordpress, woocommerce, drupal, joomla, typo3, concrete-cms, october-cms, magento, prestashop, opencart, sylius, bagisto, phpbb, flarum, mybb, suitecrm, mediawiki, moodle, dolphin-una, craft-cms (sample plugin)

Preflight message points to Interactive Deployer option 8 (LocalStack) or AWS option 2.


LocalStack — deployable applications

Preflight probes /_localstack/health, edition/tier, and required capabilities:

RequirementWhen
ECS + ELBV2All Fargate stacks (default)
RDSprovisionDatabase: true, requiresDatabase(), or AWS::RDS::* in template
EC2 + Auto Scalingruntime: ec2 in deployment context
Warnings (non-blocking on Base)AWS::EFS::* → bind mounts; AWS::Backup::* → stripped unless Ultimate

Override: LOCALSTACK_PREFLIGHT=warn|off or CFC_LOCALSTACK_SKIP_PREFLIGHT=true.

Requires LOCALSTACK_AUTH_TOKEN and a running LocalStack selected from InteractiveDeployer --platform. MiniStack and LocalStack share port 4566 — only one emulator at a time.

Supported — all discovered applications (37+)

Every application the Interactive Deployer lists can deploy to LocalStack when:

  1. Base (trial) tier exposes ECS, ELBV2, and (for RDS apps) RDS.
  2. Deployment context matches the app (e.g. provisionDatabase: true for GitLab/Mattermost/CMS).
  3. Container images are pullable on the host (some enterprise images may 404 locally).
  4. Fargate CPU/memory meet plugin defaults (Nexus, SonarQube, GitLab need larger tasks).

Fargate without RDS (same 13 as MiniStack, plus auth/domain variants)

Application IDPortLocalStack notes
cloudforge-manager1958CFC_MANAGER_TARGET=localstack
jenkins8080ALB forward kept (unlike MiniStack redirect)
grafana3000
prometheus9090
metabase3000Embedded H2 when provisionDatabase: false
drone80
gitea3000
vault8200
redis6379
nexus8081
postgresql5432Container Postgres spec
sonarqube9000Sample plugin

Fargate with RDS (LocalStack only among local emulators)

Application IDPortNotes
gitlab80Long startup; RDS Postgres
harbor80RDS + heavy stack
superset8088RDS
mattermost-enterprise8065RDS; verify image tag and EFS tier behavior
mattermost-team8065RDS
CMS / e-commerce / forumsmostly 80All @CmsPlugin apps: WordPress, WooCommerce, Drupal, Joomla, Typo3, Concrete, October, Magento, PrestaShop, OpenCart, Sylius, Bagisto, phpBB, Flarum, MyBB, SuiteCRM, MediaWiki, Moodle, Dolphin UNA, Craft CMS (sample)

Set provisionDatabase: true (or rely on requiresDatabase: true) and use a context with full boolean fields (wafEnabled, enableMonitoring, etc.).

Sample context: Mattermost-Stack-LocalStack.json, Jenkins-Stack-LocalStack.json (domain + Cognito example).

EC2 runtime

Any app with supportsEc2: true can use runtime: ec2 when LocalStack probes EC2 + Auto Scaling. Smoke fidelity only — UserData/AMI behavior differs from AWS.

Compliance-heavy AWS templates

WAF, AWS Config, CloudTrail, GuardDuty, and AWS Backup resources appear in STAGING/PRODUCTION profiles on real AWS. On LocalStack Base tier, Backup is stripped and EFS is adapted; Ultimate tier may retain native EFS/Backup when probed. MiniStack strips or blocks these types entirely.


Deploy commands

cd cfc-testing
export AWS_ENDPOINT_URL=http://localhost:4566
export AWS_DEFAULT_REGION=us-east-1
unset CFC_DEPLOYING # required for option 6/8 (not synth-only)

# MiniStack
java -cp "target/classes:target/dependency/*" \
com.cloudforgeci.samples.app.InteractiveDeployer \
--context deployment-contexts/Jenkins-Stack.json 8

# LocalStack (token + localstack-start first)
java -cp "target/classes:target/dependency/*" \
com.cloudforgeci.samples.app.InteractiveDeployer \
--context deployment-contexts/Mattermost-Stack-LocalStack.json 10

Batch MiniStack deploy (supported apps only): cfc-testing/scripts/deploy-ministack-apps.sh