Skip to main content

Install with Docker

Prerequisites​

Before starting the installation, ensure the following prerequisites are met:

  • Docker: Docker must be installed on the host machine. Ensure Docker Compose is also available for managing multi-container Docker applications.
  • Git: Required for source code management.
  • Environment: Prepare a production environment, preferably a virtual or dedicated server.
  • Domain Names: Have domain names ready for the API and console, and ensure they are pointed to your server.
  • SSL Certificates: For HTTPS, prepare SSL certificates. You can obtain these from a certificate authority or use Let’s Encrypt for free certificates.

Installation Steps​

1. Clone the Repository​

Start by cloning the Fleetbase repository into a suitable directory on your server:

git clone https://github.com/fleetbase/fleetbase.git && cd fleetbase

2. Configure Docker Containers​

Edit or create a docker-compose.override.yml file to suit production needs. This may involve configuring volumes for persistent data, adjusting environment variables, and ensuring proper network settings are applied. You can also create a api/.env file to configure environment variables for Fleetbase. You can read more about configuration in the configuration section of this guide.

Example for Docker (docker-compose.override.yml):​

This file can be used to overwrite default environment variables which are set in the docker-compose.yml file which ships with Fleetbase.

services:
application:
environment:
- DATABASE_URL=mysql://user:password@db:3306/fleetbase
- REDIS_URL=redis://redis:6379

Example for Source (.env):​

DATABASE_URL=mysql://user:password@localhost:3306/fleetbase
REDIS_URL=redis://localhost:6379

Environment Variables for Fleetbase​

  • APP_URL: The URL where your Fleetbase API is accessible. For development, you might use localhost.
  • CONSOLE_HOST: The URL for the Fleetbase console. This is required for CORS configuration.
  • DATABASE_URL: The full database connection URL, including username, password, host, and database name.
  • STOREFRONT_DB_CONNECTION: The database connection name for the storefront.
  • QUEUE_CONNECTION: Defines the queue backend, which in this case is Redis.
  • CACHE_DRIVER: Specifies Redis as the caching backend.
  • CACHE_PATH: The file path for storing cache files, useful if file-based caching is used.
  • CACHE_URL: The URL for the Redis cache server.
  • REDIS_URL: The URL for the Redis server used for caching and queues.
  • SESSION_DOMAIN: The domain under which sessions are valid.
  • BROADCAST_DRIVER: The technology used for broadcasting real-time messages.
  • MAIL_FROM_NAME: Default name used in emails sent by the system.
  • APP_NAME: The name of your application.
  • LOG_CHANNEL: Specifies how application logging is handled.
  • MODEL_CACHE_ENABLED: Toggle to enable/disable model caching.
  • RESPONSE_CACHE_ENABLED: Toggle to enable/disable response caching.
  • RESPONSE_CACHE_DRIVER: Specifies the caching driver for responses.
  • MAIL_MAILER: Defines the mail backend, for example: Sendgrid, Mailgun, Postmark, or SMTP.
  • IPINFO_API_KEY: API key for IPInfo service, if used.
  • GOOGLE_MAPS_API_KEY: API key for Google Maps services.
  • GOOGLE_MAPS_LOCALE: Locale setting for Google Maps.
  • TWILIO_SID: Account SID for Twilio, used for sending SMS.
  • TWILIO_TOKEN: Authentication token for Twilio.
  • TWILIO_FROM: The phone number from which Twilio SMS are sent.
  • SENTRY_LARAVEL_DSN: The DSN for Sentry, used for error tracking.
  • OSRM_HOST: The OSRM server to use, defaults to https://router.project-osrm.org

3. Build and Start Services​

Use Docker Compose to build and start the services. The -d flag runs them in detached mode:

docker compose up --build -d

4. Access the Application Container​

Enter the application container to perform initial setup tasks:

# On OSX or others the application name might be "fleetbase-application-1"
docker exec -ti fleetbase_application_1 bash

5. Run the Deployment Script​

Execute the deployment script within the container to configure the database and other components:

sh deploy.sh

Configuration​

Configuration involves setting up environment variables and integrating external services.

Fleetbase API Configuration​

Configure environment variables in the Docker Compose file or a separate .env file for the API:

  • CONSOLE_HOST: The URL for the Fleetbase console. Required for CORS configuration.
  • DATABASE_URL: Full database connection string.
  • REDIS_URL: Connection string for Redis.
  • MAIL_DRIVER: Set up for production email sending.
  • TWILIO_SID, TWILIO_TOKEN, TWILIO_FROM: For SMS functionality.

Fleetbase Console Configuration​

Modify the environment settings in the Docker setup for the console:

  • API_HOST: Set this to the production API URL.
  • SOCKETCLUSTER_HOST, SOCKETCLUSTER_PORT: Ensure these are configured for real-time functionalities.

OSRM Configuration​

If using a custom OSRM service, configure the OSRM_HOST environment variable for both the console and the API.

Integrating SSL Certificates​

Set up SSL certificates for secure communication:

  • Use certbot or a similar tool to generate and configure SSL certificates for your domains.
  • Configure HTTPS redirection and SSL termination in the Nginx or Caddy configuration within Docker.

Scheduler and Worker Configuration​

Ensure the scheduler and workers are correctly set up to handle background tasks:

# Scheduler configuration for production
FROM scheduler as scheduler
ENTRYPOINT ["/sbin/ssm-parent", "-c", ".ssm-parent.yaml", "run", "--"]
CMD ["go-crond", "--verbose", "root:./crontab"]

Verify and Monitor​

After deployment, verify all components are functioning correctly:

  • Access the Fleetbase console via its domain.
  • Check connectivity between services.
  • Monitor logs and performance to ensure stability.

Backup and Maintenance​

Set up regular backups for your databases and persistent volumes. Plan for regular maintenance updates and monitor Docker containers and services.

Conclusion​

This guide provides a comprehensive approach to deploying Fleetbase in a production environment using Docker. It covers the initial setup, configuration of essential components, and considerations for security and maintenance. Adjustments might be needed based on specific infrastructure or additional requirements.