sudo apt update && sudo apt upgrade -y
sudo apt install cpanminus build-essential libssl-dev
sudo cpanm Starman
starman --versionExpected output: Starman version x.x
sudo useradd --system --home-dir /var/www/starman starman
sudo mkdir -p /var/www/starman/{app,logs,tmp}
sudo chown -R starman:starman /var/www/starman
/etc/systemd/system/starman.service(Contents as previous documentation)
sudo systemctl daemon-reload
sudo ufw allow 80/tcp # For Let's Encrypt validation
sudo certbot certonly --standalone -d starman.example.com
--listen :443 \ --ssl \ --ssl-cert /etc/letsencrypt/live/example.com/fullchain.pem \ --ssl-key /etc/letsencrypt/live/example.com/privkey.pem
sudo ufw delete allow 80/tcp && sudo ufw allow 443/tcp
/var/www/starman/app/myapp.psgi(Contents as previous)
# In app directory carton init echo "requires 'Catalyst::Runtime';" >> cpanfile carton install
/etc/starman/environment.conf(Set CATALYST_DEBUG=0 etc.)
qm clone 1000 1001 --name starman-worker1
qm set 1001 -net0 virtio,bridge=vmbr1
/etc/haproxy/haproxy.cfg(Backend config as previous)
scp myapp.psgi starman@worker1:/var/www/starman/app/
sudo systemctl status starman
journalctl -u starman -f --since "5 minutes ago"
sudo ss -tulpn | grep starman
curl -I https://starman.example.com/status