The Old Metin2 Project aims at improving and maintaining the 2014 Metin2 game files up to modern standards. The goal is to archive the game as it was in order to preserve it for the future and enable nostalgic players to have a good time.
For-profit usage of this material is certainly illegal without the proper licensing agreements and is hereby discouraged (not legal advice). Even so, the nature of this project is HIGHLY EXPERIMENTAL - bugs are to be expected for now.
The MySQL database is currently pinned on version 5.5. We're using the [biarms/mysql](https://github.com/biarms/mysql) project in order to provide ARM compatibility for such an old version of MySQL.
The game cores (`db`, `auth`, `game-*`) are ran by using pre-built images containing the server binaries and game files, provided in the [Server repository](https://git.old-metin2.com/metin2/server/packages).
The web application provides the actual website, item mall and autopatcher functionality. Moreover, it is responsible with maintaining the database schema, creating and updating tables when needed. Pre-built images containing the web application are provided in the [Website repository](https://git.old-metin2.com/metin2/web/packages).
### Preparing the server
Clone this repository and access its root directory. For instance, on Linux you would do this:
Some settings aren't yet filled out. The actual settings will differ based on your setup. We'll assume that you're using WSL and Docker on your own computer, and you want to run the server locally, just for yourself. Start with opening the newly copied `.env` file.
Firstly, we need to configure the web application. Find `WEB_APP_URL` and change it to the URL you would use to access the machine you're installing this on (without a trailing slash!). In our case, simply set it to `http://localhost`.
You might already use port 80 on your machine for something else, in which case we need to configure the app to use another port. Simply change `WEB_EXTERNAL_PORT` to another value, for example `8080`. Don't forget to change `WEB_APP_URL` accordingly, in our case to `http://localhost:8080`.
Next, we need to generate a cryptographic key. We'll make use of Laravel's generator feature, as follows:
Run the above command and configure `WEB_APP_KEY` with the output. You should end up with something like: `WEB_APP_KEY=base64:<your-key-here>`.
Lastly, let's switch our focus to the game server. Make sure that `PUBLIC_IP` is set to a value at which you can access your machine. As a rule of thumb, this should be the same value you set in your client's `serverinfo.py`. In our case, leaving a value of `127.0.0.1` should work just fine.
On the first run, your database tables will be created and populated with default data.
### Stopping the server
Should you want to stop the server, simply bring down the Docker Compose stack:
```shell
docker compose down
```
### Start only some services
This deployment environment can also be used for development purposes. If you need a database and website, but want to run the server in some other way (for example, in an IDE), you can just bring up only the services you need: