nostriphant / relay
Nostriphant Relay
2.6.4
2026-06-24 07:20 UTC
Requires
- php: ^8.4
- ext-pcntl: *
- amphp/byte-stream: ^2.1
- amphp/http-server: ^3.3
- amphp/http-server-router: ^2.0
- amphp/http-server-static-content: ^2.0
- amphp/log: ^2.0
- amphp/websocket-server: ^4.0
- nostriphant/functional: ^2.3
- nostriphant/nip-01: ^2.0
- nostriphant/nip-17: ^2.0
- nostriphant/nip-19: ^2.0
- nostriphant/nip-44: ^2.0
- nostriphant/nip-59: ^2.0
- nostriphant/stores: ^2.0
- psr/log: ^3.0
Requires (Dev)
- ext-curl: *
- mockery/mockery: ^1.6
- monolog/monolog: ^3.7
- nostriphant/client: ^1.0
- pestphp/pest: ^4.0
This package is auto-updated.
Last update: 2026-06-24 07:21:45 UTC
README
PHP relay
<?php $socket = '127.0.0.1:8080'; $whitelist = ['<hex_pubkey>']; $log = new \Monolog\Logger($identifier); $log->pushHandler(new \Monolog\Handler\StreamHandler(__DIR__ . '/logs/' . $identifier . '.log', \Monolog\Level::Info)); $log->pushHandler(new \Monolog\Handler\StreamHandler(STDOUT, \Monolog\Level::Info)); Monolog\ErrorHandler::register($log); $relay = new \nostriphant\Relay\Relay(new \nostriphant\Relay\InformationDocument( name: $_SERVER['RELAY_NAME'], description: $_SERVER['RELAY_DESCRIPTION'], pubkey: (new \nostriphant\NIP19\Bech32($_SERVER['RELAY_OWNER_NPUB']))(), contact: $_SERVER['RELAY_CONTACT'], supported_nips: [1, 2, 9, 11, 12, 13, 16, 20, 22, 33, 45], software: json_decode(file_get_contents(__DIR__ . '/composer.json'))->homepage, version: trim(file_get_contents(__DIR__ . '/VERSION')) )); $server = $relay($socket, $_SERVER['RELAY_MAX_CONNECTIONS_PER_IP'] ?? 1000, $logger); $logger->info('Loading store ' . (!empty($whitelist) ? ' with whitelist' : '') . '.'); $store = new nostriphant\Stores\Store($events, $whitelist); $logger->debug('Starting relay.'); $stop = $server($store); new nostriphant\Relay\AwaitSignal(function(int $signal) use ($stop, $logger) { $logger->info(sprintf("Received signal %d, stopping Relay server", $signal)); $stop(); });