FreeBSD Installation
FreeBSD 13.0+ using pkg utility.
System packages
sudo pkg updatesudo pkg install -y git gmake cmake wget pkgconf perl5 p5-App-cpanminussudo pkg install -y webp giflib jpeg-turbo png tiff libheif ImageMagick7 librsvg2 pngquantsudo pkg install -y postgresql16-server postgresql16-client redissudo pkg install -y libargon2 e2fsprogs-libuuid texlive-base texlive-texmfsudo pkg install -y nginx apache24 xorriso cdrkit-genisoimage transmission-cli
Perl modules
Install modules:
sudo cpanm Mojolicious EV Mojo::Pg Mojo::Redis DBD::Pgsudo cpanm GD Imager Imager::File::JPEG Imager::File::GIF Imager::File::PNG Imager::File::TIFF Imager::File::HEIFsudo cpanm Mojolicious::Plugin::LocaleTextDomainOO Locale::TextDomain::OO::Extractsudo cpanm Params::Classify Params::Util Params::Validate Crypt::Argon2 Crypt::PBKDF2 Crypt::Eksblowfish::Bcrypt Digest::SHA Digest::SHA1 App::bmkpasswd Bytes::Random::Secure::Tinysudo cpanm Clone Data::UUID UUID DateTime DateTime::TimeZone Date::Calc Date::Format Hash::Mergesudo cpanm Text::MultiMarkdown MojoX::MIME::Types IO::Compress::Gzip YAML::XSsudo cpanm MIME::Base64 MIME::Lite MIME::Types File::Spec File::MimeInfo Time::HiRessudo cpanm --force HTML::Parsersudo cpanm HTML::FormatText HTML::TreeBuilder Business::Tax::VAT::Validationsudo cpanm Session::Token Mojolicious::Plugin::Captcha Mojolicious::Plugin::Mail Mojolicious::Plugin::Util::RandomString Test::Harness
Imager::File::WEBP installation
cd /tmpfetch https://cpan.metacpan.org/authors/id/T/TO/TONYC/Imager-File-WEBP-0.005.tar.gztar xzf Imager-File-WEBP-0.005.tar.gzcd Imager-File-WEBP-0.005perl -pi -e 's/libopts => "-lwebpmux -lwebp",/libopts => "-L\/usr\/local\/lib -lwebpmux -lwebp",/' Makefile.PLperl Makefile.PL --incpath=/usr/local/include --libpath=/usr/local/libmakemake testmake install
Database
sudo /usr/local/etc/rc.d/postgresql oneinitdbsudo sysrc postgresql_enable=YES redis_enable=YESsudo service postgresql start && sudo service redis startsudo -u postgres createuser -P samizdatsudo -u postgres createdb -O samizdat -E UTF-8 -T template0 --locale=en_US.UTF-8 samizdat
Edit /usr/local/pgsql/data/pg_hba.conf, add: local samizdat samizdat scram-sha-256
Then: sudo service postgresql restart
Application
sudo mkdir -p /sites && cd /sitessudo git clone https://github.com/FakenewsCom/Samizdat.git && cd Samizdatsudo chown -R www:www /sites/Samizdatsudo -u www cp samizdat.dist.yml samizdat.yml && sudo -u www vi samizdat.ymlsudo -u www gmake fetchall && sudo -u www bin/samizdat migrate && sudo -u www gmake i18n
Optional Webpack frontend:
sudo pkg install -y node npmsudo -u www gmake webpackinit && sudo -u www gmake webpack
SSL cert (dev):
sudo -u www gmake cert
Usage
gmake debug- Dev server (https://localhost:3443)gmake serverstart/stop- Productiongmake static_all/en/sv- Generate content cachegmake i18n test routes- Dev tasksgmake webpack- Build assetsgmake iso- Build ISO filebin/samizdat migrate- DB migrations
Jails & Service
For jails: ensure network access, mount devfs, configure port forwarding.
Copy samizdat.rc to /usr/local/etc/rc.d/samizdat, then enable with: sudo chmod +x /usr/local/etc/rc.d/samizdat && sudo sysrc samizdat_enable=YES
Performance tuning in /etc/sysctl.conf:
kern.maxfiles=100000kern.maxfilesperproc=50000net.inet.tcp.sendspace=65536net.inet.tcp.recvspace=65536