this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

serve sub-command

+104 -96
+1 -1
cmd/rerelay/Dockerfile
··· 42 42 43 43 EXPOSE 2470 44 44 45 - CMD ["/rerelay"] 45 + CMD ["/rerelay", "serve"] 46 46 47 47 LABEL org.opencontainers.image.source=https://github.com/bluesky-social/indigo 48 48 LABEL org.opencontainers.image.description="atproto Relay"
+103 -95
cmd/rerelay/main.go
··· 43 43 Name: "rerelay", 44 44 Usage: "atproto relay daemon", 45 45 Version: versioninfo.Short(), 46 - Action: runRelay, 47 46 } 48 47 app.Flags = []cli.Flag{ 49 - &cli.StringFlag{ 50 - Name: "db-url", 51 - Usage: "database connection string for relay database", 52 - Value: "sqlite://data/relay/relay.sqlite", 53 - EnvVars: []string{"DATABASE_URL"}, 54 - }, 55 - &cli.IntFlag{ 56 - Name: "max-db-conn", 57 - Usage: "limit on size of database connection pool", 58 - EnvVars: []string{"MAX_DB_CONNECTIONS", "MAX_METADB_CONNECTIONS"}, 59 - Value: 40, 60 - }, 61 - &cli.StringFlag{ 62 - Name: "bind", 63 - Usage: "IP or address, and port, to listen on for HTTP APIs (including firehose)", 64 - Value: ":2470", 65 - EnvVars: []string{"RELAY_API_BIND", "RELAY_API_LISTEN"}, 66 - }, 67 - &cli.StringFlag{ 68 - Name: "persist-dir", 69 - Usage: "local folder to store firehose playback files", 70 - Value: "data/relay/events", 71 - EnvVars: []string{"RELAY_PERSIST_DIR", "RELAY_PERSISTER_DIR"}, 72 - }, 73 - &cli.DurationFlag{ 74 - Name: "replay-window", 75 - Usage: "retention duration for firehose playback", 76 - EnvVars: []string{"RELAY_REPLAY_WINDOW", "RELAY_EVENT_PLAYBACK_TTL"}, 77 - Value: 72 * time.Hour, 78 - }, 79 48 // XXX: actually disabled if empty? 80 49 &cli.StringFlag{ 81 50 Name: "admin-password", 82 51 Usage: "secret password/token for accessing admin endpoints (random is used if not set)", 83 52 EnvVars: []string{"RELAY_ADMIN_PASSWORD", "RELAY_ADMIN_KEY"}, 84 53 }, 85 - &cli.IntFlag{ 86 - Name: "host-concurrency", 87 - Usage: "number of concurrent worker routines per upstream host", 88 - EnvVars: []string{"RELAY_HOST_CONCURRENCY", "RELAY_CONCURRENCY_PER_PDS"}, 89 - Value: 100, 90 - }, 91 - &cli.IntFlag{ 92 - Name: "max-queue-per-host", 93 - Value: 1_000, 94 - Usage: "size of in-process DID (identity) cache", 95 - EnvVars: []string{"RELAY_MAX_QUEUE_PER_HOST", "RELAY_MAX_QUEUE_PER_PDS"}, 96 - }, 97 - &cli.IntFlag{ 98 - Name: "default-account-limit", 99 - Value: 100, 100 - Usage: "max number of active accounts for new upstream hosts", 101 - EnvVars: []string{"RELAY_DEFAULT_ACCOUUNT_LIMIT", "RELAY_DEFAULT_REPO_LIMIT"}, 102 - }, 103 - &cli.IntFlag{ 104 - Name: "did-cache-size", 105 - Value: 5_000_000, 106 - Usage: "size of in-process DID (identity) cache", 107 - EnvVars: []string{"RELAY_DID_CACHE_SIZE"}, 108 - }, 109 54 // XXX: not used? 110 55 &cli.StringFlag{ 111 56 Name: "plc-host", ··· 113 58 Value: "https://plc.directory", 114 59 EnvVars: []string{"ATP_PLC_HOST"}, 115 60 }, 116 - // XXX: refactor this flag 117 - &cli.BoolFlag{ 118 - Name: "crawl-insecure-ws", 119 - Usage: "when connecting to PDS instances, use ws:// instead of wss://", 120 - }, 121 - &cli.StringSliceFlag{ 122 - Name: "forward-crawl-requests", 123 - Usage: "comma-separated list of servers (eg https://example.com) to forward requestCrawl on to", 124 - EnvVars: []string{"RELAY_FORWARD_CRAWL_REQUESTS", "RELAY_NEXT_CRAWLER"}, 125 - }, 126 - &cli.StringFlag{ 127 - Name: "bsky-social-rate-limit-skip", 128 - EnvVars: []string{"BSKY_SOCIAL_RATE_LIMIT_SKIP"}, 129 - Usage: "ratelimit bypass secret token for *.bsky.social domains", 130 - }, 131 61 &cli.StringFlag{ 132 62 Name: "log-level", 133 63 Usage: "log verbosity level (eg: warn, info, debug)", 134 64 EnvVars: []string{"BLUEPAGES_LOG_LEVEL", "GO_LOG_LEVEL", "LOG_LEVEL"}, 135 65 }, 136 - &cli.StringFlag{ 137 - Name: "env", 138 - Value: "dev", 139 - EnvVars: []string{"ENVIRONMENT"}, 140 - Usage: "declared hosting environment (prod, qa, etc); used in metrics", 141 - }, 142 - &cli.BoolFlag{ 143 - Name: "enable-db-tracing", 144 - }, 145 - &cli.BoolFlag{ 146 - Name: "enable-jaeger-tracing", 147 - }, 148 - &cli.BoolFlag{ 149 - Name: "enable-otel-tracing", 150 - }, 151 - &cli.StringFlag{ 152 - Name: "metrics-listen", 153 - Usage: "IP or address, and port, to listen on for prometheus metrics", 154 - Value: ":2471", 155 - EnvVars: []string{"RELAY_METRICS_LISTEN"}, 156 - }, 157 - &cli.StringFlag{ 158 - Name: "otel-exporter-otlp-endpoint", 159 - Value: "http://localhost:4328", 160 - EnvVars: []string{"OTEL_EXPORTER_OTLP_ENDPOINT"}, 66 + } 67 + app.Commands = []*cli.Command{ 68 + &cli.Command{ 69 + Name: "serve", 70 + Usage: "run the relay daemon", 71 + Action: runRelay, 72 + Flags: []cli.Flag{ 73 + &cli.StringFlag{ 74 + Name: "db-url", 75 + Usage: "database connection string for relay database", 76 + Value: "sqlite://data/relay/relay.sqlite", 77 + EnvVars: []string{"DATABASE_URL"}, 78 + }, 79 + &cli.IntFlag{ 80 + Name: "max-db-conn", 81 + Usage: "limit on size of database connection pool", 82 + EnvVars: []string{"MAX_DB_CONNECTIONS", "MAX_METADB_CONNECTIONS"}, 83 + Value: 40, 84 + }, 85 + &cli.StringFlag{ 86 + Name: "bind", 87 + Usage: "IP or address, and port, to listen on for HTTP APIs (including firehose)", 88 + Value: ":2470", 89 + EnvVars: []string{"RELAY_API_BIND", "RELAY_API_LISTEN"}, 90 + }, 91 + &cli.StringFlag{ 92 + Name: "persist-dir", 93 + Usage: "local folder to store firehose playback files", 94 + Value: "data/relay/events", 95 + EnvVars: []string{"RELAY_PERSIST_DIR", "RELAY_PERSISTER_DIR"}, 96 + }, 97 + &cli.DurationFlag{ 98 + Name: "replay-window", 99 + Usage: "retention duration for firehose playback", 100 + EnvVars: []string{"RELAY_REPLAY_WINDOW", "RELAY_EVENT_PLAYBACK_TTL"}, 101 + Value: 72 * time.Hour, 102 + }, 103 + &cli.IntFlag{ 104 + Name: "host-concurrency", 105 + Usage: "number of concurrent worker routines per upstream host", 106 + EnvVars: []string{"RELAY_HOST_CONCURRENCY", "RELAY_CONCURRENCY_PER_PDS"}, 107 + Value: 100, 108 + }, 109 + &cli.IntFlag{ 110 + Name: "max-queue-per-host", 111 + Value: 1_000, 112 + Usage: "size of in-process DID (identity) cache", 113 + EnvVars: []string{"RELAY_MAX_QUEUE_PER_HOST", "RELAY_MAX_QUEUE_PER_PDS"}, 114 + }, 115 + &cli.IntFlag{ 116 + Name: "default-account-limit", 117 + Value: 100, 118 + Usage: "max number of active accounts for new upstream hosts", 119 + EnvVars: []string{"RELAY_DEFAULT_ACCOUUNT_LIMIT", "RELAY_DEFAULT_REPO_LIMIT"}, 120 + }, 121 + &cli.IntFlag{ 122 + Name: "did-cache-size", 123 + Value: 5_000_000, 124 + Usage: "size of in-process DID (identity) cache", 125 + EnvVars: []string{"RELAY_DID_CACHE_SIZE"}, 126 + }, 127 + &cli.StringFlag{ 128 + Name: "env", 129 + Value: "dev", 130 + EnvVars: []string{"ENVIRONMENT"}, 131 + Usage: "declared hosting environment (prod, qa, etc); used in metrics", 132 + }, 133 + &cli.BoolFlag{ 134 + Name: "enable-db-tracing", 135 + }, 136 + &cli.BoolFlag{ 137 + Name: "enable-jaeger-tracing", 138 + }, 139 + &cli.BoolFlag{ 140 + Name: "enable-otel-tracing", 141 + }, 142 + &cli.StringFlag{ 143 + Name: "metrics-listen", 144 + Usage: "IP or address, and port, to listen on for prometheus metrics", 145 + Value: ":2471", 146 + EnvVars: []string{"RELAY_METRICS_LISTEN"}, 147 + }, 148 + &cli.StringFlag{ 149 + Name: "otel-exporter-otlp-endpoint", 150 + Value: "http://localhost:4328", 151 + EnvVars: []string{"OTEL_EXPORTER_OTLP_ENDPOINT"}, 152 + }, 153 + // XXX: refactor this flag 154 + &cli.BoolFlag{ 155 + Name: "crawl-insecure-ws", 156 + Usage: "when connecting to PDS instances, use ws:// instead of wss://", 157 + }, 158 + &cli.StringSliceFlag{ 159 + Name: "forward-crawl-requests", 160 + Usage: "comma-separated list of servers (eg https://example.com) to forward requestCrawl on to", 161 + EnvVars: []string{"RELAY_FORWARD_CRAWL_REQUESTS", "RELAY_NEXT_CRAWLER"}, 162 + }, 163 + &cli.StringFlag{ 164 + Name: "bsky-social-rate-limit-skip", 165 + EnvVars: []string{"BSKY_SOCIAL_RATE_LIMIT_SKIP"}, 166 + Usage: "ratelimit bypass secret token for *.bsky.social domains", 167 + }, 168 + }, 161 169 }, 162 170 } 163 171 return app.Run(os.Args)