---
title: "Deploy BullMQ with BullBoard"
description: "A queueing solution with a dashboard to visualize, monitor and retry."
category: "Queues"
url: https://railway.com/deploy/0s3-xR
---

# Deploy BullMQ with BullBoard

A queueing solution with a dashboard to visualize, monitor and retry.

**[Deploy BullMQ with BullBoard on Railway](https://railway.com/template/0s3-xR)**

- **Creator:** Nicolas's Projects
- **Category:** Queues
- **Total deploys:** 23

## Template content

### bull-board

- **Source:** ncontiero/fastify-bullmq
- **Start command:** `pnpm start:server`
- **Public domain:** Yes

### Redis https://cdn.sanity.io/images/sy1jschh/production/0ce0bfdcfbdbf69662b1116671f97c2dd788b655-157x157.svg

- **Image:** redis:8.8.0
- **Start command:** `/bin/sh -c "rm -rf $RAILWAY_VOLUME_MOUNT_PATH/lost+found/ && exec docker-entrypoint.sh redis-server --requirepass $REDIS_PASSWORD --save 60 1 --dir $RAILWAY_VOLUME_MOUNT_PATH"`

### bullmq-worker

- **Source:** ncontiero/fastify-bullmq
- **Start command:** `pnpm start:worker`

## Documentation

## ✨ Features

- Queueing system with [BullMQ](https://docs.bullmq.io/) and Redis;
- Dashboard built with [bull-board](https://github.com/felixmosh/bull-board) and [Fastify](https://fastify.dev/);
- Run services through [pm2](https://pm2.keymetrics.io/).

GitHub: [https://github.com/ncontiero/fastify-bullmq](https://github.com/ncontiero/fastify-bullmq)

## Explanations

This application uses **BullMQ**, a Redis-based queueing system, and **Bull-Board**, a dashboard to monitor and manage these queues, served by a **Fastify** server. Both services are built using [Rslib](https://rslib.rs/) and managed by **PM2**.

There are three distinct ways to start the services:

1. **Unified Execution:** To start both services simultaneously, use the command `pnpm start`. This is the simplest option for local development.
2. **Separate Execution:** To start the worker and Fastify server individually, use the commands `pnpm start:worker` and `pnpm start:server`, respectively. This approach offers greater control and is used in this template, but can be easily adapted to your needs.
3. **Direct Node.js Execution:** For simple projects that do not require PM2 features, direct execution with Node.js can result in lower resource consumption. Use `node ./dist/worker.js` for the worker and `node ./dist/server.js` for the Fastify server.

PM2 also supports [Bun](https://bun.sh/). If desired, you can replace the project's package manager with Bun and execute the TypeScript files directly (Bun has native support for TypeScript), eliminating the need for a build. However, be aware that Bun is not fully compatible with Node.js, which may result in execution problems.

**Scalability (PM2):** Both services support horizontal scaling through the `WORKER_INSTANCES` and `SERVER_INSTANCES` environment variables. Set these variables to the desired number of instances to increase the processing capacity of the worker and server, respectively. **These variables will only take effect if PM2 is being used.**


## Similar templates

- [smoothmq](https://railway.com/deploy/AJv-64) — A drop-in replacement for AWS SQS
- [Kafka UI](https://railway.com/deploy/kafka-ui) — Kafbat UI — Open-source web UI to monitor and manage Apache Kafka clusters
- [Hatchet Lite](https://railway.com/deploy/hatchet-lite) — Hatchet Lite with postgres

Open this page in a browser: https://railway.com/deploy/0s3-xR
