Skip to main content

System requirements

Before installing Joystick IoT platform, ensure your system meets the following requirements:
  • Docker Engine 20.10 or later
  • Docker Compose 2.0 or later
  • At least 4GB of available RAM
  • 10GB of free disk space
  • Linux, macOS, or Windows with WSL2

Prerequisites

1

Install Docker

Download and install Docker Desktop from docker.com or install Docker Engine on your server.Verify Docker is installed correctly:
docker --version
docker-compose --version
2

Verify Docker is running

Check that Docker daemon is running:
docker ps
You should see an empty list of containers or existing containers without errors.
3

Clone the repository

Clone the Joystick IoT platform repository:
git clone https://github.com/skylineagle/joystick.git
cd joystick
4

Configure environment variables

Create a .env file in the root directory or set the HOST environment variable:
export HOST=localhost
For production deployments, set this to your domain name:
export HOST=joystick.yourdomain.com
See the configuration page for more details on environment variables.

Installation

1

Pull Docker images

Pull the latest Docker images from GitHub Container Registry:
docker-compose pull
This will download all required service images:
  • Traefik (reverse proxy)
  • PocketBase (database)
  • MediaMTX (video streaming)
  • Joystick API
  • Panel UI
  • Baker service
  • Switcher service
  • Whisper service
  • Studio UI
  • Dozzle (log viewer)
2

Start the services

Start all services using Docker Compose:
docker-compose up -d
The -d flag runs containers in detached mode (background).
3

Verify services are running

Check that all containers are running:
docker-compose ps
All services should show a “running” status.
4

Access the platform

Open your browser and navigate to:
  • Main application: http://localhost
  • PocketBase admin: http://localhost:8090/_/
  • Traefik dashboard: http://localhost:8080
  • Dozzle logs: http://localhost:8084

Platform-specific installation

Linux

For Linux deployments, use the docker-compose.linux.yml file which uses host networking for better performance:
docker-compose -f docker-compose.linux.yml up -d
This configuration uses network_mode: host for all services, allowing direct network access without Docker’s bridge network overhead.

Development environment

For local development with mounted volumes and live code changes:
docker-compose -f docker-compose.dev.yml up -d
This configuration:
  • Mounts local code directories as volumes
  • Exposes additional ports for debugging
  • Uses the development PocketBase image with hooks and migrations mounted

Post-installation

After installation:
  1. Create your first admin user in PocketBase at http://localhost:8090/_/
  2. Configure authentication and API keys (see security)
  3. Set up monitoring and logging (see monitoring)
  4. Review security best practices (see security)

Updating

To update to the latest version:
docker-compose pull
docker-compose up -d
Docker Compose will automatically recreate containers with updated images while preserving data volumes.

Uninstallation

To stop and remove all containers:
docker-compose down
To also remove volumes (this will delete all data):
docker-compose down -v

Build docs developers (and LLMs) love