\input texinfo @documentencoding UTF-8 @settitle GoCheese @copying Copyright @copyright{} 2019-2021 @email{stargrave@@stargrave.org, Sergey Matveev} @end copying @node Top @top GoCheese GoCheese is Python private package repository and caching proxy. It serves two purposes: @itemize @item proxying and caching of missing packages from upstream @url{https://pypi.org/, PyPI}, conforming to @url{https://www.python.org/dev/peps/pep-0503/, PEP-0503} (Simple Repository API) @item hosting of private locally uploaded packages, conforming to @url{https://warehouse.pypa.io/api-reference/legacy/, Warehouse Legacy API} @end itemize Why could you like it and how it can be better to fit your needs? @itemize @item No database required. Only filesystem storage with few simple files per package. Package deletion, renaming, making it uploadable (private) is done with simple @command{mkdir}, @command{touch}, etc commands @item Just single statically compiled Go binary @item No configuration file, but several simple command line arguments @item Consistency (because of atomic synced operations) and integrity (because of SHA256 checksums stored nearby) @end itemize Initially it was created as a fork of @url{https://github.com/c4s4/cheeseshop, cheeseshop}, but nearly all the code was rewritten. It has huge differences: @itemize @item Proxying and caching of missing packages, including GPG signatures @item @url{https://pythonwheels.com/, Wheel} uploading support @item Integrity check of proxied packages: MD5, SHA256, SHA512, BLAKE2b-256 @item SHA256 checksums for stored packages @item Verifying of SHA256 checksum for uploaded packages @item Ability to authenticate upstream PyPI by its X.509 certificate's SPKI hash @item Storing of uploaded GPG signatures @item Secure Argon2i (or SHA256) stored passwords hashing @item No YAML configuration, just command-line arguments @item No package overwriting ability (as PyPI does too) @item Graceful HTTP-server shutdown @item Atomic packages store on filesystem @item @url{https://cr.yp.to/ucspi-tcp.html, UCSPI-TCP} compatible mode @end itemize Also it contains @file{contrib/pyshop2packages.sh} migration script for converting @url{https://pypi.org/project/pyshop/, Pyshop} database into GoCheese one, including private packages. GoCheese is @url{https://www.gnu.org/philosophy/pragmatic.html, copylefted} @url{https://www.gnu.org/philosophy/free-sw.html, free software} licenced under @url{https://www.gnu.org/licenses/gpl-3.0.html, GNU GPLv3}. Please send questions, bug reports and patches to @url{gocheese@@cypherpunks.ru}. @insertcopying @menu * Install:: * Usage:: * Password authentication: Passwords. * UCSPI-TCP:: * TLS support: TLS. * Storage format: Storage. @end menu @include install.texi @include usage.texi @include passwords.texi @include ucspi.texi @include tls.texi @include storage.texi @bye