timone

A lightweight object router to store Git LFS objects on different storage backend.


Keywords
aws, aws-s3, git, git-lfs
License
MIT
Install
pip install timone==0.4.0

Documentation

timone

PyPI version

Current version: 0.4.0

timone is a lightweight object router to store Git LFS objects on different storage backend, including AWS S3 compatible storage services.

Install

$ pip install timone

Configuration

timone can be configured by passing settings through environment variables, following the 12 factor principles.

Basic settings

  • TIMONE_LOG_LEVEL: Python logging level (default: INFO).
  • TIMONE_ENDPOINT_URL: URL to reach service.
  • TIMONE_TOKEN_SECRET: secret for token based authentication.
  • TIMONE_STORAGE: storage driver to use (default: DumbStorageDriver).
    Currently supporting S3StorageDriver, for AWS S3 services, or DumbStorageDriver, for testing purposes.
  • TIMONE_OBJECT_EXPIRESIN: object availability in seconds (default: 3600).

S3StorageDriver settings

  • TIMONE_STORAGE_S3_URL: S3 endpoint URL.
  • TIMONE_STORAGE_S3_REGION: S3 region.
  • TIMONE_STORAGE_S3_BUCKET: S3 bucket name.
  • TIMONE_STORAGE_S3_KEY: S3 access key.
  • TIMONE_STORAGE_S3_SECRET: S3 access secret.

Authentication and authorization

timone implements a simple token-based authentication system based on JWT, which streamlines authentication and authorization.

You can create tokens to access timone using pyjwt. For example, you can run the following command to create a token for user bob:

$ pyjwt --key=mykey encode user=bob

where key is the TIMONE_TOKEN_SECRET.

Deployment

timone is a WSGI application, thus it requires a WSGI HTTP Server, like gunicorn, to run.

You can run a timone instance using gunicorn as follows:

$ gunicorn 'timone.wsgi:run()'

Configuring GIT LFS

You can use timone to track files for the repository foo/bar as follows:

git config -f .lfsconfig remote.origin.lfsurl https://<timone_url>/foo/bar/info/lfs

where <timone_url> is the timone endpoint URL.

When pushing for the first time, Git will ask LFS credentials; here, you should use your username and token provided by the service administrator.

Issues

Please post an issue to report a bug or request new features.

Authors