TypedChrono

On-Premise

Enterprise Self-Hosted Deployment

Deploy SchoBase in your own infrastructure with full control over data, security, and compliance. Perfect for air-gapped networks, data sovereignty requirements, and industrial OT environments.

Why Choose On-Premise?

Full Data Control

Keep all data within your infrastructure. No external dependencies, complete control over storage and backups.

Air-Gapped Networks

Deploy in completely isolated networks with no internet connectivity. Perfect for critical infrastructure.

Regulatory Compliance

Meet data sovereignty requirements: GDPR, HIPAA, IEC 62443, NERC CIP, SOC 2, and more.

Enterprise Security

Integrate with Active Directory, LDAP, SAML SSO. Deploy behind your firewall with custom security policies.

IT/OT Segmentation

Proper network segmentation for industrial environments. Isolate OT devices from IT networks.

Low Latency

Deploy close to your devices and sensors. Millisecond-level latency for real-time industrial control.

On-Premise Architecture

Complete stack deployed in your infrastructure with Docker Compose or Kubernetes

Application

TanStack Start web application

Databases

PostgreSQL, TimescaleDB, Redis

Authentication

Keycloak self-hosted auth

MQTT Broker

Eclipse Mosquitto for IoT

Monitoring

Grafana dashboards

Reverse Proxy

Nginx with TLS termination

Orchestration

Docker Compose or K8s

Backup

Automated backup scripts

Network Architecture

┌─────────────────────────────────────────────────────────────┐
│                 Nginx (Reverse Proxy + TLS)                  │
│               Ports: 80 (HTTP) → 443 (HTTPS)                │
└────────────┬───────────────────────────────┬────────────────┘
             │                               │
   ┌─────────▼──────────┐         ┌─────────▼─────────┐
   │   SchoBase App      │         │    Keycloak       │
   │ (TanStack Start)    │         │ (Authentication)  │
   │    Port: 3000       │         │   Port: 8080      │
   └─────────┬───────────┘         └───────────────────┘
             │
   ┌─────────┼─────────────────────────────────────────┐
   │         │         Data Layer                      │
   │   ┌─────▼──────┐   ┌──────────────┐   ┌────────┐│
   │   │ PostgreSQL │   │ TimescaleDB  │   │ Redis  ││
   │   │  (App DB)  │   │(Time Series) │   │(Cache) ││
   │   │Port: 5432  │   │ Port: 5433   │   │Port:   ││
   │   └────────────┘   └──────────────┘   │6379    ││
   │                                        └────────┘│
   └──────────────────────────────────────────────────┘

   ┌──────────────────┐         ┌─────────────────────┐
   │   Mosquitto      │         │      Grafana        │
   │  (MQTT Broker)   │         │   (Dashboards)      │
   │Port: 1883,9001   │         │    Port: 3001       │
   └──────────────────┘         └─────────────────────┘
                ▲
                │
     ┌──────────┴──────────┐
     │  Industrial Devices │
     │  (PLCs, Robots,     │
     │   IoT Sensors)      │
     └─────────────────────┘

Quick Start Guide

Get SchoBase running on-premise in minutes with our automated deployment scripts

Linux / macOS

# Clone the repository
git clone https://github.com/Schotime-PH/schobase-11-9.git
cd schobase-11-9

# Run automated deployment
./deploy-onpremise.sh

# Verify deployment
docker compose ps
curl -k https://localhost/health
Automatically generates secure passwords and TLS certificates

Windows (PowerShell)

# Clone the repository
git clone https://github.com/Schotime-PH/schobase-11-9.git
cd schobase-11-9

# Run PowerShell deployment script
.\deploy-onpremise.ps1

# Verify deployment
docker compose ps
Full Docker Desktop support with automated configuration

Manual Setup

# 1. Copy environment template
cp .env.onpremise.template .env.onpremise

# 2. Edit configuration with your settings
nano .env.onpremise

