Jump to content
  • 0

hosting Hercules on Google Cloud with CentOS 8



Over the last few days I have been playing with Google Cloud services

because Google cloud currently offers $300 free credit upon signing up

yes, FREE $300 credit

and thus my journey trying to host hercules server on a VPS has begun


all you need is a valid Debit/Credit card number ...

of course you have to be an adult to try the hosting service ... right ?





oh and, don't worry, you can always cancel it anytime



after playing with it, I found the Windows option is too expensive, and thus trying to learn the Linux option


This guide is actually demonstrate by using a trash gmail account that can throw away later

I don't mind all the credentials are shown in the screenshot, when I click the Open topic button I have deleted this project on Google Cloud



Step 1. Download Putty and WinCP




Step 2. Run Google Cloud

2.1 login to your Google cloud project

https://github.com/AnnieRuru/customs/blob/master/server hosting/2.png


2.2 first you need to link your credit card to this google cloud

https://github.com/AnnieRuru/customs/blob/master/server hosting/3.png.

https://github.com/AnnieRuru/customs/blob/master/server hosting/4.png

select the billing option to the debit/credit number you input earlier

https://github.com/AnnieRuru/customs/blob/master/server hosting/5.png

this billing information is very important, you need to check this once in a while to stop unwanted services <-- please scroll to the right


2.3 pin these 3

- billing

- compute engine

- VPC network

https://github.com/AnnieRuru/customs/blob/master/server hosting/6.png


2.4 now time to create a VPS, select Compute Engine

https://github.com/AnnieRuru/customs/blob/master/server hosting/7.png


enter all the necessary information

1. the Virtual machine name

2. your nearest location

3. the spec of the machine

https://github.com/AnnieRuru/customs/blob/master/server hosting/8.png


PS: I tested the cheapest option, N1 series, f1 micro 614MB memory and E2 micro, 1GB memory

when compiling hercules later, putty just stop ... I think it run out of memory

... hercules should have mention a recommendation needs at least 2GB memory to run



4. Select Boot Disk as CentOS 8

https://github.com/AnnieRuru/customs/blob/master/server hosting/9.png

5. select allow HTTP and HTTPS

https://github.com/AnnieRuru/customs/blob/master/server hosting/10.png



6. Click Security tab

https://github.com/AnnieRuru/customs/blob/master/server hosting/11.png

needs to 'Enter public SSH key'


run Putty Key Generator and click Generate

https://github.com/AnnieRuru/customs/blob/master/server hosting/12.png


1. change the 'key comment' as it will become user name

2. save private key to desktop

3. copy the field

https://github.com/AnnieRuru/customs/blob/master/server hosting/13.png


paste into Google cloud

https://github.com/AnnieRuru/customs/blob/master/server hosting/14.png



select Networking tab

https://github.com/AnnieRuru/customs/blob/master/server hosting/15.png

create a static IP address

https://github.com/AnnieRuru/customs/blob/master/server hosting/16.png

choose standard tier


after everything done click [Confirm]

https://github.com/AnnieRuru/customs/blob/master/server hosting/17.png

and you get your virtual machine running

https://github.com/AnnieRuru/customs/blob/master/server hosting/18.png



once your server up and running

run Putty to connect to this server

https://github.com/AnnieRuru/customs/blob/master/server hosting/19.png

1. scroll down, expand 'SSH' to select 'Auth',

2. then load the file you saved earlier by PuttyGen

https://github.com/AnnieRuru/customs/blob/master/server hosting/20.png
3. enter the public IP address,

4. then click open


https://github.com/AnnieRuru/customs/blob/master/server hosting/21.png

it will prompt you with security alert, just click yes



login with your user name

https://github.com/AnnieRuru/customs/blob/master/server hosting/22.png


The very first command you should run is change the password

sudo passwd root

ok Windows Users, don't freak out like me :P

there are no ******** when you input the password, this is Linux not Windows

just input normally ... and press Enter key, it works that way

https://github.com/AnnieRuru/customs/blob/master/server hosting/23.png

then do the same with your username

sudo passwd annie


3. update the OS and install all necessary product


3.1 run all these commands

sudo yum update
sudo yum install gcc make mysql mysql-devel mysql-server pcre-devel git zlib-devel
Transaction Summary
Install  89 Packages

Total download size: 108 M
Installed size: 395 M
Is this ok [y/N]:

Press 'Y' key



in the meantime, while this might take awhile, try login WinCP

https://github.com/AnnieRuru/customs/blob/master/server hosting/24.png

click new session, then click advance

https://github.com/AnnieRuru/customs/blob/master/server hosting/25.png

select 'Authentication' and load the Putty Gen file again

https://github.com/AnnieRuru/customs/blob/master/server hosting/26.png

just another warning

https://github.com/AnnieRuru/customs/blob/master/server hosting/27.png



3.3 Download Hercules

git clone https://github.com/HerculesWS/Hercules.git ~/Hercules


4. SQL


4.1 Start SQL service

sudo systemctl start mysqld.service


4.2 login as root

mysql -u root -p

Enter password, just press enter

default centOS 8 preinstalled MySQL, root has no password


Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.21 Source distribution

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


4.3 create database


4.4 select hercules database as default

USE `hercules`;

4.5 create another user, not recommend to connect as root

CREATE USER 'annie'@'localhost' IDENTIFIED BY '1234';

4.6 grant this user privilege


4.7 then quit


it should show like this

mysql> quit
[[email protected] ~]$

4.8 goto sql-files directory

cd /home/annie/Hercules/sql-files/

and run all these

mysql -u root -p hercules < main.sql
mysql -u root -p hercules < logs.sql
mysql -u root -p hercules < item_db_re.sql
mysql -u root -p hercules < mob_db_re.sql
mysql -u root -p hercules < mob_skill_db_re.sql

it should show like this

[[email protected] ~]$ cd /home/annie/Hercules/sql-files/
[[email protected] sql-files]$ mysql -u root -p hercules < main.sql
Enter password:
[[email protected] sql-files]$ mysql -u root -p hercules < logs.sql
Enter password:
[[email protected] sql-files]$ mysql -u root -p hercules < item_db_re.sql
Enter password:
[[email protected] sql-files]$ mysql -u root -p hercules < mob_db_re.sql
Enter password:
[[email protected] sql-files]$ mysql -u root -p hercules < mob_skill_db_re.sql
Enter password:
[[email protected] sql-files]$

4.9 go back login mysql and change inter-server connection password from s1/p1 into qwer/asdf

mysql -u root -p


UPDATE `hercules`.`login` SET `userid` = 'qwer', `user_pass` = 'asdf' WHERE `account_id` = 1;


5. Compile Hercules


go back to annie/hercules folder

cd /home/annie/Hercules/

5.1 type ./configure



OK STOP, many things can go wrong here, I stuck here for a few days and searching on both rathena and hercules forum for answers

the correct output from putty should be this

checking mysql.h presence... yes
checking for mysql.h... yes
checking whether my_bool is supported (MySQL)... no (converting my_bool to bool)
checking MySQL library (required)... yes (8.0.21)
checking PCRE library... checking pcre.h usability... yes
checking pcre.h presence... yes
checking for pcre.h... yes
checking for library containing pcre_study... -lpcre
checking for doxygen... no
checking for perl... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/common/Makefile
config.status: creating 3rdparty/mt19937ar/Makefile
config.status: creating 3rdparty/libconfig/Makefile
config.status: creating 3rdparty/libbacktrace/Makefile
config.status: creating 3rdparty/libbacktrace/backtrace-supported.h
config.status: creating src/char/Makefile
config.status: creating src/login/Makefile
config.status: creating src/map/Makefile
config.status: creating src/plugins/Makefile
config.status: creating src/test/Makefile
config.status: creating tools/HPMHookGen/Makefile
config.status: creating tools/doxygen/Makefile
[[email protected] Hercules]$

if it doesn't show config.status: at the end, open a new topic in Linux support

if it's the same as mine, then can proceed with


5.2 compile hercules

make sql

finally compile should show like this

        CC      party.c
        CC      path.c
        CC      pc.c
        CC      pc_groups.c
        CC      pet.c
        CC      quest.c
        CC      refine.c
        CC      rodex.c
        CC      script.c
        CC      searchstore.c
        CC      skill.c
        CC      status.c
        CC      storage.c
        CC      stylist.c
        CC      trade.c
        CC      unit.c
        CC      vending.c
        LD      map-server
make[1]: Leaving directory '/home/annie/Hercules/src/map'
building conf/import folder...
[[email protected] Hercules]$


6. configure Hercules


6.1 start hercules by

./athena-start start

