{"id":19530772,"url":"https://github.com/nodefluent/roach-storm","last_synced_at":"2025-11-18T17:02:49.096Z","repository":{"id":34282624,"uuid":"174350356","full_name":"nodefluent/roach-storm","owner":"nodefluent","description":"Apache Kafka \u003c=:fireworks:=\u003e Google Pub/Sub","archived":false,"fork":false,"pushed_at":"2022-12-09T14:59:30.000Z","size":452,"stargazers_count":1,"open_issues_count":12,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-10-10T15:22:31.072Z","etag":null,"topics":["apache","api","bridge","cloud","controlled","flow","google","kafka","pubsub"],"latest_commit_sha":null,"homepage":"","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/nodefluent.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-03-07T13:36:22.000Z","updated_at":"2020-09-04T04:34:07.000Z","dependencies_parsed_at":"2023-01-15T05:52:17.524Z","dependency_job_id":null,"html_url":"https://github.com/nodefluent/roach-storm","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nodefluent/roach-storm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nodefluent%2Froach-storm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nodefluent%2Froach-storm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nodefluent%2Froach-storm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nodefluent%2Froach-storm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nodefluent","download_url":"https://codeload.github.com/nodefluent/roach-storm/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nodefluent%2Froach-storm/sbom","scorecard":{"id":692479,"data":{"date":"2025-08-11","repo":{"name":"github.com/nodefluent/roach-storm","commit":"22ff3a6a3d1a847051310a5916a33ca5e64a262c"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.6,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":0,"reason":"Found 0/16 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: containerImage not pinned by hash: Dockerfile:1: pin your Docker image by updating node:10.11 to node:10.11@sha256:32d5d5435e5038028bd0c0871d256d5887b06c4315cb1a135bcf81e0735627c9","Warn: npmCommand not pinned by hash: scripts/self-install.sh:3","Info:   0 out of   1 containerImage dependencies pinned","Info:   0 out of   1 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 6 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"68 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-pp75-xfpw-37g9","Warn: Project is vulnerable to: GHSA-7v5v-9h63-cj86","Warn: Project is vulnerable to: GHSA-93q8-gq69-wqmw","Warn: Project is vulnerable to: GHSA-fwr7-v2mv-hh25","Warn: Project is vulnerable to: GHSA-pp7h-53gx-mx7r","Warn: Project is vulnerable to: GHSA-qwcr-r2fm-qrc7","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-pxg6-pf52-xh8x","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-gxpj-cx7g-858c","Warn: Project is vulnerable to: GHSA-w573-4hg7-7wgq","Warn: Project is vulnerable to: GHSA-rv95-896h-c2vc","Warn: Project is vulnerable to: GHSA-qw6h-vgh9-j6wx","Warn: Project is vulnerable to: GHSA-2j2x-2gpw-g8fm","Warn: Project is vulnerable to: GHSA-pc5p-h8pf-mvwp","Warn: Project is vulnerable to: GHSA-qqgx-2p2h-9c37","Warn: Project is vulnerable to: GHSA-2pr6-76vf-7546","Warn: Project is vulnerable to: GHSA-8j8c-7jfh-h6hx","Warn: Project is vulnerable to: GHSA-wgfq-7857-4jcc","Warn: Project is vulnerable to: GHSA-6c8f-qphg-qjgp","Warn: Project is vulnerable to: GHSA-jf85-cpcp-j695","Warn: Project is vulnerable to: GHSA-p6mc-m468-83gw","Warn: Project is vulnerable to: GHSA-29mw-wpgm-hmr9","Warn: Project is vulnerable to: GHSA-35jh-r3h4-6jhm","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-vh95-rmgr-6w4m","Warn: Project is vulnerable to: GHSA-xvch-5gv4-984h","Warn: Project is vulnerable to: GHSA-8hfj-j24r-96c4","Warn: Project is vulnerable to: GHSA-wc69-rhjr-hc9g","Warn: Project is vulnerable to: GHSA-f825-f98c-gj3g","Warn: Project is vulnerable to: GHSA-h8hf-x3f4-xwgp","Warn: Project is vulnerable to: GHSA-9m93-w8w6-76hh","Warn: Project is vulnerable to: GHSA-m7xq-9374-9rvx","Warn: Project is vulnerable to: GHSA-vg7j-7cwx-8wgw","Warn: Project is vulnerable to: GHSA-p92x-r36w-9395","Warn: Project is vulnerable to: GHSA-45q2-34rf-mr94","Warn: Project is vulnerable to: GHSA-w7rc-rwvf-8q5r","Warn: Project is vulnerable to: GHSA-r683-j2x4-v87g","Warn: Project is vulnerable to: GHSA-92xj-mqp7-vmcj","Warn: Project is vulnerable to: GHSA-wxgw-qj99-44c2","Warn: Project is vulnerable to: GHSA-5rrq-pxf6-6jx5","Warn: Project is vulnerable to: GHSA-8fr3-hfg3-gpgp","Warn: Project is vulnerable to: GHSA-gf8q-jrpm-jvxq","Warn: Project is vulnerable to: GHSA-2r2c-g63r-vccr","Warn: Project is vulnerable to: GHSA-cfm4-qjh2-4765","Warn: Project is vulnerable to: GHSA-x4jg-mjrx-434g","Warn: Project is vulnerable to: GHSA-hj48-42vr-x3v9","Warn: Project is vulnerable to: GHSA-9wv6-86v2-598j","Warn: Project is vulnerable to: GHSA-rhx6-c78j-4q9w","Warn: Project is vulnerable to: GHSA-hrpp-h998-j3pp","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-m6fv-jmcg-4jfg","Warn: Project is vulnerable to: GHSA-cm22-4g7w-348p","Warn: Project is vulnerable to: GHSA-4g88-fppr-53pp","Warn: Project is vulnerable to: GHSA-4jqc-8m5r-9rpr","Warn: Project is vulnerable to: GHSA-wpg7-2c88-r8xv","Warn: Project is vulnerable to: GHSA-3jfq-g458-7qm9","Warn: Project is vulnerable to: GHSA-r628-mhmh-qjhw","Warn: Project is vulnerable to: GHSA-9r2w-394v-53qc","Warn: Project is vulnerable to: GHSA-5955-9wpr-37jh","Warn: Project is vulnerable to: GHSA-qq89-hq3f-393p","Warn: Project is vulnerable to: GHSA-f5x3-32g6-xq36","Warn: Project is vulnerable to: GHSA-pq67-2wwv-3xjx","Warn: Project is vulnerable to: GHSA-8cj5-5rvv-wf4v","Warn: Project is vulnerable to: GHSA-c4w7-xm78-47vh","Warn: Project is vulnerable to: GHSA-p9pc-299p-vxgp"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-22T02:37:08.902Z","repository_id":34282624,"created_at":"2025-08-22T02:37:08.902Z","updated_at":"2025-08-22T02:37:08.902Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":285101682,"owners_count":27115042,"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-11-18T02:00:05.759Z","response_time":61,"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":["apache","api","bridge","cloud","controlled","flow","google","kafka","pubsub"],"created_at":"2024-11-11T01:36:12.521Z","updated_at":"2025-11-18T17:02:49.056Z","avatar_url":"https://github.com/nodefluent.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# roach-storm\n\n```text\n    ____                   __   _____ __                     \n   / __ \\____  ____ ______/ /_ / ___// /_____  _________ ___ \n  / /_/ / __ \\/ __ `/ ___/ __ \\\\__ \\/ __/ __ \\/ ___/ __ `__ \\\n / _, _/ /_/ / /_/ / /__/ / / /__/ / /_/ /_/ / /  / / / / / /\n/_/ |_|\\____/\\__,_/\\___/_/ /_/____/\\__/\\____/_/  /_/ /_/ /_/ \n```\n\n## What\n\nApache Kafka to Google Pub/Sub Gateway, API controlled.\nHelper for Google Cloud Function Services that are built upon Apache Kafka.\n\n## How\n\nYou can manage topics to be transferred on the fly via `/api/topic-config` and \nroach-storm will keep track of anything that goes through your Apache Kafka cluster.\nMessages are filtered and published on Google Cloud Pub/Sub service.\nIt also ships a few additional tools to make the Google Cloud Functions live easier,\ne.g. handling metrics or producing back to Apache Kafka.\n\n## Why\n\nAs of now (Q1 2019) services like Google Cloud Functions do not have the ability\nto be triggered or integrated into Apache Kafka directly.\n\n## Requirements\n\n* Node.js \u003e= 9.x.x (we suggest \u003e= 10.11.x)\n* Apache Kafka \u003e= 0.11.x (we suggest \u003e= 1.x.x)\n* MongoDB \u003e= 3.2 (we suggest \u003e= 4.x)\n\n## Install\n\nAs simple as `yarn global add roach-storm`.\n\n(_NOTE: In case you dont have yarn run `npm i -g yarn` first._)\n\n## Run\n\n`roach-storm \"./baseConfig.js\"`\n\nYou just have to throw in a config (JSON or JS).\n[A base config is always used](bin/baseConfig.js), so you just have to overwrite\nyour specific requirements.\n\nCheck out `roach-storm -h` for other options.\n\n## Using\n\nWith any HTTP client.\n\nCheckout the API quick start or the setup infos below.\n\n## API Quick Start\n\n### Getting general info about roach-storm and your Kafka clusters\n\nYou can get an overview of possible API actions by calling `GET /api/info`.\n\n### Configuring Kafka topics for roach-storm\n\nBy default roach-storm, will connect and fetch some information about your Kafka cluster. \nBut it wont start transferring topics/messages yet. You will have to configure topics so that they will be consumed\nand processed.\n\nYou can do that by providing a small configuraton in a `POST /api/config/topic` call.\nYou will have to provide the following information in the body `{ sourceTopic, parseAsJson, pipes }`.\n\nIf you configure a topic, it will be consumed from earliest.\n\n**Please note** that any changes on the topic-config resource will take a few seconds to be polled and applied to all roach-storm instances.\n\n**Please note** that roach-storm will not create PubSub topics for you, you will have to create the topics beforehand.\n\n#### TopicConfig\n\n* `sourceTopic` (string) (is required) is the name of the Kafka topic (you can fetch available topics via `GET /api/info/topics/available`)\n* `parseAsJson` (boolean) (default is true) if this is false the message (key and value) fields are passed as Buffers\n* `pipes` (Array[Pipe]) (is required) defines where the kafka messages should be published too, of course you can\nadd multiple pipes for the same topic to filter and publish specific messages to different pubsub topics\n\n#### TopicConfigPipe\n\n* `targetTopic` (string) (is required) is the name for the Google PubSub topic where the message should be published to\n* `chunkSize` (number) (default is 1) the amount of kafka messages (based on topic and partition) to batch into a single\npub sub message\n* `publishTombstones` (boolean) (default is false) if null value kafka messages should be published\n* `filter` (object) (default is undefined) using this object a filter can be build for a pipe, this way you can\npublish specific messages to a specific pubsub topic (this can save a lot of costs) as you do not waste function triggers\nfor example:\n\n##### Filter Example\n\nAssume the following messages on your topic: `{ value: { payload: { eventType: \"my-cool-type\", version: 5  }}}`\nYou can add a filter to a pipe to publish only these certain messages:\n\n```javascript\nconst topicConfig = {\n  sourceTopic: \"my-topic\",\n  parseAsJson: true, // please always do this, if you want to use filters on values\n  pipes: [\n    {\n      targetTopic: \"pubsub-all-with-version-five\",\n      chunkSize: 5,\n      publishTombstones: false,\n      filter: {\n        \"value.payload.version\": 5,\n      },\n    },\n    {\n      targetTopic: \"pubsub-cool-with-version-six\",\n      chunkSize: 5,\n      publishTombstones: false,\n      filter: {\n        \"value.payload.eventType\": \"my-cool-type\",\n        \"value.payload.version\": 6,\n      },\n    },\n  ],\n};\n```\n\nIn this scenario roachstorm will consume the topic `my-topic` filter out all tombstone messages\nand publish all kafka messages with payload.version equal to 5 to pubsub topic `pubsub-all-with-version-five`\nand at the same time all kafka messages with payload.eventType my-cool-type and payload.version equal to 6\nto pubsub topic `pubsub-cool-with-version-six`.\n\n## Testing filters or producing some test messages to pubsub topics\n\nYou can use the `/api/produce/kafka-batch` endpoint to easily mimic some kafka messages\nthat are flushed through your configured roach-storm topics and filters and should be published\nto your configured pubsub topics.\n\n```bash\ncurl -X POST \\\n  http://localhost:1919/api/produce/kafka-batch \\\n  -H 'Authorization: your-roach-storm-token-here' \\\n  -H 'Content-Type: application/json' \\\n  -H 'cache-control: no-cache' \\\n  -d '{\n\t\"batch\": {\n\t\t\"some-kafka-topic\": {\n\t\t\t\"0\": [\n\t\t\t\t{\n\t\t\t\t\t\"topic\": \"some-kafka-topic\",\n\t\t\t\t\t\"partition\": 0,\n\t\t\t\t\t\"key\": \"cbedcd96-3de5-4649-ba5b-5788cabdb894\",\n\t\t\t\t\t\"value\": {}\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t}\n}'\n```\n\n## Defining a Bridge from PubSub to Apache Kafka\n\nroach-storm is also able to move publish events from pubsub topics to Apache Kafka.\nYou can configure a mirror pubsub topic that roach-storm will subscribe to (during start)\nby setting the config field: `pubSubToKafkaTopicName` (if you leave it empty or set it to null there\nwill be no mirroring from pubsub to kafka, only from kafka to pubsub).\n\nThe pubsub topic should contain events with data like so:\n```javascript\nevent.data = Buffer.from(JSON.stringify([\n  {\n    topic: \"a-target-kafka-topic\", // required\n    value: \"some value\", // if set to null and key is present a tombstone messages will be produced\n    key: null, // optional\n    partition: null, // optional\n  }, // you can pass multiple messages for different topics and partitions in the same pubsub message\n))];\n```\n\nIf a produce error occures, roachstorm will not send pubsub acks and the subscription will halt.\nErrors, writes and acks are exposed via metrics.\n\n## Handling metrics from GCF\n\nBy simply passing the `gcf` object in the configuration\nyou can easily enable the subcription of a pubsub topic to render prometheus metrics\nalong with a different set of prefixes and labels.\n\n```javascript\ngcf: {\n      metrics: {\n          pubSubMetricTopic: null,\n          counterLabels: [],\n          gaugeLabels: [],\n          prefix: \"gcf_roach\",\n      },\n  },\n```\n\nThe pubsub topic should contain events with data like so:\n```javascript\nevent.data = Buffer.from(JSON.stringify([\n  {\n    metric: \"my_calls\", // the name of the metric\n    type: \"counter\", // counter or gauge\n    value: 1, // couter increment by or gauge value set\n    labels: { \"special\": \"bla\" }, // make sure that these labels (keys) are already set in the config (counterLabels, gaugeLabels)\n  }, // you can of course sent multiple metrics per pubsub message\n))];\n```\n\nIf an error occures it will be logged and internal metrics will show them, however they will be ignored afterwards\nand acks will be sent to pubsub.\n\n## Setup Info\n\n### Deployment \u0026 Scaling\n\nroach-storm as process is limited to a single CPU core and does not require too much memory (depending on Kafka consumer configuration) as well. About 0.1 CPU and 150 MB RAM with default configuration can be sufficient.\n\nBut **roach-storm is build to scale horizontally**, just spin up a few containers (see Dockerfile example) and scale up. In production environments we suggest to have as many instances are the largest amount of partitions configured for a Kafka topic in your cluster.\n\n### Metrics\n\nYou can monitor roach-storm via Prometheus at `http://localhost:1919/metrics`.\n\n### Access Management\n\nroach-storm allows _fine grained_ access management with a similiar span of what Kafka ACLs allow you to do on a per topic basis.\nYou define tokens as keys in the configs http access object and set the topic names or special rights as string members of the key's array value. A wildcard `*` grants all rights.\n\ne.g.\n\n```javascript\nconst config = {\n  http: {\n    access: {\n      \"my-crazy-secure-token-string\": [ \"__topic\", \"on-some-topic\" ],\n      \"token-for-some-topics\": [ \"customers\", \"baskets\", \"orders\" ],\n      \"token-for-admin\": [ \"*\" ]\n    }\n  }\n};\n```\n\nWhen making calls to roach-storm's HTTP API the token is provided in the `authorization` header.\n\n* `*` Allows every operation\n* `__topic` Is allowed to configure topics (only for provided topics)\n\nBe aware that the default configuration is a wildcard for everything. (Meaning no token is required).\nNever expose roach-storm's HTTP interface publicly.\n\n### Config via Environment Variables\n\nIt is possible to set a few config parameters (most in role of secrets) via environment variables.\nThey will always overwrite the passed configuration file.\n\n* `MONGODB_URL=\"mongodb://localhost:27017\"` -\u003e turns into: `config.mongo.url = \"mongodb://localhost:27017\";`\n* `MONGODB_USERNAME=admin` -\u003e turns into: `config.mongo.options.user = \"admin\";`\n* `MONGODB_PASSWORD=admin` -\u003e turns into: `config.mongo.options.pass = \"admin\";`\n* `MONGODB_DBNAME=roach_prod` -\u003e turns into: `config.mongo.options.dbName = \"roach_prod\";`\n* `KAFKA_BROKER_LIST=kafka-1:9093,kafka-2:9093` -\u003e turns into: `config.kafka.consumer.noptions[\"metadata.broker.list\"] = \"kafka-1:9093\";`\n* `KAFKA_SSL_PASSPHRASE=\"123456\"` -\u003e turns into: `config.kafka.consumer.noptions[\"ssl.key.password\"] = \"123456\";`\n* `KAFKA_SASL_USERNAME=\"123456\"` -\u003e turns into: `config.kafka.consumer.noptions[\"sasl.username\"] = \"123456\";`\n* `KAFKA_SASL_PASSWORD=\"123456\"` -\u003e turns into: `config.kafka.consumer.noptions[\"sasl.password\"] = \"123456\";`\n* `ACL_DEFINITIONS=\"mytoken=topic1,topic2;othertoken=topic3\" roach-storm -l \"./config.json\"` -\u003e turns into: `config.http.access.mytoken = [ \"topic1\", \"topic2\" ];`\n* `PUBSUB_PROJECT_ID=my-project-id` -\u003e turns into `options.pubSubConfig.projectId = \"123\";`\n\nThe kafka env values will set consumer and producer at the same time.\n\n## Maintainer\n\nChristian Fröhlingsdorf [@chrisfroeh](https://twitter.com/chrisfroeh)\n\nBuild with :heart: :pizza: and :coffee: by [nodefluent](https://github.com/nodefluent)\n\n## Disclaimer\n\nThis software is not associated with Google.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnodefluent%2Froach-storm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnodefluent%2Froach-storm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnodefluent%2Froach-storm/lists"}