{"id":24678788,"url":"https://github.com/ablomer/satisfactory-server-status","last_synced_at":"2026-04-27T16:31:47.639Z","repository":{"id":273141406,"uuid":"871846849","full_name":"ablomer/satisfactory-server-status","owner":"ablomer","description":"🎮 A real-time server status monitor for Satisfactory dedicated servers that leverages UDP polling and WebSocket connections for efficient state tracking.","archived":false,"fork":false,"pushed_at":"2025-01-18T23:51:30.000Z","size":77,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-08T22:39:42.884Z","etag":null,"topics":["dashboard","docker","node-js","satisfactory","socket-io","udp","udp-client","websocket"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ablomer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-13T05:23:53.000Z","updated_at":"2025-08-10T02:26:13.000Z","dependencies_parsed_at":"2025-01-19T00:35:16.489Z","dependency_job_id":null,"html_url":"https://github.com/ablomer/satisfactory-server-status","commit_stats":null,"previous_names":["ablomer/satisfactory-server-status"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ablomer/satisfactory-server-status","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ablomer%2Fsatisfactory-server-status","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ablomer%2Fsatisfactory-server-status/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ablomer%2Fsatisfactory-server-status/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ablomer%2Fsatisfactory-server-status/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ablomer","download_url":"https://codeload.github.com/ablomer/satisfactory-server-status/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ablomer%2Fsatisfactory-server-status/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32345802,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T23:26:28.701Z","status":"online","status_checked_at":"2026-04-27T02:00:06.769Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dashboard","docker","node-js","satisfactory","socket-io","udp","udp-client","websocket"],"created_at":"2025-01-26T13:18:19.125Z","updated_at":"2026-04-27T16:31:47.619Z","avatar_url":"https://github.com/ablomer.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Satisfactory Status Monitor\n\nThis Node.js program acts as a bridge between your Satisfactory dedicated server and a web-based dashboard (or any other client) to display real-time server status information. \n\n## Features\n\n### Real-time Updates\n\nUses a combination of UDP polling and Satisfactory's HTTPS API to provide near real-time updates on server status, including:\n- Game State\n- Online Players\n- Tech Tier\n- Game Phase\n- Average Tick Rate\n\n### WebSocket\n\nSocket.IO is used to broadcast server state changes to connected clients.\n\n## How it Works\n\n1. The script periodically sends UDP packets to the Satisfactory server to check for basic state changes (like player count changes).\n2. When a change is detected via UDP, the script makes a secure HTTPS request to the server's API to fetch the complete updated server state.\n3. The updated state is then broadcast to all connected clients via Socket.IO.\n\n## Prerequisites\n\n- Node.js and npm\n- Satisfactory Dedicated Server\n- Web Dashboard (Optional)  \n*A separate frontend application (like a web dashboard) to visualize the data (not included in this repository).*\n\n## Getting Started\n\n1. Clone the repository\n   ```bash\n   git clone https://github.com/ablomer/satisfactory-server-status.git\n   cd satisfactory-server-status\n   ```\n\n2. Install dependencies\n   ```bash\n   npm install\n   ```\n\n3. Configuration  \nOpen `index.js` and modify the `satisfactoryConfig` object:\n     ```javascript\n     const satisfactoryConfig = {\n         host: \"your-server-ip\", // Replace with your Satisfactory server's IP address\n         port: 7777,                // Default Satisfactory server port \n         password: \"your-password\", // Replace with your server's password\n         api_path: \"/api/v1/\"     // Satisfactory API path\n     }\n     ```\n\n4. **Run the script**\n   ```bash\n   node index.js\n   ```\n   The script will start and listen for websocket connections on port `3001`.\n\nA `Dockerfile` is also included for deployment to Docker.\n\n## Connecting a Client\n\nYou will need a separate client application (e.g., a web dashboard) that connects to this server using Socket.IO. The server will emit a `serverUpdate` event whenever the server state changes. Your client should listen for this event and update its UI accordingly.\n\n## Security Notes\n\n- This script is configured to work with the self-signed certificate used by Satisfactory servers by default.  \nRemove the `NODE_TLS_REJECT_UNAUTHORIZED` assignment if you have a signed certificate.\n- The script is configured with CORS and allows any origin by default. I recommend changing the `origin: \"*\"` line to your client host address.\n\n## Contributing\n\nContributions are welcome! Feel free to open issues or pull requests.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fablomer%2Fsatisfactory-server-status","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fablomer%2Fsatisfactory-server-status","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fablomer%2Fsatisfactory-server-status/lists"}