Skip to content

Commit 6920c8c

Browse files
authored
Merge pull request #8 from brainpodnl/feat/extend-docs-with-newest-resources-and-blueprints
feat: extend docs with newest resources and blueprints
2 parents a172a49 + ea10a41 commit 6920c8c

20 files changed

Lines changed: 665 additions & 138 deletions

_config.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
import lume from "lume/mod.ts";
22
import wiki from "wiki/mod.ts";
33
import tailwindcss from "lume/plugins/tailwindcss.ts";
4+
import metas from "lume/plugins/metas.ts";
45

56
const site = lume({
67
src: "./src",
78
dest: "./_site",
9+
location: new URL("https://docs.brainpod.io"),
810
});
911

1012
site.use(wiki());
1113
site.use(tailwindcss());
14+
site.use(metas());
1215

1316
export default site;

src/_data.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,7 @@
11
logo: /PRIMARY.png
22
menu_links: []
3+
4+
metas:
5+
site: Brainpod Docs
6+
lang: en
7+
robots: "index, follow"

src/background-information.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
---
22
order: 5
33
hide_menu: false
4+
metas:
5+
description: "Background on cloud-native principles, containers, and Kubernetes that power Brainpod. Understand the technology behind the platform before you start deploying."
6+
keywords: ["cloud-native", "containers", "Kubernetes", "Docker", "container orchestration", "Brainpod background"]
47
---
58
# Background information
69

@@ -48,4 +51,4 @@ Brainpod embraces cloud-native principles while keeping things simple. You build
4851

4952
## Next Steps
5053

51-
- [Brainpod Concepts](brainpod.md) Brainpod Concepts
54+
- [Brainpod Concepts](brainpod.md): Brainpod Concepts

src/blueprints.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
---
2+
order: 4
3+
hide_menu: false
4+
metas:
5+
description: "Brainpod Blueprints are pre-configured deployment setups for popular applications like WordPress, PocketBase, and Next.js. Get up and running fast."
6+
keywords: ["Brainpod blueprints", "WordPress hosting", "PocketBase deployment", "Next.js hosting", "pre-configured apps"]
7+
---
8+
# Blueprints
9+
10+
Blueprints are pre-configured setups for common applications on Brainpod. Each blueprint walks you through deploying a specific stack with the right resources and configuration.
11+
12+
## Available Blueprints
13+
14+
- **[WordPress](blueprints/wordpress.md)**: Deploy a WordPress site with a managed database
15+
- **[PocketBase](blueprints/pocketbase.md)**: Run a self-hosted PocketBase backend
16+
- **[Next.js](blueprints/nextjs.md)**: Deploy a Next.js application
17+
18+
## Next Steps
19+
20+
- [Brainpod Resources](resources.md): Learn about the available resource types
21+
- [Getting Started](getting-started.md): Deploy your first app

