Sign inSign up

slingdata/sling-platform

By slingdata

•Updated about 19 hours ago

Sling data platform for managing data pipelines, connections, and agents. See https://slingdata.io

Image
Integration & delivery
Databases & storage
0

10K+

slingdata/sling-platform repository overview

⁠Sling Platform Docker Image

The slingdata/sling-platform image provides a self-hosted Sling data platform for managing data pipelines, connections, and agents.

See for more details:

⁠Quick Start

Run below and access on http://localhost:7878⁠:

docker run -d \
  -p 7878:7878 \  # this is the HTTP port
  -p 4443:4443 \  # NATS port for agent communication
  -e SLING_PLATFORM_LICENSE="your-license-key" \
  -e SLING_PLATFORM_ENCRYPTION_KEY="your-32-char-encryption-key" \
  -e SLING_PLATFORM_ADMIN_CREDENTIALS='{"email":"[email protected]","password":"your-secure-password"}' \
  -v sling-platform-data:/home/sling \
  slingdata/sling-platform:latest

⁠Required Environment Variables

  • SLING_PLATFORM_LICENSE - Your Sling Platform license key. This can be either a 36-character UUID for cloud-verified licenses or an offline license token for air-gapped environments.
  • SLING_PLATFORM_ENCRYPTION_KEY - A 32-character encryption key used to encrypt sensitive data like connection credentials. Generate a secure random string.
  • SLING_PLATFORM_ADMIN_CREDENTIALS - JSON payload containing the initial admin user credentials. need email and password keys.

⁠Optional Environment Variables

  • SLING_PLATFORM_HOST - The external URL where your platform will be accessible. This is used for agent connections and web UI access. The default is http://localhost:7878
  • SLING_PLATFORM_SMTP_CREDENTIALS - SMTP configuration for email notifications. If not provided, email notifications will be disabled. For example: {"host":"smtp.gmail.com","port":587,"user":"[email protected]","password":"your-app-password","from":"Sling Platform <[email protected]>"}

⁠Connecting Agents

To connect Sling agents to your platform, use the slingdata/sling image with these environment variables:

docker run -d \
  -e SLING_PLATFORM_HOST="http://your-platform-host:7878" \
  -e SLING_AGENT_KEY="your-agent-key-from-platform-ui" \
  -v sling-agent-data:/home/sling \
  slingdata/sling agent run
⁠Agent Environment Variables
  • SLING_AGENT_KEY - Agent authentication key obtained from the platform UI under Agents section
  • SLING_PLATFORM_HOST - Same URL as your platform instance
  • SLING_PLATFORM_HOST_WS - Optional, the web-socket host to use for NATS connection, e.g. ws://your-platform-host:4443. Default uses the same host as SLING_PLATFORM_HOST.

⁠Docker Compose Example

services:
  sling-platform:
    image: slingdata/sling-platform
    ports:
      - "7878:7878"  # HTTP port for UI and API
      - "4443:4443"  # NATS WebSocket port for agent communication
    expose:
      - "7878"
      - "4443"
    environment:
      SLING_PLATFORM_LICENSE: "your-license-key"
      SLING_PLATFORM_ENCRYPTION_KEY: "your-32-char-encryption-key"
      SLING_PLATFORM_ADMIN_CREDENTIALS: '{"email":"[email protected]","password":"secure-password"}'
      SLING_PLATFORM_HOST: "http://external.ip:7878"  # External URL for web UI access
      SLING_PLATFORM_SMTP_CREDENTIALS: '{"host":"smtp.gmail.com","port":587,"user":"your-email","password":"your-password","from":"Sling <[email protected]>"}'
    volumes:
      - sling-platform-data:/home/sling
    restart: unless-stopped

  sling-agent:
    image: slingdata/sling:latest
    environment:
      SLING_PLATFORM_HOST: "http://sling-platform:7878"  # Internal container communication
      SLING_AGENT_KEY: "your-agent-key"
    command: agent run
    volumes:
      - sling-agent-data:/home/sling
    depends_on:
      - sling-platform
    restart: unless-stopped

volumes:
  sling-platform-data:
  sling-agent-data:

⁠Ports

  • 7878 - Main HTTP port for web UI and API access
  • 4443 - Web-Socket port for agent communication (via NATS)

⁠Volumes

  • /home/sling - Platform data directory.

⁠Getting Started

  1. Start the platform container with required environment variables
  2. Access the web UI at your configured SLING_PLATFORM_HOST
  3. Log in with your admin credentials
  4. Create agent keys in the Agents section
  5. Deploy agents using the slingdata/sling image
  6. Start creating connections and data pipelines

⁠Security Notes

  • Use strong, unique values for SLING_PLATFORM_ENCRYPTION_KEY
  • Store sensitive environment variables securely
  • Use HTTPS in production environments
  • Regularly update your license and credentials
  • Ensure proper network security for agent communications

⁠Support

For documentation and support, visit https://docs.slingdata.io⁠

⁠Kubernetes

