{"id":13461435,"url":"https://github.com/heroiclabs/nakama","last_synced_at":"2025-09-09T20:57:11.213Z","repository":{"id":37602505,"uuid":"78869430","full_name":"heroiclabs/nakama","owner":"heroiclabs","description":"Distributed server for social and realtime games and apps.","archived":false,"fork":false,"pushed_at":"2025-08-29T15:08:53.000Z","size":116135,"stargazers_count":11436,"open_issues_count":104,"forks_count":1268,"subscribers_count":205,"default_branch":"master","last_synced_at":"2025-08-29T15:59:31.824Z","etag":null,"topics":["backend","backend-as-a-service","chat-server","game-backend","game-framework","game-server","multiplayer","nakama","realtime","realtime-games","social","unity-engine","unreal-engine"],"latest_commit_sha":null,"homepage":"https://heroiclabs.com","language":"Go","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/heroiclabs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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":"2017-01-13T17:15:12.000Z","updated_at":"2025-08-29T15:08:55.000Z","dependencies_parsed_at":"2023-10-21T11:42:40.659Z","dependency_job_id":"d4d1fc5e-60cb-4bbf-907d-34a95bc0b96c","html_url":"https://github.com/heroiclabs/nakama","commit_stats":{"total_commits":1597,"total_committers":79,"mean_commits":20.21518987341772,"dds":0.5479023168440826,"last_synced_commit":"6081eaa90fc3bf7da7ea7d93b080d85183af9b58"},"previous_names":[],"tags_count":93,"template":false,"template_full_name":null,"purl":"pkg:github/heroiclabs/nakama","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heroiclabs%2Fnakama","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heroiclabs%2Fnakama/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heroiclabs%2Fnakama/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heroiclabs%2Fnakama/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/heroiclabs","download_url":"https://codeload.github.com/heroiclabs/nakama/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heroiclabs%2Fnakama/sbom","scorecard":{"id":462152,"data":{"date":"2025-08-11","repo":{"name":"github.com/heroiclabs/nakama","commit":"bab2d8f6f49d98ce5fcb774267b4cc0cf894c175"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":6.2,"checks":[{"name":"Maintained","score":10,"reason":"24 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":10,"reason":"all changesets reviewed","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'contents' permission set to 'read': .github/workflows/dockerhub-nakama-dsym.yaml:11","Info: jobLevel 'contents' permission set to 'read': .github/workflows/dockerhub-nakama.yaml:11","Info: jobLevel 'contents' permission set to 'read': .github/workflows/dockerhub-pluginbuilder.yaml:11","Warn: no topLevel permission defined: .github/workflows/build.yaml:1","Warn: no topLevel permission defined: .github/workflows/dockerhub-nakama-dsym.yaml:1","Warn: no topLevel permission defined: .github/workflows/dockerhub-nakama.yaml:1","Warn: no topLevel permission defined: .github/workflows/dockerhub-pluginbuilder.yaml:1","Info: topLevel 'contents' permission set to 'read': .github/workflows/golanci-lint.yaml:7","Info: topLevel 'pull-requests' permission set to 'read': .github/workflows/golanci-lint.yaml:8","Warn: no topLevel permission defined: .github/workflows/tests.yaml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/dockerhub-nakama-dsym.yaml:8"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v3.30.0 not signed: https://api.github.com/repos/heroiclabs/nakama/releases/238853601","Warn: release artifact v3.29.0 not signed: https://api.github.com/repos/heroiclabs/nakama/releases/236085061","Warn: release artifact v3.28.0 not signed: https://api.github.com/repos/heroiclabs/nakama/releases/232256412","Warn: release artifact v3.27.1 not signed: https://api.github.com/repos/heroiclabs/nakama/releases/220449725","Warn: release artifact v3.27.0 not signed: https://api.github.com/repos/heroiclabs/nakama/releases/218032040","Warn: release artifact v3.30.0 does not have provenance: https://api.github.com/repos/heroiclabs/nakama/releases/238853601","Warn: release artifact v3.29.0 does not have provenance: https://api.github.com/repos/heroiclabs/nakama/releases/236085061","Warn: release artifact v3.28.0 does not have provenance: https://api.github.com/repos/heroiclabs/nakama/releases/232256412","Warn: release artifact v3.27.1 does not have provenance: https://api.github.com/repos/heroiclabs/nakama/releases/220449725","Warn: release artifact v3.27.0 does not have provenance: https://api.github.com/repos/heroiclabs/nakama/releases/218032040"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yaml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/heroiclabs/nakama/build.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yaml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/heroiclabs/nakama/build.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/dockerhub-nakama-dsym.yaml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/heroiclabs/nakama/dockerhub-nakama-dsym.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dockerhub-nakama-dsym.yaml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/heroiclabs/nakama/dockerhub-nakama-dsym.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dockerhub-nakama-dsym.yaml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/heroiclabs/nakama/dockerhub-nakama-dsym.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dockerhub-nakama-dsym.yaml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/heroiclabs/nakama/dockerhub-nakama-dsym.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dockerhub-nakama-dsym.yaml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/heroiclabs/nakama/dockerhub-nakama-dsym.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dockerhub-nakama-dsym.yaml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/heroiclabs/nakama/dockerhub-nakama-dsym.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/dockerhub-nakama.yaml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/heroiclabs/nakama/dockerhub-nakama.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dockerhub-nakama.yaml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/heroiclabs/nakama/dockerhub-nakama.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dockerhub-nakama.yaml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/heroiclabs/nakama/dockerhub-nakama.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dockerhub-nakama.yaml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/heroiclabs/nakama/dockerhub-nakama.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dockerhub-nakama.yaml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/heroiclabs/nakama/dockerhub-nakama.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dockerhub-nakama.yaml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/heroiclabs/nakama/dockerhub-nakama.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/dockerhub-pluginbuilder.yaml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/heroiclabs/nakama/dockerhub-pluginbuilder.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dockerhub-pluginbuilder.yaml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/heroiclabs/nakama/dockerhub-pluginbuilder.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dockerhub-pluginbuilder.yaml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/heroiclabs/nakama/dockerhub-pluginbuilder.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dockerhub-pluginbuilder.yaml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/heroiclabs/nakama/dockerhub-pluginbuilder.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dockerhub-pluginbuilder.yaml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/heroiclabs/nakama/dockerhub-pluginbuilder.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dockerhub-pluginbuilder.yaml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/heroiclabs/nakama/dockerhub-pluginbuilder.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/golanci-lint.yaml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/heroiclabs/nakama/golanci-lint.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/golanci-lint.yaml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/heroiclabs/nakama/golanci-lint.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/golanci-lint.yaml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/heroiclabs/nakama/golanci-lint.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yaml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/heroiclabs/nakama/tests.yaml/master?enable=pin","Warn: containerImage not pinned by hash: build/Dockerfile:18","Warn: containerImage not pinned by hash: build/Dockerfile:38: pin your Docker image by updating debian:bookworm-slim to debian:bookworm-slim@sha256:b1a741487078b369e78119849663d7f1a5341ef2768798f7b7406c4240f86aef","Warn: containerImage not pinned by hash: build/Dockerfile.dsym:15","Warn: containerImage not pinned by hash: build/Dockerfile.dsym:35: pin your Docker image by updating debian:bookworm-slim to debian:bookworm-slim@sha256:b1a741487078b369e78119849663d7f1a5341ef2768798f7b7406c4240f86aef","Warn: containerImage not pinned by hash: build/pluginbuilder/Dockerfile:18","Info:   0 out of   8 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of  16 third-party GitHubAction dependencies pinned","Info:   0 out of   5 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":10,"reason":"SAST tool is run on all commits","details":["Info: all commits (30) are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-19T11:23:25.721Z","repository_id":37602505,"created_at":"2025-08-19T11:23:25.721Z","updated_at":"2025-08-19T11:23:25.721Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274362090,"owners_count":25271401,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-09T02:00:10.223Z","response_time":80,"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":["backend","backend-as-a-service","chat-server","game-backend","game-framework","game-server","multiplayer","nakama","realtime","realtime-games","social","unity-engine","unreal-engine"],"created_at":"2024-07-31T11:00:38.878Z","updated_at":"2025-09-09T20:57:11.204Z","avatar_url":"https://github.com/heroiclabs.png","language":"Go","funding_links":[],"categories":["Go","Code","开源类库","NetWork","Networking, Distributed, Microservices \u0026 Cloud - Tools \u0026 Services","Open Source Repositories","Networking","unreal-engine","Libraries","Open Source Packages"],"sub_categories":["Engines and Frameworks","即时通信","Networking"],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://heroiclabs.com\" target=\"_blank\" rel=\"noopener\"\u003e\n    \u003cimg src=\"./.github/nakama.png\" alt=\"Nakama - Distributed server for social and realtime games and apps\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://heroiclabs.com/docs/nakama/getting-started/install/\"\u003e\u003cimg src=\"https://img.shields.io/github/release/heroiclabs/nakama.svg?colorA=18181B\u0026colorB=825df2\" alt=\"Version\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://hub.docker.com/r/heroiclabs/nakama\"\u003e\u003cimg src=\"https://img.shields.io/docker/pulls/heroiclabs/nakama?colorA=18181B\u0026colorB=825df2\u0026label=downloads\" alt=\"Downloads\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/heroiclabs/nakama/blob/master/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/heroiclabs/nakama.svg?colorA=18181B\u0026colorB=825df2\" alt=\"License\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://forum.heroiclabs.com\"\u003e\u003cimg src=\"https://img.shields.io/badge/Nakama%20Forum-18181B?logo=discourse\" alt=\"Nakama Forum\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://heroiclabs.com/docs\"\u003e\u003cimg src=\"https://img.shields.io/badge/Nakama%20Docs-18181B?logo=data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzU3IiBoZWlnaHQ9IjU3OSIgdmlld0JveD0iMCAwIDM1NyA1NzkiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTI3Ljc1NyAzMzYuNDQ2QzExNC4yMjUgMzM2Ljc0MyAxMDcuNzA1IDMxOS45MDYgMTAzLjk1MiAzMDguNzE0QzEwNy4yMTIgMzA4LjgxMyAxMTAuNDcxIDMwOS4wMTEgMTEzLjYzMiAzMDkuMzA4QzEyMC44NDMgMzEwLjEwMSAxMjguMDU0IDMxMi4xODEgMTMyLjY5NiAzMTguMjIyQzEzOS4xMTcgMzI2LjQ0MyAxMzMuODgyIDMzNi4zNDcgMTI3Ljg1NiAzMzYuNDQ2TTIyOS43OTYgMzM2LjQ0NkMyNDMuMzI4IDMzNi43NDMgMjQ5Ljg0OCAzMTkuOTA2IDI1My42MDEgMzA4LjcxNEMyNTAuMzQxIDMwOC44MTMgMjQ3LjA4MiAzMDkuMDExIDI0My45MjEgMzA5LjMwOEMyMzYuNzEgMzEwLjEwMSAyMjkuNDk5IDMxMi4xODEgMjI0Ljg1NyAzMTguMjIyQzIxOC40MzYgMzI2LjQ0MyAyMjMuNjcxIDMzNi4zNDcgMjI5LjY5NyAzMzYuNDQ2SDIyOS43OTZaTTE3OC4xMzQgNTMzLjQ0MUwxNzguNzI3IDUzNC4xMzRMMTc5LjQxOSA1MzMuNDQxQzE5NC42MyA1MTMuMDM4IDE5Ny42OTMgNDc0LjExNCAxNzguNzI3IDQ1NS41OTRDMTYwLjA1OCA0NzUuMjA0IDE2Mi41MjcgNTEyLjU0MyAxNzguMTM0IDUzMy40NDFaTTE3Ny45MzcgMC41OTQyNTJMMTc4LjcyNyAwTDE3OS41MTcgMC41OTQyNTJDMTk4Ljk3NyAxNC4xNjMgMjEzLjIwMSAyOC4zMjYgMjI3LjEyOSA0Ny44MzczQzI3MS44NzUgMTEwLjIzNCAzMDAuOTE2IDIxMC41NjMgMjkxLjczIDI4NC45NDRDMzEyLjk2NyAyOTQuMTU1IDMyOS41NjIgMzA5LjQwNyAzNDAuNzI0IDMyOC4yMjVDMzU4LjcwMSAzNTguNjMxIDM2Ni4wMTEgNDIwLjAzNyAzNDAuMzI5IDQ1MS45MjlDMzA3LjgzMSA0MzQuMDAyIDI2MC44MTIgNDE5Ljc0IDIxNC4xODkgNDMyLjkxM0wyMDQuODA1IDQzNi45NzRDMjI5Ljc5NiA0NzAuNTQ5IDIyOS45OTMgNTE1LjUxNCAyMDcuMDc3IDU0OS4wODlDMTk3LjI5NyA1NjMuNDUgMTg5Ljk4OCA1NjcuODA4IDE3OC40MzEgNTc5QzE2Ni42NzYgNTY4LjcgMTU4Ljg3MyA1NjIuMzYxIDE0OS43ODUgNTQ5LjA4OUMxMjYuOTY3IDUxNS41MTQgMTI3LjA2NiA0NzAuNTQ5IDE1Mi4wNTcgNDM2Ljk3NEwxNDIuNzcyIDQzMi45MTNDOTYuMTQ4NCA0MTkuNzQgNDkuMTI5OCA0MzQuMDAyIDE2LjYzMTcgNDUxLjkyOUMtOC45NTE4OCA0MjAuMDM3IC0xLjc0MTA1IDM1OC42MzEgMTYuMjM2NiAzMjguMjI1QzI3LjM5ODYgMzA5LjMwOCA0NC4wOTIxIDI5NC4wNTYgNjUuMjMwNyAyODQuOTQ0QzU2LjA0NDMgMjEwLjU2MyA4NS4wODUyIDExMC4yMzQgMTI5LjgzMiA0Ny44MzczQzE0My44NTggMjguMzI2IDE1Ny45ODQgMTQuMTYzIDE3Ny40NDMgMC41OTQyNTJIMTc3LjkzN1pNMzIyLjg0NSA0MDkuMjQyQzMyNy4wOTIgMzg3LjA1NiAzMjMuNzM0IDM2My4zODUgMzEyLjg2OCAzNDQuOTY0QzMwNi4xNTEgMzMzLjY3MyAyOTYuNjY5IDMyNC4zNjMgMjg0LjcxNiAzMTcuOTI1QzI4MS41NTUgMzI3LjgyOSAyNzcuNTA2IDMzNi44NDIgMjcyLjQ2OCAzNDQuODY1QzI1Ny4zNTUgMzY5LjEzIDIyMy41NzMgMzc4LjQ0IDIwMi4zMzUgMzU3LjY0MUMxNzIuOTk4IDMyOC44MiAxOTQuNTMyIDI3NC4wNDkgMjUzLjEwNyAyNzUuOTMxTDI2MC4xMjEgMjc2LjYyNUMyNjcuNTI5IDIwMi4zNDMgMjMzLjU0OSA5Mi40MDYzIDE3OC42MjggNDIuMjkxQzEyMy43MDggOTIuNTA1MyA4OS44MjY1IDIwMi4zNDMgOTcuMTM2MiAyNzYuNjI1TDEwNC4xNDkgMjc1LjkzMUMxNjIuNzI1IDI3NC4wNDkgMTg0LjM1NyAzMjguNzIxIDE1NC45MjIgMzU3LjY0MUMxMzMuNzgzIDM3OC40NCA5OS45MDE5IDM2OS4xMyA4NC43ODg4IDM0NC44NjVDNzkuNzUxMiAzMzYuODQyIDc1LjcwMTIgMzI3LjczIDcyLjU0MDMgMzE3LjkyNUM2MC41ODgxIDMyNC4zNjMgNTEuMTA1NCAzMzMuNzcyIDQ0LjM4ODUgMzQ0Ljk2NEMzMy41MjI4IDM2My4zODUgMzAuMTY0NCAzODcuMDU2IDM0LjQxMTggNDA5LjI0MkM4Ni4yNzA1IDM5MC4yMjYgMTI4LjM1IDM5MC43MjEgMTc4LjUzIDQxMi4zMTJDMjI4LjgwOCAzOTAuNjIyIDI3MC43ODkgMzkwLjIyNiAzMjIuNjQ3IDQwOS4yNDJIMzIyLjg0NVoiIGZpbGw9IndoaXRlIi8+Cjwvc3ZnPgo=\" alt=\"Nakama Documentation\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## Features\n\n* **Users** - Register/login new users via social networks, email, or device ID.\n* **Storage** - Store user records, settings, and other objects in collections.\n* **Social** - Users can connect with friends, and join groups. Builtin social graph to see how users can be connected.\n* **Chat** - 1-on-1, group, and global chat between users. Persist messages for chat history.\n* **Multiplayer** - Realtime, or turn-based active and passive multiplayer.\n* **Leaderboards** - Dynamic, seasonal, get top members, or members around a user. Have as many as you need.\n* **Tournaments** - Invite players to compete together over prizes. Link many together to create leagues.\n* **Parties** - Add team play to a game. Users can form a party and communicate with party members.\n* **Purchase Validation** - Validate in-app purchases and subscriptions.\n* **In-App Notifications** - Send messages and notifications to connected client sockets.\n* **Runtime code** - Extend the server with custom logic written in Lua, TypeScript/JavaScript, or native Go code.\n* **Matchmaker**, **dashboard**, **metrics**, and [more](https://heroiclabs.com/docs).\n\nBuild scalable games and apps with a production ready server used by ambitious game studios and app developers [all around the world](https://heroiclabs.com/customers/). Have a look at the [documentation](https://heroiclabs.com/docs) and join the [developer community](https://forum.heroiclabs.com) for more info.\n\n## Getting Started\n\nThe server is simple to setup and run for local development and can be deployed to any cloud provider. See the [deployment notes](#deployment) for recommendations on how to deploy the project for production. Nakama server requires CockroachDB or another Postgres wire-compatible server as it's database.\n\n### Docker\n\n\u003ca href=\"https://heroiclabs.com/docs/install-docker-quickstart/\"\u003e\u003cimg src=\"https://upload.wikimedia.org/wikipedia/en/f/f4/Docker_logo.svg\" width=\"170\"\u003e\u003c/a\u003e\n\nThe fastest way to run the server and the database is with Docker. Setup Docker and start the daemon.\n\n1. Set up a [docker-compose file](https://heroiclabs.com/docs/nakama/getting-started/install/docker/#running-nakama) and place it in a folder for your project.\n\n2. Run `docker-compose -f ./docker-compose.yml up` to download container images and run the servers.\n\nFor more detailed instructions have a look at our [Docker quickstart](https://heroiclabs.com/docs/nakama/getting-started/install/docker) guide.\n\nNakama Docker images are maintained on [Docker Hub](https://hub.docker.com/r/heroiclabs/nakama/tags) and [prerelease](https://hub.docker.com/r/heroiclabs/nakama-prerelease/tags) images are occasionally published for cutting edge features of the server.\n\n### Binaries\n\nYou can run the servers with native binaries for your platform.\n\n1. Download the server from our [releases](https://github.com/heroiclabs/nakama/releases) page and the [database](https://www.cockroachlabs.com/docs/stable/install-cockroachdb.html).\n\n2. Follow the database [instructions](https://www.cockroachlabs.com/docs/stable/start-a-local-cluster.html#before-you-begin) to start it.\n\n3. Run a migration which will setup or upgrade the database schema:\n\n   ```shell\n   nakama migrate up --database.address \"root@127.0.0.1:26257\"\n   ```\n\n4. Start Nakama and connect to the database:\n\n   ```shell\n   nakama --database.address \"root@127.0.0.1:26257\"\n   ```\n\nWhen connected you'll see server output which describes all settings the server uses for [configuration](https://heroiclabs.com/docs/nakama/getting-started/configuration).\n\n\u003e {\"level\":\"info\",\"ts\":\"2018-04-29T10:14:41.249+0100\",\"msg\":\"Node\",\"name\":\"nakama\",\"version\":\"2.0.0+7e18b09\",\"runtime\":\"go1.10.1\",\"cpu\":4} \u003cbr/\u003e\n\u003e {\"level\":\"info\",\"ts\":\"2018-04-29T10:14:41.249+0100\",\"msg\":\"Database connections\",\"dsns\":[\"root@127.0.0.1:26257\"]} \u003cbr/\u003e\n\u003e ...\n\n## Usage\n\nNakama supports a variety of protocols optimized for various gameplay or app use cases. For request/response it can use GRPC or the HTTP1.1+JSON fallback (REST). For realtime communication you can use WebSockets or rUDP.\n\nFor example with the REST API to authenticate a user account with a device identifier.\n\n```shell\ncurl \"127.0.0.1:7350/v2/account/authenticate/device?create=true\" \\\n  --user \"defaultkey:\" \\\n  --data '{\"id\": \"someuniqueidentifier\"}'\n```\n\nResponse:\n\n\u003e { \u003cbr\u003e\n\u003e     \"token\":\"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1MjQ5OTU2NDksInVpZCI6Ijk5Y2Q1YzUyLWE5ODgtNGI2NC04YThhLTVmMTM5YTg4MTgxMiIsInVzbiI6InhBb1RxTUVSdFgifQ.-3_rXNYx3Q4jKuS7RkxeMWBzMNAm0vl93QxzRI8p_IY\" \u003cbr\u003e\n\u003e }\n\nThere's a number of official [client libraries](https://github.com/heroiclabs) available on GitHub with [documentation](https://heroiclabs.com/docs). The current platform/language support includes: .NET (in C#), Unity engine, JavaScript, Java (with Android), Unreal engine, Godot, Defold, and Swift (with iOS). If you'd like to contribute a client or request one let us know.\n\n## Nakama Console\n\nThe server provides a web UI which teams can use to inspect various data stored through the server APIs, view lightweight service metrics, manage player data, update storage objects, restrict access to production with permission profiles, and gain visibility into realtime features like active multiplayer matches. There is no separate installation required as it is embedded as part of the single server binary.\n\nYou can navigate to it on your browser on [http://127.0.0.1:7351](http://127.0.0.1:7351).\n\n\n\u003cdetails open\u003e\n\u003csummary\u003eView Screenshots\u003c/summary\u003e\n  \u003cimg src=\".github/dashboard.png\" alt=\"Nakama Console dashboard view\" title=\"Dashboard view\"\u003e\n  \u003cimg src=\".github/players.png\" alt=\"Nakama Console players view\" title=\"Players view\"\u003e\n  \u003cimg src=\".github/api-explorer.png\" alt=\"Nakama Console API explorer view\" title=\"API explorer view\"\u003e\n  \u003cimg src=\".github/storage.png\" alt=\"Nakama Console storage view\" title=\"Storage object view\"\u003e\n  \u003cimg src=\".github/modules.png\" alt=\"Nakama Console modules view\" title=\"Runtime modules view\"\u003e\n\u003c/details\u003e\n\n## Deployment\n\nNakama can be deployed to any cloud provider such as Google Cloud, Azure, AWS, Digital Ocean, Heroku, or your own private cloud. You should setup and provision separate nodes for Nakama and CockroachDB.\n\nThe recommended minimum production infrastructure for CockroachDB is outlined in [these docs](https://www.cockroachlabs.com/docs/stable/recommended-production-settings.html#basic-hardware-recommendations) and Nakama can be run on instance types as small as \"g1-small\" on Google Cloud although we recommend a minimum of \"n1-standard-1\" in production. The specific hardware requirements will depend on what features of the server are used. Reach out to us for help and advice on what servers to run.\n\n### Heroic Cloud\n\nYou can support development, new features, and maintainance of the server by using the Heroic Labs' [Heroic Cloud](https://heroiclabs.com/heroic-cloud/) for deployment. This service handles the uptime, replication, backups, logs, data upgrades, and all other tasks involved with production server environments.\n\nHave a look at our [Heroic Cloud](https://heroiclabs.com/heroic-cloud/) service for more details.\n\n## Contribute\n\nThe development roadmap is managed as GitHub issues and pull requests are welcome. If you're interested to add a feature which is not mentioned on the issue tracker please open one to create a discussion or drop in and discuss it in the [community forum](https://forum.heroiclabs.com).\n\n### Simple Builds\n\nAll dependencies required for a build are vendored as part of the Go project. We recommend a modern release of the Go toolchain and do not store the codebase in the old GOPATH.\n\n1. Download the source tree.\n\n   ```shell\n   git clone \"https://github.com/heroiclabs/nakama\" nakama\n   cd nakama\n   ```\n\n2. Build the project from source.\n\n   ```shell\n   go build -trimpath -mod=vendor\n   ./nakama --version\n   ```\n\n### Full Source Builds\n\nThe codebase uses Protocol Buffers, GRPC, GRPC-Gateway, and the OpenAPI spec as part of the project. These dependencies are generated as sources and committed to the repository to simplify builds for contributors.\n\nTo build the codebase and generate all sources follow these steps.\n\n1. Install the toolchain.\n\n   ```shell\n   go install \\\n       \"google.golang.org/protobuf/cmd/protoc-gen-go\" \\\n       \"google.golang.org/grpc/cmd/protoc-gen-go-grpc\" \\\n       \"github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway\" \\\n       \"github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2\"\n   ```\n\n2. Re-generate the protocol buffers and gateway code.\n\n   ```shell\n   env PATH=\"$HOME/go/bin:$PATH\" go generate -x ./...\n   ```\n\n3. Build the codebase.\n\n   ```shell\n   go build -trimpath -mod=vendor\n   ```\n\n### Testing\n\nIn order to run all the unit and integration tests run:\n\n```shell\ndocker-compose -f ./docker-compose-tests.yml up --build --abort-on-container-exit; docker-compose -f ./docker-compose-tests.yml down -v\n```\n\nThis will create an isolated environment with Nakama and database instances, run\nall the tests, and drop the environment afterwards.\n\n### License\n\nThis project is licensed under the [Apache-2 License](https://github.com/heroiclabs/nakama/blob/master/LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fheroiclabs%2Fnakama","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fheroiclabs%2Fnakama","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fheroiclabs%2Fnakama/lists"}