Skip to content
anyplaynetPublic

About

The services behind the AnyPlay network: accounts, friends, sessions and relays. Self-hostable.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

110 Commits

Folders and files

AnyPlay Cloud

The central services of the AnyPlay network. Players sign in, find friends, party up and play together through them. The cloud runs live at anyplaynet.com, and you can run your own from this repository.

What it does

  • Accounts: passwordless sign-in by e-mail code, a refresh token per device, passkeys and account settings on the web, export and deletion of all data.
  • Friends and presence: requests, blocks, who is online and what they play.
  • Sessions, parties and voice signalling: join and invite, capacity and version checks, and the signalling that sets up party voice between players. Voice itself runs between players, not through the cloud.
  • Messages: one-to-one and group conversations, message requests, reactions, edit and unsend.
  • Profiles, feed and trophies: profile pages with per-field visibility, a feed of friends' activity, trophy records with rarity and gamer cards.
  • Find Players (LFG): listings to look for people to play with.
  • Share play: a host streams the game they run to one party member; the cloud holds the invitation and the record, never the media. Off unless share_enabled (ANYPLAY_CLOUD_SHARE_ENABLED=true) is set.
  • Played with recently: a private list of the people a player was in a party or session with, kept 30 days (at most 50 people), which the player can clear or switch off. Nobody else sees it.
  • Media: screenshots and clips sent to friends, kept for 30 days.
  • Moderation: reports, bans, rate limits and an admin command line.
  • Relay with ticket check: anyplay-relay carries encrypted game traffic between players who cannot connect directly, and admits only endpoints holding a ticket the cloud signed.
  • Web portal API: the JSON API behind the account web.

docs/features.md has the details of each service. The wire format is the cloud API in the network repository.

Status

The cloud at anyplaynet.com runs as a single node: one process and one SQLite file. The multi-node setup with PostgreSQL and NATS is written and tested in CI, including a two-node cluster test and a Helm chart, but it has not carried real players yet. Regions are not built. The API may still change while the version is 0. Matchmaking, leaderboards and save backups are planned. See docs/ARCHITECTURE.md.

Run your own

You need a machine with Docker, two host names that point at it, an SMTP account and the ports 80, 443 and 8443 (TCP) and 7842 (UDP). Check out this repository and anyplaynet/network side by side, then:

cd cloud/deploy
cp .env.example .env     # set the host names, your e-mail address and the SMTP details
docker compose up -d

Point a launcher at https://<your cloud host name>. Ports, settings and backups are in docs/self-hosting.md and docs/configuration.md.

To update, run deploy/update.sh. CI builds the cloud and relay images to ghcr.io/anyplaynet/cloud and ghcr.io/anyplaynet/relay on every merge to main (the website's image comes from the web repository), and update.sh --image, --relay-image and --web-image deploy them by digest, after a backup, with a health check and a rollback. Without --image it builds on the server. Both paths are in docs/deploy.md. For Kubernetes, see docs/kubernetes.md.

What's in the repository

Path What it is
crates/cloud anyplay-cloud, the server
crates/relay anyplay-relay, an iroh relay that admits only endpoints with a ticket
crates/ticket anyplay-ticket, the token format the cloud and the relay share
crates/e2e a whole network in one process: the cloud, a relay, two net services and two fake games
crates/load anyplay-load, a load harness (numbers and method)
deploy/ Dockerfile, compose.yaml, Caddyfile, update and backup scripts, the Helm chart
docs/ features, architecture, settings, deploying, moderation, decisions, EU compliance drafts, supply chain

Build and contribute

cargo run -p anyplay-cloud       # http://127.0.0.1:8080, sign-in codes in the log
cargo test --workspace

The cloud needs anyplaynet/network checked out next to it at the commit in network.ref. Every pull request runs formatting, Clippy and the tests on Windows and Linux. This repository is limited to the AnyPlay team until 2027-04-25 (the launcher and network repositories already take outside contributions); ideas and bug reports are welcome on the Discord below; the shared rules are in CONTRIBUTING.md.

Community

Questions, ideas and bug reports: the AnyPlay Discord. More about AnyPlay at anyplaynet.com.

License

AGPL-3.0. If you run a modified cloud for other people, you must publish your changes.

AnyPlay is a community project, not affiliated with the AnyPS5 maintainers or any platform holder. The cloud never sees game files and never stands in for a publisher service that still runs (what it never does).

About

The services behind the AnyPlay network: accounts, friends, sessions and relays. Self-hostable.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages