{"id":44316666,"url":"https://github.com/vswarte/waygate-server","last_synced_at":"2026-02-11T05:13:02.598Z","repository":{"id":233362926,"uuid":"787029715","full_name":"vswarte/waygate-server","owner":"vswarte","description":":cyclone: Elden Ring Custom Matchmaking Server Implementation","archived":false,"fork":false,"pushed_at":"2025-11-29T23:30:18.000Z","size":594,"stargazers_count":37,"open_issues_count":7,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-12-02T02:44:59.347Z","etag":null,"topics":["eldenring","freeform-anime","matchmaking","reverse-engineering","server"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vswarte.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-04-15T18:54:03.000Z","updated_at":"2025-11-30T22:00:20.000Z","dependencies_parsed_at":"2024-04-26T21:25:55.759Z","dependency_job_id":"79277779-3d2b-48da-859f-d3f2017cc2c6","html_url":"https://github.com/vswarte/waygate-server","commit_stats":null,"previous_names":["vswarte/waygate-server"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/vswarte/waygate-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vswarte%2Fwaygate-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vswarte%2Fwaygate-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vswarte%2Fwaygate-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vswarte%2Fwaygate-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vswarte","download_url":"https://codeload.github.com/vswarte/waygate-server/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vswarte%2Fwaygate-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29327139,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-11T03:52:29.695Z","status":"ssl_error","status_checked_at":"2026-02-11T03:52:23.094Z","response_time":97,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["eldenring","freeform-anime","matchmaking","reverse-engineering","server"],"created_at":"2026-02-11T05:13:02.060Z","updated_at":"2026-02-11T05:13:02.589Z","avatar_url":"https://github.com/vswarte.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Waygate :cyclone: Elden Ring Private Server\nWaygate is an attempt at implementing a server based on Elden Ring's matchmaking\nprotocol. The aim of this project is to offer a more vanilla online experience\nwhile allowing users to mod the game.\n\nWaygate is **not** an overhaul, aside from replacing the game's peer-to-peer\nto be more bearable this mod does nothing to enhance the online experience by\nitself.\nI count on other mods to implement tweaks to the online experience, please do\nnot open feature suggestions pitching me a tweak that \"would objectively\nimprove X\".\n\n### WARNING\nOver the past year testing with about 30-40 people no ones has reported getting\nbanned from official online play, however there is no guarantee this server\nis completely safe to use.\n\n## Setup\n### Postgresql\nThe server requires a postgresql database to store messages, bloodstains, ghosts\nand more. I am not going to cover how to set up a postgresql database as enough\nplaces cover this exact procedure.\n\nIt is worth noting however that waygate-server will run migrations automatically\nonce connected to a database.\n\n### Keys\nThe game uses a set of fixed keys to kick off the connection and perform the key\nexchange. You will need to generate a key pair for your server and client. You\ndo this once during setup of the server.\n\nIn order to generate a keypair you invoke:\n```bash\n$ ./waygate-generate-keys\n```\n\nThis will print a valid keypair alongside instructions on applying the keypair\nto your setup:\n```\n# Pass this to your servers launch command\n--client-public-key = \"8oWXtzzyvMwg0DZTUxdRP/HzDnDhlw8J1ZyXiB2Giks=\"\n--server-secret-key = \"XzUteM9hPf2n/XUg8L2ImxIaRUGusUpqYVFDnEY0Egs=\"\n\n# Add this to your clients's waygate.toml\nclient_secret_key = \"VD7xDTwd6+kt9zg+3qzVaKnxfIvVIwSG8JM1cc8Eeu0=\"\nserver_public_key = \"5HCUh3iOJiPwsEPvln0QFnmx9sFaQrzDI9XopTa532c=\"\n```\n\n### Running the server\nGrab the [latest release](https://github.com/vswarte/waygate-server/releases)\nfor your platform and invoke it as such:\n\n```bash\n$ ./waygate-server \\\n    --bind 0.0.0.0:10901 \\\n    --api-bind 0.0.0.0:10902 \\\n    --api-key \"\u003cAPI KEY\u003e\" \\\n    --database \"\u003cDATABASE URL\u003e\" \\\n    --client-public-key \"\u003cCLIENT PUBLIC KEY\u003e\" \\\n    --server-secret-key \"\u003cSERVER SECRET KEY\u003e\"\n```\n\n| Parameter             | Env variable                | Description                                        |\n|-----------------------|-----------------------------|----------------------------------------------------|\n| `--bind`              | `WAYGATE_BIND`              | Specifies the binding address for the game server. |\n| `--api-bind`          | `WAYGATE_API_BIND`          | Specifies the binding address for the api server.  |\n| `--api-key`           | `WAYGATE_API_KEY`           | Specifies API authentication key. Keep secret.     |\n| `--database`          | `WAYGATE_DATABASE`          | Specifies the database URL to be used              |\n| `--client-public-key` | `WAYGATE_CLIENT_PUBLIC_KEY` | Specifies the KX client public key. Keep secret.   |\n| `--server-secret-key` | `WAYGATE_SERVER_SECRET_KEY` | Specifies the KX server secret key. Keep secret.   |\n\n#### Database URL\nThe `--database` parameter expects a database URL like so: `postgresql://\u003cUSERNAME\u003e:\u003cPASSWORD\u003e@\u003cHOST\u003e/\u003cDATABASE\u003e`.\n\n#### API\nThe server also spins up a HTTP JSON API that allows people to do automated healthchecks,\nbroadcast messages and more in the future. This HTTP server is bound seperately\nfrom the game server to what was specified by the `--api-bind` parameter.\n\nAPI authentication is regulated by the `--api-key` which requires you to specify\na key that must be matched on incoming HTTP requests. You can use random.org or\na password generator to derive a secure API key.\n\nYou can find more about the API as well as examples [here](server/src/api/README.md).\n\n#### Setting up the client\n// TBD\n\n### Additional configuration\n#### Logging\nThe logging setup is specified in `config/logging.yml`. Under the hood it's log4rs,\nwhich has its [own manual](https://docs.rs/log4rs/latest/log4rs/config/index.html) on the logging options.\n\n#### Announcements\nThe announcements are defined in `config/announcement.yml`.\n\n## What's working? What needs to be done?\n - [x] Summoning per sign\n - [x] Quickmatches (arena)\n - [x] Invasions\n - [x] Player messages\n - [x] Bloodstains\n - [x] Player ghosts\n - [x] Summoning per puddle\n - [x] Fia/Warrior Jar Pool\n - [x] Group passwords\n - [x] Blue Cipher Ring\n - [ ] Quickmatch ranking\n - [ ] Match Density (PvP activity on map)\n - [ ] A fuckton of telemetry-related messaging\n\n# Credits\nThe most important section of this README, this project took a long time to\nexecute and there's still a bit to go. Without these people this project\nwould've remained on my disk forever.\n\n - Axi for helping me reverse a fair amount of multiplayer code as well as being a dipshit.\n - Tremwil for implementing the serde wire (de)serializer and writing tools to hook the games serialization layer and generating typemaps from said hooks.\n - TLeonardUK (Infini) for DS3OS which as helped me unravel some of the messaging as well.\n - DEN people for testing.\n - LukeYui for answering my dumb questions.\n - ClayAmore for testing and support on the motivational end.\n - Steelovsky for testing.\n - Mintal for testing.\n - Metalcrow for testing.\n - Shion for testing.\n - Dasaav for testing.\n - auramalexander (Dylan) for name.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvswarte%2Fwaygate-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvswarte%2Fwaygate-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvswarte%2Fwaygate-server/lists"}