{"id":23448703,"url":"https://github.com/unstoppablemango/xmage-docker","last_synced_at":"2026-03-20T01:26:46.039Z","repository":{"id":114026705,"uuid":"456070414","full_name":"UnstoppableMango/xmage-docker","owner":"UnstoppableMango","description":null,"archived":false,"fork":false,"pushed_at":"2025-10-07T04:34:27.000Z","size":21,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-07T06:25:14.710Z","etag":null,"topics":["container","docker","gaming","magic","mtg","self-hosted","xmage"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/UnstoppableMango.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":"2022-02-06T06:06:59.000Z","updated_at":"2025-10-07T04:32:58.000Z","dependencies_parsed_at":null,"dependency_job_id":"f46a21d2-9271-43b4-9cf0-8637dcc636bf","html_url":"https://github.com/UnstoppableMango/xmage-docker","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/UnstoppableMango/xmage-docker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UnstoppableMango%2Fxmage-docker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UnstoppableMango%2Fxmage-docker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UnstoppableMango%2Fxmage-docker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UnstoppableMango%2Fxmage-docker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/UnstoppableMango","download_url":"https://codeload.github.com/UnstoppableMango/xmage-docker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UnstoppableMango%2Fxmage-docker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28670366,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-22T19:36:09.361Z","status":"ssl_error","status_checked_at":"2026-01-22T19:36:05.567Z","response_time":144,"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":["container","docker","gaming","magic","mtg","self-hosted","xmage"],"created_at":"2024-12-23T22:18:17.741Z","updated_at":"2026-01-22T20:09:56.679Z","avatar_url":"https://github.com/UnstoppableMango.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# xmage-docker\n\n[![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/UnstoppableMango/xmage-docker/ci.yml?logo=github)](https://github.com/UnstoppableMango/xmage-docker/actions/workflows/ci.yml)\n[![GitHub Release](https://img.shields.io/github/v/release/magefree/mage?label=upstream)](https://github.com/magefree/mage/releases/latest)\n[![GitHub Release](https://img.shields.io/github/v/release/UnstoppableMango/xmage-docker?logo=github)](https://github.com/UnstoppableMango/xmage-docker/releases/latest)\n[![Docker Image Version](https://img.shields.io/docker/v/unstoppablemango/mage-server?logo=docker)](https://hub.docker.com/r/unstoppablemango/mage-server/tags)\n[![Docker Pulls](https://img.shields.io/docker/pulls/unstoppablemango/mage-server?logo=docker)](https://hub.docker.com/r/unstoppablemango/mage-server)\n\nA Docker container for \u003chttps://github.com/magefree/mage\u003e.\n\nImages are tagged as `unstoppablemango/mage-server` and pushed to:\n\n- Dockerhub: [unstoppablemango/mage-server](https://hub.docker.com/r/unstoppablemango/mage-server)\n- GitHub Container Registry: [ghcr.io/unstoppablemango/mage-server](https://github.com/UnstoppableMango/xmage-docker/pkgs/container/mage-server)\n\nApologies in advance, not a Java guy, bear with me.\n\n## Hosting a server\n\n\u003chttps://github.com/magefree/mage/wiki/Hosting-an-XMage-server\u003e\n\n### Configuration\n\nThe default configuration can be found [on GitHub](https://github.com/magefree/mage/blob/master/Mage.Server/config/config.xml).\nThe default path of this configuration within the container is `/opt/xmage/config/config.xml`.\nThis configuration file path can be changed by setting `XMAGE_CONFIG_PATH`.\n\nAlternatively, the container can be configured by supplying environment variables.\nThese will be applied to the xml configuration file at container start.\n\n\u003e [!NOTE]\n\u003e Environment variables will be replaced ONLY when using the default configuration path.\n\u003e When a custom configuration path is supplied, the startup script will not modify it.\n\n#### Supported configuration\n\nThe values listed below are a quick reference.\nFor the most up-to-date documentation, refer to the [source config.xml](https://github.com/magefree/mage/blob/master/Mage.Server/release/config/config.xml) and the [startup script](./entrypoint.sh).\n\n|                          Variable | Description                                                                                                                                                                                                                                                                                                                                                                                      |\n| --------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|            `XMAGE_SERVER_ADDRESS` | ip of the XMage server. Set it to \"0.0.0.0\" for local host or to the IP the server should use                                                                                                                                                                                                                                                                                                    |\n|               `XMAGE_SERVER_NAME` |                                                                                                                                                                                                                                                                                                                                                                                                  |\n|                      `XMAGE_PORT` | the port the primary server socket is bound to                                                                                                                                                                                                                                                                                                                                                   |\n|       `XMAGE_SECONDARY_BIND_PORT` | the port to which the secondary server socket is to be bound. if \"-1\" is set , an arbitrary port is selected.                                                                                                                                                                                                                                                                                    |\n|              `XMAGE_BACKLOG_SIZE` | the preferred number of unaccepted incoming connections allowed at a given time. The actual number may be greater than the specified backlog. When the queue is full, further connection requests are rejected. The JBoss default value is 200                                                                                                                                                   |\n|        `XMAGE_NUM_ACCEPT_THREADS` | the number of threads listening on the ServerSocket. The JBoss default value is 1                                                                                                                                                                                                                                                                                                                |\n|             `XMAGE_MAX_POOL_SIZE` | the maximum number of ServerThreads that can exist at any given time. The JBoss default value is 300                                                                                                                                                                                                                                                                                             |\n|              `XMAGE_LEASE_PERIOD` | To turn on server side connection failure detection of remoting clients, it is necessary to satisfy two criteria. The first is that the client lease period is set and is a value greater than 0. The value is represented in milliseconds. The client lease period can be set by either the 'clientLeasePeriod' attribute within the Connector configuration or by calling the Connector method |\n|      `XMAGE_SOCKET_WRITE_TIMEOUT` | All write operations will time out if they do not complete within the configured period.                                                                                                                                                                                                                                                                                                         |\n|          `XMAGE_MAX_GAME_THREADS` | Number of games that can be started simultanously on the server                                                                                                                                                                                                                                                                                                                                  |\n|          `XMAGE_MAX_SECONDS_IDLE` | Number of seconds after that a game is auto conceded by the player that was idle for such a time                                                                                                                                                                                                                                                                                                 |\n|      `XMAGE_MIN_USER_NAME_LENGTH` | minmal allowed length of a user name to connect to the server                                                                                                                                                                                                                                                                                                                                    |\n|      `XMAGE_MAX_USER_NAME_LENGTH` | maximal allowed length of a user name to connect to the server                                                                                                                                                                                                                                                                                                                                   |\n| `XMAGE_INVALID_USER_NAME_PATTERN` | pattern for user name validity check                                                                                                                                                                                                                                                                                                                                                             |\n|       `XMAGE_MIN_PASSWORD_LENGTH` |                                                                                                                                                                                                                                                                                                                                                                                                  |\n|       `XMAGE_MAX_PASSWORD_LENGTH` |                                                                                                                                                                                                                                                                                                                                                                                                  |\n|          `XMAGE_MAX_AI_OPPONENTS` | number of allowed workable AI opponents on the server (draft bots are unlimited)                                                                                                                                                                                                                                                                                                                 |\n|       `XMAGE_SAVE_GAME_ACTIVATED` | allow game save and replay options (not working correctly yet)                                                                                                                                                                                                                                                                                                                                   |\n|  `XMAGE_AUTHENTICATION_ACTIVATED` | \"true\" = user have to register to signon \"false\" = user need not to register                                                                                                                                                                                                                                                                                                                     |\n|            `XMAGE_GOOGLE_ACCOUNT` | not supported currently                                                                                                                                                                                                                                                                                                                                                                          |\n|           `XMAGE_MAILGUN_API_KEY` | key from the mailgun domain e.g. = \"key-12121111...\"                                                                                                                                                                                                                                                                                                                                             |\n|            `XMAGE_MAILGUN_DOMAIN` | domain for the mailgun message sending                                                                                                                                                                                                                                                                                                                                                           |\n|            `XMAGE_MAIL_SMTP_HOST` | hostname to send the mail                                                                                                                                                                                                                                                                                                                                                                        |\n|            `XMAGE_MAIL_SMTP_PORT` | port to send the mail                                                                                                                                                                                                                                                                                                                                                                            |\n|                 `XMAGE_MAIL_USER` | username used to send the mail                                                                                                                                                                                                                                                                                                                                                                   |\n|             `XMAGE_MAIL_PASSWORD` | password of the used user to send the mail                                                                                                                                                                                                                                                                                                                                                       |\n|         `XMAGE_MAIL_FROM_ADDRESS` | sender address                                                                                                                                                                                                                                                                                                                                                                                   |\n\n## Development\n\n### Pre-requisites\n\n- [docker](https://docs.docker.com/engine/install/)\n- [make](https://www.gnu.org/software/make/)\n- [dprint](https://github.com/dprint/dprint)\n\n### Targets\n\nThe default `make` target is `docker` which will build the server and tag it as `xmage-docker:dev`.\nAdditionally, it will write a tarball to [bin/image.tar](./bin/image.tar).\n\n`make test` will run the [xmage test suite](https://github.com/magefree/mage/blob/master/.travis.yml#L11).\n\n`make format` or `make fmt` will run [dprint](https://github.com/dprint/dprint) to format source code.\n\n`make compose` will run the build specified by [docker-compose.yml](./docker-compose.yml) using `docker compose`.\n\n## References\n\n- \u003chttps://github.com/goesta/docker-xmage\u003e\n- \u003chttps://github.com/magefree/mage/pull/12828\u003e\n\n## TODO\n\n\u003chttps://github.com/magefree/mage#performance-tweaks\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funstoppablemango%2Fxmage-docker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Funstoppablemango%2Fxmage-docker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funstoppablemango%2Fxmage-docker/lists"}