holesail-server
Version:
Proxy any server peer-to-peer using Holepunching.
158 lines (98 loc) • 3.18 kB
Markdown
# Holesail Server
[Join our Discord Support Server](https://discord.gg/TQVacE7Vnj)
Holesail Server enables you to reverse proxy any local server peer-to-peer (P2P) using HyperDHT, no signalling server
required.
Note: V2 has breaking changes, V2 is not compatible with V1 and will break infuture.
## Installation
Install the Holesail Server module via npm:
```bash
npm install holesail-server
```
## Usage
### Importing the Module
Require the module in your project:
```javascript
const HolesailServer = require('holesail-server')
```
### Creating an Instance
Create a new instance of the `HolesailServer` class:
```javascript
const server = new HolesailServer()
```
### Starting the Server
Start the server using the `start` method and retrieve its public key:
```javascript
await server.start({ port: 5000, host: '127.0.0.1' }, () => {
console.log('Server started')
console.log(server.key)
setTimeout(() => {
server.destroy()
console.log('Server destroyed')
}, 6000)
})
```
### Using a Fixed Connection Key
Optionally, you can set a `seed` to ensure the server generates the same connection key every time:
```javascript
await server.start(
{
port: 5000,
host: '127.0.0.1',
seed: '4917816487c1822049939ff1abbf515663275105d01361bbc84fe2000e594539'
},
() => {
console.log('Server started')
console.log(server.key)
setTimeout(async () => {
await server.destroy()
console.log('Server destroyed')
}, 6000)
}
)
// Note: seed must be a 64-character long string.
```
### Destroying the Server
Use the `destroy` method to stop the server and clean up resources:
```javascript
await server.destroy()
```
## API Reference
### `await server.start(options, callback)`
Starts the server
#### Parameters:
- `options` (object):
- `port` (number, required): The port to listen on.
- `host` (string, required): The local address to bind to. Use `"0.0.0.0"` to listen on all interfaces.
- `seed` (string, optional): A 64-character string used to generate a consistent connection key.
- `secure` (boolean, optional, recommended): Prevents leaking access capability to HyperDHT by listening on a
different seed than the one needed to connect.
- `udp` (boolean, optional): Enables UDP instead of TCP connections.
- `callback` (function): A function that is called when the server successfully starts.
### `server.key`
Retrieves the server's connection key. Use this key to connect to the server from a client.
### `server.pause()`
Pause the server.
### `server.resume()`
Resume the server.
### `server.info`
Returns an object containing server information.
### `await server.destroy()`
Stops the server and cleans up resources.
### `await put(data)`
Put a mutable record on DHT. Max size 1 KB
## License
Holesail Server is released under the [GPL-v3 License](https://www.gnu.org/licenses/gpl-3.0.en.html).
For more details, see the [LICENSE](https://www.gnu.org/licenses/gpl-3.0.en.html) file.
## Community and Support
Join our [Discord Support Server](https://discord.gg/TQVacE7Vnj) for help, discussions, and updates.