GoCheese is Python private package repository and caching proxy.
It serves two purposes:
* proxying and caching of missing packages from upstream
=> PyPI
conforming to
=> PEP-0503 (Simple Repository API)
=> JSON API
* hosting of private locally uploaded packages, conforming to
=> Warehouse Legacy API
Why could you like it and how it can be better to fit your needs?
* No database required. Only filesystem storage with few simple files
per package. Package deletion, renaming, making it uploadable
(private) is done with simple mkdir, touch, etc commands
* Just single statically compiled Go binary, UCSPI-TCP compatibility,
high performance (including HTTP/2, keepalives and TLS session
resumption)
* No configuration file, but several simple command line arguments
* Consistency (because of atomic synced operations) and integrity
(because of cryptographic checksums stored nearby)
* Package's metadata and created times storing for uploaded and proxied
packages
Initially it was created as a fork of
=> cheeseshop
but nearly all the code was rewritten. It is aimed to be replacement for
PyShop lacking huge quantity of features, reliability and consistency
guarantees, workability without deprecated XML-RPC API, and suffering
performance.
* Supports proxying and caching of non-internal packages from the
upstream PyPI installation.
* Supports uploading of internal packages through the standard Warehouse
API, including signatures, metadata and checksums.
* Supports
=> https://pythonwheels.com/
=> https://packaging.python.org/specifications/core-metadata/
=> PEP-0566 compatible
conversion to JSON, multiple (MD5, SHA256, SHA512, BLAKE2b-256)
integrity checksums storing and verifying during uploading and proxying.
* Supports Simple and JSON APIs, being able to replace PyPI for all
downstream clients.
* Stores package's creation time with solicitude as mtime, giving it in
HTTP headers and JSON API.
* TLS and HTTP/2 capable transport to the upstream, with enabled
keepalives and session resumption TLS tickets. Graceful HTTP server
shutdown. Can work as a service of
=> UCSPI-TCP
* Atomic and fsync-ed reliable and consistent updates to the filesystem.
* Has ability to authenticate upstream PyPI by its X.509 certificate's
SPKI hash.
* User authentication supports passwords either hashed with SHA256 or
strengthened with
=> Argon2i
Also it contains contrib/pyshop2packages.sh migration script for converting
=> Pyshop
database into GoCheese one, including private packages.
GoCheese is
=> copylefted
=> free software
licenced under
=> GNU GPLv3
Please send questions, bug reports and patches to
=> mailto:gocheese@stargrave.org
[INSTALL] [Usage/] [Passwords] [TLS] [Storage]