# Namespace
apiVersion: v1
kind: Namespace
metadata:
  name: sling-platform
---
# ConfigMap for environment variables
apiVersion: v1
kind: ConfigMap
metadata:
  name: sling-platform-config
  namespace: sling-platform
data:
  SLING_PLATFORM_HOST: "http://external.ip:8080"  # Update with your actual external IP/domain
---
# Secret for sensitive environment variables
apiVersion: v1
kind: Secret
metadata:
  name: sling-platform-secrets
  namespace: sling-platform
type: Opaque
stringData:
  SLING_PLATFORM_LICENSE: "your-license-key"
  SLING_PLATFORM_ENCRYPTION_KEY: "your-32-char-encryption-key"
  SLING_PLATFORM_ADMIN_CREDENTIALS: '{"email":"[email protected]","password":"secure-password"}'
  SLING_PLATFORM_SMTP_CREDENTIALS: '{"host":"smtp.gmail.com","port":587,"user":"your-email","password":"your-password","from":"Sling <[email protected]>"}'
  SLING_AGENT_KEY: "your-agent-key"
---
# PersistentVolumeClaim for platform data
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: sling-platform-data
  namespace: sling-platform
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  # storageClassName: your-storage-class  # Uncomment and specify if needed
---
# PersistentVolumeClaim for agent data
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: sling-agent-data
  namespace: sling-platform
spec:
  accessModes:
    - ReadWriteMany  # Multiple agents can share this volume
  resources:
    requests:
      storage: 5Gi
  # storageClassName: your-storage-class  # Uncomment and specify if needed
---
# Sling Platform Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  name: sling-platform
  namespace: sling-platform
  labels:
    app: sling-platform
spec:
  replicas: 1
  selector:
    matchLabels:
      app: sling-platform
  template:
    metadata:
      labels:
        app: sling-platform
    spec:
      containers:
      - name: sling-platform
        image: slingdata/sling-platform:latest
        ports:
        - containerPort: 7878
          name: http
          protocol: TCP
        - containerPort: 4443
          name: nats
          protocol: TCP
        env:
        - name: SLING_PLATFORM_HOST
          valueFrom:
            configMapKeyRef:
              name: sling-platform-config
              key: SLING_PLATFORM_HOST
        - name: SLING_PLATFORM_LICENSE
          valueFrom:
            secretKeyRef:
              name: sling-platform-secrets
              key: SLING_PLATFORM_LICENSE
        - name: SLING_PLATFORM_ENCRYPTION_KEY
          valueFrom:
            secretKeyRef:
              name: sling-platform-secrets
              key: SLING_PLATFORM_ENCRYPTION_KEY
        - name: SLING_PLATFORM_ADMIN_CREDENTIALS
          valueFrom:
            secretKeyRef:
              name: sling-platform-secrets
              key: SLING_PLATFORM_ADMIN_CREDENTIALS
        - name: SLING_PLATFORM_SMTP_CREDENTIALS
          valueFrom:
            secretKeyRef:
              name: sling-platform-secrets
              key: SLING_PLATFORM_SMTP_CREDENTIALS
              optional: true
        volumeMounts:
        - name: platform-data
          mountPath: /home/sling
        resources:
          requests:
            memory: "512Mi"
            cpu: "250m"
          limits:
            memory: "4Gi"
            cpu: "2"
      volumes:
      - name: platform-data
        persistentVolumeClaim:
          claimName: sling-platform-data
      restartPolicy: Always
---
# Sling Platform Service
apiVersion: v1
kind: Service
metadata:
  name: sling-platform
  namespace: sling-platform
  labels:
    app: sling-platform
spec:
  type: ClusterIP
  ports:
  - port: 7878
    targetPort: 7878
    protocol: TCP
    name: http
  - port: 4443
    targetPort: 4443
    protocol: TCP
    name: nats
  selector:
    app: sling-platform
---
# Sling Agent Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  name: sling-agent
  namespace: sling-platform
  labels:
    app: sling-agent
spec:
  replicas: 1  # Scale as needed
  selector:
    matchLabels:
      app: sling-agent
  template:
    metadata:
      labels:
        app: sling-agent
    spec:
      containers:
      - name: sling-agent
        image: slingdata/sling:latest
        args: ["agent", "run"]
        env:
        - name: SLING_PLATFORM_HOST
          value: "http://sling-platform:7878"
        - name: SLING_AGENT_KEY
          valueFrom:
            secretKeyRef:
              name: sling-platform-secrets
              key: SLING_AGENT_KEY
        volumeMounts:
        - name: agent-data
          mountPath: /home/sling
        resources:
          requests:
            memory: "256Mi"
            cpu: "100m"
          limits:
            memory: "8Gi"
            cpu: "4"
      volumes:
      - name: agent-data
        persistentVolumeClaim:
          claimName: sling-agent-data
      restartPolicy: Always

Tag summary

Content type

Image

Digest

sha256:f9da2374d…

Size

381.7 MB

Last updated

4 days ago

docker pull slingdata/sling-platform