# 3. Generate TLS certificates (or use existing)
openssl req -x509 -nodes -days 365 -newkey rsa:4096 \
  -keyout nginx/certs/key.pem -out nginx/certs/cert.pem

# 4. Deploy with Docker Compose
docker compose --env-file .env.onpremise up -d

# 5. Configure Keycloak realm and client
# Access https://localhost/auth with admin credentials

# 6. Verify deployment
curl -k https://localhost/health
Full control over configuration
Custom TLS certificates
Advanced security options

Access URLs (Default)

Application

https://localhost

Keycloak Admin

https://localhost/auth

Grafana Dashboards

https://localhost/grafana

MQTT Broker

mqtt://localhost:1883

Industrial Protocol Support

Native integration with industrial automation protocols

OPC UA

  • OPC UA client and server
  • Mutual TLS authentication
  • Subscription support

Modbus TCP/RTU

  • Master/slave communication
  • Register polling
  • Multiple device support

MQTT

  • Eclipse Mosquitto broker
  • WebSocket support
  • QoS 0, 1, 2

DNP3 (SCADA)

  • Master/outstation
  • Event data collection
  • Secure authentication

IEC 61850

  • Substation automation
  • GOOSE messaging
  • MMS protocol

EtherNet/IP

  • Allen-Bradley PLCs
  • CIP protocol
  • Tag-based data access

Enterprise Features Included

Security & Compliance

Authentication

  • • Active Directory / LDAP
  • • SAML 2.0 SSO
  • • OAuth 2.0 / OIDC
  • • Multi-factor authentication

Encryption

  • • TLS 1.3 in transit
  • • AES-256-GCM at rest
  • • Hardware encryption support
  • • Key management (KMS, Vault)

Compliance

  • • GDPR, HIPAA, SOC 2
  • • IEC 62443, NERC CIP
  • • FDA 21 CFR Part 11
  • • Audit logging & SIEM

High Availability

Clustering

  • • Multi-node deployment
  • • Automatic failover
  • • Load balancing
  • • Health monitoring

Data Replication

  • • PostgreSQL streaming
  • • Redis sentinel
  • • Cross-site replication
  • • Conflict resolution

Backup & DR

  • • Automated backups
  • • Point-in-time recovery
  • • Offsite storage
  • • Disaster recovery plan

Performance & Scalability

Ingestion

  • • Millions of points/second
  • • Batch write optimization
  • • Compression & deduplication
  • • Edge buffering

Query Performance

  • • Time-based indexing
  • • Query caching
  • • Parallel execution
  • • Materialized views

Resource Tuning

  • • Connection pooling
  • • Memory optimization
  • • CPU affinity
  • • Storage tiering

System Requirements

Minimum and recommended specifications for on-premise deployment

Minimum (Development/Testing)

CPU4 cores (2.0 GHz)
RAM8 GB
Storage50 GB SSD
Network1 Gbps Ethernet
OSLinux, macOS, Windows
SoftwareDocker 24+, Docker Compose

Recommended (Production)

CPU16+ cores (3.0+ GHz)
RAM32-64 GB
Storage500 GB+ NVMe SSD (RAID 10)
Network10 Gbps (redundant)
OSUbuntu 22.04 LTS, RHEL 8+
OptionalKubernetes, Load Balancer

Storage Sizing Guidelines

Light Usage

  • • 100 sensors @ 1Hz
  • • ~8.6M points/day
  • • ~100 GB/month

Medium Usage

  • • 1,000 sensors @ 10Hz
  • • ~864M points/day
  • • ~1 TB/month

Heavy Usage

  • • 10,000 sensors @ 100Hz
  • • ~86B points/day
  • • ~10 TB/month

Frequently Asked Questions

Can I deploy on-premise without internet access?▼

Yes! SchoBase is designed for air-gapped environments. You'll need to download the Docker images on a machine with internet access, then transfer them to your isolated network. Our deployment scripts support offline installation mode. See ON_PREMISE_DEPLOYMENT.md for details.

How do I integrate with Active Directory?▼

