FleetbaseFleetbase
PlatformQuickstart

Infrastructure Sizing

Reference architecture, sizing assumptions, and production bill of quantities for self-hosted and on-premise Fleetbase deployments.

Infrastructure Sizing

This guide gives infrastructure teams a practical baseline for planning self-hosted, private cloud, or on-premise Fleetbase deployments. Treat these numbers as planning guidance, not a fixed benchmark. Final sizing depends on active vehicles and devices, active drivers, order volume, telemetry frequency, concurrent users, custom extensions, uploaded media, integration traffic, and retention policy.

Fleetbase does not require GPU resources for the core platform. GPU capacity is only relevant if you run separate AI, computer vision, route optimization, or analytics workloads outside the standard Fleetbase application stack.

Reference Stack

Fleetbase production deployments are built from these core services:

ComponentPurposeProduction notes
Fleetbase APILaravel/Octane backend, REST API, internal APIs, webhooks, reports, and extension server packagesRun as horizontally scalable containers behind an ingress or load balancer
Fleetbase ConsoleEmber.js web console and extension enginesServe as static assets through the console container, CDN, or reverse proxy
MySQL 8Primary transactional databaseUse managed MySQL or an HA MySQL cluster with automated backups and point-in-time recovery
RedisCache, sessions, and queue backendUse managed Redis or a Redis HA deployment with persistence where supported
Queue workersAsync processing for webhooks, imports, reports, notifications, and scheduled workScale independently from API replicas based on queue depth and job latency
SchedulerLaravel scheduled tasks and maintenance jobsRun one active scheduler per environment
SocketClusterWebSocket server for live maps, status updates, chat, and real-time console eventsExpose through WebSocket-aware ingress with restricted origins
Object storageDocuments, media, proof of delivery, imports, exports, and backupsUse S3-compatible storage, GCS, Azure Blob via S3 gateway, MinIO, or equivalent
External servicesMaps, geocoding, routing, SMS, email, push notifications, error monitoringAllow only the outbound endpoints required by the enabled features

The default Docker Compose stack is suitable for development, testing, evaluation, and small self-hosted deployments. For enterprise production, use Kubernetes or an equivalent orchestrator so the API, queue workers, WebSocket tier, and backing services can be scaled and upgraded independently.

Environment Tiers

EnvironmentBaseline purposeMinimum sizingRecommended sizing
DevelopmentLocal developer testing and extension work4 CPU cores, 8 GB RAM, 40 GB SSD on a workstation or VM6-8 CPU cores, 16 GB RAM, 80 GB SSD
TestingQA, automated tests, demo data, integration validation2 vCPU, 4 GB RAM, 60 GB SSD4 vCPU, 8 GB RAM, 100 GB SSD
StagingProduction-like release validation and customer UAT4 vCPU, 8 GB RAM, 150 GB SSD plus external MySQL/Redis/object storage2 API replicas, external MySQL/Redis, 250 GB storage, production-like DNS/TLS
Minimum productionSmall production or pilot deployment1 Docker host with 4 vCPU, 16 GB RAM, 200 GB SSD, external backups2 application hosts or small Kubernetes cluster, managed MySQL/Redis, object storage
Enterprise productionHA deployment for large fleets and regulated operationsKubernetes HA baseline with external MySQL, Redis, object storage, logging, monitoring, backupsKubernetes HA sized for workload, multi-AZ backing services, tested DR runbooks

For production, avoid running database, Redis, application containers, file storage, and backups all on the same VM unless the deployment is a limited pilot with accepted downtime risk.

Sizing Drivers

Fleetbase deployments should be sized from workload shape, not a single headline metric. Vehicle count matters, but it is only one input. A fleet with modest telemetry and low order throughput can need less infrastructure than a smaller operation with dense telemetry, heavy imports, many dispatchers, or long retention requirements.

