Skip to main content

Application Catalog

Each deployable application is an ApplicationSpec implementation discovered through Java ServiceLoader. Set applicationId in the deployment context to one of the IDs below.

  • General applications use @ApplicationPlugin and live in cloudforge-api/src/main/java/com/cloudforgeci/api/application/.
  • PHP content platforms use @CmsPlugin and implement CmsSpec; they are listed here and described in the CMS guide.
  • cloudforge-manager is provided by the separate cloudforge-manager-deployment artifact.

An ApplicationSpec declares the container image, port, data paths, user and permissions, EC2 user data, optional ports, database requirements, and OIDC integration. The framework chooses EFS or EBS storage and wires networking, load balancing, and security from the deployment context.

General applications​

IDNameCategoryPortDefault imageDefault Fargate sizeDatabase
jenkinsJenkinscicd8080jenkins/jenkins:lts1024 / 2048—
gitlabGitLabcicd80gitlab/gitlab-ce:19.4.2-ce.02048 / 4096PostgreSQL 17+ (required)
droneDronecicd80drone/drone:21024 / 2048—
sonarqubeSonarQubecode-quality9000sonarqube:lts-community2048 / 4096—
giteaGiteavcs3000gitea/gitea:latest512 / 1024—
grafanaGrafanamonitoring3000grafana/grafana:latest512 / 1024PostgreSQL 14 (optional)
prometheusPrometheusmonitoring9090prom/prometheus:latest1024 / 2048—
postgresqlPostgreSQLdatabase5432postgres:151024 / 2048—
redisRedisdatabase6379redis:7-alpine512 / 1024—
vaultVaultsecrets8200hashicorp/vault:latest1024 / 2048—
nexusNexusartifactregistry8081sonatype/nexus3:latest2048 / 4096—
harborHarborartifactregistry80goharbor/harbor-core:v2.9.02048 / 4096PostgreSQL 13 (required)
mattermost-teamMattermost Team (Free)collaboration8065mattermost/mattermost-enterprise-edition:latest1024 / 2048PostgreSQL 14 (required)
mattermost-enterpriseMattermost Enterprisecollaboration8065mattermost/mattermost-enterprise-edition:latest1024 / 2048PostgreSQL 14 (required)
metabaseMetabaseanalytics3000metabase/metabase-enterprise:latest1024 / 2048PostgreSQL 15 (optional)
supersetSupersetanalytics8088apache/superset:latest1024 / 2048PostgreSQL 13 (required)
cloudforge-managerCloudForge Manageroperations1958cloudforgeci/cloudforge-manager:native-latest512 / 1024MySQL 8.0 (optional)

Fargate size is CPU units / memory MiB; override with cpu and memory. Every application above supports both Fargate and EC2. Override the image with containerImage. Required databases are provisioned on RDS; optional ones only when provisionDatabase is true. databaseEngine, databaseVersion, databaseInstanceClass, and databaseAllocatedStorageGB override the application defaults.

Authentication support​

IDSupported authMode valuesIntegration
jenkinsapplication-oidc, alb-oidc, noneoic-auth plugin configured through JCasC
gitlabapplication-oidc, alb-oidc, noneOmniAuth OpenID Connect
grafanaapplication-oidc, alb-oidc, nonegeneric_oauth
mattermost-teamapplication-oidc, alb-oidc, noneGitLab OAuth provider settings (MM_GITLABSETTINGS_*); no single logout
mattermost-enterpriseapplication-oidc, alb-oidc, noneNative OpenID Connect (MM_OPENIDSETTINGS_*)
metabaseapplication-oidc, alb-oidc, noneSAML (MetabaseSamlIntegration)
cloudforge-managerapplication-oidc, alb-oidc, noneBuilt-in OIDC client; none or application-oidc on LocalStack and MiniStack
all othersnone—

See the OIDC guide for provider configuration.

Optional ports​

Optional ports stay closed unless the matching flag is true in the deployment context.

IDFlagPortPurpose
jenkinsenableAgents50000/tcp inboundJNLP build agents
gitlabenableSsh22/tcp inboundGit over SSH
gitlabenableMetrics9090/tcp inboundPrometheus metrics
giteaenableSsh2222/tcp inboundGit over SSH
nexusenableDockerRegistry5000–5002/tcp inboundDocker registry connectors
harborenableNotary4443/tcp inboundNotary content trust
harborenableTrivy8080/tcp inboundTrivy scanner
mattermost-*enableSmtp / enableSmtps587 / 465 tcp outboundEmail
mattermost-enterpriseenableClustering8074–8075/tcp inboundCluster gossip
redisenableCluster16379/tcp inboundCluster bus
redisenableSentinel26379/tcp inboundSentinel

CMS and PHP platforms​

All use the cms-service topology, listen on port 80 (phpBB: 8080), and require a MySQL-compatible database by default. See the CMS guide for images, sizing, and platform notes.

IDNameCategorySupported authMode values
wordpressWordPresscmsapplication-oidc, alb-oidc, none
drupalDrupalcmsapplication-oidc, alb-oidc, none
joomlaJoomlacmsapplication-oidc, alb-oidc, none
typo3TYPO3cmsalb-oidc, none
concrete-cmsConcrete CMScmsalb-oidc, none
october-cmsOctober CMScmsalb-oidc, none
woocommerceWooCommerceecommerceapplication-oidc, alb-oidc, none
magentoMagento 2 / Adobe Commerceecommerceapplication-oidc, alb-oidc, none
prestashopPrestaShopecommerceapplication-oidc, alb-oidc, none
opencartOpenCartecommercealb-oidc, none
syliusSyliusecommercealb-oidc, none
bagistoBagistoecommercealb-oidc, none
phpbbphpBBforumalb-oidc, none
flarumFlarumforumalb-oidc, none
mybbMyBBforumalb-oidc, none
suitecrmSuiteCRMcrmalb-oidc, none
mediawikiMediaWikiwikialb-oidc, none
moodleMoodlelmsapplication-oidc, alb-oidc, none
dolphin-unaUNA (Dolphin)socialalb-oidc, none

Discovering applications in code​

Optional<ApplicationSpec> jenkins = ApplicationLoader.findById("jenkins");
List<ApplicationSpec> cicd = ApplicationLoader.discoverByCategory("cicd");
List<ApplicationSpec> oidc = ApplicationLoader.discoverOidcEnabled();

ApplicationSpec spec = jenkins.orElseThrow();
spec.defaultContainerImage(); // "jenkins/jenkins:lts"
spec.applicationPort(); // 8080
spec.getSupportedAuthModes(); // [application-oidc, alb-oidc, none]

ApplicationLoader and CmsLoader are in cloudforge-api/src/main/java/com/cloudforgeci/api/compute/.

Adding an application​

Implement ApplicationSpec (or CmsSpec for PHP platforms), annotate it with @ApplicationPlugin or @CmsPlugin, and register the class in META-INF/services/com.cloudforge.core.interfaces.ApplicationSpec. See the plugin system and application plugin guide. cfc-testing/src/main/java/com/cloudforgeci/samples/plugins/cms/CraftCmsApplicationSpec.java is a working external plugin.