Skip to content
Merged
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
6 changes: 5 additions & 1 deletion artifacts/docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Services: adminer, cloudflared, portainer, portainer-agent, postgraphile, postgr

### event-streaming

Services: debezium, debezium-postgres-connector, postgres, redpanda, redpanda-console, sqitch, traefik
Services: debezium, debezium-postgres-connector, postgres, redpanda, redpanda-cluster-config, redpanda-console, sqitch, traefik

### recommendation

Expand Down Expand Up @@ -144,6 +144,10 @@ You cannot access the caching system via a web interface.

You can access the event streaming platform's ui as described under `redpanda-console`.

### redpanda-cluster-config

The broker's one-shot task for adjusting its cluster configuration after startup.

### redpanda-console

You can access the event streaming platform's ui at [redpanda.app.localhost](https://redpanda.app.localhost/).
Expand Down
12 changes: 12 additions & 0 deletions src/development/redpanda/compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,18 @@ services:
image: redpandadata/redpanda:v26.2.5
volumes:
- redpanda-data:/var/lib/redpanda/data
redpanda-cluster-config:
# The broker's one-shot task for adjusting its cluster configuration after startup.
command: /entrypoint.sh
deploy:
labels:
- dargstack.profiles=event-streaming
restart_policy:
condition: on-failure
entrypoint: sh
image: curlimages/curl:8.22.0
volumes:
- ./configurations/cluster-config.sh:/entrypoint.sh:ro
redpanda-console:
# You can access the event streaming platform's ui at [redpanda.app.localhost](https://redpanda.app.localhost/).
deploy:
Expand Down
21 changes: 21 additions & 0 deletions src/development/redpanda/configurations/cluster-config.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#!/bin/sh
set -eu

ADMIN_URL="http://redpanda:9644/v1/cluster_config"

# Wait for Redpanda's admin API to be reachable.
echo "Waiting for Redpanda to be ready..."
while ! curl --output /dev/null --silent "$ADMIN_URL"; do
sleep 5
done

# The continuous balancing features are licensed enterprise features,
# and the cluster runs on the community edition.
# Disabling both keeps the broker on its unlicensed properties.
echo "Disabling the unlicensed enterprise balancing features..."
curl --fail --output /dev/null --silent --show-error \
-X PUT "$ADMIN_URL" \
-H "Content-Type: application/json" \
-d '{"config_properties": {"core_balancing_continuous": false, "partition_auto_balancing_continuous": false}}'

