{"level":30,"time":1789404538364,"pid":47,"hostname":"90458a6f32db","name":"rybbit","totalRequests":451559,"totalBotRequests":0,"botRequestPercentage":0,"botDetectionTotals":{"ua_pattern":0,"header_heuristics":0,"client_signals":0,"bot_asn":0,"rate_anomaly":0},"clientBotScoreHistogram":{"missing":451559,"score0":0,"score1":0,"score2":0,"score3Plus":0},"clientBotSignalTotals":{"missingMask":451559,"automationApi":0,"zeroOuterDimensions":0,"missingChrome":0,"swiftShader":0,"emptyPlugins":0,"defaultViewport800x600":0,"defaultViewport1024x768":0,"impossibleDimensions":0,"outerDimensionsWeird":0,"pluginApiAbsence":0,"unknownMaskBits":0},"msg":"Bot detection totals (cluster, cumulative)"}
{"level":30,"time":1789404598251,"pid":47,"hostname":"90458a6f32db","name":"rybbit","totalRequests":487449,"totalBotRequests":0,"botRequestPercentage":0,"botDetectionTotals":{"ua_pattern":0,"header_heuristics":0,"client_signals":0,"bot_asn":0,"rate_anomaly":0},"clientBotScoreHistogram":{"missing":487449,"score0":0,"score1":0,"score2":0,"score3Plus":0},"clientBotSignalTotals":{"missingMask":487449,"automationApi":0,"zeroOuterDimensions":0,"missingChrome":0,"swiftShader":0,"emptyPlugins":0,"defaultViewport800x600":0,"defaultViewport1024x768":0,"impossibleDimensions":0,"outerDimensionsWeird":0,"pluginApiAbsence":0,"unknownMaskBits":0},"msg":"Bot detection totals (cluster, cumulative)"}
{"level":30,"time":1789404658251,"pid":47,"hostname":"90458a6f32db","name":"rybbit","totalRequests":522791,"totalBotRequests":0,"botRequestPercentage":0,"botDetectionTotals":{"ua_pattern":0,"header_heuristics":0,"client_signals":0,"bot_asn":0,"rate_anomaly":0},"clientBotScoreHistogram":{"missing":522791,"score0":0,"score1":0,"score2":0,"score3Plus":0},"clientBotSignalTotals":{"missingMask":522791,"automationApi":0,"zeroOuterDimensions":0,"missingChrome":0,"swiftShader":0,"emptyPlugins":0,"defaultViewport800x600":0,"defaultViewport1024x768":0,"impossibleDimensions":0,"outerDimensionsWeird":0,"pluginApiAbsence":0,"unknownMaskBits":0},"msg":"Bot detection totals (cluster, cumulative)"}
{"level":30,"time":1789404718252,"pid":47,"hostname":"90458a6f32db","name":"rybbit","totalRequests":560251,"totalBotRequests":0,"botRequestPercentage":0,"botDetectionTotals":{"ua_pattern":0,"header_heuristics":0,"client_signals":0,"bot_asn":0,"rate_anomaly":0},"clientBotScoreHistogram":{"missing":560251,"score0":0,"score1":0,"score2":0,"score3Plus":0},"clientBotSignalTotals":{"missingMask":560251,"automationApi":0,"zeroOuterDimensions":0,"missingChrome":0,"swiftShader":0,"emptyPlugins":0,"defaultViewport800x600":0,"defaultViewport1024x768":0,"impossibleDimensions":0,"outerDimensionsWeird":0,"pluginApiAbsence":0,"unknownMaskBits":0},"msg":"Bot detection totals (cluster, cumulative)"}
{"level":30,"time":1789404778462,"pid":47,"hostname":"90458a6f32db","name":"rybbit","totalRequests":596468,"totalBotRequests":0,"botRequestPercentage":0,"botDetectionTotals":{"ua_pattern":0,"header_heuristics":0,"client_signals":0,"bot_asn":0,"rate_anomaly":0},"clientBotScoreHistogram":{"missing":596468,"score0":0,"score1":0,"score2":0,"score3Plus":0},"clientBotSignalTotals":{"missingMask":596468,"automationApi":0,"zeroOuterDimensions":0,"missingChrome":0,"swiftShader":0,"emptyPlugins":0,"defaultViewport800x600":0,"defaultViewport1024x768":0,"impossibleDimensions":0,"outerDimensionsWeird":0,"pluginApiAbsence":0,"unknownMaskBits":0},"msg":"Bot detection totals (cluster, cumulative)"}
Waiting for PostgreSQL...
PostgreSQL is ready.
Running database migrations...

