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 README.md
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@ foundryctl cast -f casting.yaml
| - | systemd | binary | [systemd/binary](docs/examples/systemd/binary/) |
| ecs | ec2 | terraform | [ecs/ec2/terraform](docs/examples/ecs/ec2/terraform/) |
| coolify | - | stack | [coolify/stack](docs/examples/coolify/stack/) |
| dokploy | - | stack | [dokploy/stack](docs/examples/dokploy/stack/) |
| railway | - | template | [railway/template](docs/examples/railway/template/) |
| render | - | blueprint | [render/blueprint](docs/examples/render/blueprint/) |

Expand Down
1 change: 1 addition & 0 deletions api/v1alpha1/collectionagent/casting.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,7 @@
"enum": [
"render",
"coolify",
"dokploy",
"railway",
"ecs",
"aws",
Expand Down
2 changes: 2 additions & 0 deletions api/v1alpha1/deployment_platform.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ var _ jsonschema.Enum = (*Platform)(nil)
var (
PlatformRender Platform = Platform{s: "render"}
PlatformCoolify Platform = Platform{s: "coolify"}
PlatformDokploy Platform = Platform{s: "dokploy"}
PlatformRailway Platform = Platform{s: "railway"}
PlatformECS Platform = Platform{s: "ecs"}
PlatformAWS Platform = Platform{s: "aws"}
Expand All @@ -38,6 +39,7 @@ func Platforms() []Platform {
return []Platform{
PlatformRender,
PlatformCoolify,
PlatformDokploy,
PlatformRailway,
PlatformECS,
PlatformAWS,
Expand Down
14 changes: 14 additions & 0 deletions api/v1alpha1/deployment_platform_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package v1alpha1

import (
"testing"

"github.com/stretchr/testify/require"
)

func TestPlatformDokployIsAvailable(t *testing.T) {
var platform Platform
require.NoError(t, platform.UnmarshalText([]byte("dokploy")))
require.Equal(t, "dokploy", platform.String())
require.Contains(t, Platforms(), PlatformDokploy)
}
1 change: 1 addition & 0 deletions api/v1alpha1/installation/casting.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -631,6 +631,7 @@
"enum": [
"render",
"coolify",
"dokploy",
"railway",
"ecs",
"aws",
Expand Down
1 change: 1 addition & 0 deletions docs/examples/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,6 @@
| - | systemd | binary | [systemd/binary](systemd/binary/) |
| ecs | ec2 | terraform | [ecs/ec2/terraform](ecs/ec2/terraform/) |
| coolify | - | stack | [coolify/stack](coolify/stack/) |
| dokploy | - | stack | [dokploy/stack](dokploy/stack/) |
| railway | - | template | [railway/template](railway/template/) |
| render | - | blueprint | [render/blueprint](render/blueprint/) |
6 changes: 6 additions & 0 deletions docs/examples/castings.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,12 @@
"flavor": "stack",
"example": "coolify/stack"
},
{
"platform": "dokploy",
"mode": "",
"flavor": "stack",
"example": "dokploy/stack"
},
{
"platform": "railway",
"mode": "",
Expand Down
5 changes: 5 additions & 0 deletions docs/examples/dokploy/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Dokploy

| Flavor | Description |
| --- | --- |
| [stack](stack/) | Deploy SigNoz on Dokploy as a Docker Swarm stack |
62 changes: 62 additions & 0 deletions docs/examples/dokploy/stack/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# Dokploy Stack

| Field | Value |
| --- | --- |
| **Mode** | `-` |
| **Flavor** | `stack` |
| **Platform** | `dokploy` |

## Overview

Generates a Docker Swarm `compose.yaml` and component configuration files for deployment through Dokploy's stack feature.

> [!NOTE]
> `foundryctl cast` does not deploy to Dokploy automatically. It generates the files and prints instructions for manual deployment.

## Prerequisites

- A [Dokploy](https://dokploy.com) instance
- The external `dokploy-network` created by Dokploy

## Configuration

```yaml
apiVersion: v1alpha1
metadata:
name: signoz
spec:
deployment:
flavor: stack
platform: dokploy
```

## Deploy

```bash
foundryctl forge -f casting.yaml
```

Set `SIGNOZ_DOMAIN` in Dokploy to the hostname that should serve the SigNoz UI, then deploy `pours/deployment/compose.yaml` with the stack feature. The generated Swarm labels configure HTTPS routing through Dokploy's Traefik service on container port `8080`. The SigNoz UI is the only service attached to Dokploy's shared network; databases remain isolated on the stack's private overlay network.

The ingester ports are exposed to container networks but are not published directly on the host. Connect collectors running in the Swarm to the stack's private overlay network. To receive telemetry from outside the Swarm, use a patch to attach the ingester to an appropriate ingress network and configure routing for port `4318` (OTLP/HTTP).

## Generated output

```text
pours/deployment/
compose.yaml
ingester/
ingester.yaml
opamp.yaml
telemetrykeeper/
clickhousekeeper/
keeper-0.yaml
telemetrystore/
clickhouse/
config-0-0.yaml
functions.yaml
```

## Customization

For changes to the generated `compose.yaml`, use [patches](../../../concepts/patches.md).
8 changes: 8 additions & 0 deletions docs/examples/dokploy/stack/casting.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
apiVersion: v1alpha1
kind: Installation
metadata:
name: signoz
spec:
deployment:
flavor: stack
platform: dokploy
Loading
Loading