{"id":13547040,"url":"https://github.com/godaddy/lighthouse4u","last_synced_at":"2026-03-07T00:32:19.272Z","repository":{"id":40791722,"uuid":"148505794","full_name":"godaddy/lighthouse4u","owner":"godaddy","description":"LH4U provides Google Lighthouse as a service, surfaced by both a friendly UI+API, and backed by various storage clients (S3, ElasticSearch, etc) for all your query and visualization needs","archived":false,"fork":false,"pushed_at":"2024-07-23T20:42:47.000Z","size":4861,"stargazers_count":58,"open_issues_count":22,"forks_count":9,"subscribers_count":20,"default_branch":"master","last_synced_at":"2025-10-17T14:47:13.733Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"EJS","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/godaddy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-09-12T15:57:40.000Z","updated_at":"2025-09-04T18:53:13.000Z","dependencies_parsed_at":"2024-03-16T16:37:22.081Z","dependency_job_id":"a1c58585-9b25-4549-a505-d55b1905f169","html_url":"https://github.com/godaddy/lighthouse4u","commit_stats":{"total_commits":129,"total_committers":6,"mean_commits":21.5,"dds":"0.28682170542635654","last_synced_commit":"75a4d4d82cc8f4e7be2bc905006e9b2666547fc5"},"previous_names":[],"tags_count":40,"template":false,"template_full_name":null,"purl":"pkg:github/godaddy/lighthouse4u","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/godaddy%2Flighthouse4u","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/godaddy%2Flighthouse4u/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/godaddy%2Flighthouse4u/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/godaddy%2Flighthouse4u/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/godaddy","download_url":"https://codeload.github.com/godaddy/lighthouse4u/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/godaddy%2Flighthouse4u/sbom","scorecard":{"id":433326,"data":{"date":"2025-08-11","repo":{"name":"github.com/godaddy/lighthouse4u","commit":"e7d22f7682f8b19950e9cc5ed662e28a1fbf3bb7"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"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":"Token-Permissions","score":9,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql.yml:28","Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql.yml:29","Warn: no topLevel permission defined: .github/workflows/codeql.yml:1","Info: no jobLevel write permissions found"],"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":"Code-Review","score":5,"reason":"Found 5/9 approved changesets -- score normalized to 5","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":"Security-Policy","score":9,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Warn: One or no descriptive hints of disclosure, vulnerability, and/or timelines in security policy","Info: Found text in security policy: SECURITY.md:1"],"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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"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":"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":"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: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/godaddy/lighthouse4u/codeql.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/godaddy/lighthouse4u/codeql.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:59: update your workflow using https://app.stepsecurity.io/secureworkflow/godaddy/lighthouse4u/codeql.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:72: update your workflow using https://app.stepsecurity.io/secureworkflow/godaddy/lighthouse4u/codeql.yml/master?enable=pin","Info:   0 out of   4 GitHub-owned GitHubAction 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":7,"reason":"SAST tool detected but not run on all commits","details":["Info: SAST configuration detected: CodeQL","Warn: 0 commits out of 26 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":"23 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-67hx-6x53-jw92","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-ghr5-ch3p-vcr6","Warn: Project is vulnerable to: GHSA-qw6h-vgh9-j6wx","Warn: Project is vulnerable to: GHSA-2j2x-2gpw-g8fm","Warn: Project is vulnerable to: GHSA-4q6p-r6v2-jvc5","Warn: Project is vulnerable to: GHSA-9c47-m6qq-7p4h","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-9wv6-86v2-598j","Warn: Project is vulnerable to: GHSA-rhx6-c78j-4q9w","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-pq67-2wwv-3xjx","Warn: Project is vulnerable to: GHSA-8cj5-5rvv-wf4v","Warn: Project is vulnerable to: GHSA-j8xg-fqg3-53r7","Warn: Project is vulnerable to: GHSA-3h5v-q93c-6h6q"],"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-19T03:55:06.299Z","repository_id":40791722,"created_at":"2025-08-19T03:55:06.299Z","updated_at":"2025-08-19T03:55:06.299Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30204154,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T19:07:06.838Z","status":"ssl_error","status_checked_at":"2026-03-06T18:57:34.882Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2024-08-01T12:00:50.017Z","updated_at":"2026-03-07T00:32:19.252Z","avatar_url":"https://github.com/godaddy.png","language":"EJS","funding_links":[],"categories":["EJS"],"sub_categories":[],"readme":"# Lighthouse4u\n\n[![travis-ci](https://travis-ci.org/godaddy/lighthouse4u.svg?branch=master)](https://travis-ci.org/godaddy/lighthouse4u)\n\nLH4U provides [Google Lighthouse](https://github.com/GoogleChrome/lighthouse) as a service, surfaced by both a friendly UI+API, and backed by various\n[storage](#storage-clients) and [queue](#queue-clients) clients to support a wide range of architectures.\n\n\n![UI](./docs/example.gif)\n\n## Usage\n\nStart server via CLI:\n\n```\nnpm i -g lighthouse4u\nlh4u server --config local --config-dir ./app/config --config-base defaults --secure-config ./app/config/secure --secure-file some-private.key\n```\n\nOr locally to this repo via `npm start` (you'll need to create `test/config/local.json5` by copying `test/config/COPY.json5`).\n\n\n## Architectures\n\nWith the release of v1, we've decoupled compute and storage into multiple tiers to permit a diverse set of\narchitectures. Not only are custom [storage](#storage-clients) and [queue](#queue-clients) clients\nsupported, but compute can even be run serverless.\n\n### Queue Architecture\n\nThis most closely resembles that of `v0.7`, but without the restrictions of being locked into Elasticsearch and RabbitMQ.\n\n```\n{  \n  reader: {\n    module: 'lighthouse4u-elasticsearch', options: { /* ... */ }\n  },\n  writer: {\n    module: 'lighthouse4u-elasticsearch', options: { /* ... */ }\n  },\n  queue: { // rabbit\n    module: 'lighthouse4u-amqp', options: { /* ... */ }\n  }\n}\n```\n\n**Note:** The `lighthouse4u-elasticsearch` storage client is not yet available. Happy to take contributions!\n\n\n### Serverless Architecture\n\nSame as above, you're not tied to Elasticsearch. Use whatever\n[storage](#storage-clients) and [queue](#queue-clients) client fits your needs. Due to the nature\nof AWS Lambda, your Lighthouse \"runner\" (triggered via SQS) is separate from the Lighthouse4u UI+API.\n\nServerless example via [AWS Lambda](https://github.com/godaddy/lighthouse4u-lambda)\n\n\n\n## Configuration Options\n\n| Option | Type | Default | Desc |\n| --- | --- | --- | --- |\n| store|reader|writer | | | All options connected with storage. Reads will goto `reader` if provided, otherwise default to `store`. Writes will goto `writer` if provided, otherwise default to `store`. |\n| -\u003e.module | `string` | **required** | Path of client module to import. See [storage clients](#storage-clients) |\n| -\u003e.options | `object` | | Collection of options supplied to storage client |\n| queue | | | Queue configuration |\n| -\u003e.module | `string` | **required** | Path of client module to import. See [queue clients](#queue-clients) |\n| -\u003e.idleDelayMs | `number` | `1000` | Time (in MS) between queue checks when queue is empty |\n| -\u003e.enabled | `boolean` | `true` | Consuming queue may be disabled |\n| -\u003e.options | `object` | | Collection of options supplied to queue client |\n| http | | | HTTP(S) Server options |\n| -\u003e.bindings | `Hash\u003cHttpBinding\u003e` | | An object of named bindings |\n| -\u003e.bindings.{name} | `HttpBinding` | | With `{name}` being the name of the binding -- can be anything, ex: `myMagicBinding`. See value to `false` if you want to disable this binding. |\n| -\u003e.bindings.{name}.port | `number` | `8994` | Port to bind to |\n| -\u003e.bindings.{name}.ssl | [TLS Options](https://nodejs.org/dist/latest-v10.x/docs/api/tls.html#tls_new_tls_tlssocket_socket_options) | `undefined` | Required to bind HTTPS/2 |\n| -\u003e.auth | | | Zero or more authorization options |\n| -\u003e.auth.{authName} | `HttpAuth` | | A set of auth options keyed by any custom `{authName}` |\n| -\u003e.auth.{authName}.type | `basic|custom` | **required** | Type of auth, be it built-in Basic auth, or custom provided by `customPath` module |\n| -\u003e.auth.{authName}.groups | `string|array\u003cstring\u003e` | `*` | **required** |  |\n| -\u003e.auth.{authName}.customPath | `string` | | Path of the custom module |\n| -\u003e.auth.{authName}.options | | | Options provided to the auth module |\n| -\u003e.authRedirect | | `undefined` | URL to redirect UI to if auth is enabled and fails |\n| -\u003e.routes | | | Optional set of custom routes |\n| -\u003e.routes.{name} | `string|HttpRoute` | | If value of type string that'll be used as path |\n| -\u003e.routes.{name}.path | `string` | | Path to resolve to connect middleware, relative to current working directory |\n| -\u003e.routes.{name}.method | `string` | `GET` | Method to bind to |\n| -\u003e.routes.{name}.route | `string` | Uses `{name}` if undefined | Route to map, ala `/api/test` |\n| -\u003e.staticFiles | | | Optional to bind routes to static assets |\n| -\u003e.staticFiles.{route} | [Express Static](https://expressjs.com/en/starter/static-files.html) | | Options to supply to static middleware |\n| lighthouse | | | Options related to Lighthouse usage |\n| -\u003e.config | [LighthouseOptions](https://github.com/GoogleChrome/lighthouse/blob/master/lighthouse-core/config/default-config.js) | | Google Lighthouse configuration options |\n| -\u003e.config.extends | `string` | `lighthouse:default` | What options to default to |\n| -\u003e.config.logLevel | `string` | `warn` | Level of logging |\n| -\u003e.config.chromeFlags | `array\u003cstring\u003e` | `[ '--headless', '--disable-gpu', '--no-sandbox' ]` | Array of CLI arguments |\n| -\u003e.config.settings | [LighthouseSettings](https://github.com/GoogleChrome/lighthouse/blob/master/lighthouse-core/config/constants.js#L30) | [See Defaults](./src/config/default-config.js#L90) | Settings applied to Lighthouse |\n| -\u003e.validate | `hash\u003cstring\u003e` | | Zero or more validators |\n| -\u003e.validate.{groupName} | `string` | | Path of validation module used to determine if the response is coming from the intended server. Useful in cases where you only want to measure results coming from an intended infrastructure |\n| -\u003e.concurrency | `number` | `1` | Number of concurrently processed tasks permitted |\n| -\u003e.report | `bool` | `true` | Save the full report, viewable in LH viewer |\n| -\u003e.samples | | | After N lighthouse samples are taken, only the best result is recorded |\n| -\u003e.samples.default | `number` | `3` | Default number of lighthouse tests performed  |\n| -\u003e.samples.range | `tuple\u003cmin,max\u003e` | `[1, 5]` | Minimum and maximum samples taken before returning result |\n| -\u003e.attempts | | | Number of attempts at running Google Lighthouse before giving up due to failures |\n| -\u003e.attempts.default | `number` | `2` | Default number of attempts before giving up |\n| -\u003e.attempts.range | `tuple\u003cmin,max\u003e` | `[1, 10]` | Minimum and maximum attempts before giving up |\n| -\u003e.attempts.delayMsPerExponent | `number` | `1000` | Exponential backoff after failure |\n| -\u003e.delay | | | Time (in ms) before a test is executed |\n| -\u003e.delay.default | `number` | `0` | Default time to wait before test can be run |\n| -\u003e.delay.range | `tuple\u003cmin,max\u003e` | `[0, 1000 * 60 * 60]` | Minimum and maximum time before test can be run |\n| -\u003e.delay.delayMsPerExponent | `number` | `1000 * 30` | Maximum time before delayed messages will be requeued |\n\n\n## API\n\n### API - `GET /api/website`\n\nFetch zero or more website results matching the criteria.\n\n#### Query String Options\n\n| Option | Type | Default | Desc |\n| --- | --- | --- | --- |\n| format | `string` | `json` | Format of results, be it `json`, `svg`, `reportHtml`, or `reportJson` |\n| scale | `number` | `1` | Scale of `svg` |\n| q | `string` | optional | Query by URL or document ID |\n| top | `number` | `1` | Maximum records to return. Only applicable for `json` format |\n\n\n### API - `GET /api/website/compare`\n\nSimilar to the single website GET, but instead compares results from `q1` with `q2`.\n\n#### Query String Options\n\n| Option | Type | Default | Desc |\n| --- | --- | --- | --- |\n| format | `string` | `json` | Format of results, be it `json` or `svg` |\n| scale | `number` | `1` | Scale of `svg` |\n| q1 | `string` | **required** | First query by URL or document ID |\n| q2 | `string` | **required** | Second query by URL or document ID |\n\n### API - `POST /api/website`\n\nSubmit to process website with Google Lighthouse. \n\n#### JSON Body Options\n\n| Option | Type | Default | Desc |\n| --- | --- | --- | --- |\n| url | `string` | **required** | URL to process via Google Lighthouse |\n| wait | `number` | optional | Block returning until job is complete, or the `wait` time (in ms) has elapsed, resulting in a partial 206 response |\n| headers | `hash\u003cstring\u003e` | optional | Collection of HTTP headers to supply in request |\n| secureHeaders | hash\u003cstring\u003e | optional | Same use as `headers`, but stored securely in queue, and never persisted to ElasticSearch |\n| samples | `number` | (See `options.lighthouse.samples`) | Number of samples to take before recording result |\n| attempts | `number` | (See `options.lighthouse.attempts`) | Number of failure attempts before giving up |\n| hostOverride | `string` | optional | Map host of request to an explicit IP. [Not yet supported by Chrome in Headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=798793) |\n| delay | `number` | (See `options.lighthouse.delay`) | Delay (in milliseconds) before test will be performed. Useful if the intended service or domain is not expected to be available for some time |\n| group | `string` | `unknown` | Group to categorize result to. Useful when searching/filtering on different groups of results |\n| report | `bool` | `true` | If the full report should be stored, allowing for viewing in LH Viewer |\n| auditMode | `false|'simple'|'details'|'all'` | `'simple'` | How much of the [audits](https://github.com/GoogleChrome/lighthouse/blob/master/docs/understanding-results.md#properties) data to persist to storage |\n| cookies | `array\u003c{name=string|Cookie}\u003e` | optional | Auto-translates cookies to set to the required `commands` |\n| cookies[idx].value | `string` | **required** | Value to set for cookie |\n| cookies[idx].domain | `string` | optional | Domain to apply cookie to. Defaults to root of `requestedUrl` domain |\n| cookies[idx].url | `string` | optional | If the page required to apply cookie to differs from the `requestedUrl` you can set that here |\n| cookies[idx].path | `string` | optional | Path to apply to cookie |\n| cookies[idx].secure | `boolean` | optional | Is cookie secured |\n| cookies[idx].httpOnly | `boolean` | optional | HTTP only |\n| commands | `array\u003cCommmand\u003e` | optional | [DevTool Commands](https://chromedevtools.github.io/devtools-protocol/) to be executed prior to running Lighthouse |\n| commands[idx].command | `string` | **required** | [DevTool Command](https://chromedevtools.github.io/devtools-protocol/) to execute |\n| commands[idx].options | `object` | **required** | [DevTool Command Options](https://chromedevtools.github.io/devtools-protocol/) to supply command |\n| meta | `object` | optional | Object containing metadata that will be attached to final lighthouse results |\n\n\n### Command\n\n\n## Storage Clients\n\n* [AWS S3](https://github.com/godaddy/lighthouse4u/tree/master/packages/lighthouse4u-s3) - Store and basic query\n  support via S3 buckets.\n* [File System](https://github.com/godaddy/lighthouse4u/tree/master/packages/lighthouse4u-fs) - Not recommended\n  for production usage. Good for local testing.\n* [Elasticsearch](https://github.com/godaddy/lighthouse4u/tree/master/packages/lighthouse4u-es) - Store and query\n  support via Elasticsearch.\n\n\n## Queue Clients\n\n* [AWS SQS](https://github.com/godaddy/lighthouse4u/tree/master/packages/lighthouse4u-sqs) - Support for\n  Simple Queue Service.\n* [AMQP](https://github.com/godaddy/lighthouse4u/tree/master/packages/lighthouse4u-amqp) - Support for\n  RabbitMQ and other AMQP compatible queues.\n\n\n## Secure Configuration\n\nOptionally you may run LH4U with the `--secure-config {secureConfigPath}` and `--secure-file {securePrivateFile}` powered by [Config Shield](https://github.com/godaddy/node-config-shield).\n\n```\nnpm i -g config-shield\ncshield ./app/config/secure some-private.key\n\u003e help\n\u003e set queue { options: { url: 'amqp://lh4u_user:someSuperSecretPassword@rmq.on-my-domain.com:5672/lh4u' } }\n\u003e get queue\n: { \"options\": { \"url\": \"amqp://lh4u_user:someSuperSecretPassword@rmq.on-my-domain.com:5672/lh4u\" } }\n\u003e save\n\u003e exit\n```\n\nThe example above will allow you to merge sensitive credentials with your existing public configuration. Only options defined in the secure config will be deeply merged.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgodaddy%2Flighthouse4u","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgodaddy%2Flighthouse4u","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgodaddy%2Flighthouse4u/lists"}