{"id":13509909,"url":"https://github.com/nanopack/logvac","last_synced_at":"2026-01-14T19:11:40.909Z","repository":{"id":142963875,"uuid":"45634966","full_name":"nanopack/logvac","owner":"nanopack","description":"Simple, lightweight, api-driven log aggregation service with realtime push capabilities and historical persistence. ","archived":false,"fork":false,"pushed_at":"2019-03-11T15:16:50.000Z","size":6097,"stargazers_count":71,"open_issues_count":5,"forks_count":9,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-30T15:36:04.012Z","etag":null,"topics":["developer-tools","devops","devtools","golang","log-collector","logging","logs","nanobox","nanopack","realtime"],"latest_commit_sha":null,"homepage":null,"language":"Go","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/nanopack.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":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-11-05T19:41:23.000Z","updated_at":"2025-02-13T10:06:12.000Z","dependencies_parsed_at":"2023-04-13T07:46:43.025Z","dependency_job_id":null,"html_url":"https://github.com/nanopack/logvac","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/nanopack/logvac","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nanopack%2Flogvac","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nanopack%2Flogvac/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nanopack%2Flogvac/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nanopack%2Flogvac/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nanopack","download_url":"https://codeload.github.com/nanopack/logvac/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nanopack%2Flogvac/sbom","scorecard":{"id":674067,"data":{"date":"2025-08-11","repo":{"name":"github.com/nanopack/logvac","commit":"d92f8165771ac0b2693c8fe4b94b76c916919184"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.2,"checks":[{"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/6 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":"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":"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":"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":"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":"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":"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":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"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 golang:1.10 to golang:1.10@sha256:6d5e79878a3e4f1b30b7aa4d24fb6ee6184e905a9b172fc72593935633be4c46","Warn: downloadThenRun not pinned by hash: Dockerfile:15","Info:   0 out of   1 containerImage dependencies pinned","Info:   0 out of   1 downloadThenRun 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":"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":"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":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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 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"}}]},"last_synced_at":"2025-08-21T21:00:10.690Z","repository_id":142963875,"created_at":"2025-08-21T21:00:10.690Z","updated_at":"2025-08-21T21:00:10.690Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28431663,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T18:57:19.464Z","status":"ssl_error","status_checked_at":"2026-01-14T18:52:48.501Z","response_time":107,"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":["developer-tools","devops","devtools","golang","log-collector","logging","logs","nanobox","nanopack","realtime"],"created_at":"2024-08-01T02:01:16.772Z","updated_at":"2026-01-14T19:11:40.872Z","avatar_url":"https://github.com/nanopack.png","language":"Go","readme":"# Logvac\n[![GoDoc](https://godoc.org/github.com/nanopack/logvac?status.svg)](https://godoc.org/github.com/nanopack/logvac)\n\nSimple, lightweight, api-driven log aggregation service with realtime push capabilities and historical persistence.\n\n## Quickstart\n\n```sh\n# start server (may require commented flags)\nlogvac -s # -A /tmp/auth.db -d /tmp/logvac.db -u 127.0.0.1:6361\n\n# add auth token (using default 'auth-address')\nlogvac add-token -t TOKEN\n\n# add a log via http\ncurl -k https://127.0.0.1:6360/logs -H \"X-USER-TOKEN: TOKEN\" \\\n     -d '{\"id\":\"log-test\", \"type\":\"log\", \"message\":\"my first log\"}'\n\n# view log via http\ncurl -k \"https://127.0.0.1:6360/logs?type=log\u0026auth=TOKEN\"\n\n# Congratulations logmaster!\n```\n\n#### Gotchas\n- If you're seeing any of the following errors, run logvac with admin or sudo privileges (or adjust your configuration):\n  - `Authenticator failed to initialize - open /var/db/log-auth.bolt: permission denied`\n  - `Collector failed to initialize - listen udp 127.0.0.1:514: bind: permission denied`\n\n- If logvac doesn't seem to be doing anything (adding/fecthing logs), there is a chance you've started the server with authentication (the default) but have forgotten to add a token:\n`logvac add-token -t TOKEN`\n\n- If your logs aren't showing up where you think they should, try checking the 'app' type and see if they are there. By default logvac will log to `type=app` (unless changed via config options). If you have a malformed entry (even with a type specified) it will end up there:\n`curl -k \"https://127.0.0.1:6360?type=app\u0026auth=TOKEN\"`\n\n## Usage\n```\n  logvac [flags]\n  logvac [command]\n```\n\nAvailable Commands:\n```\n  add-token   Add http publish/subscribe authentication token\n  export      Export http publish/subscribe authentication tokens\n  import      Import http publish/subscribe authentication tokens\n```\n\nFlags:\n```\n  -A, --auth-address string   Address or file location of authentication db. ('boltdb:///var/db/logvac.bolt' or 'postgresql://127.0.0.1') (default \"boltdb:///var/db/log-auth.bolt\")\n  -c, --config-file string    config file location for server\n  -C, --cors-allow string     Sets the 'Access-Control-Allow-Origin' header (default \"*\")\n  -d, --db-address string     Log storage address (default \"boltdb:///var/db/logvac.bolt\")\n  -i, --insecure              Don't use TLS (used for testing)\n  -a, --listen-http string    API listen address (same endpoint for http log collection) (default \"127.0.0.1:6360\")\n  -t, --listen-tcp string     TCP log collection endpoint (default \"127.0.0.1:6361\")\n  -u, --listen-udp string     UDP log collection endpoint (default \"127.0.0.1:514\")\n  -k, --log-keep string       Age or number of logs to keep per type '{\"app\":\"2w\", \"deploy\": 10}'' (int or X(m)in, (h)our,  (d)ay, (w)eek, (y)ear) (default \"{\\\"app\\\":\\\"2w\\\"}\")\n  -l, --log-level string      Level at which to log (default \"info\")\n  -L, --log-type string       Default type to apply to incoming logs (commonly used: app|deploy) (default \"app\")\n  -p, --pub-address string    Log publisher (mist) address (\"mist://127.0.0.1:1445\")\n  -P, --pub-auth string       Log publisher (mist) auth token\n  -s, --server                Run as server\n  -T, --token string          Administrative token to add/remove 'X-USER-TOKEN's used to pub/sub via http (default \"secret\")\n  -v, --version               Print version info and exit\n```\n\nConfig File: (takes precedence over cli flags)\n```json\n// logvac.json\n{\n  \"listen-http\": \"127.0.0.1:6360\",\n  \"listen-udp\": \"127.0.0.1:514\",\n  \"listen-tcp\": \"127.0.0.1:6361\",\n  \"pub-address\": \"\",\n  \"pub-auth\": \"\",\n  \"db-address\": \"boltdb:///var/db/logvac.bolt\",\n  \"auth-address\": \"boltdb:///var/db/log-auth.bolt\",\n  \"cors-allow\": \"*\",\n  \"log-keep\": \"{\\\"app\\\":\\\"2w\\\"}\",\n  \"log-type\": \"app\",\n  \"log-level\": \"info\",\n  \"token\": \"secret\",\n  \"insecure\": false,\n  \"server\": true\n}\n```\n\n#### As a Server\n```\nlogvac -c logvac.json\n## OR (uses defaults seen in config file)\nlogvac -s\n```\n\n#### Cli uses\nexport|import\n```sh\n# logvac export dumps the authenticator's database for importing to another authenticator database\nlogvac export | logvac import -A '/tmp/copy-log-auth.bolt'\n## OR\n# works with files too\nlogvac export -f log-auth.dump\n```\nadd-token\n```sh\n# unless the end user sets auth-address to \"\", an auth-token will need to be added in order to publish/fetch logs via http\nlogvac add-token -t \"user1-token\"\n## if you specified a different auth-address for your server, specify it here as such:\nlogvac add-token -t \"user1-token\" -A \"boltdb:///tmp/log-auth.bolt\"\n```\n\n#### Adding|Viewing Logs\nSee syslog examples [here](./collector/README.md)  \nSee http examples [here](./api/README.md)  \n**Important Note:** javascript clients may see up-to a ~100 nanosecond variance when specifying 'start=xxx' as a query parameter due to javascript's lack of precision for the 'number' datatype  \n\n## Todo\n\n- Negate tag (msg.Tag != tag) in drain.Slice if tag[0] == \"!\"\n- Cleanup postgres authenticator db\n- Allow multiple filters (id=web.dashboard\u0026id=data.redis)\n\n## Contributing\n\nContributions to the logvac project are welcome and encouraged. Logvac is a [Nanobox](https://nanobox.io) project and contributions should follow the [Nanobox Contribution Process \u0026 Guidelines](https://docs.nanobox.io/contributing/).\n\n","funding_links":[],"categories":["Go","golang"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnanopack%2Flogvac","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnanopack%2Flogvac","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnanopack%2Flogvac/lists"}