This is a minimalist GPodder server to self-host your podcast synchronization data.
This allows you to keep track of which episodes have been listened to.
Requires PHP 7.4+ and SQLite3 with JSON1 extension.
- Stores history of subscriptions and episodes (plays, downloads, etc.)
- Sync between devices
- Compatible with gPodder desktop client
- Self-registration
- See subscriptions and history on web interface
In the future, this will target compatibility with the Open Podcast API as well when it is released.
Just copy the files from the server
directory into a new directory of your webserver.
If you are not using Apache, make sure to adapt the rules from the .htaccess
file to your own server.
When installed, the server will allow to create a first account. Just go to the server URL and you will be able to create an account and login.
After that first account, account creation is disabled by default.
If you want to allow more accounts, you'll have to configure the server (see "Configuration" below).
In order to run micro-gpodder-server with Docker you only need to build the Dockerfile
and run it while binding the data
directory for persistence and setting the hostname, here is an example with docker compose:
services:
gpodder:
container_name: gPodder
build:
context: ./micro-gpodder-server
dockerfile: Dockerfile
volumes:
- type: bind
source: ~/docker_files/gpodder/data
target: /var/www/server/data
environment:
- gpodder_url=https://gpodder.example.org
hostname: gpodder.example.org
ports:
- 80:80
You can create a config.local.php
in the data
directory, defining configuration constants:
<?php
// Enable or disable subscriptions (boolean)
// By default the server allows to create one account
// and then disables subscriptions
const ENABLE_SUBSCRIPTIONS = true;
// Set to a file path to enable the debug log
// Set to NULL (default) to disable the debug log
const DEBUG = __DIR__ . '/debug.log';
// Set to change the instance name
const TITLE = 'My awesome GPodder server';
Just use the domain name where you installed the server, and the login and password you have chosen.
gPodder (the desktop client, not the gpodder.net service) doesn't support any kind of authentication (!!), see this bug report for details.
This means that you have to use a unique secret token as the username.
This token is displayed when you log in. Use it as the username in gPodder configuration.
This server supports the following APIs:
It also supports endpoints defined by the NextCloud GPodder app.
The endpoint /api/2/updates/(username)/(deviceid).json
(from the Devices API) is not implemented.
This server only supports JSON format, except:
PUT /subscriptions/(username)/(deviceid).txt
GET /subscriptions/(username)/(deviceid).opml
GET /subscriptions/(username).opml
Trying to use a different format on other endpoints will result in a 501 error. JSONP is not supported either.
Please also note: the username "current" always points to the currently logged-in user. The deviceid "default" points to the first deviceid found.
This server has been tested so far with:
- AntennaPod 2.6.1 (both GPodder API and NextCloud API) - Android
- gPodder 3.10.17 - Debian (requires a specific token, see above!)
Please report if apps work (or not) with other clients.
It doesn't work with:
- Clementine 1.4.0rc1 - Debian (not possible to choose the server: bug report)
GNU AGPLv3