{"id":21477540,"url":"https://github.com/5ht2/fs-over-http","last_synced_at":"2025-07-15T10:33:29.091Z","repository":{"id":39741181,"uuid":"350538776","full_name":"5HT2/fs-over-http","owner":"5HT2","description":"A filesystem interface over http, with extras and docker support","archived":false,"fork":false,"pushed_at":"2024-07-07T00:08:13.000Z","size":205,"stargazers_count":15,"open_issues_count":7,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-07-07T01:26:44.456Z","etag":null,"topics":["docker","fasthttp","filesystem","go","http","http-server"],"latest_commit_sha":null,"homepage":"https://i.l1v.in","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/5HT2.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.md","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},"funding":{"custom":["https://payy.lv"]}},"created_at":"2021-03-23T01:12:00.000Z","updated_at":"2024-07-07T00:08:16.000Z","dependencies_parsed_at":"2022-07-31T23:28:01.688Z","dependency_job_id":"151ff4a4-1a94-4507-aa24-8cd1d61db26f","html_url":"https://github.com/5HT2/fs-over-http","commit_stats":null,"previous_names":["l1ving/fs-over-http"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/5HT2%2Ffs-over-http","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/5HT2%2Ffs-over-http/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/5HT2%2Ffs-over-http/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/5HT2%2Ffs-over-http/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/5HT2","download_url":"https://codeload.github.com/5HT2/fs-over-http/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226033243,"owners_count":17563126,"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","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":["docker","fasthttp","filesystem","go","http","http-server"],"created_at":"2024-11-23T11:14:12.182Z","updated_at":"2024-11-23T11:14:13.118Z","avatar_url":"https://github.com/5HT2.png","language":"Go","readme":"# [fs-over-http](https://i.l1v.in)\n[![time tracker](https://wakatime.com/badge/github/5HT2/fs-over-http.svg)](https://wakatime.com/badge/github/5HT2/fs-over-http)\n[![Docker Pulls](https://img.shields.io/docker/pulls/l1ving/fs-over-http?logo=docker\u0026logoColor=white)](https://hub.docker.com/r/l1ving/fs-over-http)\n[![Docker Build](https://img.shields.io/github/actions/workflow/status/5HT2/fs-over-http/docker-build.yml?logo=docker\u0026logoColor=white\u0026branch=master)](https://github.com/5HT2/fs-over-http/actions/workflows/docker-build.yml)\n[![CodeFactor](https://img.shields.io/codefactor/grade/github/5HT2/fs-over-http?logo=codefactor\u0026logoColor=white)](https://www.codefactor.io/repository/github/5HT2/fs-over-http)\n\nA filesystem interface over http.\n\n**NOTE:** I wrote this when I was still learning Go, and as such many improvements can be made. \nI have detailed what I would like to improve in the [TODO](#todo) section, with *Partial Content*,\nbetter *error handling* and *response syntax* being the main focus.\n\n## Contributing\n\nContributions to fix my code are welcome, as well as any improvements.\n\nTo build:\n```bash\ngit clone git@github.com:5HT2/fs-over-http.git\ncd fs-over-http\nmake\n```\n\nTo run:\n```bash\n# I recommend using genpasswd https://gist.github.com/5HT2/30f98284e9f92e1b47b4df6e05a063fc\nAUTH='some secure token'\necho \"$AUTH\" \u003e token\n\n# Change the port to whatever you'd like. \n# Change localhost to your public IP if you'd like.\n./fs-over-http -addr=localhost:6060\n```\n\n## Usage\n\nPlease see [`USAGE.md`](https://github.com/5HT2/fs-over-http/blob/master/USAGE.md) for examples of interacting with\na fs-over-http server.\n\n### IPv6\n\nIPv6 is supported, do note that you need to format the `addr` flag differently.\n\n```bash\n# Example IPv4\n./fs-over-http -addr \"10.0.1.1:6060\"\n# Example IPv6\n./fs-over-http -addr \"[2fb1:e540:13a7:3fa1:37bc:80b4:0b96:dbb8]:6060\"\n```\n\n#### Production\n\nI recommend using Caddy for automatic renewal + as a reverse proxy.\n```\n# Caddyfile example\ni.l1v.in {\n  header Server Caddy \"Nintendo Wii\"\n  reverse_proxy localhost:6060\n}\n```\n\nThere is also a docker image available with the following command, or checkout the \n[`update.sh`](https://github.com/5HT2/fs-over-http/blob/master/scripts/update.sh) script for automatically\nupdating a live docker image.\n```bash\ndocker pull l1ving/fs-over-http:latest\n```\n\n## TODO\n\n- [x] Binary file support\n- [x] Allow marking a folder as public\n- [ ] Custom shell for interacting\n- [ ] Partial Content support [(docs)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/206)\n- [x] Switch `X-File-Content` to using forms\n  - [x] eg: `curl -X POST -H \"Auth: $TOKEN\" -d 'content=File content' localhost:6060/file.txt`\n  - [x] Switch folder creation to same syntax with empty `content`\n  - [ ] Read 512 bytes at a time like [so](https://pkg.go.dev/github.com/valyala/fasthttp#RequestCtx.SetBodyStream).\n- [x] Move error handling to ListenAndServe instead of individually sending the error\n  - [x] Switch to using `X-Error-Message` instead of printing it out, add a newline end of normal responses\n- [x] Refactor use of JoinStr to `fmt.Sprintf/Sprintln` and `+`\n- [x] Set `ReadTimeout` and `WriteTimeout` to prevent abuse\n- [x] Add Docker image\n  - [x] Add CI service\n- [X] Add Caddyfile example\n  - [ ] Maybe with rate limit options and the such\n  - [X] Refactor docs about TLS\n- [x] Encoding of uploading text-based files (eg the ● character)\n- [x] Cleanup README\n- [x] Fix scripts to use new format\n","funding_links":["https://payy.lv"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F5ht2%2Ffs-over-http","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F5ht2%2Ffs-over-http","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F5ht2%2Ffs-over-http/lists"}