DriverWhy it mattersPlanning input to collect
Active vehicles and devicesDrives telemetry/event ingest, live map activity, and device-history storageRegistered vehicles, active vehicles per shift, devices per vehicle, provider payload size
Active driversDrives mobile/API sessions, location updates, notifications, and dispatch activityConcurrent drivers, shift patterns, Navigator app usage, notification volume
Orders per dayDrives API writes, workflow activity, route data, proof records, and customer-facing updatesAverage and peak daily orders, status-change frequency, proof-of-delivery requirements
Telemetry interval and payload sizeDrives the highest-volume time-series style workload in many deploymentsUpdate interval, average payload size, burst behavior, raw-history retention
Concurrent console/API usersDrives API concurrency, query load, real-time subscriptions, and browser sessionsDispatchers, admins, support users, customer portal users, API clients
Webhook and integration trafficDrives queue throughput, retries, outbound HTTP load, and logsWebhook endpoints, retry policy, third-party SLAs, integration batch sizes
Uploaded media and documentsDrives object storage, CDN needs, malware scanning, backup size, and lifecycle rulesProof photos, driver documents, imports, exports, attachments, average file size
Retention and backup policyDrives database size, object storage, log storage, backup storage, and restore timeHot retention, archive retention, RTO, RPO, compliance requirements

Use these workload profiles as a starting point, then adjust each tier using the formulas below.

ProfileTypical shapeInfrastructure posture
Pilot / small productionLimited users, moderate order volume, low-to-moderate telemetry, short retentionDocker Compose or small Kubernetes deployment with managed MySQL/Redis preferred
Growing productionMultiple teams, daily operational use, integrations, regular imports/exports, expanding telemetryKubernetes or equivalent orchestration, separate workers, external MySQL/Redis, object storage
Large / enterprise productionHigh concurrent usage, dense telemetry, high order throughput, strict SLAs, long retention, many integrationsHA Kubernetes, horizontally scaled API/workers/WebSockets, HA database/cache, observability, DR runbooks

Use Kubernetes for production environments that require high availability, rolling upgrades, operational isolation, and clear scaling paths.

flowchart TD
  users["Console users and API clients"] --> dns["DNS and TLS"]
  dns --> ingress["Ingress / load balancer"]
  ingress --> console["Fleetbase Console"]
  ingress --> api["Fleetbase API replicas"]
  ingress --> socket["SocketCluster replicas"]
  api --> mysql["MySQL 8 HA"]
  api --> redis["Redis HA"]
  api --> object["Object storage"]
  api --> queue["Queue workers"]
  scheduler["Scheduler"] --> redis
  scheduler --> mysql
  queue --> mysql
  queue --> redis
  queue --> object
  api --> external["Maps, routing, mail, SMS, Sentry"]

Recommended production characteristics:

  • Use at least three Kubernetes worker nodes or a managed Kubernetes control plane with three or more workers.
  • Run two or more API replicas and scale horizontally based on CPU, memory, request latency, and queue pressure.
  • Run queue workers separately from API replicas so imports, webhooks, reports, notifications, and long-running jobs do not consume request capacity.
  • Run one scheduler replica with leader-election or operational controls that prevent duplicate scheduled tasks.
  • Run SocketCluster behind a WebSocket-aware ingress. If multiple replicas are used, validate sticky routing and event fanout behavior for your load balancer.
  • Keep MySQL, Redis, and object storage outside ephemeral application pods.
  • Use private subnets for database, Redis, and internal services; expose only HTTPS and approved WebSocket endpoints publicly.

Bill of Quantities

Minimum Production

Use this for pilots, small fleets, and self-managed production where short maintenance windows are acceptable.

ItemQuantityRecommended spec
Application host or worker node1-24-8 vCPU, 16-32 GB RAM, 200+ GB SSD
Fleetbase API1-2 replicas1-2 vCPU and 2-4 GB RAM per replica
Queue worker1 replica1 vCPU and 1-2 GB RAM
Scheduler1 replica0.5-1 vCPU and 512 MB-1 GB RAM
SocketCluster1 replica1 vCPU and 1-2 GB RAM
MySQL 81 primary4 vCPU, 16 GB RAM, 200+ GB SSD with automated backups
Redis1 instance1-2 vCPU, 2-4 GB RAM
Object storage1 bucket or volume100 GB initial allocation, lifecycle policy enabled
Load balancer / reverse proxy1HTTPS termination, WebSocket support
Backup storage1 target30+ days database backup retention plus file backup policy

