{"id":18947858,"url":"https://github.com/thenaubit/bull-board-dockerized","last_synced_at":"2025-08-01T20:11:41.905Z","repository":{"id":246717832,"uuid":"821959685","full_name":"TheNaubit/bull-board-dockerized","owner":"TheNaubit","description":"⚡ This is a production-ready, heavily optimized, Docker image for bull-board. It allows you to monitor your bull queues without coding a web server just for that, just launch the Docker image!","archived":false,"fork":false,"pushed_at":"2024-09-23T14:09:23.000Z","size":404,"stargazers_count":2,"open_issues_count":9,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-31T19:29:09.417Z","etag":null,"topics":["bull","bull-board","bullmq","dashboard","docker","docker-compose","docker-image","dockerfile","dockerized","monitor","queue"],"latest_commit_sha":null,"homepage":"https://hub.docker.com/repository/docker/nauverse/bull-board/general","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TheNaubit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-29T23:18:51.000Z","updated_at":"2024-11-20T09:54:30.000Z","dependencies_parsed_at":"2024-07-22T19:48:14.763Z","dependency_job_id":"74fc666d-b3c2-4d9c-b2ac-c013e78a8230","html_url":"https://github.com/TheNaubit/bull-board-dockerized","commit_stats":null,"previous_names":["thenaubit/bull-board-dockerized"],"tags_count":21,"template":false,"template_full_name":null,"purl":"pkg:github/TheNaubit/bull-board-dockerized","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheNaubit%2Fbull-board-dockerized","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheNaubit%2Fbull-board-dockerized/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheNaubit%2Fbull-board-dockerized/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheNaubit%2Fbull-board-dockerized/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TheNaubit","download_url":"https://codeload.github.com/TheNaubit/bull-board-dockerized/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheNaubit%2Fbull-board-dockerized/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268290751,"owners_count":24226646,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-01T02:00:08.611Z","response_time":67,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bull","bull-board","bullmq","dashboard","docker","docker-compose","docker-image","dockerfile","dockerized","monitor","queue"],"created_at":"2024-11-08T13:11:44.100Z","updated_at":"2025-08-01T20:11:41.867Z","avatar_url":"https://github.com/TheNaubit.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ⚡ Bull Board Dockerized\n\n![Docker Pulls](https://img.shields.io/docker/pulls/nauverse/bull-board)\n\n![Repo social image](https://github.com/TheNaubit/bull-board-dockerized/blob/21e83dbc080475d49bf749e68f3e2a7cffd5f9ca/header.png?raw=true)\n\nThis is a production-ready, heavily optimized, Docker image for [bull-board](https://github.com/felixmosh/bull-board). It allows you to monitor your bull queues without coding a web server just for that, just launch the Docker image!\n\nIt supports `bull` and `bullmq`.\n\n## Features\n\n- 🔒 **Optional auth integrated**: I implemented some `Basic` auth to secure the dashboard.\n- ⚡ **Ultra performant**: Behind the scenes it only has a `distroless` image that launches a tiny fast web server with the Bull Board.\n- 🔧 **Configurable**: There are several `.env` config options allowing you to customize the behavior of your image.\n- 👮 **Secure**: Auth, logging, CSP headers... everything integrated to improve your deployment (just remember, security is not guaranteed, you have to do your own work on that!)\n\n## Quick start with Docker\n\n```bash\ndocker run -p 3000:3000 nauverse/bull-board\n```\n\nThis code will expose the webserver on `localhost:3000`. It will also try to connect to your Redis instance on `localhost:6379` (without any password, read below for more settings).\n\n## Quick start with Docker Compose\n\n```yaml\nbullboard:\n  container_name: bullboard\n  image: nauverse/bull-board\n  restart: unless-stopped\n  pull_policy: always\n  ports:\n    - \"3000:3000\"\n```\n\nThis `docker-compose.yaml` file will launch the image and expose it at `localhost:3000`. Again, it will try to connect to your Redis instance on `localhost:6379`.\n\n## Environment variables\n\n- `REDIS_URL` - [Optional] A Redis URL with any connection param you need. By default it uses `redis://localhost:6379`.\n- `BULL_PREFIX` - [Optional] Used to prefix your bull queue name. By default it uses `bull`.\n- `BULL_VERSION` - [Optional] Version of the Bull lib to use. It can be `BULLMQ` or `BULL`. By default it is `BULLMQ`.\n- `BASE_PATH` - [Optional] The base URL where the internal web server will expose the board and all its resources. By default it is `/`.\n- `LOG_LEVEL` - [Optional] The minimum log level to display. It can be `trace`, `debug`, `info`, `warn`, `error`, `fatal`. By default it is `info`.\n- `LOG_ANONYMIZE_IP` - [Optional] A boolean to determine if the web server should anonymice any IP found in the request logs (for privacy complaint). By default it is `false`.\n- `USER_USERNAME` - [Optional] A string containing the username used to identify the user. If added, you must also specify the `USER_PASSWORD` env var. If any of those are not set, the auth won't be enabled. By default it is not set.\n- `USER_PASSWORD` - [Optional] A string containing the passoword used to identify the user. If added, you must also specify the `USER_USERNAME` env var. If any of those are not set, the auth won't be enabled. By default it is not set.\n\n## Complete example with `docker-compose.yaml`\n\n### `docker-compose.yaml`\n\n```yaml\nservices:\n  redis:\n    container_name: redis\n    restart: unless-stopped\n    environment:\n      REDIS_PASSWORD: ${REDIS_PASSWORD}\n    image: redis:6\n    ulimits:\n      memlock: -1\n    ports:\n      - \"6379:6379\"\n    volumes:\n      - redis_data:/data\n    command:\n      [\n        \"redis-server\",\n        \"--requirepass\",\n        \"${REDIS_PASSWORD}\",\n        \"--maxmemory-policy\",\n        \"noeviction\",\n      ]\n    healthcheck:\n      test:\n        - CMD-SHELL\n        - \"redis-cli -a $${REDIS_PASSWORD} ping\"\n      interval: 5s\n      timeout: 20s\n      retries: 10\n\n  bullboard:\n    container_name: bullboard\n    image: nauverse/bull-board\n    restart: unless-stopped\n    pull_policy: always\n    ports:\n      - \"3000:3000\"\n    environment:\n      REDIS_URL: ${REDIS_URL}\n      BULL_PREFIX: bull\n      USER_USERNAME: ${BULL_BOARD_AUTH_USER}\n      USER_PASSWORD: ${BULL_BOARD_AUTH_PASSWORD}\n      LOG_ANONYMIZE_IP: \"true\"\n    depends_on:\n      - redis\n\nvolumes:\n  redis_data:\n```\n\n### `.env`\n\n```\nREDIS_PASSWORD=supersecurepassword\nREDIS_URL=redis://default:${REDIS_PASSWORD}@redis:6379\nBULL_BOARD_AUTH_USER=\"mysupersecretusername\"\nBULL_BOARD_AUTH_PASSWORD=\"anothersupersecurepassword\"\n```\n\nThen launch it with:\n\n```bash\ndocker compose up -d\n```\n\nAnd stop it with:\n\n```bash\ndocker compose down\n```\n\n## TODO\n\n- Allow setting the uiConfig optional parameters using the `.env` file\n- Create tests for the HTTP server\n- Improve the documentation\n- Deploy it as a a single-file standalone executable (using the `bun` [compile option](https://bun.sh/docs/bundler/executables)). I need to wait for that since `bun` does not export `node_modules` into the binary (yet) [https://github.com/oven-sh/bun/issues/8967](https://github.com/oven-sh/bun/issues/8967)\n- ✅ ~~Create a GitHub action to automatize the build process when there is a push to the main branch~~\n\n## Notes\n\n- Do not compile it to a single standalone executable with the `--minify` param since it breaks the internal code.\n\n- When publishing, make sure to change `\u003cmy_new_version_code\u003e` with the new version code (until I automatize the process).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthenaubit%2Fbull-board-dockerized","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthenaubit%2Fbull-board-dockerized","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthenaubit%2Fbull-board-dockerized/lists"}