Skip to content

artemkin/git-lfs-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Git LFS server

Build Status Coverage Status

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 https://localhost:8080 and treats current directory as ROOT. All object files are stored locally in ROOT/.lfs/objects directory.

INSTALL

From binary packages:

RUN

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

TODO

  • Multi server support
  • Create OPAM package
  • Add max file size option
  • Add connection timeouts
  • Authentication
  • Automated tests
  • Setup Travis continuous builds
  • Setup Coverals
  • Remove incomplete/broken temporary files
  • Upload validation (calculate SHA-256 digest)
  • Reject uppercase SHA-256 hex digests
  • Fix HTTPS urls
  • Rearrange files in release package and remove redundant libs
  • Add logging
  • Check SIGQUIT and SIGINT are handled correctly
  • HTTPS support (trivial to add)
  • Speed-up uploading (fixed in cohttp, see #330)