Keycloak (included in the stack) provides native Active Directory / LDAP integration. After deployment, access the Keycloak admin console at https://localhost/auth, create a new federation, and configure your AD server details. Users can then authenticate using their AD credentials.

What's the difference between Docker Compose and Kubernetes deployment?▼

Docker Compose is simpler and perfect for single-server deployments or development. Kubernetes provides advanced features like automatic scaling, rolling updates, and multi-node high availability. For most small-to-medium deployments, Docker Compose is sufficient. Enterprise customers needing 99.99% uptime should use Kubernetes.

How do I backup and restore data?▼

The deployment includes automated backup scripts (`backup.sh`). Configure backup frequency in `.env.onpremise` and set a backup destination. For restore, use the included `restore.sh` script with your backup file. All databases (PostgreSQL, TimescaleDB, Redis) are backed up with point-in-time recovery support.

Can I use my existing TLS certificates?▼

Absolutely! Place your certificate files in `nginx/certs/cert.pem` and `nginx/certs/key.pem`. Update the `TLS_CERT_PATH` and `TLS_KEY_PATH` variables in `.env.onpremise` to point to your files. For Let's Encrypt certificates, use certbot with the webroot plugin and configure nginx accordingly.

What monitoring and observability tools are included?▼

Grafana is included for visualizing metrics and time series data. For application monitoring, you can integrate Prometheus, Loki for logs, and Jaeger for distributed tracing. Enterprise deployments include pre-configured dashboards for system health, database performance, and application metrics.

How do I migrate from cloud to on-premise?▼

Use the included migration tool to export data from your cloud deployment and import it into your on-premise instance. The process involves: 1) Exporting time series data in batches, 2) Deploying on-premise stack, 3) Importing data with parallel workers, 4) Verifying data integrity, 5) Switching DNS/endpoints. Contact enterprise support for migration assistance.

What support options are available for on-premise deployments?▼

Community support is available via GitHub Discussions. Enterprise customers can purchase support contracts with guaranteed SLAs, including 24/7 phone support, dedicated Slack channel, on-site deployment assistance, custom training, and proactive monitoring. Contact enterprise@schobase.dev for pricing.

Common Issues & Troubleshooting

Quick solutions to common deployment problems

Docker Compose fails to start

Solution: Ensure Docker and Docker Compose are updated.

# Check versions
docker --version  # Should be 24.0+
docker compose version  # Should be 2.20+

# View logs
docker compose logs -f

Port already in use

Solution: Change conflicting ports in .env.onpremise

# Find what's using port 443
sudo lsof -i :443

# Change ports in .env.onpremise
NGINX_HTTP_PORT=8080
NGINX_HTTPS_PORT=8443

Database connection errors

Solution: Wait for databases to initialize fully

# Check database status
docker compose ps

# View database logs
docker compose logs postgres
docker compose logs timescaledb

# Restart if needed
docker compose restart postgres

TLS certificate errors

Solution: Regenerate certificates or use existing ones

# Regenerate self-signed cert
openssl req -x509 -nodes -days 365 \
  -newkey rsa:4096 \
  -keyout nginx/certs/key.pem \
  -out nginx/certs/cert.pem

# Restart nginx
docker compose restart nginx

Out of disk space

Solution: Clean Docker volumes or expand storage

# Check disk usage
df -h
docker system df

# Clean up unused images/volumes
docker system prune -a --volumes

# Configure data retention policies

Keycloak admin access issues

Solution: Reset admin password using Docker exec

# Reset Keycloak admin password
docker compose exec keycloak \
  /opt/keycloak/bin/kc.sh \
  user reset-password \
  --username admin

# Or check .env.onpremise for password

Need More Help?

For detailed troubleshooting steps, check the ON_PREMISE_DEPLOYMENT.md file in the repository. Enterprise customers can open support tickets for priority assistance.

Ready to Deploy On-Premise?

Get started with our automated deployment scripts or contact our enterprise team for custom deployment planning and support.

Deploy in minutes
Full documentation
Enterprise support available