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
:latestto:edgeto 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.
- Download the docker-compose file:
curl -o docker-compose.yml https://raw.githubusercontent.com/Pipe-Bomb/docker/master/docker-compose.yml
- 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.