various updates
This commit is contained in:
@@ -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
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user