---
title: openvpn
slug: develop/openvpn
docTags: 
createdAt: 2025-03-26T14:48:06.534Z
---

The *openvpn* object can be used to connect players and servers through a VPN, without making them accessible to everyone.

**openvpn IDL**

```javascript
interface OpenVpnConfig {
    attribute String archiveFile;
    attribute String? obfuscatedSecret;
};

interface OpenVpn {
    Promise<void> installAndRun(OpenVpnConfig config);
    Promise<void> uninstall();
};
```

## Object Creation

```javascript
var openvpn = require('@brightsign/openvpn');
var ovpn = new openvpn();
```

## OpenVpn

**installAndRun()**

```javascript
Promise<void> installAndRun(params: OpenVpnParams)
```

Install the configuration and run OpenVPN.

**uninstall()**

```javascript
Promise<void> uninstall()
```

Stop and uninstall the configuration

## OpenVpnConfig

- `archiveFile` <font color="#6554c0">string</font>: Path to the configuration zip
- `obfuscatedSecret `<font color="#6554c0">string</font>: Encrypted passphrase for protected certificates

## Example

This example sends logs to the SD card, but */storage/flash* can also be used. Each method has a limitation: If you use an SD card location, you cannot remove the card while the OpenVPN client is active or you will get an error log and the card can be corrupted, while */storage/flash* may not be available depending on the player that you are using.

```javascript
var openvpn = require('@brightsign/openvpn');
var ovpn = new openvpn();

var params = {
   archiveFile: '/storage/sd/openvpn.zip'
};
ovpn.installAndRun(params)
.then(function() {
   console.log('success');
})
.catch(function(err){
   console.log('err: ' + JSON.stringify(err));
});
ovpn.uninstall()
.then(function() {
   console.log('success');
})
.catch(function(err){
   console.log('err: ' + JSON.stringify(err));
});
```

