> For the complete documentation index, see [llms.txt](https://doc.velneo.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://doc.velneo.com/35/aplicacion-vlanzadera-y-login-social/configuracion-de-vlanzadera-en-apache-en-el-cloud-de-velneo.md).

# Configuración de vLanzadera en Apache en el Cloud de Velneo

## Apache

La configuración se establece en el fichero /apache2/001-default-ssl.conf del servidor cloud.&#x20;

Podremos editarlo conectándonos con el servidor cloud vía [sftp](/35/velneo-cloud/explorador-de-archivos-cloud-sftp.md).

Lo primero que tenemos que asegurarnos es que la línea:

&#x20;`Include /etc/apache2/conf-available/vlanzadera.conf`&#x20;

esté presente al final de nuestro fichero de configuración de Apache. Si no lo está, añadirlo antes de la etiqueta \</VIRTUALHOST>.

Debe quedar algo como sigue:

```
Include /etc/apache2/conf-available/vlanzadera.conf
</VirtualHost>
```

Ahora tenemos que crear el *location* para la aplicación que hemos instalado en el punto anterior. Dentro de la sección *VirtualHost*, debemos tener algo similar a esto:

```
<Location /auth>
setHandler velneo
#VelneoMode SERVER
Vrl vatps://user:pass@localhost:6900/VLANZADERA_APP
</Location>
```

### A tener en cuenta en la configuración de la instancia en Apache

El location tiene que llamarse obligatoriamente /auth.

Si tenemos más de un location declarado en Apache, el de la lanzadera debe ser el último.

El nombre de la aplicación debe ser el identificador de la instancia del proyecto de aplicación de vLanzadera:

![](/files/AJAbjBhNWEzbrcZ5pBrX)

El puerto a usar puede ser el indicado u otro, en función de los servicios contratados. Si tienes dudas puedes consultarlo con el personal de soporte de Velneo.&#x20;

La línea *VelneoMode* está comentada intencionadamente, porque esta aplicación **NO FUNCIONA** en ese modo.

El usuario debe ser un [usuario](/35/velneo-vadmin/gestion-de-usuarios.md#usuarios) declarado en ese servidor y que tenga privilegios de [supervisor](/35/velneo-vadmin/gestion-de-usuarios.md#supervisor).

Puedes añadir dentro de la directiva *Directory* del *Virtual host* una redirección para que la vLanzadera se sirva desde la raíz de nuestro sitio. Debería quedar algo similar a esto:

```
<Directory /home/${USERNAME}/apache2/html/>
        Options FollowSymLinks
        AllowOverride All
        Require all granted

        # Para la redirección de la lanzadera de /* a /auth/*
        RewriteEngine On
        RewriteRule ^/?$ /auth?%{QUERY_STRING} [NC,L]
</Directory>
```

{% hint style="success" %}
Si en el servidor se reinicia alguna solución que está configurada en el fichero de configuración de Apache, debemos reiniciar Apache después.
{% endhint %}

Una vez realizados dichos cambios, reinicia el servicio de Apache desde tu [panel de Velneo Cloud](/35/velneo-cloud/panel-de-control-vserver-cloud.md).

## vServer

La lanzadera utiliza [JWT](https://jwt.io/introduction) para intercambiar información con el servidor. Para garantizar y securizar el intercambio de información entre la lanzadera y Velneo vServer, es necesario especificar una clave JWT en el registro de Velneo vServer.

Para ello, en Velneo Cloud es tan sencillo como conectarse por [sftp](/35/velneo-cloud/explorador-de-archivos-cloud-sftp.md) y editar el fichero `.config/Velneo/vServer.conf`.&#x20;

Si no la tenemos ya, añadir una línea que contenga la propiedad:

`jwtKey=TU_CLAVE_JWT_DE_32`

La clave JWT debe tener una longitud mínima de 32 caracteres.

De forma opcional, se puede configurar un parámetro de tiempo de validez del token.&#x20;

`jwtExpiredSeconds=NUMERICO_SEGUNDOS`

Por seguridad el servidor solo aceptará el token generado por la lanzadera durante los siguientes jwtExpiredSeconds segundos más 60 segundos de cortesía por si hay desviación de la hora entre el cliente y el servidor.

Si no se configura el parámetro tendrá un valor por defecto de 60 segundos.

{% hint style="danger" %}
Por temas de seguridad, la clave JWT solo debe ser conocida por el administrador.
{% endhint %}

## Proxy para redirigir el tráfico WSS al puerto 443

Por defecto, para *websockets* (necesarios para la ejecución web) se usa el puerto que tenga nuestro servidor + 9. Es decir, que si el puerto del servidor es el 690, para Websockets se usa el 699. En el caso de que queramos usar en su lugar el puerto estándar 443, será necesario realizar configuración adicional en Apache y en vLanzadera.

En vLanzadera tendremos que configurar, en la sección [Parámetros](/35/aplicacion-vlanzadera-y-login-social.md#datos), el valor 443 en el parámetro **Puerto WSS**.

Si usábamos un `RewriteRule` para usar la raíz del host para servir la lanzadera, hay que añadirle un RewriteCond: `RewriteCond %{HTTP:Upgrade} !=websocket [NC]` para que no aplique esa redirección a las peticiones wss. La directiva `<directory>` quedaría así  (se ha insertado la línea 8):

{% code lineNumbers="true" %}

```apacheconf
<Directory /home/${USERNAME}/apache2/html/>
        Options FollowSymLinks
        AllowOverride All
        Require all granted

        # Para la redirección de la lanzadera de /* a /auth/*
        RewriteEngine On
        RewriteCond %{HTTP:Upgrade} !=websocket [NC]
        RewriteRule ^/?$ /auth?%{QUERY_STRING} [NC,L]
</Directory>
```

{% endcode %}

Fuera de la directiva `<directory>` hay que declarar otro RewriteRule para redirigir las peticiones wss que llegan del puerto 443 al puerto vatp + 9 (699 en el ejemplo) y configurar el proxy inverso (se añaden las líneas 12 a 19) :

{% code lineNumbers="true" %}

```apacheconf
<Directory /home/${USERNAME}/apache2/html/>
        Options FollowSymLinks
        AllowOverride All
        Require all granted

        # Para la redirección de la lanzadera de /* a /auth/*
        RewriteEngine On
        RewriteCond %{HTTP:Upgrade} !=websocket [NC]
        RewriteRule ^/?$ /auth?%{QUERY_STRING} [NC,L]
</Directory>

RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteCond %{HTTP:Connection} upgrade [NC]
RewriteRule ^/$ wss://localhost:699/$1 [P,L]

# Proxy inverso para manejar conexiones WSS
ProxyPreserveHost On
ProxyPass ^/$ wss://localhost:699/
ProxyPassReverse ^/$ wss://localhost:699/
```

{% endcode %}
