{"id":19497869,"url":"https://github.com/heylu/share","last_synced_at":"2025-04-25T22:32:40.844Z","repository":{"id":64876609,"uuid":"210118918","full_name":"heyLu/share","owner":"heyLu","description":"A tiny personal minimalistic file-sharing service.","archived":false,"fork":false,"pushed_at":"2023-02-25T16:52:08.000Z","size":47,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2023-03-11T15:07:49.753Z","etag":null,"topics":["file-sharing","html","no-dependencies","no-javascript","simple"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/heyLu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-09-22T09:05:58.000Z","updated_at":"2023-02-25T12:18:58.000Z","dependencies_parsed_at":"2022-12-19T12:47:44.525Z","dependency_job_id":null,"html_url":"https://github.com/heyLu/share","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heyLu%2Fshare","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heyLu%2Fshare/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heyLu%2Fshare/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heyLu%2Fshare/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/heyLu","download_url":"https://codeload.github.com/heyLu/share/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224019641,"owners_count":17242176,"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":["file-sharing","html","no-dependencies","no-javascript","simple"],"created_at":"2024-11-10T21:48:27.321Z","updated_at":"2024-11-10T21:48:29.202Z","avatar_url":"https://github.com/heyLu.png","language":"Go","readme":"# share - share files\n\nA tiny personal minimalistic file-sharing service.  Written in Go, minimal dependencies.\n\n![A screenshort of the page](./screenshot.png)\n\n## Try it out!\n\n```\ndocker run -it --rm -p 9999:9999 ghcr.io/heylu/share:main\n```\n\nAlternatively, clone the repo and run it using `go run .`.\n\n## Configuration\n\n- command line:\n\n\t```\n\t-addr string\n\t      The address the server is listening on. (default \"localhost:9999\")\n\t-uploads-dir string\n\t      The directory to store the uploads in. (default \"./uploads/\")\n\t```\n- `BASE_URL` (environment)\n- `upload-secret.txt` (a secret string that needs to be specified to be able to upload)\n\t- empty by default, allowing uploads by everyone\n- `admin-secret.txt` (optional, allows viewing usage stats at `/stats` with user `admin` + admin-secret)\n- code-only:\n\t- max upload size (50mb)\n\t- rate limit (1 upload request per 10 seconds)\n\t- expiry (14 days)\n\n## Features\n\n(Unchecked items are not implemented yet.)\n\n- [x] upload only with password\n- [x] upload rate limiting\n- [ ] set content type for downloads\n- [x] delete files after N days\n- [x] admin stats (rate limiting, uploads, num downloads)\n- [ ] password encryption (optional, encrypted with password on disk, crypto/aes?)\n\t- seems extremely tricky, consider using WebCryptoAPI implementation from firefox send?\n\t\t- would like to keep it server-side though, to avoid JS as we did so far...\n\t- could do an \"obfuscation\" method for pseudo-security, i.e. security against novices, like me\n\n### Encryption ideas\n\n- encryption *at rest*, i.e. the server gets sent the plaintext\n\t- malicious code/servers could record the plaintext\n- crypto/aes (with `sha256(password)` as key) + cipher.NewOTR\n- password is also checked using bcrypt before attempting decryption\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fheylu%2Fshare","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fheylu%2Fshare","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fheylu%2Fshare/lists"}