Postgres 17 + pgvector for Pterodactyl.
The Pterodactyl "Postgres 17" egg runs ghcr.io/ptero-eggs/yolks:postgres_17,
which has no vector extension. The stock pgvector/pgvector:pg17 image can't run
under Pterodactyl (it expects root + /var/lib/postgresql/data; the egg runs
Postgres directly as the unprivileged container user from /home/container). So
this image extends the yolks one and bakes pgvector into the same /usr/local
prefix — startup command, data, and superuser unchanged.
The build-image GitHub Action builds on every
push to main (or manual Run workflow) and pushes to this repo's GHCR package
using the built-in GITHUB_TOKEN — no Docker or secrets needed locally.
Resulting image:
ghcr.io/dakshnamdev/pg17-pgvector
After the first successful run, make the package public so Wings can pull it
without auth: GitHub → your profile → Packages → postgres17-pgvector →
Package settings → Change visibility → Public. (Or keep it private and give
Wings a registry login.)
- Panel → your Postgres server → Startup → Docker Image →
ghcr.io/dakshnamdev/pg17-pgvector. - Restart — do NOT reinstall (reinstall re-runs
initdband wipes data). - Enable the extension once, as the
pterodactylsuperuser, in your app DB:psql "postgresql://<PGUSER>:<PGPASSWORD>@<host>:<port>/<dbname>" \ -c 'CREATE EXTENSION IF NOT EXISTS vector;'
Verify:
psql "postgresql://<PGUSER>:<PGPASSWORD>@<host>:<port>/<dbname>" \
-c "SELECT extversion FROM pg_extension WHERE extname='vector';"Edit ARG PGVECTOR_VERSION in the Dockerfile (and the 0.8.0 tag in the
workflow), push, re-pull in Pterodactyl.