PINTOD(1p)

πŸ“¦
version 0.14000 Β· 5 versions
, in debian trixie, ubuntu resolute

πŸ’– 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, a key=value pair has to follow it. one of those keys must be backend, and that should correspond to a class in the Authen::Simple namespace. 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 plackup supports is supported here too, like --server, --daemonize, --access-log, --error-log, etc. they all get passed along to Plack::Runner. by default pintod uses 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>


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