> rybbit-backend@2.8.0 db:migrate
> drizzle-kit migrate --config=drizzle.config.ts

Reading config file '/app/drizzle.config.ts'
Using 'pg' driver for database querying
[⣷] applying migrations...[2K[1G[⣯] applying migrations...[2K[1G[✓] migrations applied successfully!Starting application...
{"level":30,"time":1789404838237,"pid":1,"hostname":"90458a6f32db","name":"rybbit","service":"cluster","msg":"Primary process 1 starting with 4 workers"}
{"level":30,"time":1789404838297,"pid":1,"hostname":"90458a6f32db","name":"rybbit","service":"redis","msg":"Redis connected (main)"}
{"level":30,"time":1789404838298,"pid":1,"hostname":"90458a6f32db","name":"rybbit","service":"redis","msg":"Redis connected (session)"}
{"level":30,"time":1789404838299,"pid":1,"hostname":"90458a6f32db","name":"rybbit","service":"redis","msg":"Redis connected (identity)"}
{"level":30,"time":1789404838438,"pid":1,"hostname":"90458a6f32db","name":"rybbit","service":"cluster","msg":"Database initialization complete"}
{"level":30,"time":1789404838540,"pid":1,"hostname":"90458a6f32db","name":"rybbit","service":"cluster","msg":"Worker 48 is online"}
{"level":30,"time":1789404838608,"pid":1,"hostname":"90458a6f32db","name":"rybbit","service":"cluster","msg":"Worker 46 is online"}
{"level":30,"time":1789404838674,"pid":1,"hostname":"90458a6f32db","name":"rybbit","service":"cluster","msg":"Worker 50 is online"}
{"level":30,"time":1789404838696,"pid":1,"hostname":"90458a6f32db","name":"rybbit","service":"cluster","msg":"Worker 47 is online"}
{"level":30,"time":1789404846238,"pid":46,"hostname":"90458a6f32db","name":"rybbit","service":"redis","msg":"Redis connected (main)"}
{"level":30,"time":1789404846249,"pid":46,"hostname":"90458a6f32db","name":"rybbit","service":"redis","msg":"Redis connected (session)"}
{"level":30,"time":1789404846252,"pid":46,"hostname":"90458a6f32db","name":"rybbit","service":"redis","msg":"Redis connected (identity)"}
{"level":30,"time":1789404846831,"pid":47,"hostname":"90458a6f32db","name":"rybbit","service":"redis","msg":"Redis connected (main)"}
{"level":30,"time":1789404846848,"pid":47,"hostname":"90458a6f32db","name":"rybbit","service":"redis","msg":"Redis connected (identity)"}
{"level":30,"time":1789404846854,"pid":47,"hostname":"90458a6f32db","name":"rybbit","service":"redis","msg":"Redis connected (session)"}
{"level":30,"time":1789404847181,"pid":48,"hostname":"90458a6f32db","name":"rybbit","service":"redis","msg":"Redis connected (main)"}
{"level":30,"time":1789404847194,"pid":48,"hostname":"90458a6f32db","name":"rybbit","service":"redis","msg":"Redis connected (identity)"}
{"level":30,"time":1789404847195,"pid":48,"hostname":"90458a6f32db","name":"rybbit","service":"redis","msg":"Redis connected (session)"}
{"level":30,"time":1789404848093,"pid":50,"hostname":"90458a6f32db","name":"rybbit","service":"redis","msg":"Redis connected (main)"}
{"level":30,"time":1789404848102,"pid":50,"hostname":"90458a6f32db","name":"rybbit","service":"redis","msg":"Redis connected (session)"}
{"level":30,"time":1789404848106,"pid":50,"hostname":"90458a6f32db","name":"rybbit","service":"redis","msg":"Redis connected (identity)"}
{"level":40,"time":1789404865712,"pid":47,"hostname":"90458a6f32db","name":"rybbit","service":"better-auth","args":[],"msg":"[better-auth] Warning: your BETTER_AUTH_SECRET should be at least 32 characters long for adequate security. Generate one with `npx auth secret` or `openssl rand -base64 32`."}
{"level":40,"time":1789404865716,"pid":47,"hostname":"90458a6f32db","name":"rybbit","service":"better-auth","args":[],"msg":"[better-auth] Warning: your BETTER_AUTH_SECRET appears low-entropy. Use a randomly generated secret for production."}
{"level":40,"time":1789404865760,"pid":47,"hostname":"90458a6f32db","name":"rybbit","service":"better-auth","args":[],"msg":"Social provider google is missing clientId or clientSecret"}
{"level":40,"time":1789404865765,"pid":47,"hostname":"90458a6f32db","name":"rybbit","service":"better-auth","args":[],"msg":"Social provider github is missing clientId or clientSecret"}
{"level":30,"time":1789404866247,"pid":47,"hostname":"90458a6f32db","name":"rybbit","msg":"GeoIP ASN database loaded successfully"}
{"level":40,"time":1789404866727,"pid":48,"hostname":"90458a6f32db","name":"rybbit","service":"better-auth","args":[],"msg":"[better-auth] Warning: your BETTER_AUTH_SECRET should be at least 32 characters long for adequate security. Generate one with `npx auth secret` or `openssl rand -base64 32`."}
{"level":40,"time":1789404866776,"pid":46,"hostname":"90458a6f32db","name":"rybbit","service":"better-auth","args":[],"msg":"[better-auth] Warning: your BETTER_AUTH_SECRET should be at least 32 characters long for adequate security. Generate one with `npx auth secret` or `openssl rand -base64 32`."}
{"level":40,"time":1789404866785,"pid":46,"hostname":"90458a6f32db","name":"rybbit","service":"better-auth","args":[],"msg":"[better-auth] Warning: your BETTER_AUTH_SECRET appears low-entropy. Use a randomly generated secret for production."}
{"level":40,"time":1789404866808,"pid":46,"hostname":"90458a6f32db","name":"rybbit","service":"better-auth","args":[],"msg":"Social provider google is missing clientId or clientSecret"}
{"level":40,"time":1789404866809,"pid":46,"hostname":"90458a6f32db","name":"rybbit","service":"better-auth","args":[],"msg":"Social provider github is missing clientId or clientSecret"}
{"level":40,"time":1789404866728,"pid":48,"hostname":"90458a6f32db","name":"rybbit","service":"better-auth","args":[],"msg":"[better-auth] Warning: your BETTER_AUTH_SECRET appears low-entropy. Use a randomly generated secret for production."}
{"level":40,"time":1789404866853,"pid":48,"hostname":"90458a6f32db","name":"rybbit","service":"better-auth","args":[],"msg":"Social provider google is missing clientId or clientSecret"}
{"level":40,"time":1789404866854,"pid":48,"hostname":"90458a6f32db","name":"rybbit","service":"better-auth","args":[],"msg":"Social provider github is missing clientId or clientSecret"}
{"level":40,"time":1789404867144,"pid":50,"hostname":"90458a6f32db","name":"rybbit","service":"better-auth","args":[],"msg":"[better-auth] Warning: your BETTER_AUTH_SECRET should be at least 32 characters long for adequate security. Generate one with `npx auth secret` or `openssl rand -base64 32`."}
{"level":30,"time":1789404867176,"pid":46,"hostname":"90458a6f32db","name":"rybbit","msg":"GeoIP ASN database loaded successfully"}
{"level":30,"time":1789404867202,"pid":48,"hostname":"90458a6f32db","name":"rybbit","msg":"GeoIP ASN database loaded successfully"}
{"level":40,"time":1789404867151,"pid":50,"hostname":"90458a6f32db","name":"rybbit","service":"better-auth","args":[],"msg":"[better-auth] Warning: your BETTER_AUTH_SECRET appears low-entropy. Use a randomly generated secret for production."}
{"level":40,"time":1789404867283,"pid":50,"hostname":"90458a6f32db","name":"rybbit","service":"better-auth","args":[],"msg":"Social provider google is missing clientId or clientSecret"}
{"level":40,"time":1789404867285,"pid":50,"hostname":"90458a6f32db","name":"rybbit","service":"better-auth","args":[],"msg":"Social provider github is missing clientId or clientSecret"}
{"level":30,"time":1789404867532,"pid":50,"hostname":"90458a6f32db","name":"rybbit","msg":"GeoIP ASN database loaded successfully"}
{"level":30,"time":1789404868124,"pid":47,"hostname":"90458a6f32db","name":"rybbit","msg":"GeoIP database loaded successfully"}
{"level":30,"time":1789404868183,"pid":46,"hostname":"90458a6f32db","name":"rybbit","msg":"GeoIP database loaded successfully"}
{"level":30,"time":1789404868189,"pid":48,"hostname":"90458a6f32db","name":"rybbit","msg":"GeoIP database loaded successfully"}
{"level":30,"time":1789404868351,"pid":50,"hostname":"90458a6f32db","name":"rybbit","msg":"GeoIP database loaded successfully"}
(node:46) [FSTDEP022] FastifyWarning: The router options for maxParamLength property access is deprecated. Please use "options.routerOptions" instead for accessing router options. The router options will be removed in `fastify@6`.
(Use `node --trace-warnings ...` to show where the warning was created)
(node:48) [FSTDEP022] FastifyWarning: The router options for maxParamLength property access is deprecated. Please use "options.routerOptions" instead for accessing router options. The router options will be removed in `fastify@6`.
(Use `node --trace-warnings ...` to show where the warning was created)
(node:47) [FSTDEP022] FastifyWarning: The router options for maxParamLength property access is deprecated. Please use "options.routerOptions" instead for accessing router options. The router options will be removed in `fastify@6`.
(Use `node --trace-warnings ...` to show where the warning was created)
(node:50) [FSTDEP022] FastifyWarning: The router options for maxParamLength property access is deprecated. Please use "options.routerOptions" instead for accessing router options. The router options will be removed in `fastify@6`.
(Use `node --trace-warnings ...` to show where the warning was created)
{"level":30,"time":1789404869426,"pid":46,"hostname":"90458a6f32db","name":"rybbit","msg":"Server listening at http://127.0.0.1:3001"}
{"level":30,"time":1789404869438,"pid":48,"hostname":"90458a6f32db","name":"rybbit","msg":"Server listening at http://127.0.0.1:3001"}
{"level":30,"time":1789404869432,"pid":46,"hostname":"90458a6f32db","name":"rybbit","msg":"Server listening at http://172.18.0.5:3001"}
{"level":30,"time":1789404869433,"pid":46,"hostname":"90458a6f32db","name":"rybbit","msg":"Server is listening on http://0.0.0.0:3001 (PID: 46)"}
{"level":30,"time":1789404869440,"pid":48,"hostname":"90458a6f32db","name":"rybbit","msg":"Server listening at http://172.18.0.5:3001"}
{"level":30,"time":1789404869441,"pid":48,"hostname":"90458a6f32db","name":"rybbit","msg":"Server is listening on http://0.0.0.0:3001 (PID: 48)"}
{"level":30,"time":1789404869719,"pid":47,"hostname":"90458a6f32db","name":"rybbit","msg":"Server listening at http://127.0.0.1:3001"}
{"level":30,"time":1789404869719,"pid":47,"hostname":"90458a6f32db","name":"rybbit","msg":"Server listening at http://172.18.0.5:3001"}
{"level":30,"time":1789404869730,"pid":47,"hostname":"90458a6f32db","name":"rybbit","msg":"Server is listening on http://0.0.0.0:3001 (PID: 47)"}
{"level":30,"time":1789404870033,"pid":50,"hostname":"90458a6f32db","name":"rybbit","msg":"Server listening at http://127.0.0.1:3001"}
{"level":30,"time":1789404870034,"pid":50,"hostname":"90458a6f32db","name":"rybbit","msg":"Server listening at http://172.18.0.5:3001"}
{"level":30,"time":1789404870061,"pid":50,"hostname":"90458a6f32db","name":"rybbit","msg":"Server is listening on http://0.0.0.0:3001 (PID: 50)"}
