Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

v62 and Docker!

Newbie Spellweaver
Joined
Jul 11, 2018
Messages
15
Reaction score
7
Hello all,

This is a docker v62 release. My motivation for doing this is for two reasons: 1. Linux is better than Windows. 2. I hate it when I can't get a private server up and running because something goes wrong with installing an application like Java or MySQL or something just goes wrong with configuration. After reading the threads here on the MapleStory section, I can see that I'm not the only one who has this frustration; there are countless help threads about why somebody's private server doesn't work because of some installation or configuration issue.

Today brings an end to that, at least for the server side.

RZ, I present two docker images in this repo:

The first one builds a MySQL container with preloaded data.

The second one builds the Java server that talks to the first container. Everything that's required to run a v62 server is included in the repo. No more scouring old links for files that have been taken down a long time ago.


How it works:

Install docker.

Clone the repo and
Code:
source run.sh

The first time this happens might take some time, because the base images for MySQL and Java have to be downloaded. But after that, it should be very quick.



YYfqkV0 - v62 and Docker! - RaGEZONE Forums



After that is done, the MySQL container will be running in the background and you will start bash in the Java container. Enter
Code:
source compile_and_run.sh



ix4z9x6 - v62 and Docker! - RaGEZONE Forums



Give it about a minute and the world, login, and channel server should be up and running.



KV4pjv7 - v62 and Docker! - RaGEZONE Forums




Now go to your machine where you have MapleStory installed along with a localhost exe. Open cmd and go to the directory where that is, then enter
Code:
localhost.exe 127.0.0.1 8484

For reference, I am using these two resources:

http://forum.ragezone.com/f427/clean-v62-localhost-1068520/
http://forum.ragezone.com/f425/maplestory-client-archive-gmsdlreborn-1101897/

Replace localhost.exe with the actual name of the exe and 127.0.0.1 with your server's IP address.



dFuWhNv - v62 and Docker! - RaGEZONE Forums



Voila!



5iuZEvT - v62 and Docker! - RaGEZONE Forums



The next step is to create a docker WINE container with the localhost. That way, Windows will no longer be required to play MapleStory! I've been working on this task for a long time now with little success, but I am very hopeful that this is a possibility.

Enjoy!
 

Attachments

You must be registered for see attachments list
Newbie Spellweaver
Joined
Jul 22, 2018
Messages
17
Reaction score
2
Excellent job setting this up!

Interesting choice of OS. Is there any reason why the image was based off Debian 7?

I had to perform slight modifications to the network configuration. Even though I doubt you would want to add non-essentials to the image, it would be nice if the image came with a text editor like vim or nano.


Tested and working on Windows 10 Pro (17134.165) with Docker 18.03.1-ce-win65 (17513).
 
Newbie Spellweaver
Joined
Jul 11, 2018
Messages
15
Reaction score
7
@Omni

That's out of my control. The MySQL container uses Debian 8, whereas the Java container uses Debian 7. My guess is that the latter is using a very old version of Java and the maintainers haven't gotten it to work on newer Debian releases. Admittedly, I have not tried using a higher version of Java for the second container. I'll give it a shot and report back.


Also, MapleStory does in fact work on Linux. However, I could only get it working in a VM, not a docker container.



c0wtjaG - v62 and Docker! - RaGEZONE Forums



I'm using Mint 18.1 and wine 1.6.2 in that VM. I basically followed this guide http://forum.ragezone.com/f922/maplestory-v62-linux-wine-896880/ but I didn't need to do anything with winetricks. Essentially just download the ws2 dlls, put them in the wine folder, set Windows version to 98, then call wine on the localhost.exe just as you would in cmd.

I'm still trying to get the client working in a docker container, but I challenge the community to take a crack at this too.
 

Attachments

You must be registered for see attachments list
Newbie Spellweaver
Joined
Jul 22, 2018
Messages
17
Reaction score
2
I wanted to test the server without leaving my development environment. I used the method described on a MacBook Pro (2017) and was able to successfully launch MapleStory. The Docker containers are running on this machine as well.

Tested and working on macOS High Sierra (10.13.6), Wine 3.0.2, Docker 18.03.1-ce-mac65 (24312).
 
Initiate Mage
Joined
Jan 19, 2018
Messages
2
Reaction score
0
I'm curious, what exactly was the purpose of using a Docker for this? I know what Docker is, I just don't see the benefit. :) - Thanks
 
