Skip to content

Blueprints ​

Blueprints are pre-built application stacks that you can install with a single command. Each blueprint includes everything needed for a working deployment: the application, database, storage, and configuration.

Browsing blueprints ​

bash
kip blueprint list
  NAME                 VERSION  DESCRIPTION
  ghost                1.0      Ghost publishing platform with MySQL database
  gitea                1.0      Gitea self-hosted Git service with PostgreSQL
  plausible            1.0      Plausible Analytics, privacy-friendly web analytics with PostgreSQL
  wordpress            1.0      WordPress blog with MySQL database and persistent uploads

Blueprint details ​

View what a blueprint will create and its configurable parameters:

bash
kip blueprint info wordpress
  wordpress (v1.0)
  WordPress blog with MySQL database and persistent uploads

  Parameters:
    projectName          Project name (required)
    environment          Target environment (e.g. test, prod)
    storageSize          Storage size for uploads [default: 5Gi]
    dbStorage            Database storage size [default: 5Gi]

  Install:
    kip blueprint install wordpress --set projectName=my-project

Installing a blueprint ​

Install directly to your cluster:

bash
kip blueprint install wordpress --set projectName=my-blog
  ✔  Namespace my-blog created

  Installing wordpress into my-blog...
    ✔  App/wordpress created
    ✔  Service/db created
    ✔  Volume/uploads created

  ✔  wordpress installed (3 resources)

With custom parameters ​

Override any parameter with --set:

bash
kip blueprint install wordpress \
  --set projectName=company-blog \
  --set storageSize=20Gi \
  --set dbStorage=10Gi \
  --environment prod

Into a specific environment ​

bash
kip blueprint install ghost \
  --set projectName=my-site \
  --set domain=https://blog.example.com \
  --environment prod

domain accepts a URL (https://blog.example.com) or a hostname (blog.example.com). The route uses only the hostname. When a blueprint also uses domain for the app’s public URL, a bare hostname gets an https:// prefix.

Generating a manifest ​

Generate a kipper.yaml file that you can review and customize before applying, instead of installing directly:

bash
kip init --blueprint wordpress --set projectName=my-blog
  ✔  Generated kipper.yaml from wordpress blueprint
     Edit it, then run: kip apply -f kipper.yaml

This creates a standard kipper.yaml manifest. Edit it to add routes, environment variables, resource profiles, or any other configuration. Then apply:

bash
kip apply -f kipper.yaml

Available blueprints ​

WordPress ​

Full WordPress installation with MySQL database and persistent upload storage.

ComponentDetails
Appwordpress:6-apache on port 80
DatabaseMySQL with configurable storage
StoragePersistent volume for wp-content/uploads
Service bindingMySQL credentials injected via WORDPRESS_DB_ prefix

Ghost ​

Ghost publishing platform with MySQL backend.

ComponentDetails
Appghost:5-alpine on port 2368
DatabaseMySQL with configurable storage
Parametersdomain (required): the public URL for Ghost

Gitea ​

Self-hosted Git service with PostgreSQL and persistent repository storage.

ComponentDetails
Appgitea/gitea:1.22-rootless on port 3000
DatabasePostgreSQL with configurable storage
StoragePersistent volume for Git repositories

Plausible Analytics ​

Privacy-friendly web analytics.

ComponentDetails
Appghcr.io/plausible/community-edition:v2.1 on port 8000
DatabasePostgreSQL with configurable storage
ParametersbaseUrl (required): the public URL for analytics

Medusa ​

Open source e-commerce platform (Shopify alternative).

ComponentDetails
Appmedusajs/medusa:latest on port 9000
DatabasePostgreSQL with configurable storage
CacheRedis

n8n ​

Workflow automation platform (Zapier alternative).

ComponentDetails
Appn8nio/n8n:latest on port 5678
DatabasePostgreSQL with configurable storage

Uptime Kuma ​

Monitoring and status page with data stored on a persistent volume.

ComponentDetails
Applouislam/uptime-kuma:1 on port 3001
StoragePersistent volume for monitoring data

Outline ​

Team wiki and knowledge base.

ComponentDetails
Appoutlinewiki/outline:latest on port 3000
DatabasePostgreSQL with configurable storage
CacheRedis
StorageMinIO for file attachments
Parametersdomain (required): the public URL

Cal.com ​

Open source scheduling platform (Calendly alternative).

ComponentDetails
Appcalcom/cal.com:latest on port 3000
DatabasePostgreSQL with configurable storage
Parametersdomain (required): the public URL

Invoice Ninja ​

Invoicing and billing platform.

ComponentDetails
Appinvoiceninja/invoiceninja:5 on port 9000
DatabaseMySQL with configurable storage
StoragePersistent volume for documents
Parametersdomain (required): the public URL

Mattermost ​

Team messaging platform (Slack alternative).

ComponentDetails
Appmattermost/mattermost-team-edition:11.7.2 on port 8065
DatabasePostgreSQL (10Gi default)
StoragePersistent volume for uploads and attachments
Parametersdomain (required): the public URL. Optional: smtpHost, smtpPort, smtpUsername, smtpPassword, smtpFrom, smtpSecurity, pushNotificationServer

Email notifications. Set smtpHost (plus smtpUsername, smtpPassword, and smtpFrom) and Mattermost sends email from first boot. smtpSecurity defaults to STARTTLS on port 587, which is what most hosted mail relays use. Set it to TLS for providers that want implicit TLS on port 465, or none for an unauthenticated internal relay. Leave smtpHost empty and no email config is written, so you can still set it later in the System Console.

Mobile push. Leave pushNotificationServer empty and push is off. The free Team Edition image we ship can only reach Mattermost's test push proxy (https://push-test.mattermost.com), which works with the official app store apps but is rate limited and meant for evaluation, not production. Production push runs through Mattermost's hosted service and needs a paid Mattermost plan plus the enterprise-edition image, so it's a deliberate later step, not a default.

Rocket.Chat ​

Team communication platform.

ComponentDetails
Approcket.chat:8.4.3 on port 3000
DatabaseMongoDB (10Gi default)
Parametersdomain (required): the public URL. Optional: smtpHost, smtpPort, smtpUsername, smtpPassword, smtpFrom, smtpSecurity

Email notifications. Same SMTP parameters as Mattermost. Set smtpHost and the rest, and Rocket.Chat writes the SMTP settings on startup (it uses the OVERWRITE_SETTING_ mechanism, so the values are locked in the admin panel). smtpSecurity defaults to STARTTLS on port 587.

Mobile push. Rocket.Chat push is not something the blueprint can switch on, because it runs through Rocket.Chat Cloud. After install, connect the workspace to Rocket.Chat Cloud from the admin panel (Settings, then Connectivity). That's the step that lights up push for the official app store apps. The free community tier includes a monthly push allowance through that gateway. If you skip the Cloud connect, push silently never fires, which is the usual reason notifications "don't work" on a fresh Rocket.Chat.

How blueprints work ​

A blueprint is a kipper.yaml template with Go template placeholders. When you install a blueprint, Kipper:

  1. Loads the template from the built-in registry
  2. Applies your parameter values (with defaults for optional ones)
  3. Renders the template to a standard Kipper manifest
  4. Creates the namespace if needed
  5. Applies all resources to the cluster

The rendered output is identical to a hand-written kipper.yaml, with no special tracking or metadata. You can export it later with kip export and manage it via GitOps like any other manifest.

Creating custom blueprints ​

A blueprint file contains two YAML documents separated by ---:

  1. Metadata: name, description, version, parameters
  2. Template: a kipper.yaml with Go template placeholders (e.g. .projectName)

Placeholders like .projectName and .replicas are replaced with parameter values at render time.

After rendering with --set projectName=acme --set replicas=3, the template produces:

yaml
project: acme

apps:
  api:
    image: registry.example.com/api:latest
    port: 8080
    replicas: 3

services:
  db:
    type: postgres
    storage: 5Gi

All parameter values are strings. Use quotes in the template for numeric fields that YAML might interpret differently.

Parameters use Go text/template syntax.

Released under the Apache 2.0 License.