/node-git-lfs

A NodeJS implementation of Git LFS Server.

Primary LanguageJavaScriptApache License 2.0Apache-2.0

Node Git LFS

Build Status Coverage Status Code Climate

A NodeJS implementation of Git LFS Server.

Installation

npm install node-git-lfs

Features

  • Support Git LFS v1 Batch API
  • Support SSH Authentication
  • Multiple store supported - currently AWS S3 and MongoDB GridFS
  • Multiple authentication method support - currently basic and none
  • Use JWT to secure download, upload and verify endpoints
  • Option to directly upload to and download from AWS S3
  • Use SHA256 checksum when upload directly to AWS S3

Configuration

All configurations can be done via environment variable or configuration file

Environment Variables

  • LFS_BASE_URL - URL of the LFS server - required
  • LFS_PORT - HTTP portal of the LFS server, defaults to 3000 - required
  • LFS_STORE_TYPE - Object store type, can be either s3 (for AWS S3), s3_direct (for direct upload and download from AWS S3) or grid (for MongoDB GridFS), defaults to s3 - required
  • LFS_AUTHENTICATOR_TYPE - Authenticator type, can be basic (for basic username and password), none (for no authentication), defaults to none - required
  • LFS_JWT_ALGORITHM - JWT signature algorithm, defaults to HS256
  • LFS_JWT_SECRET - JWT signature secret - required
  • LFS_JWT_ISSUER - Issuer of the JWT token, defaults to node-git-lfs
  • LFS_JWT_EXPIRES - JWT token expire time, defaults to 30m

If storage type is s3 or s3_direct:

  • AWS_ACCESS_KEY - AWS access key - required
  • AWS_SECRET_KEY - AWS secret key - required
  • LFS_STORE_S3_BUCKET - AWS S3 bucket - required
  • LFS_STORE_S3_ENDPOINT - AWS S3 endpoint, normally this will be set by region
  • LFS_STORE_S3_REGION - AWS S3 region
  • LFS_STORE_S3_STORAGE_CLASS - AWS S3 storage class, can be STANDARD, STANDARD_IA or REDUCED_REDUNDANCY, defaults to STANDARD

If storage type is grid:

  • LFS_STORE_GRID_CONNECTION - MongoDB connection URL - required

If authenticator type is basic:

  • LFS_AUTHENTICATOR_USERNAME - Username - required
  • LFS_AUTHENTICATOR_PASSWORD - Password - required
  • LFS_AUTHENTICATOR_CLIENT_PUBLIC_KEY - Location of the client's public key
SSH Environment Variables
  • LFS_SSH_ENABLED - Enable SSH server, defaults to true
  • LFS_SSH_PORT - SSH server port, defaults to 2222
  • LFS_SSH_IP - SSH server bind IP, defaults to 0.0.0.0
  • LFS_SSH_PUBLIC_KEY - SSH server public key - required if SSH is enabled
  • LFS_SSH_PRIVATE_KEY - SSH server private key - required if SSH is enabled