Skip to content

How to install Pods-Blitz?

First of all consider if you want to host the software yourself. You also have the option to join one of the existing instances.

Requirements

  • Linux OS
  • MySQL or MariaDB database
  • HTTPS frontend (e.g. nginx) and TLS certificate (e.g. Let’s Encrypt)

MySQL compatible database

Setup a database called “pods-blitz”. Note down server hostname, username and password. If you do not have these, please contact your database or server administrator.

Download Pods-Blitz

Download the latest release from codeberg.org

Extract the tar archive pods-blitz-x86_64-linux.tar.gz to a folder of your choice:

tar xfvz pods-blitz-x86_64-linux.tar.gz
  • pods-blitz the binary
  • README.md
  • config.toml
  • Directorytemplates/
  • Directorystatic/
    • Directorypodlove/ the web-player
  • Directoryassets/ must be writable
  • Directoryrss/ must be writable
  • Directoryres/
    • bots.json

All media files you upload will be stored in the assets sub-folder. Generated RSS files will be stored in the rss sub-folder.

Installation

The downloaded tar archive contains a configuration file “config.toml”:

DATABASE_URL = "mysql://username:password@localhost/pods-blitz"
# BASE_URL must include port number (if port number is not 80) and scheme (http or https)
BASE_URL = "http://localhost:3002/"
# LISTEN_PORT = "3002"
[...]

Edit the DATABASE_URL variable to match your environment (replace username, password and server name). The pods-blitz server also needs to know, how it can be accessed from the outside, that’s what BASE_URL is used for. For a local test installation that would be http://localhost:3002/, otherwise use your domain name or IP address, e.g. http://mypodcast.org/

After editing your configuration file, you are ready for a quick test:

  1. Change the working directory to your pods-blitz directory.
  2. Set the environment variable PODS_BLITZ_CONFIG_FILE to point to your configuration file: export PODS_BLITZ_CONFIG_FILE=/path/to/pods-blitz/config.toml
  3. Start the server: ./pods-blitz

If you don’t get an error message, the server has sucessfully started and all database tables were created.

You can now open the welcome page by pointing your browser to the BASE_URL, e.g.: http://localhost:3002

First welcome screen

You can now start looking around (after changing your admin password) or make the installation “production-ready”.

The next steps depend on your server and hosting environment, so we just give configuration examples for the most common situation: A linux system with systemd and nginx as reverse proxy.

nginx

After obtaining your TLS certificate (which is outside the scope of this documentation, but we recommend https://letsencrypt.org), you can add the pods-blitz server to your nginx configuration:

[...]
upstream pods-blitz {
# replace 3002 with the value of LISTEN_PORT as defined in config.toml
server 127.0.0.1:3002;
# sets the maximum number of idle connections to upstream servers
keepalive 2;
}
server {
listen 443 ssl;
# replace mypodcast.org with your domain
server_name mypodcast.org;
ssl_protocols TLSv1.2 TLSv1.3;
# edit to match your environment
ssl_certificate /etc/letsencrypt/live/mypodcast/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mypodcast/privkey.pem;
location / {
proxy_http_version 1.1;
# keep the connection alive (overwrite close)
proxy_set_header "Connection" "";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
# the actual pods-blitz server
proxy_pass http://pods-blitz;
}
}

systemd

Of course you want the pods-blitz software to start automatically every time your linux server is booted. Many systems use systemd for this purpose and here you can see an example of a systemd configuration file (also called unit file):

[Unit]
Description=Pods-Blitz podcast hosting
[Service]
Type=simple
User=pods-blitz
Group=pods-blitz
WorkingDirectory=/path/to/pods-blitz
ExecStart=/path/to/pods-blitz/pods-blitz
StandardOutput=append:/path/to/pods-blitz/log
StandardError=append:/path/to/pods-blitz/log
Restart=on-failure
Environment=PODS_BLITZ_CONFIG_FILE=/path/to/pods-blitz/config.toml
[Install]
WantedBy=default.target
Alias=pods-blitz.service

Edit this file according to your environment and place it e.g. under
/etc/systemd/system/ with the file name pods-blitz.service. Reload the systemd manager configuration:
systemctl daemon-reload
and (re-)start the service:
systemctl restart pods-blitz