[http://www.linuxhispano.net/feed/](http://www.linuxhispano.net/feed/)
[Probar RedSys en local: WordPress con Docker y un túnel de Cloudflare](https://www.linuxhispano.net/2026/11/05/probar-redsys-en-local-wordpress-con-docker-y-un-tunel-de-cloudflare/)

[https://www.linuxhispano.net/wp-content/uploads/2026/11/docker.png](https://www.linuxhispano.net/wp-content/uploads/2026/11/docker.png) 
Si alguna vez has tenido que integrar un TPV virtual de RedSys en una tienda WordPress, conocerás el problema: el pago en sí lo puedes probar desde tu equipo sin más, pero la **notificación** que el banco envía a tu web para confirmar el cobro no llega nunca. RedSys no puede llamar a `localhost`, y sin esa notificación el pedido se queda pendiente para siempre.

La solución habitual es subir los cambios a un servidor de pruebas cada vez que tocas algo, que es lento y engorroso. En Linux lo podemos resolver en un par de minutos con **Docker** y un **túnel de Cloudflare**, sin abrir puertos en el router y sin contratar nada. **Qué necesitamos**

* Docker con el plugin `docker compose` (en Debian y Ubuntu, paquetes `docker.io` y `docker-compose-v2`, o los oficiales de Docker).
* `cloudflared`, el cliente de túneles de Cloudflare. Para un túnel rápido no hace falta cuenta.
* Los datos del entorno de pruebas de RedSys: número de comercio, terminal y clave de firma de test. Te los da tu banco al contratar el TPV. **WordPress en local con Docker**

Creamos una carpeta para el proyecto y dentro un `compose.yaml` con WordPress y MariaDB: `services:
  db:
    image: mariadb:11
    environment:
      MARIADB_DATABASE: wordpress
      MARIADB_USER: wordpress
      MARIADB_PASSWORD: wordpress
      MARIADB_RANDOM_ROOT_PASSWORD: "1"
    volumes:
      - db:/var/lib/mysql

  wordpress:
    image: wordpress:latest
    depends_on:
      - db
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_DEBUG: "1"
      WORDPRESS_CONFIG_EXTRA: |
        if (isset(&#036;&#036;_SERVER['HTTP_X_FORWARDED_PROTO']) && &#036;&#036;_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
          &#036;&#036;_SERVER['HTTPS'] = 'on';
        }
        if (isset(&#036;&#036;_SERVER['HTTP_HOST'])) {
          define('WP_HOME', 'https://' . &#036;&#036;_SERVER['HTTP_HOST']);
          define('WP_SITEURL', 'https://' . &#036;&#036;_SERVER['HTTP_HOST']);
        }
        define('WP_DEBUG_LOG', true);
        define('WP_DEBUG_DISPLAY', false);
    volumes:
      - wp:/var/www/html

volumes:
  db:
  wp:`

Dos detalles importantes:

* Los `&#036;&#036;` son a propósito: Docker Compose interpreta `&#036;` como una variable, y con el doble dólar le decimos que lo pase tal cual a PHP.
* El bloque `WORDPRESS_CONFIG_EXTRA` hace que WordPress use como dirección la del túnel, sea cual sea, y que sepa que la conexión es HTTPS aunque al contenedor le llegue por HTTP. El túnel rápido cambia de dirección cada vez que lo arrancas, así que así no hay que tocar nada en la base de datos. Es una configuración pensada solo para pruebas: no la uses en producción.

Lo levantamos: `docker compose up -d` **El túnel**

En otra terminal: `cloudflared tunnel --url http://localhost:8080`

Al cabo de unos segundos aparece una dirección del tipo `https://palabras-al-azar.trycloudflare.com`. Esa es la URL pública de tu WordPress, con un certificado válido. Ábrela en el navegador y haz la instalación normal. A partir de aquí entra siempre por esa dirección, no por `localhost:8080`.

Si no quieres instalar `cloudflared` en el sistema, también puedes lanzarlo como contenedor: `docker run --rm --network host cloudflare/cloudflared:latest tunnel --url http://localhost:8080` **Configurar el TPV en modo de pruebas**

Instala WooCommerce, crea un producto de prueba y añade la pasarela de RedSys que vayas a usar. En nuestro caso lo probamos con el plugin de RedSys y Bizum p[...]