Git Product home page Git Product logo

gpodder2go's Introduction

gpodder2go

gpodder2go is a simple self-hosted, golang, drop-in replacement for gpodder/mygpo server to handle podcast subscriptions management for gpodder clients.

Goal

To build an easily deployable and private self-hosted drop-in replacement for gpodder.net to facilitate private and small group sychronization of podcast subscriptions with fediverse support

Current Goal

  • To support the authentication and storing/syncing of subscriptions and episode actions on multi-devices accounts
    • Target to fully support the following gpodder APIs
      • Authentication API
      • Subscriptions API
      • Episode Actions API
      • Device API
      • Device Synchronization API
  • To provide a pluggable interface to allow developers to pick and choose the data stores that they would like to use (file/in-memory/rdbms)

Stretch Goal

To join gpodder2go with the fediverse to allow for independent gpodder2go servers to communicate with one another to discover and share like-minded podcasts that the communities are listening to

Non-goals

gpodder2go will not come with it a web frontend and will solely be an API server. While this is not totally fixed and may change in the future, the current plan is to not handle anything frontend.

Database Requirement

gpodder2go requires a database to manage the subscription and user states. Currently the project only supports SQLite with plans to support other databases. The current database mechanism is managed by a DataInterface which allows for quick easy support of new database stores when needed.

Quickstart

  1. Download the respective binary
  2. Initialize the necessary database and configurations
$ ./gpodder2go init
  1. Start the gpodder server
$ VERIFIER_SECRET_KEY="" ./gpodder2go serve

Note: VERIFIER_SECRET_KEY is a required env var. This value will be used to sign and verify the sessionid which will be used to authenticate users.

  1. Create a new user
$ gpodder2go accounts create <username> --email="<email>" --name="<display_name>" --password="<password>"

Note: Each of the commands have a bunch of flags that you can use, to view the full list of available flags, use --help or -h after the commands.

Limitations

Right now it appears that the gpodder client doesn't fully support auth (see: gpodder/gpodder#617 and gpodder/gpodder#1358) even though the specification (https://gpoddernet.readthedocs.io/en/latest/api/reference/auth.html) explicitly defines it.

In order to allow gpodder client access to the gpodder server, please run gpodder2go in non-auth mode.

$ gpodder2go serve --no-auth

Note: This will allow anyone with access to retrieve your susbcriptions data and list. Please take the necessary steps to secure your instance and data.

Alternatively, you can switch to use Antennapod which has implemented the login spec which gpodder2go currently supports.

Supports

Development

$ go run main.go

Distribution Packages

Gentoo

Available with a custom overlay at: https://github.com/seigakaku/gentoo_ebuilds/tree/master/media-sound/gpodder2go

Add with:

# eselect repository add seiga git https://github.com/seigakaku/gentoo_ebuilds

Docker

$ docker run -d \
--name gpodder2go \
-p 3005:3005 \
-e NO_AUTH=<true or false> \
-v <data_directory>:/data \
dontobi/gpodder2go:latest

With docker compose:

version: '3'
services:
  gpodder2go:
    image: dontobi/gpodder2go:latest
    ports:
      - 3005:3005
    environment:
      - NO_AUTH=<true or false>
    volumes:
      - ./gpodder2go:/data
    restart: unless-stopped

To configure the server run

$ docker exec --it gpodder2go /gpodder2go ...

Build docker image from source

Build with:

$ git clone https://github.com/oxtyped/gpodder2go
$ cd gpodder2go
$ docker build -t oxtyped/gpodder2go .

Run with:

$ docker run --rm -it -p 3005:3005 oxtyped/gpodder2go

For persistent data, you can map /data as a volume:

$ docker run --rm -it -v /gpodder2go_data:/data -p 3005:3005 oxtyped/gpodder2go

To add a user:

$ docker run --rm -it -v /gpodder2go_data:/data oxtyped/gpodder2go /gpodder2go accounts create <username> --email="<email>" --name="<display_name>" --password="<password>"

gpodder2go's People

Contributors

oxtyped avatar dontobi avatar sbinet avatar tippfehlr avatar theblusky avatar zhoukuncheng avatar seigakaku avatar dependabot[bot] avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.