https://github.com/AnnieRuru/customs/blob/master/server hosting/28.png

of course the reason why connect to SQL failed is because haven't configure Hercules so ....

stop it from running for a moment

./athena-start stop


6.2 login to WinCP

https://github.com/AnnieRuru/customs/blob/master/server hosting/29.png

... I will assume you know how to change your public IP address on hercules

the file you should change are

  • map-server.conf
    - userid: "qwer"
    - passwd: "asdf"
    - map_ip: ""
    - char_ip: ""
  • char-server.conf
    - userid: "qwer"
    - passwd: "asdf"
    - login_ip: ""
    - char_ip: ""
  • conf\global\sql_connections.conf
    -db_hostname: "localhost"
    - db_port: 3306
    - db_username: "annie"
    - db_password: "1234"
    - db_database: "hercules"
  • conf\network.conf
    .....<let me test this thing again> ....


<--- I will assume everyone reading this guide already know how to host an offline server, if not click here -->


now run ./athena-start start again, and this time map-server couldn't connect to char-server


7. Configure firewall


7.1 run these 3 commands

sudo firewall-cmd --permanent --add-port 6900/tcp
sudo firewall-cmd --permanent --add-port 6121/tcp
sudo firewall-cmd --permanent --add-port 5121/tcp

7.2 reload the firewall settings

sudo firewall-cmd --reload

7.3 go back to Google Cloud,

https://github.com/AnnieRuru/customs/blob/master/server hosting/30.png

to create firewall

https://github.com/AnnieRuru/customs/blob/master/server hosting/31.png

configure the firewall

https://github.com/AnnieRuru/customs/blob/master/server hosting/32.png

2. & 3. configure firewall only to this project

https://github.com/AnnieRuru/customs/blob/master/server hosting/33.png


4. at 'tcp:' tab, only allow these 3 ports

https://github.com/AnnieRuru/customs/blob/master/server hosting/34.png



run ./athena-start start again.

then goto https://portchecker.co/ and check your port is open

https://github.com/AnnieRuru/customs/blob/master/server hosting/35.png

And Finally go to your client edit data/sclientinfo.xml to the WAN IP and


I can connect my client to google cloud


PS: the port checker website only shows Port 6900 is OPEN. only if fulfill these 3 conditions

1. enable firewall setting on CentOS

2. enable firewall setting on Google Cloud

3. run the emulator by ./athena-start



Ok now you can start worry about security issue like adding additional user in CentOS


google cloud doesn't seem to allow login that way -> https://stackoverflow.com/questions/52503453/how-to-login-gcp-console-without-ssh
and mysql root account password change ...

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '1234';


need more research



Connect to MySQL in CentOS 8 using Window's MySQL Workbench


1. add another connection

https://github.com/AnnieRuru/customs/blob/master/server hosting/mysql1.png


2. under 'Connection Method', select 'Standard TCP/IP over SSH'
https://github.com/AnnieRuru/customs/blob/master/server hosting/mysql2.png


3. configure these fields

3.1 SSH hostname is the server IP address

3.2 SSH username is the name you created with PuttyGen

3.3 SSH keyfile needs a conversion with PuttyGen

3.4 and Click [Test Connection]

https://github.com/AnnieRuru/customs/blob/master/server hosting/mysql3.png


4. the SSH keyfile needs to be convert from PuttyGen

4.1 load existing private key, in this case was 'annie.ppk'

4.2 click conversion and save as 'annie' without file extension

https://github.com/AnnieRuru/customs/blob/master/server hosting/mysql4.png


5. if successful it will show like this

https://github.com/AnnieRuru/customs/blob/master/server hosting/mysql5.png


then you can login into MySQL in CentOS


did I forgot to mention needs to open the port 3306 in CentOS and Google Cloud ? refer back to step 7


Reference: https://stackoverflow.com/questions/21527743/mysql-workbench-version-6-0-8-ssh-authentication-issue



After thought :

Overall I'm very satisfy with Google Cloud service,

1. free $300 credit to spend

2. can always register trash gmail account to make the credit infinite
  - of course the IP will always change if you do so

3. very low latency from Malaysia connect to Singapore - just 30~40ms ping


I haven't try OVH which everybody is recommending, but they doesn't offer immediate free credit for me to test so meh .....


and I notice Hercules's wiki CentOS guide is broken, maybe I'll fix it



- offtopic -

