diff --git a/README.md b/README.md index 74f823d..bd6547b 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,14 @@ apt install libmojolicious-perl libmojo-pg-perl Note: the latest Perl at the time of writing on Debian stable is v5.36.x which doesn't have class support... I really wanted to use class(). Sorry! So, you're likely better off installing perlbrew and having the dedicated user that will run this program compile and install v5.38.x. +### postgres +Probably not needed info, but postgres here is version 15. +``` +% sudo apt install postgresql postgresql-server-dev-15 +% sudo -u postgres psql # test if 'active' so to speak. +``` +Follow instructions from 'Create relevent details for the database.' + ### perlbrew (with Debian 12.8) ``` % sudo apt install perlbrew @@ -32,6 +40,7 @@ So, you're likely better off installing perlbrew and having the dedicated user t % sudo -u jjakkekeyserver perlbrew install-cpanm % sudo chsh jjakkekeyserver -s /bin/bash # we will set this back to /bin/nologin later % sudo -u jjakkekeyserver -i +jjakkekeyserver% perlbrew switch perl-5.40.0 jjakkekeyserver% PERL_CPANM_HOME=/tmp cpanm DBD::Pg # needs postgresql-server-dev-xx (on debian) jjakkekeyserver% cpanm Mojolicious Mojo::Pg # AND postgres itself must be running # DBD::Pg test wants to poke stuff, fails otherwise @@ -41,14 +50,6 @@ jjakkekeyserver% exit % sudo chsh jjakkekeyserver -s /bin/nologin ``` -#### postgres -Probably not needed info, but postgres here is version 15. -``` -% sudo apt install postgresql postgresql-server-dev-xx -% sudo -u postgres psql # test if 'active' so to speak. -``` -Follow instructions from 'Create relevent details for the database.' - ### Install via cpan (or cpan-minus, considered way better by most) ``` cpanm Mojolicious Mojo::Pg Mojo::File Mojo::Util @@ -56,7 +57,12 @@ cpanm Mojolicious Mojo::Pg Mojo::File Mojo::Util Installing via cpan(m) will work because the Mojolicious devs are competent (to be more specific, they opt to recreate everything, that way if a dependency breaks because the author is ignoring issues or fucking DEAD there won't be permanently broken cpan repos that mojolicious depends on) ## To use -### Create a dedicated user to run this program +### Create a dedicated user to run this program (Debian) +``` +sudo adduser --group --home /var/jjakkekeyserver --system -- jjakkekeyserver +``` + +### Create a dedicated user to run this program (not Debian) ``` sudo useradd --system --create-home --home-dir /var/jjakkekeyserver --shell /bin/nologin jjakkekeyserver ``` @@ -78,11 +84,22 @@ jjakkekeyserverdb=# grant all privileges on schema public to jjakkekeyserver; jjakkekeyserverdb=# exit ``` +### Caveats +#### config file +For some reason, hypnotoad (or morbo) lacks a 'config' flag and there isn't a way to set it as far as I can tell (even in program (for now)). What I do know is that it looks for keyserver.conf in the working directory. + +#### Usage of 'lib' +I used `use lib qw(lib)` in my program, which means the working directory has have 'lib/KeyData.pm' in it, or be manually installed somewhere (really not recommended). Basically the directory keyserver program resides in. + +I will add a dedicated installer for this, later. KeyData.pm is useful. + + ### Start Program ``` -sudo -u jjakkekeyserver hypnotoad -f keyserver ./keyserver.conf; # -f = starts in foreground +sudo -u jjakkekeyserver hypnotoad -f ./keyserver; # -f = starts in foreground ``` + ### Proxy It's a good idea to proxy this program behind another dedicated program that listens on relevant ports: no TLS, 11371 and 80; with TLS, 11372 and 443. diff --git a/jjakkekeyserver.service b/jjakkekeyserver.service index 390a5e6..1dd43fd 100644 --- a/jjakkekeyserver.service +++ b/jjakkekeyserver.service @@ -3,16 +3,13 @@ Description=jjakke's keyserver After=network.target [Service] -Type=simple User=jjakkekeyserver -Group=jjakkekeyserver WorkingDirectory=/var/jjakkekeyserver/keyserver ExecStart=/var/jjakkekeyserver/perl5/perlbrew/perls/perl-5.40.0/bin/hypnotoad -f /var/jjakkekeyserver/keyserver/keyserver Environment=PERL5LIB=/var/jjakkekeyserver/perl5/lib/perl5 Environment=PATH=/var/jjakkekeyserver/perl5/perlbrew/bin:/var/jjakkekeyserver/perl5/perlbrew/perls/perl-5.40.0/bin:$PATH Restart=always RestartSec=5 -LimitNOFILE=4096 [Install] WantedBy=multi-user.target