Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.speckle.systems/llms.txt

Use this file to discover all available pages before exploring further.

Overview

SSL certificates encrypt communication between clients and the server.

Development

Generate a self-signed certificate:
# Generate private key and certificate
openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Configure in .env:
SSL_ENABLED=true
SSL_KEY_PATH=./server.key
SSL_CERT_PATH=./server.crt

Production

# Install certbot
sudo apt install certbot

# Obtain certificate
sudo certbot certonly --standalone -d your-domain.com

# Configure
SSL_ENABLED=true
SSL_KEY_PATH=/etc/letsencrypt/live/your-domain.com/privkey.pem
SSL_CERT_PATH=/etc/letsencrypt/live/your-domain.com/fullchain.pem

Auto-renewal

# Add to crontab
0 12 * * * /usr/bin/certbot renew --quiet

Docker with Nginx

version: '3.8'
services:
  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
      - /etc/letsencrypt:/etc/letsencrypt:ro

  speckle-server:
    image: speckle/speckle-server
    environment:
      - SSL_ENABLED=false  # Let nginx handle SSL

Environment Variables

VariableDescription
SSL_ENABLEDEnable SSL/TLS
SSL_KEY_PATHPath to private key
SSL_CERT_PATHPath to certificate
SSL_CA_PATHPath to CA certificate (optional)
Last modified on January 28, 2026