Simple HTTP(S) server for Git Large File Storage with PAM authentication.
$ ./lfs_server.sh -help
Start Git LFS server
lfs_server [ROOT]
=== flags ===
[-cert file] File of certificate for https
[-key file] File of private key for https
[-p port] TCP port to listen on
[-pam service] PAM service name for user authentication
[-s address] IP address to listen on
[-verbose] Verbose logging
[-build-info] print info about this build and exit
[-version] print the version of this build and exit
[-help] print this help text and exit
(alias: -?)
By default, it starts on http://localhost:8080
and treats current directory as ROOT
. All object files are stored locally in ROOT/.lfs/objects
directory.
From binary packages:
HTTP server without authentication
./lfs_server.sh -verbose -s IP_ADDRESS -p PORT
A server will ignore credentials passed by LFS client, and accept all connections. To enable authentication, you need to specify PAM service.
HTTP server with PAM authentication
./lfs_server.sh -verbose -pam login -s IP_ADDRESS -p PORT
It will use built-in login
PAM service defined in /etc/pam.d/login
file.
Warning: LFS client uses HTTP basic authentication, so using HTTPS is a must!
HTTPS server with PAM authentication
./lfs_server.sh -verbose -pam login -s IP_ADDRESS -p PORT -cert domain.crt -key domain.key
Download and install the LFS server as described above. You will also need to install the GIT LFS client.
# Start a LFS server
./lfs_server.sh
# Clone a repo
git clone ....
cd repo
# Add a normal file
touch test.txt
git add test.txt
git commit -m "normal file"
# Add a lfs file
git lfs install
dd if=/dev/zero of=test.bin count=10240 bs=1024 # Create a file which is 10MB
git lfs track test.bin
git add .gitattributes test.bin
git commit -m "lfs file"
# Configure lfs remote to local server
git config -f .lfsconfig lfs.url http://localhost:8080
git add .lfsconfig
git commit -m "lfs config"
# Push changes
git push
- Multi server support
- Create OPAM package
- Add max file size option
- Add connection timeouts
AuthenticationAutomated testsSetup Travis continuous buildsSetup CoveralsRemove incomplete/broken temporary filesUpload validation (calculate SHA-256 digest)Reject uppercase SHA-256 hex digestsFix HTTPS urlsRearrange files in release package and remove redundant libsAdd loggingCheck SIGQUIT and SIGINT are handled correctlyHTTPS support (trivial to add)Speed-up uploading(fixed incohttp
, see #330)