aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRutger Broekhoff2026-02-20 18:47:36 +0100
committerRutger Broekhoff2026-02-20 18:47:36 +0100
commit2db210ac33d680b0a7cd66f67f5b879e46101893 (patch)
treed8309b7f7bd6afcdaf440b87b853381f4e15a5a8
parent0846901dd03d0020ef2889e702f0b58da5804afd (diff)
downloadgitolfs3-2db210ac33d680b0a7cd66f67f5b879e46101893.tar.gz
gitolfs3-2db210ac33d680b0a7cd66f67f5b879e46101893.zip
Update README
-rw-r--r--README.md43
1 files changed, 20 insertions, 23 deletions
diff --git a/README.md b/README.md
index d699d2b..e701d62 100644
--- a/README.md
+++ b/README.md
@@ -3,31 +3,31 @@ Gitolfs3: a very simple Git LFS server
3 3
4[![License: MIT](https://img.shields.io/badge/License-MIT-brightgreen.svg)](https://opensource.org/licenses/MIT) 4[![License: MIT](https://img.shields.io/badge/License-MIT-brightgreen.svg)](https://opensource.org/licenses/MIT)
5 5
6Gitolfs3 has a singular purpose: provide me with a personal Git LFS server that 6Gitolfs3 is my personal Git LFS server that runs on my VPS. It uses a
7I can run on my VPS, that stores objects in S3. It seems to be doing an okay 7S3-compatible service as backing storage. It seems to be working fine up until
8job at it so far. 8now, but doesn't get too much use (so the primary reason for breakage is me
9being too lazy to refresh credentials).
9 10
10The name 'Gitolfs3' started as some kind of concoction of Gitolite, LFS and S3. 11The name 'Gitolfs3' started as a portmanteau of Gitolite, LFS and S3. These
11These days, this project has nothing to do with Gitolite because I don't use 12days, this project has nothing to do with Gitolite, because I don't use
12Gitolite anymore. (It was too extensive for my use case, and I prefer to keep 13Gitolite anymore. (It was too extensive for my use case, and I prefer to keep
13the complexity of my system down as much as possible.) 14the complexity of my system down as much as possible.)
14 15
15Currently, it has the following features: 16Currently, 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
44This program, as it is, solely serves my needs. Although I may occasionally add 44This program, as it is, works well enough for me. Although I may occasionally
45some features or perform some cleanups (especially the server still requires 45add some features or perform some cleanups, I don't really have the time to
46some), I have no interest in making this program work for people with different 46make this program work for different use cases than mine. Do feel free to email
47use cases than me. In case you want to use this software, feel free to, but 47me if you have any questions.
48expect that you will basically have to 'make it your own'. If you have a
49burning question or find a security vulnerability, feel free to email me. I'm
50sure you'll manage to find my email address somewhere.
51 48
52Nice-to-have features that I may implement at some point, when I feel a need 49Nice-to-have features that I may implement at some point, when I feel a need
53to: 50to:
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.