]> Cypherpunks.ru repositories - gocheese.git/blob - doc/index.texi
UCSPI-TCP support
[gocheese.git] / doc / index.texi
1 \input texinfo
2 @documentencoding UTF-8
3 @settitle GoCheese
4
5 @copying
6 Copyright @copyright{} 2019-2021 @email{stargrave@@stargrave.org, Sergey Matveev}
7 @end copying
8
9 @node Top
10 @top GoCheese
11
12 GoCheese is Python private package repository and caching proxy.
13
14 It serves two purposes:
15
16 @itemize
17 @item proxying and caching of missing packages from upstream
18     @url{https://pypi.org/, PyPI}, conforming to
19     @url{https://www.python.org/dev/peps/pep-0503/, PEP-0503}
20     (Simple Repository API)
21 @item hosting of private locally uploaded packages, conforming to
22     @url{https://warehouse.pypa.io/api-reference/legacy/, Warehouse Legacy API}
23 @end itemize
24
25 Why could you like it and how it can be better to fit your needs?
26
27 @itemize
28 @item No database required. Only filesystem storage with few simple
29     files per package. Package deletion, renaming, making it uploadable
30     (private) is done with simple @command{mkdir}, @command{touch}, etc
31     commands
32 @item Just single statically compiled Go binary
33 @item No configuration file, but several simple command line arguments
34 @item Consistency (because of atomic synced operations) and integrity
35     (because of SHA256 checksums stored nearby)
36 @end itemize
37
38 Initially it was created as a fork of
39 @url{https://github.com/c4s4/cheeseshop, cheeseshop},
40 but nearly all the code was rewritten. It has huge differences:
41
42 @itemize
43 @item Proxying and caching of missing packages, including GPG signatures
44 @item @url{https://pythonwheels.com/, Wheel} uploading support
45 @item Integrity check of proxied packages: MD5, SHA256, SHA512, BLAKE2b-256
46 @item SHA256 checksums for stored packages
47 @item Verifying of SHA256 checksum for uploaded packages
48 @item Ability to authenticate upstream PyPI by its X.509 certificate's SPKI hash
49 @item Storing of uploaded GPG signatures
50 @item Secure Argon2i (or SHA256) stored passwords hashing
51 @item No YAML configuration, just command-line arguments
52 @item No package overwriting ability (as PyPI does too)
53 @item Graceful HTTP-server shutdown
54 @item Atomic packages store on filesystem
55 @item @url{https://cr.yp.to/ucspi-tcp.html, UCSPI-TCP} compatible mode
56 @end itemize
57
58 Also it contains @file{contrib/pyshop2packages.sh} migration script for
59 converting @url{https://pypi.org/project/pyshop/, Pyshop} database into
60 GoCheese one, including private packages.
61
62 GoCheese is
63 @url{https://www.gnu.org/philosophy/pragmatic.html, copylefted}
64 @url{https://www.gnu.org/philosophy/free-sw.html, free software}
65 licenced under @url{https://www.gnu.org/licenses/gpl-3.0.html, GNU GPLv3}.
66
67 Please send questions, bug reports and patches to @url{gocheese@@cypherpunks.ru}.
68
69 @insertcopying
70
71 @menu
72 * Install::
73 * Usage::
74 * Password authentication: Passwords.
75 * UCSPI-TCP::
76 * TLS support: TLS.
77 * Storage format: Storage.
78 @end menu
79
80 @include install.texi
81 @include usage.texi
82 @include passwords.texi
83 @include ucspi.texi
84 @include tls.texi
85 @include storage.texi
86
87 @bye