--- title: Installing Third Party Extensions description: How to install additional extensions into ParadeDB canonical: https://docs.paradedb.com/deploy/third-party-extensions --- [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. 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 `pg_cron` is configured on the default `postgres` database and cannot be changed. ## 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 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://join.slack.com/t/paradedbcommunity/shared_invite/zt-32abtyjg4-yoYoi~RPh9MSW8tDbl0BQw). ## 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 ` 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 ``` This command assumes that your ParadeDB container name is `paradedb`. 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 ``` 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. ### Add to `shared_preload_libraries` If you are installing an extension which requires this step, you can do so via the following command, replacing `` with your extension's name: ```bash sed -i "/^shared_preload_libraries/s/'\([^']*\)'/'\1,'/" /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 ``` 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).