echo "The enterprise balancing features are disabled."
5 changes: 5 additions & 0 deletions src/production/adminer/compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,8 @@ services:
- node.labels.vibetype.storage == true
update_config:
order: start-first
logging:
driver: json-file
options:
max-file: "3"
max-size: 20m
5 changes: 5 additions & 0 deletions src/production/cadvisor/compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,8 @@ services:
- traefik.http.routers.cadvisor-secure.tls.certresolver=default
update_config:
order: start-first
logging:
driver: json-file
options:
max-file: "3"
max-size: 20m
5 changes: 5 additions & 0 deletions src/production/cloudflared/compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,10 @@ services:
retries: 3
start_period: 30s
image: cloudflare/cloudflared:2026.10.2
logging:
driver: json-file
options:
max-file: "3"
max-size: 20m
secrets:
- cloudflared-tunnel-token
5 changes: 5 additions & 0 deletions src/production/debezium/compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@ services:
- node.labels.vibetype.storage == true
update_config:
order: stop-first
logging:
driver: json-file
options:
max-file: "3"
max-size: 20m
debezium-postgres-connector:
deploy:
placement:
Expand Down
5 changes: 5 additions & 0 deletions src/production/elasticsearch/compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,8 @@ services:
- node.labels.vibetype.storage == true
update_config:
order: stop-first
logging:
driver: json-file
options:
max-file: "3"
max-size: 20m
5 changes: 5 additions & 0 deletions src/production/geoip/compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,8 @@ services:
deploy:
update_config:
order: start-first
logging:
driver: json-file
options:
max-file: "3"
max-size: 20m
5 changes: 5 additions & 0 deletions src/production/grafana/compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,8 @@ services:
- node.labels.vibetype.storage == true
update_config:
order: start-first
logging:
driver: json-file
options:
max-file: "3"
max-size: 20m
5 changes: 5 additions & 0 deletions src/production/jobber/compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,11 @@ services:
order: stop-first
environment:
SENTRY_CRONS: ${SENTRY_CRONS}
logging:
driver: json-file
options:
max-file: "3"
max-size: 20m
volumes:
- (( append ))
- postgres-backup-data:/backups/
5 changes: 5 additions & 0 deletions src/production/memcached/compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,8 @@ services:
deploy:
update_config:
order: start-first
logging:
driver: json-file
options:
max-file: "3"
max-size: 20m
5 changes: 5 additions & 0 deletions src/production/node-exporter/compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,8 @@ services:
deploy:
update_config:
order: start-first
logging:
driver: json-file
options:
max-file: "3"
max-size: 20m
5 changes: 5 additions & 0 deletions src/production/portainer-agent/compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,8 @@ services:
deploy:
update_config:
order: start-first
logging:
driver: json-file
options:
max-file: "3"
max-size: 20m
5 changes: 5 additions & 0 deletions src/production/portainer/compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,8 @@ services:
- node.labels.vibetype.storage == true
update_config:
order: stop-first
logging:
driver: json-file
options:
max-file: "3"
max-size: 20m
5 changes: 5 additions & 0 deletions src/production/postgraphile/compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,8 @@ services:
update_config:
order: start-first
image: ghcr.io/maevsi/postgraphile:2.3.1
logging:
driver: json-file
options:
max-file: "3"
max-size: 20m
10 changes: 10 additions & 0 deletions src/production/postgres/compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,11 @@ services:
- node.labels.vibetype.storage == true
update_config:
order: stop-first
logging:
driver: json-file
options:
max-file: "3"
max-size: 20m
postgres-backup:
# You cannot access the database backup directly.
deploy:
Expand All @@ -24,6 +29,11 @@ services:
POSTGRES_PASSWORD_FILE: /run/secrets/postgres-password
POSTGRES_USER_FILE: /run/secrets/postgres-user
image: prodrigestivill/postgres-backup-local:18-alpine
logging:
driver: json-file
options:
max-file: "3"
max-size: 20m
secrets:
- postgres-backup-db
- postgres-password
Expand Down
5 changes: 5 additions & 0 deletions src/production/prometheus/compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,8 @@ services:
- node.labels.vibetype.storage == true
update_config:
order: stop-first
logging:
driver: json-file
options:
max-file: "3"
max-size: 20m
15 changes: 15 additions & 0 deletions src/production/reccoom/compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,23 @@ services:
environment:
SENTRY_TRACES_SAMPLE_RATE: "0.1"
image: ghcr.io/maevsi/reccoom:0.23.0
logging:
driver: json-file
options:
max-file: "3"
max-size: 20m
reccoom-consumer:
deploy:
update_config:
order: start-first
environment:
SENTRY_TRACES_SAMPLE_RATE: "0.1"
image: ghcr.io/maevsi/reccoom:0.23.0
logging:
driver: json-file
options:
max-file: "3"
max-size: 20m
reccoom-migration:
deploy:
update_config:
Expand All @@ -27,3 +37,8 @@ services:
- node.labels.vibetype.storage == true
update_config:
order: stop-first
logging:
driver: json-file
options:
max-file: "3"
max-size: 20m
5 changes: 5 additions & 0 deletions src/production/redis/compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,8 @@ services:
- node.labels.vibetype.storage == true
update_config:
order: stop-first
logging:
driver: json-file
options:
max-file: "3"
max-size: 20m
17 changes: 17 additions & 0 deletions src/production/redpanda/compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,18 @@ services:
- node.labels.vibetype.storage == true
update_config:
order: stop-first
logging:
driver: json-file
options:
max-file: "3"
max-size: 20m
redpanda-cluster-config:
deploy:
placement:
constraints:
- node.labels.vibetype.storage == true
update_config:
order: stop-first
redpanda-console:
deploy:
labels:
Expand All @@ -16,3 +28,8 @@ services:
- node.labels.vibetype.storage == true
update_config:
order: start-first
logging:
driver: json-file
options:
max-file: "3"
max-size: 20m
10 changes: 10 additions & 0 deletions src/production/traefik/compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,11 @@ services:
environment:
CF_DNS_API_TOKEN_FILE: /run/secrets/traefik-cf-dns-api-token
CF_ZONE_API_TOKEN_FILE: /run/secrets/traefik-cf-zone-api-token
logging:
driver: json-file
options:
max-file: "3"
max-size: 20m
secrets:
- traefik-cf-dns-api-token
- traefik-cf-zone-api-token
Expand All @@ -51,6 +56,11 @@ services:
environment:
STACK_DOMAIN: ${STACK_DOMAIN}
image: ldez/traefik-certs-dumper:v2.11.4
logging:
driver: json-file
options:
max-file: "3"
max-size: 20m
volumes:
- acme-data:/etc/traefik/acme/
volumes:
Expand Down
5 changes: 5 additions & 0 deletions src/production/tusd/compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,8 @@ services:
- traefik.http.routers.tusd-secure.tls.certresolver=default
update_config:
order: start-first
logging:
driver: json-file
options:
max-file: "3"
max-size: 20m
5 changes: 5 additions & 0 deletions src/production/vibetype/compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,11 @@ services:
update_config:
order: start-first
image: ghcr.io/maevsi/vibetype:15.25.1
logging:
driver: json-file
options:
max-file: "3"
max-size: 20m
# vibetype-beta:
# # You can access the main project frontend's beta version at [beta.app.localhost](https://beta.app.localhost/).
# deploy:
Expand Down
25 changes: 25 additions & 0 deletions src/production/zammad/compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@ services:
- node.labels.vibetype.storage == true
update_config:
order: stop-first
logging:
driver: json-file
options:
max-file: "3"
max-size: 20m
zammad-init:
deploy:
placement:
Expand All @@ -23,24 +28,44 @@ services:
- node.labels.vibetype.storage == true
update_config:
order: start-first
logging:
driver: json-file
options:
max-file: "3"
max-size: 20m
zammad-railsserver:
deploy:
placement:
constraints:
- node.labels.vibetype.storage == true
update_config:
order: start-first
logging:
driver: json-file
options:
max-file: "3"
max-size: 20m
zammad-scheduler:
deploy:
placement:
constraints:
- node.labels.vibetype.storage == true
update_config:
order: stop-first
logging:
driver: json-file
options:
max-file: "3"
max-size: 20m
zammad-websocket:
deploy:
placement:
constraints:
- node.labels.vibetype.storage == true
update_config:
order: start-first
logging:
driver: json-file
options:
max-file: "3"
max-size: 20m
Loading