Skip to content

Ports

Service Port Notes
Edge proxy (HTTP) 80 Caddy. Redirects to HTTPS
Edge proxy (HTTPS) 443 Caddy. TLS terminates here
Edge admin unix socket 0600 in rexenv’s config dir — never a TCP port
Embedded DNS 15353 (UDP) Answers *.rex and any other TLD you configure
Shared nginx 18088 One server block per site, behind the edge
php-fpm pools 9774, 97809785 One pool per installed PHP minor
php-fpm debug pools 99819985 Started on demand for Xdebug-toggled sites (8.1–8.5)
Xdebug DBGp 9003 Your IDE listens. rexenv binds nothing here
FrankenPHP overrides 82008299 Per site, loopback only
Apache overrides 83008399 Per site, loopback only
MySQL 13306
MariaDB 13307
PostgreSQL 15432
Redis 16379
Mailpit SMTP 11025
Mailpit web UI 18025
Adminer no port Served as an internal vhost through the shared nginx
cloudflared no port Outbound-only; nothing listens

They are offset from the usual defaults on purpose. Mailpit’s stock ports are 1025 and 8025, MySQL’s is 3306 — using them would mean rexenv collides with a standalone Mailpit, a MailHog, another local environment, or a database you installed yourself.

The offsets are the difference between rexenv coexisting with your current setup and demanding you dismantle it first.

Pool ports are computed as 9700 + major×10 + minor. That puts PHP 7.4 at 9774, below the 8.x block at 97809785, rather than at the start of a tidy contiguous range.

It is the formula being honest rather than the numbers being pretty: the port tells you which version is on the other end of it, and that stays true when a version is added or removed.

9003 is the standard DBGp port and it is the only port in this table rexenv does not bind. PHP connects outward to your IDE, so your editor is the listener. That is why the Xdebug toggle needs no port configuration in rexenv — only in your IDE.

Nothing starts without checking its port first. When one is taken, the message names the process holding it and gives a copy-pasteable way to deal with it, rather than reporting a generic failure to start.