Large Production Reference

Use this as a starting point for high-volume operations with many active vehicles/devices, drivers, orders, integrations, real-time users, and longer retention requirements. Increase or decrease each component based on the actual sizing drivers above.

ItemQuantityRecommended spec
Kubernetes worker nodes3-58-16 vCPU, 32-64 GB RAM per node, autoscaling enabled where available
Fleetbase API3-6 replicas2 vCPU and 4-8 GB RAM per replica
Fleetbase Console2 replicas or static hosting0.5-1 vCPU and 512 MB-1 GB RAM per replica
Queue workers3-8 replicas1-2 vCPU and 2-4 GB RAM per replica
Scheduler1 active replica1 vCPU and 1 GB RAM
SocketCluster2-4 replicas2 vCPU and 4 GB RAM per replica, sticky/WebSocket routing validated
MySQL 8 HA1 primary plus 1-2 replicas16-32 vCPU, 64-128 GB RAM, 2-6 TB provisioned SSD to start
Redis HA3 nodes or managed HA tier4-8 vCPU total, 16-32 GB RAM total
Object storage1 replicated bucket1-3 TB initial allocation for files, exports, proof media, and backups
Observability stack1 production deploymentMetrics, logs, traces/errors, dashboards, alerting, and long-term retention
Backup storage1 isolated targetDatabase PITR, daily snapshots, object-storage versioning, restore-tested
Load balancer / ingress2+ zones or managed serviceHTTPS, WebSocket upgrade support, health checks, WAF optional
Private registry1Fleetbase images and any customer-specific extension images

Sizing Formulas

Use these formulas to refine the bill of quantities once the customer provides usage data.

Telemetry and device events

events_per_day = active_vehicles * (86400 / telemetry_interval_seconds)
raw_storage_per_day = events_per_day * average_event_size_bytes
database_storage = raw_storage_per_day * retention_days * index_and_overhead_factor

For planning, use an index and overhead factor of 2.5 to 4.0 for JSON payloads, spatial indexes, secondary indexes, row metadata, and soft-delete overhead.

Illustrative telemetry examples:

Active vehicles/devicesTelemetry intervalEvents per dayEvents per year
25060 seconds360,000131.4 million
1,00030 seconds2.88 million1.05 billion
5,00030 seconds14.4 million5.26 billion
10,00015 seconds57.6 million21.02 billion

Storage sensitivity: every extra 500 bytes per stored event adds about 183 GB/year per 1 million events/day before index overhead. Apply the index and overhead factor above to estimate database allocation.

If full-fidelity telemetry must be retained for 12 months, consider partitioning, archival tables, or moving raw telemetry history to purpose-built analytics storage while keeping recent operational state in MySQL.

Orders and workflow data

order_storage = orders_per_day * average_order_record_size * retention_days * overhead_factor

Order data usually grows more slowly than telemetry, but custom fields, activity logs, route data, proof records, and integration payloads can increase per-order storage significantly.

Files, documents, and media

file_storage = uploads_per_day * average_file_size * retention_days
backup_storage = file_storage * versioning_or_backup_multiplier

Proof of delivery photos, driver documents, import files, exports, invoice PDFs, and attachments should live in object storage, not local container storage. Use lifecycle rules for archive and deletion.

Logs and backups

log_storage = daily_log_volume * log_retention_days
backup_storage = database_size * backup_retention_factor + object_storage_backup_delta

Production deployments should retain application logs centrally, store database backups separately from the database cluster, and periodically test restore procedures.

Network Requirements

FlowProtocol / portNotes
Users to Console/APIHTTPS 443Public or private ingress, TLS required
Browser to SocketClusterWSS 443WebSocket upgrade support required
Admin SSH / bastionSSH 22 or corporate standardRestrict by VPN, bastion, or privileged access workflow
API to MySQLTCP 3306Private network only
API / workers to RedisTCP 6379Private network only
API / workers to object storageHTTPS 443S3-compatible or cloud provider endpoint
API / workers to mail/SMS/maps/routingHTTPS 443Required only for enabled integrations
Monitoring agents to observability backendHTTPS or vendor-specificFollow your monitoring platform's requirements

