In this article, we are going to set up a Ragnarok Online Server on Ubuntu 14.04 x64. You can be logged in as root or a user with superuser privileges. It’s safer to set this up as a non-root user with sudo. In this tutorial, we’re going to use the rAthena server files.
If you’re using Windows and you have Ubuntu Server (VPS or Dedicated), you will need the following programs.
FileZilla
PuTTY
Text editor (Sublime or Notepad++ recommended)
apache2 – If you’re planning to use phpMyAdmin for remote MySQL access and setting up your website.
php5 – For web and phpMyAdmin.
phpMyAdmin – Remote MySQL access using a web browser.
mysql-server – our database for the game server.
mysql-client
git
make
gcc
libmysqlclient-dev
zlib1g-dev
libpcre3-dev – Optional, for PCRE support.
libssl-dev – Required, for compiling with MySQL 5.5.
Run these commands over SSH.
Root user:
apt-get install php5 phpmyadmin mysql-server mysql-client git make gcc libmysqlclient-dev zlib1g-dev libpcre3-devNon-root with sudo privileges:
sudo apt-get install php5 phpmyadmin mysql-server mysql-client git make gcc libmysqlclient-dev zlib1g-dev libpcre3-devAfter successfully installing the server requirements, let’s proceed with installing and configuring the server files.
Now, we’re going to get the latest updates of the rAthena server files. These are the files required for running a Ragnarok Online server. Other server files can be used, like Hercules and eAthena, but in this tutorial, we’re using rAthena. Run the command below to download the files.
git clone https://github.com/rathena/rathena.git ~/rAthenaThis will place all the files inside rAthena your current directory in the terminal.
To update the server files to the latest revision, run this command.
cd rAthena
git pullIn this part, we’re configuring MySQL for the database of our server. First, check if your MySQL Server is running.
service mysql statusIf it's not running, enter this command.
service mysqld startAfter running the commands above, open the MySQL console.
mysql -u root -pYou will be asked for your root password. After logging in, type the following commands to create the database for our server.
CREATE DATABASE (your Ragnarok database name); — We’ll name it
ragnarok.
mysql> CREATE DATABASE ragnarok;Then, create a new user for the Ragnarok DB and the log DB.
GRANT ALL ON ragnarok.* TO yourdatabaseusername@localhost IDENTIFIED BY “yourdesiredpassword”; — We will create a new user called admin with a password of 123456.
mysql> GRANT ALL ON ragnarok.* TO admin@localhost IDENTIFIED BY "123456";You can replace localhost with an IP address if you want the user to be able to access your MySQL server remotely.
Create a log database for the Ragnarok game logs.
CREATE DATABASE (your log database name) — We’ll name it
log.
mysql> CREATE DATABASE log;Set permissions for the user that we created earlier, named admin.
mysql> GRANT ALL ON log.* TO admin@localhost;Restore the required tables in your Ragnarok and log database. Update your password after -p accordingly.
mysql> quit;
mysql -u admin -p123456 ragnarok < /path/to/your/rathena folder/sql-files/main.sql
mysql -u admin -p123456 log < /path/to/your/rathena folder/sql-files/logs.sqlWe’re using phpMyAdmin, which we installed earlier, to access the database. Access phpMyAdmin through your web browser.
Select the ragnarok database and choose the login table. We can see that there’s one record in that table. Do not delete/modify it yet. It is used by the server. To create a game account, click the SQL tab while on the login table to open the query editor. Run the following query.
INSERT INTO ragnaroklogin account_id, userid, user_pass, sex, email, group_id, state, unban_time, expiration_time, logincount, lastlogin, last_ip, birthdate, character_slots, pincode, pincode_change, vip_time, old_group) VALUES ('2000000', 'admin', 'password123', 'M', 'email@email.com', '99', '0', '0', '0', '0', '0000-00-00 00:00:00', '', '0000-00-00', '9', '', '0', '0', '0');We have inserted a new user in the login table with the following information.
account_id = 2000000 (Always start with 2000000, then 2000001…)
userid = admin (Your in-game username)
user_pass = password123 (The password for your account)
sex = M (M or F, do not use S because it's just for the server)
email = email@email.com (Your account’s email, used for deleting character slots in-game)
group_id = 99 (refer to /rathena/conf/groups.conf and check the id lines. As for now, 99 to make this a GM account for special command usage in-game.)
character_slots = 9 (Number of characters that can be created per account)
Leave the other values as-is. Congratulations. You have successfully created your account for the game.
First, you must know your server’s IP address. You may already know this since it was already included in the server information of your AKLWEB HOST VPS. If you want to check it, type:
ifconfigLook for the eth0 inet addr:xxx.xxx.xxx.xxx part. xxx.xxx.xxx.xxx will be the IP address of your server. If you have Apache installed, you may access this to check if your web server is running.
In FileZilla, log in to your VPS with your server credentials and access the /rAthena/conf folder.
Edit char_athena.conf and map_athena.conf with your preferred text editor.
Edit char_athena.conf from:
// Login Server IP
// The character server connects to the login server using this IP address.
// NOTE: This is useful when you are running behind a firewall or are on
// a machine with multiple interfaces.
//login_ip: 127.0.0.1
// The character server listens on the interface with this IP address.
// NOTE: This allows you to run multiple servers on multiple interfaces
// while using the same ports for each server.
//bind_ip: 127.0.0.1
// Login Server Port
login_port: 6900
// Character Server IP
// The IP address that clients will use to connect.
// Set this to what your server's public IP address is.
//char_ip: 127.0.0.1 To:
// Login Server IP
// The character server connects to the login server using this IP address.
// NOTE: This is useful when you are running behind a firewall or are on
// a machine with multiple interfaces.
login_ip: xxx.xxx.xxx.xxx
// The character server listens on the interface with this IP address.
// NOTE: This allows you to run multiple servers on multiple interfaces
// while using the same ports for each server.
//bind_ip: 127.0.0.1
// Login Server Port
login_port: 6900
// Character Server IP
// The IP address that clients will use to connect.
// Set this to what your server's public IP address is.
char_ip: xxx.xxx.xxx.xxxWhere xxx.xxx.xxx.xxx is the IP address of your server.
In the inter_athena.txt file, make these changes:
// Global SQL settings
// overridden by local settings when the hostname is defined there
// (currently only the login-server reads/obeys these settings)
// MySQL Login server
login_server_ip: 127.0.0.1 // <- either 127.0.0.1 or your server's ip, we'll use 127.0.0.1 since it listens to own mySQL server, change it to IP if your mySQL Server is in different server.
login_server_port: 3306
login_server_id: ragnarok // <- change this to your mySQL User your created earlier
login_server_pw: ragnarok // <- its password
login_server_db: ragnarok // <- change this if your ragnarok db you set is different
login_codepage:
login_case_sensitive: no
ipban_db_ip: 127.0.0.1 // <- either 127.0.0.1 or your server's ip, we'll use 127.0.0.1 since it listens to own mySQL server, change it to IP if your mySQL Server is in different server.
ipban_db_port: 3306
ipban_db_id: ragnarok // <- change this to your mySQL User your created earlier
ipban_db_pw: ragnarok // <- its password
ipban_db_db: ragnarok // <- change this if your ragnarok db you set is different
ipban_codepage:
// MySQL Character server
char_server_ip: 127.0.0.1 // <- either 127.0.0.1 or your server's ip, we'll use 127.0.0.1 since it listens to own mySQL server, change it to IP if your mySQL Server is in different server.
char_server_port: 3306
char_server_id: ragnarok // <- change this to your mySQL User your created earlier
char_server_pw: ragnarok // <- its password
char_server_db: ragnarok // <- change this if your ragnarok db you set is different
// MySQL Map Server
map_server_ip: 127.0.0.1 // <- either 127.0.0.1 or your server's ip, we'll use 127.0.0.1 since it listens to own mySQL server, change it to IP if your mySQL Server is in different server.
map_server_port: 3306
map_server_id: ragnarok // <- change this to your mySQL User your created earlier
map_server_pw: ragnarok // <- its password
map_server_db: ragnarok // <- change this if your ragnarok db you set is different
// MySQL Log Database
log_db_ip: 127.0.0.1 // <- either 127.0.0.1 or your server's ip, we'll use 127.0.0.1 since it listens to own mySQL server, change it to IP if your mySQL Server is in different server.
log_db_port: 3306
log_db_id: ragnarok // <- change this to your mySQL User your created earlier
log_db_pw: ragnarok // <- its password
log_db_db: log // <- change this if your log db you set is different
log_codepage:
log_login_db: loginlogIn the map_athena.txt file, make these changes:
// Character Server IP
// The map server connects to the character server using this IP address.
// NOTE: This is useful when you are running behind a firewall or are on
// a machine with multiple interfaces.
char_ip: x.x.x.x
// The map server listens on the interface with this IP address.
// NOTE: This allows you to run multiple servers on multiple interfaces
// while using the same ports for each server.
//bind_ip: 127.0.0.1
// Character Server Port
char_port: 6121
// Map Server IP
// The IP address that clients will use to connect.
// Set this to what your server's public IP address is.
map_ip: x.x.x.x
// Map Server Port
map_port: 5121Where xxx.xxx.xxx.xxx is the IP address of your server.
Open subnet_athena.txt and set the IP Address.
subnet: 255.0.0.0:x.x.x.x:x.x.x.xAnd we’re done configuring the server.
Now, time to compile the server! In this part, you need to know what Ragnarok Online client version you’ll be using to connect to the server. For client setup, visit this page.
After you decide which client to use, let’s edit some files. Let’s just say, we chose to use the 08072013 client, since this is the stable renewal client.
Run this command in the terminal:
./configure --enable-packetver=YYYYMMDDReplace YYYYMMDD with the client date (reformatted).
./configure --enable-packetver=20130807The configure script will perform necessary tests and generate makefiles for our server.
After that, compile the source code by entering these commands:
make server
chmod a+x login-server && chmod a+x char-server && chmod a+x map-server… and wait for it to finish. If you make modifications to the files inside the /rAthena/src folder, you will need to recompile it.
In FileZilla, point to the /rAthena/db folder and edit packet_db.txt.
Find this line and edit:
//
//packet_db_ver: 46
packet_db_ver: default
packet_keys_use: defaultSince we’re using the 2013-08-07Ragexe client, find the specified client below and look for its packet_ver and packet_keys.
//2013-08-07Ragexe
packet_ver: 45
packet_keys: 0x7E241DE0,0x5E805580,0x3D807D80 // [Shakto]Replace the default value of packet_db_ver and packet_keys_use with the specified client values.
//
//packet_db_ver: 46
packet_db_ver: 45
packet_keys_use: 0x7E241DE0,0x5E805580,0x3D807D80And save. This is for specifying which client is to be used by players. We don’t want them to be able to use their version of choice.
After compiling the server files, use these commands to fire up the server.
To start:
./athena-start startTo stop:
./athena-start stopTo restart:
./athena-start restartIf you have encountered an error like this:
-bash: ./athena-start: /bin/sh^M: bad interpreter… then you need to install dos2unix to convert the script.
apt-get install dos2unix
dos2unix athena-start
chmod a+x athena-startAfter running those commands, start the server again.
Now that we’re done with the server setup, you just need to set your Ragnarok client to point to your VPS Server. Enjoy playing on your new server!