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