diff options
| author | Rutger Broekhoff | 2026-02-20 18:47:36 +0100 |
|---|---|---|
| committer | Rutger Broekhoff | 2026-02-20 18:47:36 +0100 |
| commit | 2db210ac33d680b0a7cd66f67f5b879e46101893 (patch) | |
| tree | d8309b7f7bd6afcdaf440b87b853381f4e15a5a8 | |
| parent | 0846901dd03d0020ef2889e702f0b58da5804afd (diff) | |
| download | gitolfs3-2db210ac33d680b0a7cd66f67f5b879e46101893.tar.gz gitolfs3-2db210ac33d680b0a7cd66f67f5b879e46101893.zip | |
Update README
| -rw-r--r-- | README.md | 43 |
1 files changed, 20 insertions, 23 deletions
| @@ -3,31 +3,31 @@ Gitolfs3: a very simple Git LFS server | |||
| 3 | 3 | ||
| 4 | [](https://opensource.org/licenses/MIT) | 4 | [](https://opensource.org/licenses/MIT) |
| 5 | 5 | ||
| 6 | Gitolfs3 has a singular purpose: provide me with a personal Git LFS server that | 6 | Gitolfs3 is my personal Git LFS server that runs on my VPS. It uses a |
| 7 | I can run on my VPS, that stores objects in S3. It seems to be doing an okay | 7 | S3-compatible service as backing storage. It seems to be working fine up until |
| 8 | job at it so far. | 8 | now, but doesn't get too much use (so the primary reason for breakage is me |
| 9 | being too lazy to refresh credentials). | ||
| 9 | 10 | ||
| 10 | The name 'Gitolfs3' started as some kind of concoction of Gitolite, LFS and S3. | 11 | The name 'Gitolfs3' started as a portmanteau of Gitolite, LFS and S3. These |
| 11 | These days, this project has nothing to do with Gitolite because I don't use | 12 | days, this project has nothing to do with Gitolite, because I don't use |
| 12 | Gitolite anymore. (It was too extensive for my use case, and I prefer to keep | 13 | Gitolite anymore. (It was too extensive for my use case, and I prefer to keep |
| 13 | the complexity of my system down as much as possible.) | 14 | the complexity of my system down as much as possible.) |
| 14 | 15 | ||
| 15 | Currently, it has the following features: | 16 | Currently, it has the following features: |
| 16 | 17 | ||
| 17 | - Storage with S3-compatible services (at the moment of writing, I am using | 18 | - Storage with S3-compatible services (at the moment of writing, I am using |
| 18 | Scaleway Object Storage for this purpose). | 19 | Scaleway Object Storage). |
| 19 | - Git LFS Batch API support. Only the basic transfer adapter is supported. Only | 20 | - Git LFS Batch API support. Only the basic transfer adapter with |
| 20 | SHA256 Object IDs (OIDs) are supported. | 21 | SHA256 Object IDs (OIDs) is supported. |
| 21 | - `git-lfs-authenticate` is provided for authentication over SSH. File transfer | 22 | - `git-lfs-authenticate` is provided for authentication over SSH. File transfer |
| 22 | over SSH using `git-lfs-transfer` is not supported. | 23 | over SSH using `git-lfs-transfer` is not supported. |
| 23 | - A Git shell is provided so that I can stay sane. (I don't recall 100%, but I | 24 | - A Git shell is provided so that I can stay sane. (I don't recall 100%, but I |
| 24 | believe this was nice when wanting to push to some ssh://git@asdf/blabla.git | 25 | believe this was nice when wanting to push to some ssh://git@asdf/blabla.git |
| 25 | repo without having to type `/srv/git` before the repo name. And I don't want | 26 | repo without having to type `/srv/git` before the repo name. And I don't want |
| 26 | to have to use something like Gitolite.) | 27 | to have to use something like Gitolite.) |
| 27 | - Gitolfs3 does not require any kind of persistent nor temporary storage for | 28 | - No requirement for any kind of persistent or temporary storage for tokens. |
| 28 | token storage. Instead, user authentication/authorization between | 29 | Instead, user authentication/authorization between `git-lfs-authenticate` and |
| 29 | `git-lfs-authenticate` and the Gitolfs3 server is done using HMAC(-SHA256) | 30 | the Gitolfs3 server is done using HMAC(-SHA256) MACs. |
| 30 | MACs. | ||
| 31 | - Limiting unauthenticated public downloads on a per-hour basis. Storage is | 31 | - Limiting unauthenticated public downloads on a per-hour basis. Storage is |
| 32 | required for this. (This feature is implemented pretty badly.) | 32 | required for this. (This feature is implemented pretty badly.) |
| 33 | - Public/private repos based on the `git-daemon-export-ok` file in the bare | 33 | - Public/private repos based on the `git-daemon-export-ok` file in the bare |
| @@ -41,19 +41,16 @@ Currently, it has the following features: | |||
| 41 | - Authenticated users can download and upload for all repositories, | 41 | - Authenticated users can download and upload for all repositories, |
| 42 | regardless of how they access the service. | 42 | regardless of how they access the service. |
| 43 | 43 | ||
| 44 | This program, as it is, solely serves my needs. Although I may occasionally add | 44 | This program, as it is, works well enough for me. Although I may occasionally |
| 45 | some features or perform some cleanups (especially the server still requires | 45 | add some features or perform some cleanups, I don't really have the time to |
| 46 | some), I have no interest in making this program work for people with different | 46 | make this program work for different use cases than mine. Do feel free to email |
| 47 | use cases than me. In case you want to use this software, feel free to, but | 47 | me if you have any questions. |
| 48 | expect that you will basically have to 'make it your own'. If you have a | ||
| 49 | burning question or find a security vulnerability, feel free to email me. I'm | ||
| 50 | sure you'll manage to find my email address somewhere. | ||
| 51 | 48 | ||
| 52 | Nice-to-have features that I may implement at some point, when I feel a need | 49 | Nice-to-have features that I may implement at some point, when I feel a need |
| 53 | to: | 50 | to: |
| 54 | 51 | ||
| 55 | - No namespacing on S3. (This would mean that having the same big file in two | 52 | - No namespacing on S3. (So the same big file in two repositories would only be |
| 56 | repositories would mean it is only stored on S3 once.) | 53 | stored on S3 once.) |
| 57 | - Any kind of file deletion/garbage collection. If you ever have the need, you | 54 | - Any kind of file deletion/garbage collection. You need to do this manually |
| 58 | need to do this manually right now. | 55 | right now. |
| 59 | - Resuming downloads. | 56 | - Resuming downloads. |