src/blueprints/nextjs.md

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
---
2+
order: 3
3+
hide_menu: false
4+
metas:
5+
description: "Deploy a Next.js application on Brainpod. Connect your GitHub repository and Brainpod automatically builds and deploys your app using Railpack."
6+
keywords: ["Next.js Brainpod", "deploy Next.js", "Next.js hosting", "React framework", "GitHub Actions"]
7+
---
8+
# Next.js
9+
10+
The Next.js blueprint sets up the infrastructure to run your Next.js application on Brainpod and wires it to your GitHub repository. Every push to your main branch automatically builds and deploys your app. No Dockerfile required: Brainpod uses [Railpack](https://github.com/railwayapp/railpack) to detect your framework and build the image for you.
11+
12+
## What Gets Deployed
13+
14+
The blueprint creates the following resources in your pod:
15+
16+
- **1 App**: configured for Next.js on port 3000, with `NODE_ENV` set to `production`
17+
- **1 Route**: a public hostname under `*.route.brainpod.io` with automatic TLS
18+
19+
Next.js is stateless by default, so no disk is needed. If your app writes files to disk (e.g. for uploads), add a Disk resource and mount it to your app after deploying the blueprint.
20+
21+
## Deploying the Blueprint
22+
23+
1. Go to your pod in the Brainpod dashboard
24+
2. Navigate to **Blueprints**
25+
3. Select **Next.js**
26+
4. Give your deployment a name (e.g. `web`): this prefixes all created resources
27+
5. Click **Deploy**
28+
29+
The blueprint deploys with a placeholder image. Your app will not serve real content until you connect your GitHub repository.
30+
31+
## Connecting Your GitHub Repository
32+
33+
Brainpod uses GitHub Actions and Railpack to build your app automatically on every push.
34+
35+
1. Open the **App** resource created by the blueprint
36+
2. Go to the **Image Source** tab and select **GitHub Auto-Deploy**
37+
3. Select your GitHub repository and branch
38+
4. Click **Connect**: Brainpod opens a pull request in your repository that adds:
39+
- `steiger.yml`: the Railpack build configuration
40+
- `.github/workflows/deploy-to-brainpod.yml`: the GitHub Actions workflow
41+
5. Merge the pull request
42+
43+
From this point on, every push to your configured branch triggers a build. Railpack detects your Next.js project automatically, builds a container image, pushes it to the Brainpod registry, and your app is redeployed with the new image.
44+
45+
## Monitoring Builds
46+
47+
You can follow the progress of each build in the **Builds** section of your pod. Each build shows its status, logs, and the artifact it produced. When a build completes successfully, the app switches to the new image automatically.
48+
49+
## Next Steps
50+
51+
- [Custom domains](../custom_domains.md): Point your own domain to your app
52+
- [Apps](../resources/apps.md): Configure environment variables, scaling, and more
53+
- [Container Registry](../registry.md): Learn about how images are stored
54+
- [Blueprints](../blueprints.md): Browse other available blueprints

src/blueprints/pocketbase.md

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
---
2+
order: 2
3+
hide_menu: false
4+
metas:
5+
description: "Run a self-hosted PocketBase backend on Brainpod. Deploy PocketBase as a containerized app with persistent storage and a public route."
6+
keywords: ["PocketBase Brainpod", "self-hosted PocketBase", "deploy PocketBase", "backend as a service", "BaaS"]
7+
---
8+
# PocketBase
9+
10+
The PocketBase blueprint deploys a self-hosted PocketBase backend on Brainpod. PocketBase gives you a realtime database, authentication, file storage, and an admin UI: all in a single app. Brainpod handles the infrastructure.
11+
12+
## What Gets Deployed
13+
14+
The blueprint creates the following resources in your pod:
15+
16+
- **1 Disk**: persistent storage for your PocketBase data at `/pb_data`
17+
- **1 App**: PocketBase v0.36.7 running on port 8090
18+
- **1 Route**: a public hostname under `*.route.brainpod.io` with automatic TLS
19+
20+
## Deploying the Blueprint
21+
22+
1. Go to your pod in the Brainpod dashboard
23+
2. Navigate to **Blueprints**
24+
3. Select **PocketBase**
25+
4. Give your deployment a name (e.g. `backend`): this prefixes all created resources
26+
5. Click **Deploy**
27+
28+
Brainpod creates all resources and deploys them. Once the deployment is complete, you need to create your first superuser account before you can use the admin UI.
29+
30+
## Creating Your Superuser Account
31+
32+
PocketBase generates a one-time setup link the first time it starts. To find it:
33+
34+
1. Go to your pod in the Brainpod dashboard
35+
2. Open the **Events** page for your PocketBase app
36+
3. Look for a log line that contains a link like:
37+
38+
```
39+
http://0.0.0.0:8090/_/#/pbinstal/...
40+
```
41+
42+
4. Copy that URL and replace `0.0.0.0:8090` with your Brainpod hostname (shown on your Route)
43+
44+
The final URL will look like:
45+
46+
```
47+
https://your-hostname.route.brainpod.io/_/#/pbinstal/...
48+
```
49+
50+
Open that URL in your browser to create your superuser account. After completing the setup you have full access to the PocketBase admin UI at `https://your-hostname.route.brainpod.io/_/`.
51+
52+
## Next Steps
53+
54+
- [Custom domains](../custom_domains.md): Point your own domain to your PocketBase instance
55+
- [Disks](../resources/disks.md): Learn about the persistent storage backing your data
56+
- [Blueprints](../blueprints.md): Browse other available blueprints

src/blueprints/wordpress.md

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
---
2+
order: 1
3+
hide_menu: false
4+
metas:
5+
description: "Deploy WordPress on Brainpod with a managed MariaDB database and persistent storage. Step-by-step blueprint for a production-ready WordPress installation."
6+
keywords: ["WordPress Brainpod", "deploy WordPress", "WordPress hosting", "managed WordPress", "self-hosted WordPress"]
7+
---
8+
# WordPress
9+
10+
The WordPress blueprint deploys a complete WordPress stack on Brainpod in one step. It sets up everything you need: a managed database, persistent storage for your files, the WordPress app, and a public route with automatic HTTPS.
11+
12+
## What Gets Deployed
13+
14+
The blueprint creates the following resources in your pod:
15+
16+
- **2 Disks**: one for the database, one for your WordPress files and uploads
17+
- **1 MariaDB**: a managed MySQL-compatible database that WordPress connects to automatically
18+
- **1 App**: WordPress 6.9 running on PHP 8.2 with Apache
19+
- **1 Route**: a public hostname under `*.route.brainpod.io` with automatic TLS
20+
21+
The database connection is wired up automatically. You do not need to configure `WORDPRESS_DB_HOST`, `WORDPRESS_DB_USER`, `WORDPRESS_DB_PASSWORD`, or `WORDPRESS_DB_NAME` yourself.
22+
23+
## Deploying the Blueprint
24+
25+
1. Go to your pod in the Brainpod dashboard
26+
2. Navigate to **Blueprints**
27+
3. Select **WordPress**
28+
4. Give your deployment a name (e.g. `myblog`): this prefixes all created resources
29+
5. Click **Deploy**
30+
31+
Brainpod creates all resources and deploys them. Once the deployment is complete, open the hostname shown on your Route. You will be greeted by the WordPress setup wizard.
32+
33+
## Finishing the WordPress Setup
34+
35+
The first time you visit your WordPress URL, the setup wizard walks you through:
36+
37+
1. Choosing a language
38+
2. Setting your site title
39+
3. Creating your admin username and password
40+
41+
After completing the wizard you are taken to the WordPress dashboard and your site is live.
42+
43+
## Next Steps
44+
45+
- [Custom domains](../custom_domains.md): Point your own domain to your WordPress site
46+
- [Container Registry](../registry.md): Push a custom image if you need plugins pre-installed
47+
- [Disks](../resources/disks.md): Learn about the persistent storage backing your site
48+
- [Blueprints](../blueprints.md): Browse other available blueprints

src/brainpod.md

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
---
22
order: 0
33
hide_menu: false
4+
metas:
5+
description: "Learn about Brainpod's core concepts: pods, resources, and revisions. A git-like interface for your cloud infrastructure without the Kubernetes complexity."
6+
keywords: ["Brainpod concepts", "pods", "resources", "revisions", "infrastructure management", "cloud-native"]
47
---
58
# Brainpod Concepts
69

@@ -16,14 +19,14 @@ Pods give you clear boundaries and ownership. Development stays separate from pr
1619

1720
## Resources
1821

19-
We use a resource model to represent your infrastructure. Each resource is a high-level abstractiona single resource might map to dozens of underlying components like deployments, services, load balancers, and configurations.
22+
We use a resource model to represent your infrastructure. Each resource is a high-level abstraction-a single resource might map to dozens of underlying components like deployments, services, load balancers, and configurations.
2023

2124
You work at a much higher level than traditional cloud providers. Instead of configuring individual pieces, you simply define an app and a route. The platform handles the complexity.
2225

2326
Currently, we support two resource types:
2427

25-
- **[Apps](resources/apps.md)** Your containerized applications
26-
- **[Routes](resources/routes.md)** HTTP/HTTPS routing to your apps
28+
- **[Apps](resources/apps.md)**: Your containerized applications
29+
- **[Routes](resources/routes.md)**: HTTP/HTTPS routing to your apps
2730

2831
Learn more in the [Resources documentation](resources.md).
2932

@@ -61,7 +64,7 @@ Your team sees the complete history, can roll back if needed, and collaborates o
6164

6265
Ready to work with specific resource types and start building?
6366

64-
- [Resources](resources.md) Learn about Apps and Routes in detail
65-
- [Getting Started](getting-started.md) Deploy your first application
66-
- [Working with the Dashboard](dashboard.md) Navigate the interface
67-
- [background information](background-information.md) Review the foundation
67+
- [Resources](resources.md): Learn about Apps and Routes in detail
68+
- [Getting Started](getting-started.md): Deploy your first application
69+
- [Working with the Dashboard](dashboard.md): Navigate the interface
70+
- [background information](background-information.md): Review the foundation

src/custom_domains.md

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
---
22
order: 4
33
hide_menu: false
4+
metas:
5+
description: "Add custom domains to your Brainpod routes. Configure DNS, get automatic TLS certificates, and serve your apps from any domain you own."
6+
keywords: ["Brainpod custom domains", "DNS configuration", "TLS certificate", "HTTPS", "CNAME", "custom hostname"]
47
---
58
# Custom domains
69

@@ -35,12 +38,12 @@ CNAME records automatically follow any infrastructure changes on our side, so yo
3538

3639
## Multiple Custom Domains
3740

38-
A single route can have multiple custom domains. This is useful when you want several domains pointing to the same applicationfor example, `www.example.com` and `app.example.com`, or multiple brand domains.
41+
A single route can have multiple custom domains. This is useful when you want several domains pointing to the same application-for example, `www.example.com` and `app.example.com`, or multiple brand domains.
3942

4043
To add multiple domains, simply add each domain when creating or editing your route configuration. After deploying, configure DNS records for each domain separately in your DNS provider.
4144

4245
Each domain gets its own TLS certificate and verification status on the Domains page. All domains on a route use the same routing rules and point to the same apps.
4346

4447
## Next Steps
45-
- [Resources](resources.md) Learn about apps and routes
46-
- [Getting Started](getting-started.md) Deploy your first application
48+
- [Resources](resources.md): Learn about apps and routes
49+
- [Getting Started](getting-started.md): Deploy your first application

0 commit comments

Comments
 (0)