A node.js program + webapp to ingest DDEX files and publish them to Audius.
You configure multiple sources (in data/sources.json) and point them to S3 buckets.
The crawler will look for new XML files in the S3 buckets, parse the details and publish the music if preconditions are met.
Tracks are either
- Published automatically to an artist profile that authorizes the source keypair to distribute on their behalf. This is done using the Audius SDK oauth method.
- Published manually using the UI tools provided in this package
- See README_DEV for dev setup.
This application can be run as a Docker container. The container runs both the server (ddex) and worker processes using PM2.
# Build and optionally push the image
./build-and-push.sh [version]
# Examples:
./build-and-push.sh # Builds with 'latest' tag
./build-and-push.sh v1.0.0 # Builds with version tagThe script will:
- Build the Docker image with the tag
audius/ddex:latest(and version tag if provided) - Optionally push to Docker Hub after building
- Create a
.envfile like:
COOKIE_SECRET='openssl rand -hex 16'
NODE_ENV='production'
DDEX_URL='https://ddex.example.com'
ADMIN_HANDLES='user1,user2'
SKIP_SDK_PUBLISH='true'- Create a
data/sources.jsonfile configured
cp sources.example.json data/sources.jsonThen run the container:
docker run -p 8989:8989 \
--env-file .env \
-v $(pwd)/data:/app/data \
audius/ddex:latestThe container will:
- Run the server on port 8989
- Run the worker process to poll S3 buckets
- Both processes are managed by PM2
Note: The data directory should be mounted as a volume to persist sources.json and other data files.