LFS Test Server is an example server that implements the Git LFS API. It is intended to be used for testing the Git LFS client and is not in a production ready state.
LFS Test Server is written in Go, with pre-compiled binaries available for Mac, Windows, Linux, and FreeBSD.
See CONTRIBUTING.md for info on working on LFS Test Server and sending patches.
Download the latest version. It is a single binary file.
Alternatively, use the Go installer:
$ go install github.com/seed-ea/lfs-server-s3
To build from source, use the Go tools:
$ go get github.com/seed-ea/lfs-server-s3
Running the binary will start an LFS server on localhost:8080
by default.
There are few things that can be configured via environment variables:
LFS_LISTEN # The address:port the server listens on, default: "tcp://:8080"
LFS_HOST # The host used when the server generates URLs, default: "localhost:8080"
LFS_ADMINUSER # An administrator username, default: unset
LFS_ADMINPASS # An administrator password, default: unset
LFS_PUBLIC # Make LFS server public, default: false
LFS_CERT # Certificate file for tls
LFS_KEY # tls key
LFS_SCHEME # set to 'https' to override default http
LFS_USETUS # set to 'true' to enable tusd (tus.io) resumable upload server; tusd must be on PATH, installed separately
LFS_TUSHOST # The host used to start the tusd upload server, default "localhost:1080"
LFS_S3ENDPOINT # AWS S3 endpoint, default: http://127.0.0.1:9000
LFS_S3BUCKET # AWS S3 bucket name, default: lfs-data-store
LFS_S3REGION # AWS S3 region, default: eu-west-1
If the LFS_ADMINUSER
and LFS_ADMINPASS
variables are set, a
rudimentary admin interface can be accessed via
http://$LFS_HOST/mgmt
. Here you can add and remove users.
To use the LFS test server with the Git LFS client, configure it in the repository's .gitconfig
file:
[lfs]
url = "http://localhost:8080/"
HTTPS:
NOTE: If using https with a self signed cert also disable cert checking in the client repo.
[lfs]
url = "https://localhost:8080/"
[http]
sslverify = false
An example usage:
Generate a key pair
openssl req -x509 -sha256 -nodes -days 2100 -newkey rsa:2048 -keyout mine.key -out mine.crt
Make yourself a run script
#!/bin/bash
set -eu
set -o pipefail
LFS_LISTEN="tcp://:9999"
LFS_HOST="127.0.0.1:9999"
LFS_CONTENTPATH="content"
LFS_ADMINUSER="<cool admin user name>"
LFS_ADMINPASS="<better admin password>"
LFS_CERT="mine.crt"
LFS_KEY="mine.key"
LFS_SCHEME="https"
export LFS_LISTEN LFS_HOST LFS_CONTENTPATH LFS_ADMINUSER LFS_ADMINPASS LFS_CERT LFS_KEY LFS_SCHEME
./lfs-server-s3
Build the server
go build
Run
bash run.sh
Check the managment page
browser: https://localhost:9999/mgmt