{"id":21667546,"url":"https://github.com/rutgerbrf/gitolfs3","last_synced_at":"2025-10-05T20:50:26.414Z","repository":{"id":236371825,"uuid":"792473928","full_name":"rutgerbrf/gitolfs3","owner":"rutgerbrf","description":"A very simple Git LFS server that stores stuff in S3-compatible backends","archived":false,"fork":false,"pushed_at":"2025-08-29T23:49:16.000Z","size":3122,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-08-30T01:20:09.880Z","etag":null,"topics":["git","git-lfs","s3"],"latest_commit_sha":null,"homepage":"https://git.fautchen.eu/gitolfs3.git","language":"Rust","has_issues":false,"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/rutgerbrf.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-04-26T18:36:44.000Z","updated_at":"2025-08-29T23:49:19.000Z","dependencies_parsed_at":"2024-04-28T23:23:24.190Z","dependency_job_id":"f910f4cb-f729-47f5-a31b-19db8716a790","html_url":"https://github.com/rutgerbrf/gitolfs3","commit_stats":null,"previous_names":["rutgerbrf/gitolfs3"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rutgerbrf/gitolfs3","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rutgerbrf%2Fgitolfs3","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rutgerbrf%2Fgitolfs3/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rutgerbrf%2Fgitolfs3/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rutgerbrf%2Fgitolfs3/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rutgerbrf","download_url":"https://codeload.github.com/rutgerbrf/gitolfs3/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rutgerbrf%2Fgitolfs3/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278518732,"owners_count":26000177,"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","status":"online","status_checked_at":"2025-10-05T02:00:06.059Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["git","git-lfs","s3"],"created_at":"2024-11-25T11:39:43.399Z","updated_at":"2025-10-05T20:50:26.398Z","avatar_url":"https://github.com/rutgerbrf.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"Gitolfs3: a very simple Git LFS server\n======================================\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-brightgreen.svg)](https://opensource.org/licenses/MIT)\n\nGitolfs3 has a singular purpose: provide me with a personal Git LFS server that\nI can run on my VPS, that stores objects in S3. It seems to be doing an okay\njob at it so far.\n\nThe name 'Gitolfs3' started as some kind of concoction of Gitolite, LFS and S3.\nThese days, this project has nothing to do with Gitolite because I don't use\nGitolite anymore. (It was too extensive for my use case, and I prefer to keep\nthe complexity of my system down as much as possible.)\n\nCurrently, it has the following features:\n\n- Storage with S3-compatible services (at the moment of writing, I am using\n  Scaleway Object Storage for this purpose).\n- Git LFS Batch API support. Only the basic transfer adapter is supported. Only\n  SHA256 Object IDs (OIDs) are supported.\n- `git-lfs-authenticate` is provided for authentication over SSH. File transfer\n  over SSH using `git-lfs-transfer` is not supported.\n- A Git shell is provided so that I can stay sane. (I don't recall 100%, but I\n  believe this was nice when wanting to push to some ssh://git@asdf/blabla.git\n  repo without having to type `/srv/git` before the repo name. And I don't want\n  to have to use something like Gitolite.)\n- Gitolfs3 does not require any kind of persistent nor temporary storage for\n  token storage. Instead, user authentication/authorization between\n  `git-lfs-authenticate` and the Gitolfs3 server is done using HMAC(-SHA256)\n  MACs.\n- Limiting unauthenticated public downloads on a per-hour basis. Storage is\n  required for this. (This feature is implemented pretty badly.)\n- Public/private repos based on the `git-daemon-export-ok` file in the bare\n  repo. (I have a very particular setup in which this is desirable.)\n    - Downloads for files in public repositories are 'proxied' through the\n      Gitolfs3 server, at least when accessed from the public internet.\n    - Unauthenticated users accessing the service over a private network\n      (authorized by `X-Fowarded-Host`) can access all repositories. Downloads\n      for these users are not proxied: instead, they are directed to pre-signed\n      S3 download URLs.\n    - Authenticated users can download and upload for all repositories,\n      regardless of how they access the service.\n\nThis program, as it is, solely serves my needs. Although I may occasionally add\nsome features or perform some cleanups (especially the server still requires\nsome), I have no interest in making this program work for people with different\nuse cases than me. In case you want to use this software, feel free to, but\nexpect that you will basically have to 'make it your own'. If you have a\nburning question or find a security vulnerability, feel free to email me. I'm\nsure you'll manage to find my email address somewhere.\n\nNice-to-have features that I may implement at some point, when I feel a need\nto:\n\n- No namespacing on S3. (This would mean that having the same big file in two\n  repositories would mean it is only stored on S3 once.)\n- Any kind of file deletion/garbage collection. If you ever have the need, you\n  need to do this manually right now.\n- Resuming downloads.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frutgerbrf%2Fgitolfs3","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frutgerbrf%2Fgitolfs3","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frutgerbrf%2Fgitolfs3/lists"}