---
title: Installing Third Party Extensions
description: How to install additional extensions into ParadeDB
canonical: https://docs.paradedb.com/deploy/third-party-extensions
---

<Note>
  [Foreign data
  wrapper](https://www.postgresql.org/docs/current/ddl-foreign-data.html)
  extensions can be used to query AWS S3 and other external data stores directly
  from ParadeDB.
</Note>

Postgres has a rich ecosystem of extensions. ParadeDB is designed to work alongside other PostgreSQL extensions for a complete data platform.

## Pre-installed Extensions

To keep the ParadeDB Docker image size manageable, the following extensions are pre-installed:

- **`pg_search`** — Full-text and hybrid search with BM25
- **`pgvector`** — Vector similarity search
- **`postgis`** — Geospatial queries and indexing
- **`pg_ivm`** — Incremental materialized views
- **`pg_cron`** — Scheduled jobs and background tasks

<Note>
  `pg_cron` is configured on the default `postgres` database and cannot be
  changed.
</Note>

## Compatible Extensions

ParadeDB has been tested with and supports the following popular extensions:

- **[Citus](/deploy/citus)** — Distributed PostgreSQL for horizontal scaling
- **`pg_partman`** — Automated partition management
- **`pg_stat_statements`** — Query performance monitoring
- **`postgres_fdw`** — Foreign data wrappers for federated queries

<Note>
  If you encounter any issues with extension compatibility, please [open an
  issue](https://github.com/paradedb/paradedb/issues) or reach out to our
  [community](https://www.paradedb.com/slack).
</Note>

## Installing Third Party Extensions

The process for installing an extension varies by extension. Generally speaking, it requires:

- Download the prebuilt binaries inside ParadeDB
- Install the extension binary and any dependencies inside ParadeDB
- Add the extension to `shared_preload_libraries` in `postgresql.conf`, if required by the extension
- Run `CREATE EXTENSION <extension name>`

We recommend installing third party extensions from prebuilt binaries to keep the image size small. As an
example, let's install [pg_partman](https://github.com/pgpartman/pg_partman), an extension for managing table partition sets.

### Install Prebuilt Binaries

First, enter a shell with root permissions in the ParadeDB image.

```bash
docker exec -it --user root paradedb bash
```

<Note>
  This command assumes that your ParadeDB container name is `paradedb`.
</Note>

Next, install the [prebuilt binaries](https://pkgs.org/search/?q=partman).
Most popular Postgres extensions can be installed with `apt-get install`.

```bash
apt-get update
apt-get install -y --no-install-recommends postgresql-17-partman
```

<Note>
  If the extension is not available with `apt-get install`, you can usually
  `curl` the prebuilt binary from a GitHub Release page. You will need to first
  install `curl` via `apt-get install` if you are taking this approach.
</Note>

### Add to `shared_preload_libraries`

<Accordion title="Modifying shared_preload_libraries">

If you are installing an extension which requires this step, you can do so
via the following command, replacing `<extension_name>` with your extension's name:

```bash
sed -i "/^shared_preload_libraries/s/'\([^']*\)'/'\1,<extension_name>'/" /var/lib/postgresql/data/postgresql.conf
```

For `pg_partman`, the command is:

```bash
sed -i "/^shared_preload_libraries/s/'\([^']*\)'/'\1,pg_partman_bgw'/" /var/lib/postgresql/data/postgresql.conf
```

</Accordion>

Postgres must be restarted afterwards. We recommend simply restarting the Docker container.

### Create the Extension

Connect to ParadeDB via `psql` and create the extension.

```sql
CREATE EXTENSION pg_partman;
```

`pg_partman` is now ready to use!

Note that this is a simple example of installing `pg_partman`. The full list of settings and optional dependencies can be found in the [official installation instructions](https://github.com/pgpartman/pg_partman?tab=readme-ov-file#installation).
