> ## Documentation Index
> Fetch the complete documentation index at: https://mintlify.com/BunnyNabbit/voxel-telephone/llms.txt
> Use this file to discover all available pages before exploring further.

# Voxel Telephone Server External Dependencies

> Overview of every external dependency required by Voxel Telephone: Node.js, MongoDB, pnpm, Spotvox for rendering, and optional ImageMagick for WebP output.

Voxel Telephone depends on several external tools that must be installed separately before the server can start. This page explains what each one does in the context of the server and where to get it.

## Node.js

**Required.** The server runtime. Voxel Telephone is a Node.js application written in ES modules (`.mjs`). The project is known to work at **v20 and above**.

Verify your installed version:

```bash theme={null}
node --version
```

Download Node.js from [nodejs.org](https://nodejs.org/). Consider using a version manager such as [nvm](https://github.com/nvm-sh/nvm) or [fnm](https://github.com/Schniz/fnm) to pin the version per project.

## MongoDB

**Required.** Voxel Telephone persists all game data — turns, player records, interactions, bans, render jobs, and more — in MongoDB. The server connects using the [official MongoDB Node.js driver](https://www.mongodb.com/docs/drivers/node/).

By default the server connects to `mongodb://localhost:27017`. You can override this with the `dbConnectionString` option in `config.json`. See the [configuration reference](/server/configuration) for details.

Install MongoDB Community Edition from [mongodb.com/try/download/community](https://www.mongodb.com/try/download/community) or run it via Docker:

```bash theme={null}
docker run -d -p 27017:27017 --name mongo mongo:latest
```

## pnpm

**Required.** Voxel Telephone uses [pnpm](https://pnpm.io/) as its package manager. The `pnpm-workspace.yaml` at the project root configures workspace-level settings such as minimum release age and allowed build-only packages.

Install pnpm globally:

```bash theme={null}
npm install -g pnpm
```

Then install project dependencies from the repository root:

```bash theme={null}
pnpm install
```

The `packageManager` field in `package.json` pins the exact pnpm version (`10.30.3`) used by the project.

## Spotvox

**Required for the renderer.** Spotvox is a Java-based voxel renderer that converts `.vox` files into rendered PNG images. The renderer (`renderer/SpotvoxRenderer.mjs`) calls Spotvox via `java -jar ../spotvox.jar` from the `renderer/` directory, which means the `.jar` file must be placed in the **project root** (the same directory as `voxelTelephone.mjs`).

Download Spotvox from [github.com/tommyettinger/spotvox](https://github.com/tommyettinger/spotvox/).

Java must be available on your `PATH` for the renderer to invoke Spotvox.

<Note>
  The game server itself starts without Spotvox present. Only the renderer process (`node renderer/SpotvoxRenderer.mjs`) requires the `.jar`. You can run the game server and add the renderer later.
</Note>

## ImageMagick

**Optional.** The renderer uses ImageMagick's `convert` command to convert the PNG output from Spotvox into WebP format, which is more compact for web delivery. If ImageMagick is not installed or the conversion fails, the renderer automatically falls back to saving the image as PNG.

Download ImageMagick from [imagemagick.org](https://imagemagick.org/). After installation, confirm the `convert` command is on your `PATH`:

```bash theme={null}
convert --version
```

<Note>
  ImageMagick is only needed if you want WebP-format game previews. The server and renderer both function without it.
</Note>
