Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions content/docs/guides/meta.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
"measure-campaigns",
"---Hosting---",
"hosting",
"running-on-bunny",
"running-on-caprover",
"running-on-digitalocean",
"running-on-northflank",
Expand Down
63 changes: 63 additions & 0 deletions content/docs/guides/running-on-bunny.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
---
title: Running on bunny.net
---

[bunny.net](https://bunny.net) is a global platform for content delivery and edge computing. [Magic Containers](https://bunny.net/magic-containers/) lets you deploy and run containerized applications across bunny.net's global network with built-in CDN integration.

You can deploy Umami alongside a PostgreSQL database using Magic Containers.

## Setup

### 1. Create a new application

1. Go to **Magic Containers** in the [bunny.net dashboard](https://dash.bunny.net) and click **Add App**.
2. Give your application a name (e.g. `umami`).
3. Choose **Single Region** deployment since this is a stateful application with a database.

### 2. Add the PostgreSQL container

1. Click **Add Container**.
2. Enter the name `postgres`.
3. From the **Registry** dropdown, select **DockerHub Public**.
4. Set the image to `library/postgres` and the tag to `16-alpine`.

bunny.net will auto-detect the environment variables. Update them with your preferred values:

- `POSTGRES_USER` = `umami`
- `POSTGRES_PASSWORD` = _choose a strong password_
- `POSTGRES_DB` = `umami`
- `PGDATA` = `/var/lib/postgresql/data/pgdata`

Setting `PGDATA` to a subdirectory of the mount path prevents a permissions conflict between the volume and the PostgreSQL startup process.

Add a 1 GB persistent volume mounted at `/var/lib/postgresql/data`.

### 3. Add the Umami container

1. Click **Add Container**.
2. Enter the name `umami`.
3. From the **Registry** dropdown, select **DockerHub Public**.
4. Set the image to `umamisoftware/umami` and the tag to `postgresql-latest`.

Update the environment variables:

- `DATABASE_URL` = `postgresql://umami:<your-password>@localhost:5432/umami`
- `APP_SECRET` = _a random string used for encryption_
- `DISABLE_TELEMETRY` = `1`

Replace `<your-password>` with the `POSTGRES_PASSWORD` you set in the previous step.

Add a **CDN** endpoint pointing to container port `3000`.

### 4. Deploy

Review your configuration and click **Confirm and Create**. Once the containers are running, open the CDN endpoint URL to access Umami.

Log in with the default credentials — username `admin` and password `umami` — and change your password immediately under **Settings → Profile**.

### Notes

- Both containers run in the same pod and communicate over `localhost`.
- Data is stored in the PostgreSQL persistent volume and survives redeployments.
- You can update the Umami image tag to upgrade to newer versions.
- Read more about [adding a website](/docs/add-a-website) and [collecting data](/docs/collect-data).