Newbie Spellweaver
Joined
Jul 22, 2018
Messages
17
Reaction score
2
I'm curious, what exactly was the purpose of using a Docker for this? I know what Docker is, I just don't see the benefit. :) - Thanks

When using this Docker method, server installation and configuration is reduced to two commands.
The administrator can also avoid conflicts between the MapleStory server and the host Operating System.

Docker can achieve a quick, clean, and consistent install across all environments which support it.
 
Newbie Spellweaver
Joined
Jul 11, 2018
Messages
15
Reaction score
7
@Subbzie Basically so that setting up a v62 private server is a breeze. As Omni says, you just need to enter two commands. Isn't that hell of a lot better than hunting down old releases of dependencies and wasting hours clicking GUIs to set up a server?

Also, I confirmed that Java 7 is compatible with this repack. However, Java 8 and higher won't work because Nashorn (the JS engine that's built-in) doesn't get along. I wouldn't be surprised if someone could hack together a JDK 8 or higher installation with Rhino, the older JS engine, but I won't pursue this. For JDK 7, just replace with a JDK 7 base image. I used
Code:
java:7u111-jdk
for testing.
 
Initiate Mage
Joined
Dec 6, 2018
Messages
3
Reaction score
0
1. may be the docker-compose.yml is better than a shell file.
2. the client is better as a runnable program than a docker image, docker is better for non-interaction. Maybe a dmg file for MacOS?
 
Newbie Spellweaver
Joined
Jul 22, 2018
Messages
17
Reaction score
2
1. may be the docker-compose.yml is better than a shell file

It would be great if the environment could be launched via Docker Compose.

My recent efforts to use this method resulted in failure. There was no proper communication between the source and database.

net.sf.odinms.database.DatabaseConnection$ThreadLocalConnection initialValue SEVERE: ERROR com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure


2. the client is better as a runnable program than a docker image, docker is better for non-interaction. Maybe a dmg file for MacOS?
Docker is not part of the client solution.
 
Initiate Mage
Joined
Dec 6, 2018
Messages
3
Reaction score
0
It would be great if the environment could be launched via Docker Compose.

My recent efforts to use this method resulted in failure. There was no proper communication between the source and database.

net.sf.odinms.database.DatabaseConnection$ThreadLocalConnection initialValue SEVERE: ERROR com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure



Docker is not part of the client solution.




example:

### ============================== server ==============================
home:
build: ../yourdockerfile
volumes:
- ~/runtime/logs:/usr/local/logs
ports:
- "80:8080"
links:
- db:db
- redis:redis
### ============================== mysql ==============================
db:
image: mariadb
volumes:
- ~/runtime/volume/db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
ports:
- "3306:3306"
did you set links to the database? but this solution not contains datas. We need import datas by another way, or you can import it in the server image(by run some shell scripts).
 
Newbie Spellweaver
Joined
Jul 22, 2018
Messages
17
Reaction score
2
did you set links to the database? but this solution not contains datas. We need import datas by another way, or you can import it in the server image(by run some shell scripts).
The environment which failed uses a Docker bridge network. The source container can access the database via mysql-client. When spinning up the environment outside of Docker Compose, all communications work as intended. I am suspicious of Docker Compose and the MySQL JDBC driver.

For data persistence, either a or is required.
 
Initiate Mage
Joined
Dec 6, 2018
Messages
3
Reaction score
0
The environment which failed uses a Docker bridge network. The source container can access the database via mysql-client. When spinning up the environment outside of Docker Compose, all communications work as intended. I am suspicious of Docker Compose and the MySQL JDBC driver.

For data persistence, either a or is required.

links config is for solve network issues, it is the bridge of the server container and the db container. I have other application(a springboot application) works well on this mode.
A simple method is connect to the container of server, and check the network, then find out the issue is network or JDBC.
 
Newbie Spellweaver
Joined
Dec 7, 2015
Messages
68
Reaction score
2
nevermind, misunderstood the original post.
 
Last edited:
Newbie Spellweaver
Joined
May 1, 2008
Messages
55
Reaction score
1
I got everything working, but when I log in, it stuck at login screen. Any tips?
 
Newbie Spellweaver
Joined
Jul 11, 2018
Messages
15
Reaction score
7
Strange. Do you know if it's a server or client issue? Also, do you mind sharing your docker setup? I'm using 20.10.13 on Linux.
 
Back
Top