# AquaDX: a self-hostable server for ALL.Net arcade games

> AquaDX is a Kotlin server implementation for the ALL.Net family of arcade rhythm games, covering maimai, CHUNITHM, Wacca, O.N.G.E.K.I. and others, with a public instance, a web frontend, and a MariaDB-backed deployment you can run yourself.

**MewoLab/AquaDX** — A magical server for certain arcade rhythm games 🪄

- Repository: https://github.com/MewoLab/AquaDX
- Website: https://aquadx.net
- Stars: 592 · Forks: 127
- Language: Kotlin
- License: NOASSERTION
- Published: 2026-10-22 · Updated: 2026-10-22 · Language: en
- Canonical page: https://hysenlabs.com/projects/mewolab-aquadx

## What AquaDX is, and where it sits in the ecosystem

AquaDX is a multipurpose game server for ALL.Net games, described as a magical server for certain arcade rhythm games, and it is written in Kotlin. The scope is wider than one title, and the related projects section explains how the pieces fit. AquaNet is the primary AquaDX web frontend, hosted publicly at aquadx.net, while AquaMai is a maimai DX mod that adds many features to the game itself. The project page is aquadx.net, the default branch is v1-dev, and the last push to the repository was on 2026-10-20. What separates this from a private server for one game is that the repository also contains the web frontend as a subdirectory, so the server, the browser interface and the game client relationship live in one place. The project is a fork lineage rather than a from-scratch build, and the attributions section credits samnyan as the creator and developer of the original Aqua server and Dom Eori as the developer of the forked Aqua server from v0.0.17 up.

## The support table tells you exactly what you get

The table of supported games is the most useful thing in the project overview, because it is precise about coverage in three separate ways. It lists the latest and initial versions for each game, and it marks three capability columns. For CHUNITHM, with versions from 2.00 (NEW) to 2.50 (Mate), all three columns are present, meaning a web interface, an import path and AES support. maimai DX runs from 1.00 (DX) to 1.70 (MAGiCAL) with all three, and the note there says that currently most new features are stubbed, which is an honest admission that the newest content is not fully implemented. maimai DX International goes from 1.00 (DX) to 1.65 (CiRCLE PLUS) with all three. O.N.G.E.K.I. runs 1.60 (Re:Fresh Act 2) with a web interface and import but no AES. Card Maker, at 1.39, has none of the three. Project DIVA, at 7.10, is marked as minimal support, and the AES column for it and for Wacca carries a partial marker rather than a full one. Wacca, at 3.07 (REVERSE), has a web interface but no import path, with later versions noted as EOS patches.

## Connecting a game to the server

The usage section for the public instance is four steps. Ensure your game can boot to its title screen, go to aquadx.net and sign up or log in, then access the setup connection page and follow the instructions given there. The project notes that a card's access code can be identified in all supported games on their title screen, and that pressing the access code and scanning your card retrieves it. That is the point where the physical arcade card enters the picture, and it is why the games need to reach their title screen first. If you hit a problem, the project asks you to report via Discord or QQ, both available on the website, or through the GitHub issue tracker. For the self-hosted path there is a separate self-hosting guide, and the project is blunt about who it is for. That is only for advanced users and developers, and the instruction is not to ask for support if you are not familiar with programming or networking.

## Running it with Docker and MariaDB

The repository ships a Dockerfile and a compose file, and the compose file shows the two services and the ports involved. The app service builds from the local context and runs the image hykilpikonna/aquadx:latest, publishing ports 80, 8443 and 22345, and it depends on the database service. The database is a mariadb:latest container with the credentials passed as environment variables, and its port is bound to a configurable host port that defaults to 127.0.0.1, so the database is not exposed on every interface unless you change it.

```yaml
services:
  app:
    build: .
    image: hykilpikonna/aquadx:latest
    ports:
      - "80:80"
      - "8443:8443"
      - "22345:22345"
```

Both services mount local directories, with the config directory mounted at /app/config and the data directory at /app/data, so configuration and game data survive a container rebuild. The database keeps its data in a named volume, and the named volume is declared at the end of the file.

```yaml
volumes:
  mariadb_data:
```

## The image build, and the game metadata step

The Dockerfile is a two stage build, and the comment at the top says the multi-stage layout is there to keep the image size small. The builder stage is gradle:9.6.1-jdk25, and the comment explains the pin is deliberate so that ARM64 deployments cannot reuse an older floating jdk25 image. The Gradle wrapper and the configuration files are copied separately from the source, so the dependency download layer is cached as long as build.gradle.kts and settings.gradle.kts do not change. There is a line that replaces carriage returns with line endings in gradlew so the script works on Linux. Before compiling, the build runs an update script that downloads game metadata, the music and item lists, and then the application is built with the tests skipped.

