d2ray is a single Docker container that provides easy 5-minute setups and braindead configurations for xtls-vision + reality.
- You can start with the example
docker-compose.yml
from this repo. - Adjust environment variables:
HOST
: the hostname/IP of the server.REQUIRED
.PORT
: the port Xray listens on.Optional, default = 443
.TARGET_HOST
: the target host to redirect non proxy connections.Required
.TARGET_PORT
: the target port to redirect non proxy connections.Optional, default = 443
.TARGET_SNI
: comma separated list of the target website's SNIs.Required
.PRIVATE_KEY
: server's private key.Optional
.USERS
: comma separated list of usernames that can access Xray.Required
.LOG_LEVEL
: the verbosity of Xray logs.Optional, default = warn
.
docker compose up -d
- Check the container log using
docker logs
for per user shareable links and QR codes supported by most Xray apps. These can also be found under/etc/xray/users/[USERNAME]
folders. - Test your connection.
The logs and private key are stored in /etc/d2ray
in the container. You can mount an external folder to that location to persist settings. Otherwise d2ray creates an anonymous Docker volume.
If PRIVATE_KEY
is provided, d2ray uses that key. Otherwise, d2ray generates a new key pair and persists it in /etc/xray/certs/keys
. The corresponding public key is always printed to the container log, which clients use to connect.
To make d2ray regenerate a new key pair, manually delete the key file /etc/xray/certs/keys
from the mounted volume.
docker compose down
docker compose pull
docker compose up -d
- The old xtls-vision + TLS + Nginx fallback has been branched out to the
vision
branch.