Skip to main content

Virtual Machines / LXC Containers

Below are virtual machines we need to configure for use:

Development / Main

  • Grafana (Visualization)
  • PostGres (General Database)
  • Tailscale
  • HAProxy

Staging / Production

  • Redis (Caching)
  • NATS (Message Queuing)
  • QuestDb (Timeseries Database)
  • K3S Server (Kubernetes Server) Proper configuration depends on your hardware and distribution needs

Now you may decide to use different databases and all have their pros and cons. The one you should mostly be aware of is the timeseries databases because each act differently but options include:

  • InfluxDb
  • TimescaleDb
  • QuestDb (We highly recommend QuestDb as they have great support and our platforms are built on this database)

For message queuing, you also have options which may either include using the Redis built in Pub/Sub system or something like Apache Kafka. We recommend NATS because it's fast, efficient, and uses low resources.

Configuration

tip

Requirements will change over time, as you grow, the specs on each virtual machine will change so don't get stuck on getting it right the first time. Again, we like LXC containers because we can scale those resources very easily.

Redis

  • 2 virtual cores
  • 16 GB of RAM
  • 16 GB of disk space

Grafana

  • 2 virtual cores
  • 2 GB of RAM
  • 16 GB of disk space

NATS

  • 2 virtual cores
  • 2 GB of RAM
  • 16 GB of disk space

PostGres

  • 4 virtual cores
  • 4 GB of RAM
  • 128 GB of disk space

QuestDb

  • 8 virtual cores
  • 16 GB of RAM
  • 256 GB of disk space

K3S Server

  • 16 virtual cores
  • 32 GB of RAM
  • 64 GB of disk space

Reserved IP Addresses

It is very important that for each virtual machine, you configure a reserved IP address for each machine. This will ensure no virtual machine IP address conflicts and it will make it easier to find each machine when necessary.