```dockerfile
FROM gradle:9.6.1-jdk25 AS builder
RUN sed -i 's/\r$//' ./gradlew
RUN ./gradlew dependencies
RUN bash /home/gradle/src/main/resources/meta/update.sh
RUN ./gradlew build -x test
```

The runtime stage is eclipse-temurin:25-jre-alpine and copies only the built jar across, so the Gradle toolchain does not ship in the final image.

```dockerfile
FROM eclipse-temurin:25-jre-alpine
COPY --from=builder /home/gradle/build/libs/AquaDX-*.jar /app/
CMD java -jar AquaDX-*.jar
```

## The licence is the unusual part

AquaDX uses the CC By-NC-SA licence, and the README goes out of its way to make that binding rather than leaving it to the licence file. The project opens with a warning that there has been a trend of people using generated text to sell open source software on Chinese platforms such as CSDN or JueJin, and states that this is a free and open source server, so if you paid for it you have been scammed. It then reminds readers that all commercial use of this software, including selling it on any platform, is strictly prohibited as per the CC By-NC-SA licence. The three conditions are spelled out. Attribution means giving appropriate credit, linking the licence and indicating changes, in any reasonable manner but not in a way suggesting the licensor endorses you. NonCommercial means the material may not be used for commercial purposes. ShareAlike means that if you remix, transform or build upon the material you must distribute your contributions under the same licence. For a server project, that is a real constraint on anyone planning to run one commercially or to fold the code into a paid service.

## Where AquaDX is the wrong choice

Three boundaries are clear from the documentation. The first is the licence, which rules out commercial deployment and redistribution under other terms, and that is a licensing decision rather than a technical one, but it is a hard one for a business. The second is coverage drift. The project warns that CHUNITHM pre-NEW!! and maimai pre-DX are no longer supported after February 6th 2026, and that all associated data will be removed, so the server follows the games rather than outlasting them, which is the right trade for a game server and the wrong one for an archive. The third is the stubbing of new content, since the maimai DX row states that most new features are currently stubbed, and the import and AES columns show that not every title has a full data path. If you need an offline, self-contained database of every game version with complete data, this is not that, and the key-value-style example in the repository is a teaching example rather than a production database.

## Conclusion

AquaDX fits a player or a community that wants its own instance of the ALL.Net rhythm game services, with a public instance available for casual use and a documented self-hosting path for anyone who needs control of the data, and it fits a developer who wants to read a working Kotlin and Spring implementation of a game protocol. It does not fit anyone who needs to ship it commercially, because the licence is CC By-NC-SA and the project states plainly that all commercial use is strictly prohibited, including selling it on any platform, and it does not fit someone who needs every game supported, since the support table marks CHUNITHM pre-NEW!! and maimai pre-DX as no longer supported after February 6th 2026 with associated data removed. Before you self-host, read the game specific notes and the encryption notes, and check whether the game you care about has a web interface, an import path and AES support.

## FAQ

### What is AquaDX and which games does it support?

AquaDX is a Kotlin multipurpose server for ALL.Net arcade rhythm games, covering CHUNITHM, maimai DX in both Japanese and international versions, Card Maker, O.N.G.E.K.I., Project DIVA and Wacca. The support table lists the latest and initial versions for each, along with whether a web interface, an import path and AES are available.

### How do I connect a game to the AquaDX server?

Ensure your game can boot to its title screen, go to aquadx.net and sign up or log in, then open the setup connection page and follow the instructions there. The access code for your card can be found on the title screen of supported games by pressing the access code and scanning the card.

### Can I use AquaDX commercially?

No. The project is licensed under CC By-NC-SA and states that all commercial use is strictly prohibited, including selling it on any platform. The README also warns that people have been using generated text to sell this open source server on Chinese platforms, and that the software is free.

### How do I self-host AquaDX?

The project ships a Dockerfile and a docker-compose file with an app service and a MariaDB service, publishing ports 80, 8443 and 22345, with config and data directories mounted from the host. The self-hosting guide is aimed at advanced users and developers, and the project asks that support questions not be asked by people unfamiliar with programming or networking.

## Sources

- [Issues](https://github.com/MewoLab/AquaDX/issues)
- [MewoLab/AquaDX on GitHub](https://github.com/MewoLab/AquaDX)
- [Project website](https://aquadx.net)
- [README](https://github.com/MewoLab/AquaDX/blob/v1-dev/README.md)
- [Releases](https://github.com/MewoLab/AquaDX/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/mewolab-aquadx
