Installation

Pipe Bomb consists of two parts: Server and Frontend. A proper installation involves both components, but this can be done in a single step using Docker.

Method 1 - Docker

You can install both the Server and Frontend using the combined Docker image.

docker run -d \
  --name pipe-bomb \
  -p 9193:80 \
  -v /path/to/data:/data \
  -v /path/to/resources:/resources \
  -v /path/to/cache:/audio-cache \
  -v /path/to/plugin-cache:/plugin-cache \
  -v /path/to/plugins:/plugins \
  -v /path/to/temp:/temp \
  -v /path/to/music:/music:ro \
  ghcr.io/pipe-bomb/pipe-bomb:latest

Hint: Change the image tag from :latest to :edge to get bleeding-edge updates.

This command runs Pipe Bomb on port 9193. Configure your volumes according to the guide.

Method 2 - Docker Compose

Pipe Bomb also has a docker-compose.yml which you can use to deploy on Docker Compose.

  1. Download the docker-compose file:
curl -o docker-compose.yml https://raw.githubusercontent.com/Pipe-Bomb/docker/master/docker-compose.yml
  1. Run it:
docker compose up -d

The compose file runs Pipe Bomb on port 9193. By default, all data is stored in ./data. You can configure Pipe Bomb under Docker Compose using the following environment variables:

Variable Default Description
PUBLIC_URL (unset) Only needed if CORS is causing issues. Set to the exact URL you use to access Pipe Bomb (e.g. http://192.168.1.100).
HTTP_PORT 9193 The port nginx listens on.
DATA_PATH ./data/data Where Pipe Bomb stores its database and core data.
RESOURCES_PATH ./data/resources Where Pipe Bomb stores resources such as cover art and thumbnails.
AUDIO_CACHE_PATH ./data/cache Where Pipe Bomb caches audio streams. Safe to clear; audio will be slower to serve until rebuilt.
PLUGIN_CACHE_PATH ./data/plugin-cache Where Pipe Bomb stores plugin-specific cached data. Safe to clear.
PLUGINS_PATH ./data/plugins Where Pipe Bomb loads plugins from.
TEMP_PATH ./data/temp Temporary files used during processing. Does not need to be persisted.
SECRETS_PATH ./data/secrets JWT signing key and other secrets. Must be kept on persistent storage.
MUSIC_PATH ./data/music Path to a local music directory. See Local Music Library.

Method 3 - Manual Installation

You can run the Server and Frontend natively.

Server

Clone the Server, install dependencies and build.

git clone https://github.com/pipe-bomb/server.git
cd server
npm ci
npm run build
npm run start:prod

The Server runs by default on port 3000 but can be configured using the PORT environment variable.

If you plan on making both the Server and Frontend accessible on the same port using a reverse proxy, you need to tell the Server what the subpath is that it'll run on:

BASE_PATH="/api"

If the Server and Frontend will be accessible using different domains or ports, the Server needs to be configured with the public URL of the Frontend:

CORS="http://pipebomb.local:3001"

If the Server and Frontend are accessible from different subdomains, the root domain needs to be configured for secure cookies:

COKIE_DOMAIN=".pipebomb.local"

The Server and Frontend must use the same root domain.

Frontend

Clone the Frontend, install dependencies and build.

git clone https://github.com/pipe-bomb/frontend.git
cd frontend
npm ci
npm run build
npm run start

The Frontend runs by default on port 3000. This will cause a port conflict if running on the same system as the Server, so change the port using the PORT environment variable.