various updates

This commit is contained in:
2026-09-07 11:37:56 -04:00
parent 9995fb29ff
commit fc91437228
81 changed files with 1478 additions and 1437 deletions
@@ -0,0 +1,3 @@
# Compose
Put your compose.yaml here.
@@ -0,0 +1,168 @@
# Make sure to update the credential placeholders with your own secrets.
# We mark them with # CHANGEME in the file below.
# In addition, we recommend to restrict inbound traffic on the host to langfuse-web (port 3000) and minio (port 9090) only.
# All other components are bound to localhost (127.0.0.1) to only accept connections from the local machine.
# External connections from other machines will not be able to reach these services directly.
services:
langfuse-worker:
image: docker.io/langfuse/langfuse-worker:3
restart: always
ports:
- 127.0.0.1:3030:3030
environment: &langfuse-worker-env
NEXTAUTH_URL: ${NEXTAUTH_URL:-http://localhost:3000}
DATABASE_URL: ${DATABASE_URL:-postgresql://postgres:postgres@postgres:5432/postgres} # CHANGEME
SALT: ${SALT:-mysalt} # CHANGEME
ENCRYPTION_KEY: ${ENCRYPTION_KEY:-0000000000000000000000000000000000000000000000000000000000000000} # CHANGEME: generate via `openssl rand -hex 32`
TELEMETRY_ENABLED: ${TELEMETRY_ENABLED:-true}
LANGFUSE_ENABLE_EXPERIMENTAL_FEATURES: ${LANGFUSE_ENABLE_EXPERIMENTAL_FEATURES:-false}
CLICKHOUSE_MIGRATION_URL: ${CLICKHOUSE_MIGRATION_URL:-clickhouse://clickhouse:9000}
CLICKHOUSE_URL: ${CLICKHOUSE_URL:-http://clickhouse:8123}
CLICKHOUSE_USER: ${CLICKHOUSE_USER:-clickhouse}
CLICKHOUSE_PASSWORD: ${CLICKHOUSE_PASSWORD:-clickhouse} # CHANGEME
CLICKHOUSE_CLUSTER_ENABLED: ${CLICKHOUSE_CLUSTER_ENABLED:-false}
LANGFUSE_USE_AZURE_BLOB: ${LANGFUSE_USE_AZURE_BLOB:-false}
LANGFUSE_USE_OCI_NATIVE_OBJECT_STORAGE: ${LANGFUSE_USE_OCI_NATIVE_OBJECT_STORAGE:-false}
LANGFUSE_OCI_AUTH_TYPE: ${LANGFUSE_OCI_AUTH_TYPE:-workload_identity}
LANGFUSE_S3_EVENT_UPLOAD_BUCKET: ${LANGFUSE_S3_EVENT_UPLOAD_BUCKET:-langfuse}
LANGFUSE_S3_EVENT_UPLOAD_REGION: ${LANGFUSE_S3_EVENT_UPLOAD_REGION:-auto}
LANGFUSE_S3_EVENT_UPLOAD_ACCESS_KEY_ID: ${LANGFUSE_S3_EVENT_UPLOAD_ACCESS_KEY_ID:-minio}
LANGFUSE_S3_EVENT_UPLOAD_SECRET_ACCESS_KEY: ${LANGFUSE_S3_EVENT_UPLOAD_SECRET_ACCESS_KEY:-miniosecret} # CHANGEME
LANGFUSE_S3_EVENT_UPLOAD_ENDPOINT: ${LANGFUSE_S3_EVENT_UPLOAD_ENDPOINT:-http://minio:9000}
LANGFUSE_S3_EVENT_UPLOAD_FORCE_PATH_STYLE: ${LANGFUSE_S3_EVENT_UPLOAD_FORCE_PATH_STYLE:-true}
LANGFUSE_S3_EVENT_UPLOAD_PREFIX: ${LANGFUSE_S3_EVENT_UPLOAD_PREFIX:-events/}
LANGFUSE_S3_MEDIA_UPLOAD_BUCKET: ${LANGFUSE_S3_MEDIA_UPLOAD_BUCKET:-langfuse}
LANGFUSE_S3_MEDIA_UPLOAD_REGION: ${LANGFUSE_S3_MEDIA_UPLOAD_REGION:-auto}
LANGFUSE_S3_MEDIA_UPLOAD_ACCESS_KEY_ID: ${LANGFUSE_S3_MEDIA_UPLOAD_ACCESS_KEY_ID:-minio}
LANGFUSE_S3_MEDIA_UPLOAD_SECRET_ACCESS_KEY: ${LANGFUSE_S3_MEDIA_UPLOAD_SECRET_ACCESS_KEY:-miniosecret} # CHANGEME
LANGFUSE_S3_MEDIA_UPLOAD_ENDPOINT: ${LANGFUSE_S3_MEDIA_UPLOAD_ENDPOINT:-http://localhost:9090}
LANGFUSE_S3_MEDIA_UPLOAD_FORCE_PATH_STYLE: ${LANGFUSE_S3_MEDIA_UPLOAD_FORCE_PATH_STYLE:-true}
LANGFUSE_S3_MEDIA_UPLOAD_PREFIX: ${LANGFUSE_S3_MEDIA_UPLOAD_PREFIX:-media/}
LANGFUSE_S3_BATCH_EXPORT_ENABLED: ${LANGFUSE_S3_BATCH_EXPORT_ENABLED:-false}
LANGFUSE_S3_BATCH_EXPORT_BUCKET: ${LANGFUSE_S3_BATCH_EXPORT_BUCKET:-langfuse}
LANGFUSE_S3_BATCH_EXPORT_PREFIX: ${LANGFUSE_S3_BATCH_EXPORT_PREFIX:-exports/}
LANGFUSE_S3_BATCH_EXPORT_REGION: ${LANGFUSE_S3_BATCH_EXPORT_REGION:-auto}
LANGFUSE_S3_BATCH_EXPORT_ENDPOINT: ${LANGFUSE_S3_BATCH_EXPORT_ENDPOINT:-http://minio:9000}
LANGFUSE_S3_BATCH_EXPORT_EXTERNAL_ENDPOINT: ${LANGFUSE_S3_BATCH_EXPORT_EXTERNAL_ENDPOINT:-http://localhost:9090}
LANGFUSE_S3_BATCH_EXPORT_ACCESS_KEY_ID: ${LANGFUSE_S3_BATCH_EXPORT_ACCESS_KEY_ID:-minio}
LANGFUSE_S3_BATCH_EXPORT_SECRET_ACCESS_KEY: ${LANGFUSE_S3_BATCH_EXPORT_SECRET_ACCESS_KEY:-miniosecret} # CHANGEME
LANGFUSE_S3_BATCH_EXPORT_FORCE_PATH_STYLE: ${LANGFUSE_S3_BATCH_EXPORT_FORCE_PATH_STYLE:-true}
LANGFUSE_INGESTION_QUEUE_DELAY_MS: ${LANGFUSE_INGESTION_QUEUE_DELAY_MS:-}
LANGFUSE_INGESTION_CLICKHOUSE_WRITE_INTERVAL_MS: ${LANGFUSE_INGESTION_CLICKHOUSE_WRITE_INTERVAL_MS:-}
REDIS_HOST: ${REDIS_HOST:-redis}
REDIS_PORT: ${REDIS_PORT:-6379}
REDIS_AUTH: ${REDIS_AUTH:-myredissecret} # CHANGEME
REDIS_TLS_ENABLED: ${REDIS_TLS_ENABLED:-false}
REDIS_TLS_CA: ${REDIS_TLS_CA:-/certs/ca.crt}
REDIS_TLS_CERT: ${REDIS_TLS_CERT:-/certs/redis.crt}
REDIS_TLS_KEY: ${REDIS_TLS_KEY:-/certs/redis.key}
EMAIL_FROM_ADDRESS: ${EMAIL_FROM_ADDRESS:-}
SMTP_CONNECTION_URL: ${SMTP_CONNECTION_URL:-}
langfuse-web:
image: docker.io/langfuse/langfuse:3
restart: always
ports:
- 3000:3000
environment:
<<: *langfuse-worker-env
NEXTAUTH_SECRET: ${NEXTAUTH_SECRET:-mysecret} # CHANGEME
LANGFUSE_INIT_ORG_ID: ${LANGFUSE_INIT_ORG_ID:-}
LANGFUSE_INIT_ORG_NAME: ${LANGFUSE_INIT_ORG_NAME:-}
LANGFUSE_INIT_PROJECT_ID: ${LANGFUSE_INIT_PROJECT_ID:-}
LANGFUSE_INIT_PROJECT_NAME: ${LANGFUSE_INIT_PROJECT_NAME:-}
LANGFUSE_INIT_PROJECT_PUBLIC_KEY: ${LANGFUSE_INIT_PROJECT_PUBLIC_KEY:-}
LANGFUSE_INIT_PROJECT_SECRET_KEY: ${LANGFUSE_INIT_PROJECT_SECRET_KEY:-}
LANGFUSE_INIT_USER_EMAIL: ${LANGFUSE_INIT_USER_EMAIL:-admin@ducoterra.net}
LANGFUSE_INIT_USER_NAME: ${LANGFUSE_INIT_USER_NAME:-admin}
LANGFUSE_INIT_USER_PASSWORD: ${LANGFUSE_INIT_USER_PASSWORD:-testpass}
clickhouse:
image: docker.io/clickhouse/clickhouse-server
restart: always
user: "101:101"
environment:
CLICKHOUSE_DB: default
CLICKHOUSE_USER: ${CLICKHOUSE_USER:-clickhouse}
CLICKHOUSE_PASSWORD: ${CLICKHOUSE_PASSWORD:-clickhouse} # CHANGEME
volumes:
- langfuse_clickhouse_data:/var/lib/clickhouse
- langfuse_clickhouse_logs:/var/log/clickhouse-server
ports:
- 127.0.0.1:8123:8123
- 127.0.0.1:9000:9000
healthcheck:
test: wget --no-verbose --tries=1 --spider http://localhost:8123/ping || exit 1
interval: 5s
timeout: 5s
retries: 10
start_period: 1s
minio:
image: cgr.dev/chainguard/minio
restart: always
entrypoint: sh
# create the 'langfuse' bucket before starting the service
command: -c 'mkdir -p /data/langfuse && minio server --address ":9000" --console-address ":9001" /data'
environment:
MINIO_ROOT_USER: ${MINIO_ROOT_USER:-minio}
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-miniosecret} # CHANGEME
ports:
- 9090:9000
- 127.0.0.1:9091:9001
volumes:
- langfuse_minio_data:/data
healthcheck:
test: ["CMD", "mc", "ready", "local"]
interval: 1s
timeout: 5s
retries: 5
start_period: 1s
redis:
image: docker.io/redis:7
restart: always
# CHANGEME: row below to secure redis password
command: >
--requirepass ${REDIS_AUTH:-myredissecret}
--maxmemory-policy noeviction
ports:
- 127.0.0.1:6379:6379
volumes:
- langfuse_redis_data:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 3s
timeout: 10s
retries: 10
postgres:
image: docker.io/postgres:${POSTGRES_VERSION:-17}
restart: always
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 3s
timeout: 3s
retries: 10
environment:
POSTGRES_USER: ${POSTGRES_USER:-postgres}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres} # CHANGEME
POSTGRES_DB: ${POSTGRES_DB:-postgres}
TZ: UTC
PGTZ: UTC
ports:
- 127.0.0.1:5432:5432
volumes:
- langfuse_postgres_data:/var/lib/postgresql/data
volumes:
langfuse_postgres_data:
driver: local
langfuse_clickhouse_data:
driver: local
langfuse_clickhouse_logs:
driver: local
langfuse_minio_data:
driver: local
langfuse_redis_data:
driver: local
+167
View File
@@ -0,0 +1,167 @@
# Podman langfuse
- [Podman langfuse](#podman-langfuse)
- [Setup langfuse Project](#setup-langfuse-project)
- [Install langfuse](#install-langfuse)
- [Create the langfuse user](#create-the-langfuse-user)
- [Write the langfuse compose spec](#write-the-langfuse-compose-spec)
- [A Note on Volumes](#a-note-on-volumes)
- [Convert langfuse compose spec to quadlets](#convert-langfuse-compose-spec-to-quadlets)
- [Create any container-mounted directories](#create-any-container-mounted-directories)
- [Start and enable your systemd quadlet](#start-and-enable-your-systemd-quadlet)
- [Expose langfuse](#expose-langfuse)
- [firewalld](#firewalld)
- [Backup langfuse](#backup-langfuse)
- [Upgrade langfuse](#upgrade-langfuse)
- [Upgrade Quadlets](#upgrade-quadlets)
- [Uninstall](#uninstall)
- [Notes](#notes)
- [SELinux](#selinux)
## Setup langfuse Project
- [ ] Copy and rename this folder to active/container_langfuse
- [ ] Find and replace langfuse with the name of the service.
- [ ] Create the rootless user to run the podman containers
- [ ] Write the compose.yaml spec for your service
- [ ] Convert the compose.yaml spec to a quadlet
- [ ] Install the quadlet on the podman server
- [ ] Expose the quadlet service
- [ ] Install a backup service and timer
## Install langfuse
### Create the langfuse user
```bash
# SSH into your podman server as root
useradd langfuse
loginctl enable-linger $(id -u langfuse)
systemctl --user --machine=langfuse@.host enable podman-restart
systemctl --user --machine=langfuse@.host enable --now podman.socket
mkdir -p /home/langfuse/.config/containers/systemd
```
### Write the langfuse compose spec
Edit the compose.yaml at active/container_langfuse/compose/compose.yaml
#### A Note on Volumes
Named volumes are stored at `/home/langfuse/.local/share/containers/storage/volumes/`.
### Convert langfuse compose spec to quadlets
Run the following to convert a compose.yaml into the various `.container` files for systemd:
```bash
# Generate the systemd service
podman run \
--security-opt label=disable \
--rm \
-v $(pwd)/active/container_langfuse/compose:/compose \
-v $(pwd)/active/container_langfuse/quadlets:/quadlets \
quay.io/k9withabone/podlet \
-f /quadlets \
-i \
--overwrite \
compose /compose/compose.yaml
# Copy the files to the server
export PODMAN_SERVER=
scp -r active/container_langfuse/quadlets/. $PODMAN_SERVER:/home/langfuse/.config/containers/systemd/
ssh $PODMAN_SERVER chown -R langfuse:langfuse /home/langfuse/.config/containers/systemd/
```
### Create any container-mounted directories
SSH into your podman server as root:
```bash
machinectl shell langfuse@
podman unshare
mkdir some_volume
# Chown to the namespaced user with UID 1000
# This will be some really obscure UID outside the namespace
# This will also solve most permission denied errors
chown -R 1000:1000 some_volume
```
### Start and enable your systemd quadlet
SSH into your podman server as root:
```bash
machinectl shell langfuse@
systemctl --user daemon-reload
systemctl --user restart langfuse
# Enable auto-update service which will pull new container images automatically every day
systemctl --user enable --now podman-auto-update.timer
```
### Expose langfuse
1. If you need a domain, follow the [DDNS instructions](/active/container_ddns/ddns.md#install-a-new-ddns-service)
2. For a web service, follow the [Caddy instructions](/active/container_caddy/caddy.md#adding-a-new-caddy-record)
3. Finally, follow your OS's guide for opening ports via its firewall service.
#### firewalld
```bash
# command to get current active zone and default zone
firewall-cmd --get-active-zones
firewall-cmd --get-default-zone
# command to open 443 on tcp
firewall-cmd --permanent --zone=<zone> --add-port=443/tcp
# command to open 80 and 443 on tcp and udp
firewall-cmd --permanent --zone=<zone> --add-port={80,443}/{tcp,udp}
# command to list available services and then open http and https
firewall-cmd --get-services
firewall-cmd --permanent --zone=<zone> --add-service={http,https}
```
## Backup langfuse
Follow the [Borg Backup instructions](/active/systemd_borg/borg.md#set-up-a-client-for-backup)
## Upgrade langfuse
### Upgrade Quadlets
Upgrades should be a repeat of [writing the compose spec](#convert-langfuse-compose-spec-to-quadlets) and [installing the quadlets](#start-and-enable-your-systemd-quadlet)
```bash
export PODMAN_SERVER=
scp -r quadlets/. $PODMAN_SERVER$:/home/langfuse/.config/containers/systemd/
ssh langfuse systemctl --user daemon-reload
ssh langfuse systemctl --user restart langfuse
```
## Uninstall
```bash
# Stop the user's services
systemctl --user disable podman-restart
podman container stop --all
systemctl --user disable --now podman.socket
systemctl --user disable --now podman-auto-update.timer
# Delete the user (this won't delete their home directory)
# userdel might spit out an error like:
# userdel: user langfuse is currently used by process 591255
# kill those processes and try again
userdel langfuse
```
## Notes
### SELinux
<https://blog.christophersmart.com/2021/01/31/podman-volumes-and-selinux/>
:z allows a container to share a mounted volume with all other containers.
:Z allows a container to reserve a mounted volume and prevents any other container from accessing.
@@ -0,0 +1,21 @@
[Container]
Pod=langfuse.pod
ContainerName=langfuse-clickhouse
Environment=CLICKHOUSE_DB=default
Environment=CLICKHOUSE_USER=clickhouse
Environment=CLICKHOUSE_PASSWORD=clickhouse
User=101:101
Image=docker.io/clickhouse/clickhouse-server
Volume=langfuse-clickhouse_data.volume:/var/lib/clickhouse
Volume=langfuse-clickhouse_logs.volume:/var/log/clickhouse-server
HealthCmd=wget --no-verbose --tries=1 --spider http://localhost:8123/ping
HealthInterval=5s
HealthTimeout=5s
HealthRetries=10
HealthStartPeriod=1s
[Service]
Restart=always
[Install]
WantedBy=default.target
@@ -0,0 +1,5 @@
[Volume]
VolumeName=langfuse_clickhouse_data
[Install]
WantedBy=default.target
@@ -0,0 +1,5 @@
[Volume]
VolumeName=langfuse_clickhouse_logs
[Install]
WantedBy=default.target
@@ -0,0 +1,20 @@
[Container]
Pod=langfuse.pod
ContainerName=langfuse-minio
Environment=MINIO_ROOT_USER=minio
Environment=MINIO_ROOT_PASSWORD=miniosecret
Image=cgr.dev/chainguard/minio
Volume=langfuse-minio_data.volume:/data
Entrypoint=sh
Exec=-c 'mkdir -p /data/langfuse && minio server --address ":9000" --console-address ":9001" /data'
HealthCmd=mc ready local
HealthInterval=1s
HealthTimeout=5s
HealthRetries=5
HealthStartPeriod=1s
[Service]
Restart=always
[Install]
WantedBy=default.target
@@ -0,0 +1,5 @@
[Volume]
VolumeName=langfuse_minio_data
[Install]
WantedBy=default.target
@@ -0,0 +1,20 @@
[Container]
Pod=langfuse.pod
ContainerName=langfuse-postgres
Environment=POSTGRES_USER=postgres
Environment=POSTGRES_PASSWORD=postgres
Environment=POSTGRES_DB=postgres
Environment=TZ=UTC
Environment=PGTZ=UTC
Image=docker.io/postgres:17
Volume=langfuse-postgres_data.volume:/var/lib/postgresql/data
HealthCmd=pg_isready -U postgres
HealthInterval=3s
HealthTimeout=3s
HealthRetries=10
[Service]
Restart=always
[Install]
WantedBy=default.target
@@ -0,0 +1,5 @@
[Volume]
VolumeName=langfuse_postgres_data
[Install]
WantedBy=default.target
@@ -0,0 +1,17 @@
[Container]
Pod=langfuse.pod
ContainerName=langfuse-redis
Environment=REDIS_AUTH=myredissecret
Image=docker.io/redis:7
Volume=langfuse-redis_data.volume:/data
Exec=--requirepass myredissecret --maxmemory-policy noeviction
HealthCmd=redis-cli ping
HealthInterval=3s
HealthTimeout=10s
HealthRetries=10
[Service]
Restart=always
[Install]
WantedBy=default.target
@@ -0,0 +1,5 @@
[Volume]
VolumeName=langfuse_redis_data
[Install]
WantedBy=default.target
@@ -0,0 +1,71 @@
[Unit]
Requires=langfuse-postgres.service langfuse-clickhouse.service langfuse-redis.service langfuse-minio.service
[Container]
Pod=langfuse.pod
ContainerName=langfuse-web
Environment=NEXTAUTH_URL=http://localhost:3000
Environment=DATABASE_URL=postgresql://postgres:postgres@localhost:5432/postgres
Environment=SALT=mysalt
Environment=ENCRYPTION_KEY=0000000000000000000000000000000000000000000000000000000000000000
Environment=TELEMETRY_ENABLED=true
Environment=LANGFUSE_ENABLE_EXPERIMENTAL_FEATURES=false
Environment=CLICKHOUSE_MIGRATION_URL=clickhouse://localhost:9000
Environment=CLICKHOUSE_URL=http://localhost:8123
Environment=CLICKHOUSE_USER=clickhouse
Environment=CLICKHOUSE_PASSWORD=clickhouse
Environment=CLICKHOUSE_CLUSTER_ENABLED=false
Environment=LANGFUSE_USE_AZURE_BLOB=false
Environment=LANGFUSE_USE_OCI_NATIVE_OBJECT_STORAGE=false
Environment=LANGFUSE_OCI_AUTH_TYPE=workload_identity
Environment=LANGFUSE_S3_EVENT_UPLOAD_BUCKET=langfuse
Environment=LANGFUSE_S3_EVENT_UPLOAD_REGION=auto
Environment=LANGFUSE_S3_EVENT_UPLOAD_ACCESS_KEY_ID=minio
Environment=LANGFUSE_S3_EVENT_UPLOAD_SECRET_ACCESS_KEY=miniosecret
Environment=LANGFUSE_S3_EVENT_UPLOAD_ENDPOINT=http://localhost:9000
Environment=LANGFUSE_S3_EVENT_UPLOAD_FORCE_PATH_STYLE=true
Environment=LANGFUSE_S3_EVENT_UPLOAD_PREFIX=events/
Environment=LANGFUSE_S3_MEDIA_UPLOAD_BUCKET=langfuse
Environment=LANGFUSE_S3_MEDIA_UPLOAD_REGION=auto
Environment=LANGFUSE_S3_MEDIA_UPLOAD_ACCESS_KEY_ID=minio
Environment=LANGFUSE_S3_MEDIA_UPLOAD_SECRET_ACCESS_KEY=miniosecret
Environment=LANGFUSE_S3_MEDIA_UPLOAD_ENDPOINT=http://localhost:9090
Environment=LANGFUSE_S3_MEDIA_UPLOAD_FORCE_PATH_STYLE=true
Environment=LANGFUSE_S3_MEDIA_UPLOAD_PREFIX=media/
Environment=LANGFUSE_S3_BATCH_EXPORT_ENABLED=false
Environment=LANGFUSE_S3_BATCH_EXPORT_BUCKET=langfuse
Environment=LANGFUSE_S3_BATCH_EXPORT_PREFIX=exports/
Environment=LANGFUSE_S3_BATCH_EXPORT_REGION=auto
Environment=LANGFUSE_S3_BATCH_EXPORT_ENDPOINT=http://localhost:9000
Environment=LANGFUSE_S3_BATCH_EXPORT_EXTERNAL_ENDPOINT=http://localhost:9090
Environment=LANGFUSE_S3_BATCH_EXPORT_ACCESS_KEY_ID=minio
Environment=LANGFUSE_S3_BATCH_EXPORT_SECRET_ACCESS_KEY=miniosecret
Environment=LANGFUSE_S3_BATCH_EXPORT_FORCE_PATH_STYLE=true
Environment=LANGFUSE_INGESTION_QUEUE_DELAY_MS=
Environment=LANGFUSE_INGESTION_CLICKHOUSE_WRITE_INTERVAL_MS=
Environment=REDIS_HOST=localhost
Environment=REDIS_PORT=6379
Environment=REDIS_AUTH=myredissecret
Environment=REDIS_TLS_ENABLED=false
Environment=REDIS_TLS_CA=/certs/ca.crt
Environment=REDIS_TLS_CERT=/certs/redis.crt
Environment=REDIS_TLS_KEY=/certs/redis.key
Environment=EMAIL_FROM_ADDRESS=
Environment=SMTP_CONNECTION_URL=
Environment=NEXTAUTH_SECRET=mysecret
Environment=LANGFUSE_INIT_ORG_ID=
Environment=LANGFUSE_INIT_ORG_NAME=
Environment=LANGFUSE_INIT_PROJECT_ID=
Environment=LANGFUSE_INIT_PROJECT_NAME=
Environment=LANGFUSE_INIT_PROJECT_PUBLIC_KEY=
Environment=LANGFUSE_INIT_PROJECT_SECRET_KEY=
Environment=LANGFUSE_INIT_USER_EMAIL=admin@ducoterra.net
Environment=LANGFUSE_INIT_USER_NAME=admin
Environment=LANGFUSE_INIT_USER_PASSWORD=testpass
Image=docker.io/langfuse/langfuse:3
[Service]
Restart=always
[Install]
WantedBy=default.target
@@ -0,0 +1,61 @@
[Unit]
Requires=langfuse-postgres.service langfuse-clickhouse.service langfuse-redis.service langfuse-minio.service
[Container]
Pod=langfuse.pod
ContainerName=langfuse-worker
Environment=NEXTAUTH_URL=http://localhost:3000
Environment=DATABASE_URL=postgresql://postgres:postgres@localhost:5432/postgres
Environment=SALT=mysalt
Environment=ENCRYPTION_KEY=0000000000000000000000000000000000000000000000000000000000000000
Environment=TELEMETRY_ENABLED=true
Environment=LANGFUSE_ENABLE_EXPERIMENTAL_FEATURES=false
Environment=CLICKHOUSE_MIGRATION_URL=clickhouse://localhost:9000
Environment=CLICKHOUSE_URL=http://localhost:8123
Environment=CLICKHOUSE_USER=clickhouse
Environment=CLICKHOUSE_PASSWORD=clickhouse
Environment=CLICKHOUSE_CLUSTER_ENABLED=false
Environment=LANGFUSE_USE_AZURE_BLOB=false
Environment=LANGFUSE_USE_OCI_NATIVE_OBJECT_STORAGE=false
Environment=LANGFUSE_OCI_AUTH_TYPE=workload_identity
Environment=LANGFUSE_S3_EVENT_UPLOAD_BUCKET=langfuse
Environment=LANGFUSE_S3_EVENT_UPLOAD_REGION=auto
Environment=LANGFUSE_S3_EVENT_UPLOAD_ACCESS_KEY_ID=minio
Environment=LANGFUSE_S3_EVENT_UPLOAD_SECRET_ACCESS_KEY=miniosecret
Environment=LANGFUSE_S3_EVENT_UPLOAD_ENDPOINT=http://localhost:9000
Environment=LANGFUSE_S3_EVENT_UPLOAD_FORCE_PATH_STYLE=true
Environment=LANGFUSE_S3_EVENT_UPLOAD_PREFIX=events/
Environment=LANGFUSE_S3_MEDIA_UPLOAD_BUCKET=langfuse
Environment=LANGFUSE_S3_MEDIA_UPLOAD_REGION=auto
Environment=LANGFUSE_S3_MEDIA_UPLOAD_ACCESS_KEY_ID=minio
Environment=LANGFUSE_S3_MEDIA_UPLOAD_SECRET_ACCESS_KEY=miniosecret
Environment=LANGFUSE_S3_MEDIA_UPLOAD_ENDPOINT=http://localhost:9090
Environment=LANGFUSE_S3_MEDIA_UPLOAD_FORCE_PATH_STYLE=true
Environment=LANGFUSE_S3_MEDIA_UPLOAD_PREFIX=media/
Environment=LANGFUSE_S3_BATCH_EXPORT_ENABLED=false
Environment=LANGFUSE_S3_BATCH_EXPORT_BUCKET=langfuse
Environment=LANGFUSE_S3_BATCH_EXPORT_PREFIX=exports/
Environment=LANGFUSE_S3_BATCH_EXPORT_REGION=auto
Environment=LANGFUSE_S3_BATCH_EXPORT_ENDPOINT=http://localhost:9000
Environment=LANGFUSE_S3_BATCH_EXPORT_EXTERNAL_ENDPOINT=http://localhost:9090
Environment=LANGFUSE_S3_BATCH_EXPORT_ACCESS_KEY_ID=minio
Environment=LANGFUSE_S3_BATCH_EXPORT_SECRET_ACCESS_KEY=miniosecret
Environment=LANGFUSE_S3_BATCH_EXPORT_FORCE_PATH_STYLE=true
Environment=LANGFUSE_INGESTION_QUEUE_DELAY_MS=
Environment=LANGFUSE_INGESTION_CLICKHOUSE_WRITE_INTERVAL_MS=
Environment=REDIS_HOST=localhost
Environment=REDIS_PORT=6379
Environment=REDIS_AUTH=myredissecret
Environment=REDIS_TLS_ENABLED=false
Environment=REDIS_TLS_CA=/certs/ca.crt
Environment=REDIS_TLS_CERT=/certs/redis.crt
Environment=REDIS_TLS_KEY=/certs/redis.key
Environment=EMAIL_FROM_ADDRESS=
Environment=SMTP_CONNECTION_URL=
Image=docker.io/langfuse/langfuse-worker:3
[Service]
Restart=always
[Install]
WantedBy=default.target
@@ -0,0 +1,5 @@
[Network]
IPv6=true
[Install]
WantedBy=default.target
@@ -0,0 +1,12 @@
[Pod]
PublishPort=3000:3000/tcp
PublishPort=127.0.0.1:3030:3030/tcp
PublishPort=127.0.0.1:8123:8123/tcp
PublishPort=127.0.0.1:9000:9000/tcp
PublishPort=9090:9000/tcp
PublishPort=127.0.0.1:9091:9001/tcp
PublishPort=127.0.0.1:6379:6379/tcp
PublishPort=127.0.0.1:5432:5432/tcp
[Install]
WantedBy=default.target