[API reference](https://evolu.dev/docs/api-reference) › [@evolu/nodejs](https://evolu.dev/docs/api-reference/nodejs) › createRelay

```ts
function createRelay(
  __namedParameters: NodeJsRelayConfig,
): Task<Relay, never, RelayDeps>;
```

Defined in: [packages/nodejs/src/local-first/Relay.ts:87](https://github.com/evoluhq/evolu/blob/59dabb7c56c68040b30d3919013adeb2b40bad10/packages/nodejs/src/local-first/Relay.ts#L87)

Creates an Evolu Relay server resource using Node.js.

Use [createRelayDeps](https://evolu.dev/docs/api-reference/nodejs/functions/createRelayDeps) to create dependencies for better-sqlite3, or
provide a custom SQLite driver implementation.

### Example

```ts
// Ensure the database is created in a predictable location for Docker.
mkdirSync("data", { recursive: true });
process.chdir("data");

const console = createConsole({
  // level: "debug",
  formatter: createConsoleFormatter()({
    timestampFormat: "relative",
  }),
});

const deps = { ...createRelayDeps(), console };

await runMain(deps)(
  createRelay({
    port: 4000,

    // Note: Relay requires URL in format ws://host:port?ownerId=<ownerId>
    // isOwnerAllowed: (_ownerId, { signal: _signal }) => true,

    isOwnerWithinQuota: (_ownerId, requiredBytes) => {
      const maxBytes = 1024 * 1024; // 1MB
      return requiredBytes <= maxBytes;
    },
  }),
);
```