Production DNS should provide separate hostnames for the console and API, or one hostname with explicit routing paths. Certificates may come from a public CA, corporate CA, or private PKI depending on network exposure and client policy.

Storage, Retention, and Backups

Data classDefault locationRecommendation
Operational dataMySQLHA MySQL, automated backups, point-in-time recovery, regular restore tests
Cache and queuesRedisHA Redis for production, memory alarms, eviction policy reviewed
Uploads and documentsObject storageS3-compatible bucket, encryption, lifecycle rules, versioning where required
Telemetry historyMySQL by defaultDefine retention before launch; archive high-volume history if 12+ months are required
Application logsContainer logs and central log backendCentralize logs with 30-90 days hot retention, longer archive if required
Database backupsBackup bucket or managed backup serviceDaily snapshots plus PITR for production; isolate backup credentials

Suggested production targets:

TargetRecommended baseline
RPO15 minutes to 1 hour for enterprise production, depending on MySQL backup/PITR capability
RTO4 hours for standard HA production; shorter targets require warm standby and rehearsed failover
Backup retention30 days minimum, longer for regulated environments
Restore testsAt least quarterly and before major upgrades

Security and Operations

Production environments should include:

  • TLS everywhere for browser, API, and WebSocket traffic.
  • Private networking for MySQL, Redis, object storage endpoints, and internal service traffic.
  • Kubernetes secrets, sealed secrets, cloud secret manager, Vault, or equivalent for credentials.
  • Per-environment credentials and key rotation for database users, object storage, mail, SMS, maps, and registry access.
  • RBAC for Kubernetes, cloud accounts, Fleetbase users, and extension administration.
  • SSO or corporate identity integration where required by the customer security model.
  • Encryption at rest for database volumes, object storage, backups, and log archives.
  • Vulnerability scanning for container images, host packages, dependencies, and customer-specific extensions.
  • Antivirus or malware scanning for uploaded files if required by policy.
  • WAF, rate limiting, IP allowlists, or VPN/private access for admin-only deployments.

Monitor and alert on:

  • API request latency, error rate, memory, CPU, and replica health.
  • Queue depth, job failure rate, and oldest pending job age.
  • Scheduler health and missed scheduled tasks.
  • SocketCluster connection count, publish failures, and rejected origins.
  • MySQL CPU, memory, storage, replication lag, slow queries, lock waits, and connection usage.
  • Redis memory, evictions, connection usage, and command latency.
  • Object storage errors, backup completion, backup age, and restore test status.
  • Certificate expiration, DNS health, ingress errors, and external integration failures.

Commercial and Licensing References

Infrastructure sizing is separate from commercial licensing. For current commercial terms, use the website pages as the source of truth:

TopicReference
Self-hosted implementation and support pricingPricing
Managed installation serviceInstallation Service
AGPL and commercial license overviewLicensing
Proprietary, SaaS, OEM, and white-label licensingCommercial License
Support plans and SLA languageSupport Plans
Formal service termsTerms of Service

Use the AGPL-3.0 license for open-source self-hosting unless the deployment requires proprietary modifications, SaaS distribution without releasing modifications, OEM/white-label rights, or commercial license terms negotiated with Fleetbase.

Sizing Inputs Needed

Before finalizing infrastructure, collect:

  • Number of active vehicles and total registered vehicles.
  • Number of active drivers and driver shift patterns.
  • Telemetry interval, average payload size, and expected connected-device providers.
  • Required telemetry, order, log, file, and backup retention periods.
  • Daily and peak orders, API transactions, imports, exports, and webhook traffic.
  • Expected concurrent console users, dispatchers, drivers, and customer portal users.
  • Average and peak uploaded media volume.
  • Required RTO, RPO, maintenance windows, and disaster recovery region.
  • Hosting preference: bare metal, VMware, private cloud, AWS, Azure, GCP, or another Kubernetes distribution.
  • Identity provider, SSO requirements, privileged access model, and audit requirements.
  • External connectivity limits for maps, routing, SMS, email, push notifications, registry access, and monitoring.
Infrastructure Sizing | Fleetbase