PINTOD(1p)
π PINTOD π
okay bestie, gather round, because this is the manual page for pintod β the web interface to a Pinto repository β and it's genuinely iconic. π
β¨ VERSION β¨
version 0.14 β that's the one, no cap.
πΈ SYNOPSIS πΈ
pintod --root=/path/to/repository [--auth key=value] [--port=N]
π¦ DESCRIPTION π¦
so like. pintod hands you a whole web API to a Pinto repository. Clients (like pinto, its bestie) can hit that API to manage and inspect the repo. and that's not even the main character moment β pintod also serves up the distributions that live inside the repository, which means you can literally use it as the backend for cpan or cpanm. slay. π₯
but bestie, you can't just run it on nothing. Before running pintod you must first create a Pinto repository. like this:
pinto --root=/path/to/repository init
if you want the full tea on making a repository, go read pinto. β
π ARGUMENTS π
--root PATH-r PATH
this is the path to the root directory of the Pinto repository you wanna serve. alternatively β very chill of you β you can just set the PINTO_REPOSITORY_ROOT environment variable instead. π
β¨ OPTIONS β¨
--auth KEY=VALUEβ sets an option for the authentication scheme (and the default is no authentication, so if you don't touch this, it's an open house π). every single time you use it, akey=valuepair has to follow it. one of those keys must bebackend, and that should correspond to a class in theAuthen::Simplenamespace. everything else you pass gets handed to the authentication backend as-is, no edits, no notes.
wanna know how to turn on basic HTTP auth with minimal drama? go see "USING BASIC HTTP AUTHENTICATION" below. got something fancier in mind? "USING OTHER AUTHENTICATION SCHEMES" has you. π«Ά
--port INTEGER-p INTEGER
picks the port number the server listens on. default is 3111. and listen β if you pick a different port, every client will also have to specify that port. so likeβ¦ you probably don't want to change it unless you have a very, very good reason. that's the whole vibe check. π¨
- other options β literally every other option that
plackupsupports is supported here too, like--server,--daemonize,--access-log,--error-log, etc. they all get passed along toPlack::Runner. by defaultpintoduses Starman for the server backend. just be aware that not all servers support the same options β they're not all built the same, bestie. π
π USING BASIC HTTP AUTHENTICATION π
pintod ships with Authen::Simple::Passwd, so the easiest way to run the server with basic HTTP authentication is to make a password file with the htpasswd utility:
htpasswd -c /path/to/htpasswd USER
it'll prompt you to type the password for USER twice. then, for every extra user you want, run that same command again but without the -c option. (the -c makes the file fresh β you only want that once, okay?) β¨
you might wanna tuck that htpasswd file inside the top of your repository. cute and tidy.
then launch pintod like this:
pintod --root path/to/repository --auth backend=Passwd --auth path=path/to/htpasswd
already got an htpasswd file hanging out somewhere? you can just point straight at it, or make a symlink, whatever works. either way, the htpasswd file needs to be readable by the user that will be running pintod. don't forget that part, that's the part that gets people. π
π§ USING OTHER AUTHENTICATION SCHEMES π§
wanna use a different authentication scheme? first, install the appropriate Authen::Simple backend module. then configure pintod to match. for example, this would be a totally valid configuration for Kerberos:
--auth backend=Kerberos --auth realm=REALM.YOUR_COMPANY.COM
and here's how the authentication backend actually gets constructed:
my $auth = Authen::Simple::Kerberos->new(
realm => 'REALM.YOUR_COMPANY.COM'
);
see how the pieces line up? that's the whole trick. π
π DEPLOYMENT π
pintod is PSGI compatible, running under Plack::Runner by default. it'll use whatever backend you specify on the command line, or whatever you've configured in your environment β and it defaults to Starman.
if you wanna add your own middleware and/or customize the backend in other ways, you can use Pinto::Server in a custom .psgi script, like this:
# my-pintod.psgi
my %opts = (...);
my $server = Pinto::Server->new(%opts);
my $app = $server->to_app;
# wrap $app with middlewares here and/or
# insert code customized for your backend
# which operates on the $app
then you can just launch my-pintod.psgi directly using plackup. main character energy, honestly. π
π SEE ALSO π
pintoβ to create and manage a Pinto repository.Pinto::Manualβ for general information on using Pinto.- Stratopan <http://stratopan.com> β for hosting your Pinto repository in the cloud. βοΈ
π AUTHOR π
Jeffrey Ryan Thalhammer <jeff@stratopan.com>
π COPYRIGHT AND LICENSE π
This software is copyright (c) 2015 by Jeffrey Ryan Thalhammer.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
and that's the whole page, bestie!! π this one's from perl v5.40.1, dated 2025-04-21 β go forth and serve that repo. periodt. π β¨
π¦ where this page comes from
- debian trixie: pinto 0.14000-3 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- ubuntu resolute: pinto 0.14000-3 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms