{"id":25395041,"url":"https://github.com/proofrock/fileway","last_synced_at":"2025-04-10T13:20:08.103Z","repository":{"id":264707611,"uuid":"894156152","full_name":"proofrock/fileway","owner":"proofrock","description":"A self hosted real-time file transfer service for CLI or browser","archived":false,"fork":false,"pushed_at":"2025-03-23T08:37:36.000Z","size":316,"stargazers_count":22,"open_issues_count":2,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-23T09:30:28.179Z","etag":null,"topics":["file-transfer","homeserver","http","tunneling"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/proofrock.png","metadata":{"files":{"readme":"README.adoc","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":"2024-11-25T21:17:17.000Z","updated_at":"2025-03-18T08:16:17.000Z","dependencies_parsed_at":"2025-01-27T13:11:27.748Z","dependency_job_id":"5b72d0c4-7cff-4f10-b555-89248a152290","html_url":"https://github.com/proofrock/fileway","commit_stats":null,"previous_names":["proofrock/fileconduit","proofrock/fileway"],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/proofrock%2Ffileway","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/proofrock%2Ffileway/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/proofrock%2Ffileway/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/proofrock%2Ffileway/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/proofrock","download_url":"https://codeload.github.com/proofrock/fileway/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248225658,"owners_count":21068078,"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-transfer","homeserver","http","tunneling"],"created_at":"2025-02-15T19:53:27.840Z","updated_at":"2025-04-10T13:20:08.079Z","avatar_url":"https://github.com/proofrock.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"= 🚠 fileway v0.9.0\r\n@proofrock \u003coss@germanorizzo.it\u003e\r\n:toc:\r\n:sectnums:\r\n:source-highlighter: highlightjs\r\n\r\n== tl;dr\r\n\r\nFileway is a real-time file transfer service that works through a web browser or command line. It lets two users exchange files through an intermediary server without storing data or requiring direct access to each other's systems - like a live-streaming version of WeTransfer(TM)footnote:[WeTransfer(TM) is a trademark of WeTransfer B.V.].\r\n\r\n[NOTE]\r\n====\r\nWhile it's called _file_-way, it can also transfer text; useful for config snippets or similar.\r\n====\r\n\r\nYou can jump in following the xref:#TUT[tutorial] or read on for an architectural overview.\r\n\r\n== Overview\r\n\r\n`fileway` is a client/server application that transfer single files (xref:docs/uploading.adoc#ZIP[well, technically...]) or text snippets. It accepts an upload and blocks it until a download is initiated, then processes the upload and sends the data to the downloading client. \r\n\r\nIt can be used to relay files (or text) from a server to another, if the two servers can't easily \"see\" each other but can see a third server, where `fileway` is installed.\r\n\r\n.Sequence diagram\r\nimage::resources/seq_diagram.png[Sequence diagram]\r\n\r\nThe transfer is secure: a unique link is generated, and you should only take care to serve it via HTTPS (\u003c\u003cDIWC,discussed below\u003e\u003e).\r\n\r\nUploads can be done with a web interface - works on mobile, too - or via a python3 script, for shells. Downloads can be done via a browser or using the commandline, e.g. `curl`. The uploading script or web session must be kept online until the transfer is done. Of course, multiple concurrent transfers are possible, and it transfers one file/text at a time.\r\n\r\n`fileway` doesn't store anything on the server, it just keeps a buffer to make transfers smooth. It doesn't have any dependency other than `go`. It's distributed as a docker image, but you can easily build it yourself. Also provided, a docker image that includes `caddy` for simple HTTPS provisioning.\r\n\r\nxref:docs/server.adoc#RAB[Builds are reproducible].\r\n\r\n== Tutorial [[TUT]]\r\n\r\nFor a quick test, you can run it locally. Prerequisites are `docker`, a file to upload, nothing else.\r\n\r\nRun the server:\r\n\r\n[source,bash]\r\n----\r\ndocker run --rm -p 8080:8080 -e FILEWAY_SECRET_HASHES='$2a$10$I.NhoT1acD9XkXmXn1IMSOp0qhZDd63iSw1RfHZP7nzyg/ItX5eVa' ghcr.io/proofrock/fileway:latest\r\n----\r\n\r\n[TIP]\r\n====\r\nThe hash is in BCrypt format, so it has some `$`; it must be escaped appropriately. In this case, using single quotes.\r\n====\r\n\r\nThen open http://localhost:8080 to access the upload web page. Put `mysecret` as the secret, and choose a file; or select the right radio button and input a text.\r\n\r\nPress the Upload button.\r\n\r\nIn the two boxes that will be displayed, you'll find an URL to be open directly in a browser; and a `curl` commandline to download the file.\r\n\r\n[NOTE]\r\n====\r\nYou can use anything to download a file URL, as long as it supports taking the filename from the `Content-Disposition` header. That's the `-J` switch for `curl` and the `--content-disposition` one for `wget` (still marked experimental).\r\n====\r\n\r\n== Documentation\r\n\r\n* xref:docs/server.adoc[About the *server*] and how to configure it, build it and add a reverse proxy;\r\n\r\n* xref:docs/uploading.adoc[About the *upload* methods], which one to choose and how to use them best;\r\n\r\n* xref:docs/downloading.adoc[About the *download* links] and all the design choices.\r\n\r\nLet me know if you need more info!\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fproofrock%2Ffileway","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fproofrock%2Ffileway","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fproofrock%2Ffileway/lists"}