Skip to content

Instantly share code, notes, and snippets.

@tareq1988
Last active November 18, 2025 08:04
Show Gist options
  • Select an option

  • Save tareq1988/b3b2388416bc5d6adf778383c9ba39b1 to your computer and use it in GitHub Desktop.

Select an option

Save tareq1988/b3b2388416bc5d6adf778383c9ba39b1 to your computer and use it in GitHub Desktop.
HTTP3/QUIC support in FlyWP

Enable HTTP/3 / QUIC in FlyWP

By default FlyWP’s reverse proxy only listens on ports 80 and 443 without HTTP/3. To enable HTTP/3 / QUIC you need to expose UDP on 443 and turn on the HTTP/3 flag in the proxy container.

1. SSH into the server and go to the FlyWP directory

ssh fly@YOUR_SERVER_IP

cd ~/.fly

You should see docker-compose.yml in this directory.

2. Stop the existing Docker stack

Stop the running FlyWP stack before editing the compose file:

docker compose down

3. Edit docker-compose.yml

Open the compose file with your preferred editor:

vi docker-compose.yml
# or
nano docker-compose.yml

Find the proxy service. It will look similar to this:

services:
  proxy:
    image: 'nginxproxy/nginx-proxy:alpine'
    container_name: nginx-proxy
    restart: always
    ports:
      - '80:80'
      - '443:443'
    volumes:
      - '/var/run/docker.sock:/tmp/docker.sock:ro'
      - './nginx/certs:/etc/nginx/certs'
      - './nginx/html:/usr/share/nginx/html'
      - './nginx/conf.d:/etc/nginx/conf.d'
      - './nginx/vhost:/etc/nginx/vhost.d'
    networks:
      - wordpress-sites

Update the ports section and add the environment variable so it becomes:

services:
  proxy:
    image: 'nginxproxy/nginx-proxy:alpine'
    container_name: nginx-proxy
    restart: always
    ports:
      - '80:80'
      - '443:443/tcp'       # HTTPS over TCP
      - '443:443/udp'       # QUIC / HTTP/3 over UDP
    environment:
      - ENABLE_HTTP3=true   # Enable HTTP/3 globally
    volumes:
      - '/var/run/docker.sock:/tmp/docker.sock:ro'
      - './nginx/certs:/etc/nginx/certs'
      - './nginx/html:/usr/share/nginx/html'
      - './nginx/conf.d:/etc/nginx/conf.d'
      - './nginx/vhost:/etc/nginx/vhost.d'
    networks:
      - wordpress-sites

Save and exit the editor.

4. Start the stack again

Bring the stack back up in detached mode:

docker compose up -d

Wait a few seconds for the proxy to start.

5. Quick verification

You can check that the proxy is running:

docker ps | grep nginx-proxy

To verify HTTP/3 from a client machine you can use curl with HTTP/3 support (if available):

curl -I --http3 https://your-domain.com

Or go to https://http3check.net/ and check your site.

services:
proxy:
image: 'nginxproxy/nginx-proxy:alpine'
container_name: nginx-proxy
restart: always
ports:
- '80:80'
- '443:443/tcp' # HTTPS over TCP
- '443:443/udp' # QUIC / HTTP/3 over UDP
environment:
- ENABLE_HTTP3=true # Enable HTTP/3 globally
volumes:
- '/var/run/docker.sock:/tmp/docker.sock:ro'
- './nginx/certs:/etc/nginx/certs'
- './nginx/html:/usr/share/nginx/html'
- './nginx/conf.d:/etc/nginx/conf.d'
- './nginx/vhost:/etc/nginx/vhost.d'
networks:
- wordpress-sites
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment