PodFetch

PodFetch is a web app that let's you download and play podcasts.

It needs PostgreSQL, even if it doesnt use it, so:

 > emerge postgresql

you don't need to run it.

Create user:

 > useradd -d /data/daemons/podfetch -m -g media podfetch
 > su - podfetch
 > wget https://github.com/SamTV12345/PodFetch/releases/download/<use latest release>/podfetch-linux.zip
 > unzip podfetch-linux.zip

Move podcast folder, as root:

 > mkdir /data/Media/Podcasts 
 > rmdir /data/daemons/podfetch/podcasts
 > ln -s /data/Media/Podcasts /data/daemons/podfetch/podcasts

Now, PodFetch works just fine with sub paths, but the gPodder integration will fail, so i suggest to create a dedicated sub-domain for podfetch, let's call it podcast.mydomain.com.

Run script:

podfetch.sh
#!/bin/bash
 
export SERVER_URL=https://podcast.mydomain.com/
 
export DATABASE_URL=sqlite:///data/daemons/podfetch/db/podcast.db
 
export REVERSE_PROXY=true
export REVERSE_PROXY_HEADER=X-WEBAUTH-USER
export REVERSE_PROXY_AUTO_SIGN_UP=true
 
export TELEGRAM_BOT_TOKEN=
export TELEGRAM_BOT_CHAT_ID=
export TELEGRAM_API_ENABLED=false
 
export GPODDER_INTEGRATION_ENABLED=false
 
cd /data/daemons/podfetch
./podfetch_amd64 &> podfetch.log

You will need at least version 4.6.1 to have gPodder working with REVERSE_PROXY authentication.

startup script /etc/local.d/35-podfetch.start:

35-podfetch.start
#!/bin/bash
 
start-stop-daemon -b -m -p /var/run/podfetch.pid -n podfetch -u podfetch /data/daemons/podfetch/podfetch.sh

NGINX integration

Add this section to your nginx:

        # Podfetch works in sub-path, but gPodder will not work, it require it's own subdomain so here it is
        server {
                server_name podcast.mydomain.com;
                listen 8443 ssl; # managed by Certbot
                listen 443 ssl; # managed by Certbot
                auth_pam "Home";
                auth_pam_service_name "nginx";
                client_max_body_size 50000M;
                large_client_header_buffers 4 32k;
                location / {
                        proxy_pass http://127.0.0.1:8000;

                        proxy_set_header Connection $http_connection;
                        proxy_set_header Upgrade $http_upgrade;
                        proxy_set_header Host $host;
                        proxy_set_header X-WEBAUTH-USER $remote_user;
                        proxy_set_header Authorization "";
                }

                ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem; # managed by Certbot
                ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem; # managed by Certbot
                include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
                ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
        }

and don't forget to extend your Let's Encrypt certificate as well, see the NGINX page of this wiki.

Update notes

When updating, make sure your podcasts links inside Podfetch folder still points to your /data/Media/Podcasts or things will start to not working properly! (bug here)