app = "rs-sdk-demo" primary_region = "iad" kill_timeout = "120s" [build] dockerfile = "server/Dockerfile" ignorefile = "server/.dockerignore" [env] # SDK bug reports land on the mounted volume so they survive deploys/restarts. BUG_REPORTS_FILE = "/opt/server/data/bug-reports.jsonl" # Grand Exchange escrow and authoritative player checkpoints survive redeploys. GE_DATABASE = "/opt/server/data/market.sqlite" # Preserve existing exclusions and keep imported local test presets off every board. HISCORES_HIDDEN_NAMES = "georgedroyd,groyper,testsave47,maxbittker,max,ironpick,goldsmith,goldfish,goldfletch,goldvanilla" NODE_DEBUG = "true" BUILD_STARTUP = "false" BUILD_STARTUP_UPDATE = "false" DB_BACKEND = "sqlite" EASY_STARTUP = "true" FRIEND_SERVER = "true" LOGIN_SERVER = "true" NODE_MEMBERS = "true" NODE_PORT = "43594" NODE_RANDOM_EVENTS = "false" NODE_TICKRATE = "300" NODE_XPRATE = "25" WEBSITE_REGISTRATION = "false" WEB_PORT = "8080" # Gateway's direct listener (see the 7443 service below). GATEWAY_PUBLIC_PORT = "7781" # Concurrent game sessions per source IP (code default 200). Keyed on # Fly-Client-IP, which clients can't spoof. MAX_PLAYERS_PER_IP = "100" [http_service] auto_start_machines = true force_https = true internal_port = 8080 min_machines_running = 0 [[mounts]] destination = "/opt/server/data" source = "lostcity_data" [[services]] internal_port = 43594 protocol = "tcp" [[services.ports]] port = 43594 # SDK gateway, direct: wss://rs-sdk-demo.fly.dev:7443. Compressed state frames, # and the relay work stays off the game server's tick thread. The SDK and lite # runner prefer it and fall back to wss://.../gateway if it is unreachable. [[services]] internal_port = 7781 protocol = "tcp" [[services.ports]] port = 7443 handlers = ["tls", "http"] [[vm]] memory = "4gb" size = "performance-2x"