{"id":44250930,"url":"https://github.com/razzie/razvhost","last_synced_at":"2026-02-10T14:07:20.498Z","repository":{"id":53857753,"uuid":"256085998","full_name":"razzie/razvhost","owner":"razzie","description":"Virtual hosting/reverse proxy with TLS termination and automatic certificate management","archived":false,"fork":false,"pushed_at":"2025-01-12T17:16:23.000Z","size":9154,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-12T18:26:30.576Z","etag":null,"topics":["golang","https","reverse-proxy","s3","tls-termination","virtual-hosting"],"latest_commit_sha":null,"homepage":"","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/razzie.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":"2020-04-16T02:11:49.000Z","updated_at":"2025-01-12T17:16:21.000Z","dependencies_parsed_at":"2024-01-16T17:40:54.797Z","dependency_job_id":"f6c2ce49-2ab9-4ad6-afa6-a58fc502702e","html_url":"https://github.com/razzie/razvhost","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/razzie/razvhost","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/razzie%2Frazvhost","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/razzie%2Frazvhost/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/razzie%2Frazvhost/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/razzie%2Frazvhost/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/razzie","download_url":"https://codeload.github.com/razzie/razvhost/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/razzie%2Frazvhost/sbom","scorecard":{"id":763912,"data":{"date":"2025-08-11","repo":{"name":"github.com/razzie/razvhost","commit":"244b62596508e957e149a1adbea7222f3c2685db"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.8,"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":"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":"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":-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":"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":"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":"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":"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":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v1.14 not signed: https://api.github.com/repos/razzie/razvhost/releases/74465647","Warn: release artifact v1.13 not signed: https://api.github.com/repos/razzie/razvhost/releases/72915214","Warn: release artifact v1.12 not signed: https://api.github.com/repos/razzie/razvhost/releases/41249757","Warn: release artifact v1.11 not signed: https://api.github.com/repos/razzie/razvhost/releases/34957856","Warn: release artifact v1.14 does not have provenance: https://api.github.com/repos/razzie/razvhost/releases/74465647","Warn: release artifact v1.13 does not have provenance: https://api.github.com/repos/razzie/razvhost/releases/72915214","Warn: release artifact v1.12 does not have provenance: https://api.github.com/repos/razzie/razvhost/releases/41249757","Warn: release artifact v1.11 does not have provenance: https://api.github.com/repos/razzie/razvhost/releases/34957856"],"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: containerImage not pinned by hash: Dockerfile:1","Warn: containerImage not pinned by hash: Dockerfile:6: pin your Docker image by updating alpine to alpine@sha256:4bcff63911fcb4448bd4fdacec207030997caf25e9bea4045fa6c8c44de311d1","Info:   0 out of   2 containerImage 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":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 24 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":3,"reason":"7 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GO-2022-0635","Warn: Project is vulnerable to: GO-2022-0646","Warn: Project is vulnerable to: GO-2025-3528 / GHSA-265r-hfxg-fhmg","Warn: Project is vulnerable to: GO-2025-3829 / GHSA-4vq8-7jfc-9cvp","Warn: Project is vulnerable to: GO-2025-3487 / GHSA-hcg3-q754-cr77","Warn: Project is vulnerable to: GO-2025-3503 / GHSA-qxp5-gwg8-xv66","Warn: Project is vulnerable to: GO-2025-3595 / GHSA-vvgc-356p-c3xw"],"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-23T00:12:41.454Z","repository_id":53857753,"created_at":"2025-08-23T00:12:41.455Z","updated_at":"2025-08-23T00:12:41.455Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29303122,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-10T14:01:40.753Z","status":"ssl_error","status_checked_at":"2026-02-10T14:01:37.954Z","response_time":65,"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":["golang","https","reverse-proxy","s3","tls-termination","virtual-hosting"],"created_at":"2026-02-10T14:07:17.465Z","updated_at":"2026-02-10T14:07:20.493Z","avatar_url":"https://github.com/razzie.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# razvhost\nVirtual hosting/reverse proxy with TLS termination and automatic certificate management\n\n## Features\n* Operation modes:\n  * Reverse proxy\n  * Redirect\n  * File and directory hosting\n  * Reading S3 buckets\n  * Reading SFTP directories\n  * PHP hosting (requires php-fpm)\n  * Go WebAssembly hosting\n  * Tailing log files\n* HTTPS (TLS termination)\n* HTTP2\n* Automatic certificate management (from Let's Encrypt)\n* Live config reload\n* Supports all kinds of combinations of routes and target paths\n* Supports [sprig](https://masterminds.github.io/sprig/) templates\n* Load balancing\n* Watching docker containers with VIRTUAL_HOST and VIRTUAL_PORT environment variables\n* Configurable header discarding\n* Request logging\n\n## Configuration\nBy default razvhost tries to read configuration from `config` file in the working directory.\nAlternatively you can specify the config file location with `-cfg \u003cconfig file\u003e` command line arg.\n\nAn example configuration:\n```\n# comment\nexample.com alias.com {{env \"ALIAS\"}} -\u003e http://localhost:8080\nexample.com/*/files -\u003e file:///var/www/public/\nloadbalance.com -\u003e http://localhost:8081 http://localhost:8082\n*.redirect.com -\u003e redirect://github.com/razzie/razvhost\npublic-bucket.com -\u003e s3://public-bucket/prefix?region=eu-central-1\nprivate-bucket.com -\u003e s3://key:secret@private-bucket/prefix?region=eu-central-1\nmysftp.com -\u003e sftp://user:pass@sftphost.com/dir\nphpexample.com -\u003e php:///var/www/index.php\nphpexample2.com -\u003e php:///var/www/mysite/\ngolang-project.com -\u003e go-wasm:///path/to/build.wasm\nkernel-logs-new.net -\u003e tail-new:///var/log/kern.log\nkernel-logs-all.net -\u003e tail:///var/log/kern.log\n```\n\n## Build\nYou can either check out the git repo and build:\n```Shell\ngit clone https://github.com/razzie/razvhost.git\ncd razvhost\nmake\n```\nor use the **go** tool:\n```Shell\ngo install github.com/razzie/razvhost/cmd/razvhost@latest\n```\n\n## Run\nYou don't need to run razvhost as root user, but you will need to set special capabilities on the binary to be able to bind 80 and 443 ports.\nUse either `sudo setcap 'cap_net_bind_service=+ep' ./razvhost` or the existing setcap.sh helper in this repo: `sudo ./setcap.sh`\n\nCommand line args:\n```\n./razvhost -h\nUsage of ./razvhost:\n  -certs string\n        Directory to store certificates in (default \"certs\")\n  -cfg string\n        Config file (default \"config\")\n  -debug string\n        Debug listener address, where hostname is the first part of the URL\n  -discard-headers string\n        Comma separated list of http headers to discard\n  -docker\n        Watch Docker events to find containers with VIRTUAL_HOST\n  -http2\n        Enable HTTP2\n  -no-server-header\n        Disable 'Server: razvhost/\u003cversion\u003e' header in responses\n  -nocert\n        Disable HTTPS and certificate handling\n  -php-addr string\n        PHP CGI address (default \"unix:///var/run/php/php-fpm.sock\")\n```\n\nIf you intend to run razvhost using **supervisor**, here is an example configuration:\n```INI\n[program:razvhost]\ncommand=/razvhost/razvhost -http2\nuser=\nstderr_logfile=/var/log/supervisor/razvhost-err.log\nstdout_logfile=/var/log/supervisor/razvhost-stdout.log\ndirectory=/razvhost/\nautostart=true\nautorestart=true\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frazzie%2Frazvhost","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frazzie%2Frazvhost","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frazzie%2Frazvhost/lists"}