{"id":42745189,"url":"https://github.com/schwarzlichtbezirk/hms","last_synced_at":"2026-01-29T19:12:20.298Z","repository":{"id":57546417,"uuid":"200435694","full_name":"schwarzlichtbezirk/hms","owner":"schwarzlichtbezirk","description":"Home Media Server. Play media files and view images, photos with theirs markers on the map. Backend - golang, frontend - Vue.js.","archived":false,"fork":false,"pushed_at":"2024-06-27T11:20:47.000Z","size":57950,"stargazers_count":5,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-06-27T16:32:45.529Z","etag":null,"topics":["geotag","geotracker","golang","gpx-reader","iso9660","leaflet-map","media-player","media-server","mp3-player","mp4-player","vue3","vuejs"],"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/schwarzlichtbezirk.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":"2019-08-04T01:11:09.000Z","updated_at":"2024-06-27T11:20:53.000Z","dependencies_parsed_at":"2024-10-26T01:02:19.542Z","dependency_job_id":null,"html_url":"https://github.com/schwarzlichtbezirk/hms","commit_stats":null,"previous_names":[],"tags_count":67,"template":false,"template_full_name":null,"purl":"pkg:github/schwarzlichtbezirk/hms","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schwarzlichtbezirk%2Fhms","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schwarzlichtbezirk%2Fhms/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schwarzlichtbezirk%2Fhms/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schwarzlichtbezirk%2Fhms/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/schwarzlichtbezirk","download_url":"https://codeload.github.com/schwarzlichtbezirk/hms/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schwarzlichtbezirk%2Fhms/sbom","scorecard":{"id":804517,"data":{"date":"2025-08-11","repo":{"name":"github.com/schwarzlichtbezirk/hms","commit":"217d6c6f29f9c9882e8239fa80998605788eb94e"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.8,"checks":[{"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":"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":"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":"Code-Review","score":0,"reason":"Found 0/30 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":"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":"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":"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":"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":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.11.0 not signed: https://api.github.com/repos/schwarzlichtbezirk/hms/releases/142470129","Warn: release artifact v0.10.2 not signed: https://api.github.com/repos/schwarzlichtbezirk/hms/releases/102714169","Warn: release artifact v0.10.1 not signed: https://api.github.com/repos/schwarzlichtbezirk/hms/releases/100523059","Warn: release artifact v0.10.0 not signed: https://api.github.com/repos/schwarzlichtbezirk/hms/releases/98672139","Warn: release artifact v0.9.3 not signed: https://api.github.com/repos/schwarzlichtbezirk/hms/releases/94307616","Warn: release artifact v0.11.0 does not have provenance: https://api.github.com/repos/schwarzlichtbezirk/hms/releases/142470129","Warn: release artifact v0.10.2 does not have provenance: https://api.github.com/repos/schwarzlichtbezirk/hms/releases/102714169","Warn: release artifact v0.10.1 does not have provenance: https://api.github.com/repos/schwarzlichtbezirk/hms/releases/100523059","Warn: release artifact v0.10.0 does not have provenance: https://api.github.com/repos/schwarzlichtbezirk/hms/releases/98672139","Warn: release artifact v0.9.3 does not have provenance: https://api.github.com/repos/schwarzlichtbezirk/hms/releases/94307616"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"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":"Vulnerabilities","score":3,"reason":"7 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-j7hp-h8jx-5ppr","Warn: Project is vulnerable to: GO-2025-3553 / GHSA-mh63-6h87-95cp","Warn: Project is vulnerable to: GO-2024-3321 / GHSA-v778-237x-gjrc","Warn: Project is vulnerable to: GO-2025-3487 / GHSA-hcg3-q754-cr77","Warn: Project is vulnerable to: GO-2024-3333","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"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: containerImage not pinned by hash: Dockerfile:14","Warn: goCommand not pinned by hash: task/make-builder.sh:9","Info:   0 out of   1 goCommand dependencies pinned","Info:   0 out of   1 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"}}]},"last_synced_at":"2025-08-23T11:24:54.665Z","repository_id":57546417,"created_at":"2025-08-23T11:24:54.665Z","updated_at":"2025-08-23T11:24:54.665Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28882827,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-29T16:41:59.663Z","status":"ssl_error","status_checked_at":"2026-01-29T16:39:39.641Z","response_time":59,"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":["geotag","geotracker","golang","gpx-reader","iso9660","leaflet-map","media-player","media-server","mp3-player","mp4-player","vue3","vuejs"],"created_at":"2026-01-29T19:12:19.811Z","updated_at":"2026-01-29T19:12:20.287Z","avatar_url":"https://github.com/schwarzlichtbezirk.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Home Media Server\n\n[![GitHub release][1]][2]\n[![Hits-of-Code][3]][4]\n\n[1]: https://img.shields.io/github/v/release/schwarzlichtbezirk/hms.svg\n[2]: https://github.com/schwarzlichtbezirk/hms/releases/latest\n[3]: https://hitsofcode.com/github/schwarzlichtbezirk/hms?branch=master\n[4]: https://hitsofcode.com/github/schwarzlichtbezirk/hms/view?branch=master\n\nBrowse files on your computer as in explorer, listen music with folder as playlist, view photos and markers of them on map by theirs geotags. Share some file or folder to get access from internet.\n\nMusic: plays MP3, OGG and others formats supported by browser. Video: display browser native supported formats, MP4 in all cases. Images: displays WebP, JPEG, PNG, GIF and others formats supported by browser. Also displays Adobe Photoshop PSD, TIFF, DDS, TGA images by converting to WebP at server layer for browser representation. If any image have EXIF properties with geotags it will be placed at the map. Maps tiles provider can be changed, there is can be selected satellite view, streets view, topographic view, or hybrid. GPS-tracks in GPX file format also builds on map.\n\nFiles can be viewed by browsing file structure same as in Explorer. Disks ISO9660 images can be browsed same as file system folders. Also opens any popular playlist formats as the folder.\n\nScreenshots:\n\n[![hms #1](http://images.sevstar.net/images/86980114770981357724_thumb.png)](http://images.sevstar.net/images/86980114770981357724.jpg)\n[![hms #1](http://images.sevstar.net/images/08282078015756047629_thumb.png)](http://images.sevstar.net/images/08282078015756047629.jpg)\n\n## Download\n\nCompiled binaries can be downloaded in [Releases](https://github.com/schwarzlichtbezirk/hms/releases) section.\n\n## How to build\n\n1. First of all install [Golang](https://go.dev/dl/) of last version and GCC toolchain *(tip: for Windows it can be MinGW-w64 distribution from [WinLibs](https://winlibs.com/))*. Requires that [GOPATH is set](https://golang.org/doc/code.html#GOPATH). Be sure that `PATH` environment variable contains `%GOPATH%/bin` chunk.\n\n2. Install [Java RE](https://www.java.com/en/download/manual.jsp), its needed to run [Closure Compiler](https://developers.google.com/closure/compiler) and [Closure Stylesheets](https://github.com/google/closure-stylesheets/releases).\n\n3. Clone project, download dependencies, and run `bootstrap` script at `task` directory.\n\n4. Then run script to build executable, `build-win.x64.cmd` to build program for `Windows amd64` platform, or run `build-win.x86.cmd` to build program for `Windows x86` platform, or `build-linux.x64.sh` for `linux`-based platforms.\n\n```cmd\ngit clone https://github.com/schwarzlichtbezirk/hms.git\ncd hms\ngo mod download\ntask\\bootstrap.cmd\ntask\\build-win-x64.cmd\n```\n\nor\n\n```sh\ngit clone https://github.com/schwarzlichtbezirk/hms.git\ncd hms\ngo mod download\nsudo chmod +x ./task/*.sh\n./task/bootstrap.sh\n./task/build-linux-x64.sh\n```\n\n## Packages variations\n\nScript `pack.lua` helps to build resources pack with given at another lua-script set of skins and icons. Available formats for each icons set can be seen at `fulliconset` table. You can provide several formats for each icons set with given subsequence that will be used as list of `\u003csource\u003e` tags in `\u003cpicture\u003e`. In common case subsequence for formats can be followed: `avif`, `webp`, `jp2`, `png`, `gif`, `svg`. You can check on [caniuse.com](https://caniuse.com/) support of custom combination of formats. There is presents predefined scripts and tasks to build some resources combinations:\n\n* `hms-full` - full set of skins and icons with all available formats, can be useful for old browsers without `webp` support.\n* `hms-edge` - full set of skins and icons in `avif`, `webp` and `svg` formats, useful for modern browsers at most common cases.\n* `hms-webp` - full set with `webp` and `svg` formats only, useful for modern browsers.\n* `hms-tiny` - minimal set, with two `svg` icons set. Can be used on lightweight systems.\n* `hms-free` - set of icons with public license and allowed commercial usage.\n\n## Configuration\n\nBefore server start you can configure some options. Any configuration files lays at \"config\" folder, and have `yaml` file format.\n\nIf you're going to share resources, first of all you can open `hms.yaml` file and change `access-key` and `refresh-key` for tokens protection. This is main server settings file, and it does not modified by program. Then you can open `profiles.yaml` file and change default admin password to anything other. Changing authentication passwords and profile passwords - that's all modifications to provide basic protection access to server.\n\nResources placement can be configured by environment variables. Path to configuration file `hms.yaml` - by `CFGFILE`, directory with placement of resorces package - by `PKGPATH`, directory with images caches - by `TMBPATH`.\n\n## Authorization\n\nServer provides ability to make profiles each of which can have own set of drives, own set of shared resources, own templates for excluded files. User can be authorized for profile by its login+password. Unauthorized users can have access to shared by profile resources and have no ability for any modifications. List of profiles can be found in file `profiles.yaml`.\n\nIf page is opened on localhost, there is no need for authorization. On localhost you have silent authorized access to default profile. ID of default profile is `1` and can be modified at field `default-profile-id` of settings.\n\n## Home page and sharing\n\nOpen home page in browser, `localhost` if it running on local computer, and there will be list of categories. Home page can be opened from any other location by \"home\" button at top left.\n\n`Drives list` category contains list that can be modified by adding or removing some destinations each of which will be seems as a drive, \"plus\" and \"minus\" buttons on top right of folder slide serves for it. On first server start under the Windows, it will be scanned all available disks by their letters and added to list.\n\n`Shared resources` contans list of all shared folders and list of all shared files on active profile. All those resources have can be accessed by anyone in internet without authorization. If folder is shared, all nested subfolders are also shared. Categories also can be shared. Shared categories will be seen for anyone at home page. So, if `Shared resources` category is shared, anyone will see list of all shared resources. If `Drives list` is shared, anyone will get access to any drive in list.\n\nOther categories at home page contains list of folders with files of those category. Folder considered to some category if it has more then 50% files of this category. For example, if folder have 10 mp3 files and 2 jpg files, it will be in `Music and audio files`. Folders discovers, if they were opened at once.\n\nIf some category of files is shared, then anyone will see this category at home page, and have access to files of this category grouped into their folders. In this case there is no access to nested folders for anyone and no access to files of not shared categories in those folders. For example, if `Music and audio files` is shared, then anyone will see 10 mp3 files in some music folder, and does not see 2 jpg files in that folder.\n\n---\n(c) schwarzlichtbezirk, 2020-2023.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fschwarzlichtbezirk%2Fhms","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fschwarzlichtbezirk%2Fhms","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fschwarzlichtbezirk%2Fhms/lists"}