over last few days playing with google cloud, when I visit Youtube, all my advertisement become Monday.com etc etc group project stuffs

google really knows how to collect my data

Edited by AnnieRuru

Share this post

Link to post
Share on other sites

13 answers to this question

Recommended Posts

  • 0

The configuration of the machine they choose or can we feel free to assemble the cloud?

Share this post

Link to post
Share on other sites
  • 0
4 hours ago, Psyz said:

The configuration of the machine they choose or can we feel free to assemble the cloud?

$300 free credit to spend, all you need is a valid debit/credit card

once validate, you can start playing with it

you can create multiple machine on a single project


answer is -> we can create the machine we like within credit limit

here-> https://github.com/AnnieRuru/customs/blob/master/server hosting/9.png

just check the credit balance regularly and you understand how Google charge you,

when the limit almost up, create another gmail account to play with it again


EDIT: I saw your other post about choosing debian, if you are familiar with it then choose boot-disk as debian


OVH seems to ... order a machine and need to pay up front to use them, so yeah different VPS different method




you can even choose Windows Server Edition 2019 (last one, has desktop interface)

and I use window's 'Remote Desktop Connection' connect to it


CentOS 8 (and debian etc) cost $15 per month

Windows server edition with desktop interface (needs 4GB) cost $60 per month


its so obvious Linux option is better

Edited by AnnieRuru

Share this post

Link to post
Share on other sites
  • 0

is there anyway you can help me with this error



i already followed all the instruction including changing the s1/p1 and ip's.



NVM i fixed it easily just by restarting it.


the next issue is that. When i login it freezes my client.

is it because im using this files than the files above which is this git clone https://github.com/HerculesWS/Hercules.git  ~/Hercules ?? and also what client should i use for this git clone.?


Edited by buchachi11

Share this post

Link to post
Share on other sites
  • 0

@buchachi11 I don't know why you mentioned the RO offline pack here.

But I want to admit that basic principle the same and on Linux and Windows.

If you can set up RO offline on Windows (https://gist.github.com/anacondaq/3eae8e4afb5d3c3880d08b95b2c54b78) the same, you can do on Linux.


What do you need for running the emulator?

  • operation system where everything will be set up (windows or Linux, even macOS)
  • emulator files cloned by git from Github (git clone https://github.com/HerculesWS/Hercules.git)
  • installed MySQL or MariaDB server on your operation system
  • created databases inside MariaDB or MySQL for main and logs databases from emulator above (stored in /SQL/ folder)
  • You need to create database users who will have access rights to manipulate data (select, insert, update, delete, drop, alter) inside databases. (easy to do with PHPMyAdmin)
  • You need to import database files from the emulator folder (/sql/main.sql, logs.sql) into creating your new databases.
  • Go to the login table and edit s1/q1, go to emulator folder /conf/, and find s1/q1 for login and pass and edit to the same value.
  • find in conf folder MySQL connection configuration data and setup-up users/passwords that you made above for MySQL
  • . You need to install required for complications and running tools for your operating system. (on windows VS Community 2019, on Linux different set of tools + GCC)
  • compile and run, if no errors in running windows -> everything is done properly.


More details you can find in @AnnieRuru guide above.


How to achieve that?




Just install any operating system by using guides on youtube, very, very simple.

And then do what the guide said, do not afraid to do experiments, destroy everything if you broke something, and start again.



P.S. if you do not know what operating system to pick.

Short answer: there are yum and apt-based systems.

They have different structures and experiences but doing the same.


Fedora, OpenSUSE for one type. (yum)

ubuntu, linuxmint for the second type. (apt)


pick any.


Edited by anacondaq

Share this post

Link to post
Share on other sites
  • 0

Hi, Annie.


Can we use the window instance instead of using a centos8 instance?


A reply is appreciated.


Thank you.

Share this post

Link to post
Share on other sites
  • 0

windows is bad for any servers.

you can use any linux version what your hosting support.


Share this post

Link to post
Share on other sites
  • 0
On 4/11/2022 at 6:12 PM, Zki- said:

Hi, Annie.


Can we use the window instance instead of using a centos8 instance?


A reply is appreciated.


Thank you.

Yes, although some parts of the guide will have to be changed to adopt the setup for Windows. But yes, it should be okay but take note that Windows uses a bit more resources like ram unlike the Linux distributions.

Share this post

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Answer this question...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Create New...

Important Information

By using this site, you agree to our Terms of Use.