-
Content Count
1677 -
Joined
-
Last visited
-
Days Won
245
Reputation Activity
-
AnnieRuru got a reaction from Hyroshima in 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
https://www.putty.org/.
https://winscp.net/eng/download.php
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
2.4.1
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
2.4.2
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
2.4.3
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
2.4.4
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
2.5
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
2.6
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
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
3.2
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 owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> 4.3 create database
CREATE DATABASE hercules; 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
GRANT SELECT,INSERT,UPDATE,DELETE ON * TO 'annie'@'localhost'; 4.7 then quit
quit it should show like this
mysql> quit Bye [annie@centos ~]$ 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
[annie@centos ~]$ cd /home/annie/Hercules/sql-files/ [annie@centos sql-files]$ mysql -u root -p hercules < main.sql Enter password: [annie@centos sql-files]$ mysql -u root -p hercules < logs.sql Enter password: [annie@centos sql-files]$ mysql -u root -p hercules < item_db_re.sql Enter password: [annie@centos sql-files]$ mysql -u root -p hercules < mob_db_re.sql Enter password: [annie@centos sql-files]$ mysql -u root -p hercules < mob_skill_db_re.sql Enter password: [annie@centos sql-files]$ 4.9 go back login mysql and change inter-server connection password from s1/p1 into qwer/asdf
mysql -u root -p and
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
./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 [annie@centos 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... [annie@centos 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: "35.213.138.42"
- char_ip: "35.213.138.42" char-server.conf
- userid: "qwer"
- passwd: "asdf"
- login_ip: "35.213.138.42"
- char_ip: "35.213.138.42" 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
7.4
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
VIOLA !! DONE !!
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
https://www.digitalocean.com/community/tutorials/how-to-add-and-delete-users-on-a-centos-7-server
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'; etc...etc...
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
https://github.com/HerculesWS/Hercules/wiki/Installation-(CentOS)
- 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
-
AnnieRuru got a reaction from ljsb in 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
https://www.putty.org/.
https://winscp.net/eng/download.php
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
2.4.1
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
2.4.2
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
2.4.3
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
2.4.4
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
2.5
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
2.6
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
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
3.2
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 owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> 4.3 create database
CREATE DATABASE hercules; 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
GRANT SELECT,INSERT,UPDATE,DELETE ON * TO 'annie'@'localhost'; 4.7 then quit
quit it should show like this
mysql> quit Bye [annie@centos ~]$ 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
[annie@centos ~]$ cd /home/annie/Hercules/sql-files/ [annie@centos sql-files]$ mysql -u root -p hercules < main.sql Enter password: [annie@centos sql-files]$ mysql -u root -p hercules < logs.sql Enter password: [annie@centos sql-files]$ mysql -u root -p hercules < item_db_re.sql Enter password: [annie@centos sql-files]$ mysql -u root -p hercules < mob_db_re.sql Enter password: [annie@centos sql-files]$ mysql -u root -p hercules < mob_skill_db_re.sql Enter password: [annie@centos sql-files]$ 4.9 go back login mysql and change inter-server connection password from s1/p1 into qwer/asdf
mysql -u root -p and
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
./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 [annie@centos 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... [annie@centos 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: "35.213.138.42"
- char_ip: "35.213.138.42" char-server.conf
- userid: "qwer"
- passwd: "asdf"
- login_ip: "35.213.138.42"
- char_ip: "35.213.138.42" 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
7.4
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
VIOLA !! DONE !!
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
https://www.digitalocean.com/community/tutorials/how-to-add-and-delete-users-on-a-centos-7-server
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'; etc...etc...
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
https://github.com/HerculesWS/Hercules/wiki/Installation-(CentOS)
- 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
-
AnnieRuru got a reaction from sonyk2 in 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
https://www.putty.org/.
https://winscp.net/eng/download.php
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
2.4.1
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
2.4.2
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
2.4.3
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
2.4.4
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
2.5
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
2.6
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
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
3.2
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 owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> 4.3 create database
CREATE DATABASE hercules; 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
GRANT SELECT,INSERT,UPDATE,DELETE ON * TO 'annie'@'localhost'; 4.7 then quit
quit it should show like this
mysql> quit Bye [annie@centos ~]$ 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
[annie@centos ~]$ cd /home/annie/Hercules/sql-files/ [annie@centos sql-files]$ mysql -u root -p hercules < main.sql Enter password: [annie@centos sql-files]$ mysql -u root -p hercules < logs.sql Enter password: [annie@centos sql-files]$ mysql -u root -p hercules < item_db_re.sql Enter password: [annie@centos sql-files]$ mysql -u root -p hercules < mob_db_re.sql Enter password: [annie@centos sql-files]$ mysql -u root -p hercules < mob_skill_db_re.sql Enter password: [annie@centos sql-files]$ 4.9 go back login mysql and change inter-server connection password from s1/p1 into qwer/asdf
mysql -u root -p and
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
./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 [annie@centos 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... [annie@centos 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: "35.213.138.42"
- char_ip: "35.213.138.42" char-server.conf
- userid: "qwer"
- passwd: "asdf"
- login_ip: "35.213.138.42"
- char_ip: "35.213.138.42" 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
7.4
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
VIOLA !! DONE !!
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
https://www.digitalocean.com/community/tutorials/how-to-add-and-delete-users-on-a-centos-7-server
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'; etc...etc...
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
https://github.com/HerculesWS/Hercules/wiki/Installation-(CentOS)
- 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
-
AnnieRuru got a reaction from Neffletics in 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
https://www.putty.org/.
https://winscp.net/eng/download.php
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
2.4.1
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
2.4.2
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
2.4.3
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
2.4.4
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
2.5
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
2.6
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
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
3.2
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 owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> 4.3 create database
CREATE DATABASE hercules; 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
GRANT SELECT,INSERT,UPDATE,DELETE ON * TO 'annie'@'localhost'; 4.7 then quit
quit it should show like this
mysql> quit Bye [annie@centos ~]$ 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
[annie@centos ~]$ cd /home/annie/Hercules/sql-files/ [annie@centos sql-files]$ mysql -u root -p hercules < main.sql Enter password: [annie@centos sql-files]$ mysql -u root -p hercules < logs.sql Enter password: [annie@centos sql-files]$ mysql -u root -p hercules < item_db_re.sql Enter password: [annie@centos sql-files]$ mysql -u root -p hercules < mob_db_re.sql Enter password: [annie@centos sql-files]$ mysql -u root -p hercules < mob_skill_db_re.sql Enter password: [annie@centos sql-files]$ 4.9 go back login mysql and change inter-server connection password from s1/p1 into qwer/asdf
mysql -u root -p and
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
./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 [annie@centos 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... [annie@centos 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: "35.213.138.42"
- char_ip: "35.213.138.42" char-server.conf
- userid: "qwer"
- passwd: "asdf"
- login_ip: "35.213.138.42"
- char_ip: "35.213.138.42" 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
7.4
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
VIOLA !! DONE !!
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
https://www.digitalocean.com/community/tutorials/how-to-add-and-delete-users-on-a-centos-7-server
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'; etc...etc...
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
https://github.com/HerculesWS/Hercules/wiki/Installation-(CentOS)
- 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
-
AnnieRuru got a reaction from evilpuncker in 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
https://www.putty.org/.
https://winscp.net/eng/download.php
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
2.4.1
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
2.4.2
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
2.4.3
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
2.4.4
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
2.5
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
2.6
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
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
3.2
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 owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> 4.3 create database
CREATE DATABASE hercules; 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
GRANT SELECT,INSERT,UPDATE,DELETE ON * TO 'annie'@'localhost'; 4.7 then quit
quit it should show like this
mysql> quit Bye [annie@centos ~]$ 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
[annie@centos ~]$ cd /home/annie/Hercules/sql-files/ [annie@centos sql-files]$ mysql -u root -p hercules < main.sql Enter password: [annie@centos sql-files]$ mysql -u root -p hercules < logs.sql Enter password: [annie@centos sql-files]$ mysql -u root -p hercules < item_db_re.sql Enter password: [annie@centos sql-files]$ mysql -u root -p hercules < mob_db_re.sql Enter password: [annie@centos sql-files]$ mysql -u root -p hercules < mob_skill_db_re.sql Enter password: [annie@centos sql-files]$ 4.9 go back login mysql and change inter-server connection password from s1/p1 into qwer/asdf
mysql -u root -p and
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
./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 [annie@centos 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... [annie@centos 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: "35.213.138.42"
- char_ip: "35.213.138.42" char-server.conf
- userid: "qwer"
- passwd: "asdf"
- login_ip: "35.213.138.42"
- char_ip: "35.213.138.42" 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
7.4
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
VIOLA !! DONE !!
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
https://www.digitalocean.com/community/tutorials/how-to-add-and-delete-users-on-a-centos-7-server
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'; etc...etc...
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
https://github.com/HerculesWS/Hercules/wiki/Installation-(CentOS)
- 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
-
AnnieRuru got a reaction from MikZ in Party Match
originate from rathena
Download 1.0
script
Description -> copy paste from rathena forum
by the way I added OnPCUseSkillEvent feature
its totally up to you to add this or not, but I found it's very convenient after add them
having a cursor to immediately select the player I want without typing the name out
-
AnnieRuru got a reaction from astralprojection in Charms
1.6 - plugin
- fix it run status_calc_pc on every charms pickup and drop
- fix OnEquipScript doesn't run when player login
- fix nullpo, it wasn't needed at all
in other words, fix everything, hopefully no more bug or run extra stuffs
and ... its better to loop player's inventory count rather than run whole status_calc_pc thingy, way more resource friendly
-
AnnieRuru got a reaction from Neffletics in Party Match
originate from rathena
Download 1.0
script
Description -> copy paste from rathena forum
by the way I added OnPCUseSkillEvent feature
its totally up to you to add this or not, but I found it's very convenient after add them
having a cursor to immediately select the player I want without typing the name out
-
AnnieRuru reacted to astralprojection in Charms
charm.c: In function 'npc_parse_unknown_mapflag_pre': charm.c:173:31: warning: declaration of 'cidata' shadows a previous local [-Wshadow] struct charm_item_data *cidata = getFromITEMDATA(idata, 0); ^ charm.c:131:26: warning: shadowed declaration is here [-Wshadow] struct charm_item_data *cidata = NULL; ^ charm.c:131:26: warning: unused variable 'cidata' [-Wunused-variable] Some minor warning
-
-
AnnieRuru got a reaction from freezing1 in @packetfilter
I found this in src\map\packet_struct.h
struct PACKET_ZC_USE_ITEM_ACK { int16 packetType; int16 index; #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 uint32 itemId; uint32 AID; #elif PACKETVER >= 3 uint16 itemId; uint32 AID; #endif int16 amount; uint8 result; } __attribute__((packed)); so client version 20181121 below uses `RBUFL(buf, 6)`, anything above use `RBUFL(buf, 8)`
1.0 - plugin
- introduce type [D], direction packet, and existing Dance/songs move to type `[M]usic`
- no longer use nested IF-ELSE, use switch statement on the packet header for faster read speed
- fix [I.]tem type throw nullpo error on 2018 client
- add Caution as a warning that certain packet filter wont work correctly
and I guess this is finally over
time to mention everyone that has PM me about this project
@raPalooza~
@Azhura
@freezing1
@xJhay
@Kuroyama
@fiction
@Skyzone
@cusco ? <-- from discord
-
AnnieRuru got a reaction from xJhay in @packetfilter
I found this in src\map\packet_struct.h
struct PACKET_ZC_USE_ITEM_ACK { int16 packetType; int16 index; #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 uint32 itemId; uint32 AID; #elif PACKETVER >= 3 uint16 itemId; uint32 AID; #endif int16 amount; uint8 result; } __attribute__((packed)); so client version 20181121 below uses `RBUFL(buf, 6)`, anything above use `RBUFL(buf, 8)`
1.0 - plugin
- introduce type [D], direction packet, and existing Dance/songs move to type `[M]usic`
- no longer use nested IF-ELSE, use switch statement on the packet header for faster read speed
- fix [I.]tem type throw nullpo error on 2018 client
- add Caution as a warning that certain packet filter wont work correctly
and I guess this is finally over
time to mention everyone that has PM me about this project
@raPalooza~
@Azhura
@freezing1
@xJhay
@Kuroyama
@fiction
@Skyzone
@cusco ? <-- from discord
-
-
-
AnnieRuru got a reaction from fiction in @packetfilter
I found this in src\map\packet_struct.h
struct PACKET_ZC_USE_ITEM_ACK { int16 packetType; int16 index; #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 uint32 itemId; uint32 AID; #elif PACKETVER >= 3 uint16 itemId; uint32 AID; #endif int16 amount; uint8 result; } __attribute__((packed)); so client version 20181121 below uses `RBUFL(buf, 6)`, anything above use `RBUFL(buf, 8)`
1.0 - plugin
- introduce type [D], direction packet, and existing Dance/songs move to type `[M]usic`
- no longer use nested IF-ELSE, use switch statement on the packet header for faster read speed
- fix [I.]tem type throw nullpo error on 2018 client
- add Caution as a warning that certain packet filter wont work correctly
and I guess this is finally over
time to mention everyone that has PM me about this project
@raPalooza~
@Azhura
@freezing1
@xJhay
@Kuroyama
@fiction
@Skyzone
@cusco ? <-- from discord
-
AnnieRuru got a reaction from bWolfie in @packetfilter
No more Work in Progress, Please report if there are any bug
Download: 1.0a [Complete]
plugin
What is `@packetfilter` ?
`@packetfilter` is a custom mod originate from eamod
https://github.com/zephyrus-cr/eamod/blob/master/Servers/rAthena/conf/groups.conf#L418-L422
it can actually reduce lag on your live server during woe depends on how many players activate it
it totally depends on the player's side, community effort that every player should together turn on the `@packetfilter` to reduce massive lag during woe
this modification is actually very famous and there are members willingly to pay for it
https://rathena.org/board/topic/121200-packetfilter-battleinfo/
https://rathena.org/board/topic/123203-battleinfo-packetfilter/
https://rathena.org/board/topic/111797-packetfilter-zepyhrus-ramod/
https://rathena.org/board/topic/79995-buy-noactnodelay-partybuff-src-as-it-was-on-pro-ro-or-packetfilter/
this `@packetfilter` is unlike the one you are having, or that is circulating on rathena forum
this one has been written entirely from scratch and added some other flags that the original don't
for example,
`@packetfilter COHM EOHM`
allow block normal chat and emotion from non-related players, pets, homunculus and monsters
but this doesn't block normal chat from party/guild members
a full list of flags are
C = ignore normal Chat, including Dancer's scream, Bard's frost joke, and pet's talk (pet start to talk when intimacy > 900) E = ignore emotion, including monster and pet emotion (but NOT pet performance) I = ignore Item use effect A = ignore normal Attack animation (based on receiving side), your own attack animation are always shown B = Buffing skill animations (based on receiving side), your own casting animation are always shown S = Status effect T = offensive single Target skill/spell animations (based on receiving side), your own casting animation are always shown G = Ground based skills (eg:storm gust), your own casting animation are always shown M = Music dance/songs from Bard/Dancer D = Direction. Recommend filter on Party/Guild type and not enemies. Highly Recommend for supportive type Class. after the Main type, also support additional flags
S = Self P = Party G = Guild B = Battleground C = Clan O = Other players, none of the above H = Homunculus/pets/elementals/mercenary and player's @summon M = Monsters
Why This plugin doesn't block Kaite or Energy Coat ?
2 reasons
No.1 - currently there is a bug with plugin,
struct packet_spawn_unit *p = (struct packet_spawn_unit*)RBUFP(buf, 0); this line will throw error on Linux
so no choice, maybe I'll make a bug report
this bug also has been reported on Dastgir's `@noview`
No.2 - just set p->virtue = 0; isn't really blocking the packet
this goes against the very principle of this plugin, which is NOT send certain packet to the client
OPT3 (including OPT3_KAITE | OPT3_ENERGYCOAT | OPT3_SOULLINK) is part of the idle_unitType, unit_walkingType and spawn_unitType function
and blocking those 3 packet entirely is stupid
in case you don't understand, look under clif_set_unit_walking and clif_set_unit_idle function inside src\map\clif.c file
p.GUID = g_id; p.GEmblemVer = status->get_emblem_id(bl); p.honor = (sd) ? sd->status.manner : 0; // p.virtue = (sc) ? sc->opt3 : 0; <-- change this line p.virtue = 0; p.isPKModeON = (sd && sd->status.karma) ? 1 : 0; p.sex = vd->sex;
Note: about [D]irection type packet
try add a ShowDebug inside clif->send
src/map/clif.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/map/clif.c b/src/map/clif.c index ab3c4422a..9e245f335 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -450,6 +450,7 @@ static bool clif_send(const void *buf, int len, struct block_list *bl, enum send return true; } +ShowDebug("source:%s buf:0x%x send_target:%d\n", (sd != NULL)? sd->status.name : "NULL", RBUFW(buf, 0), type); switch(type) { case ALL_CLIENT: //All player clients. iter = mapit_getallusers(); you will find 0x9c is being send repeatedly on every attack and every skill cast , getting attack etc
this direction update packet isn't just send by Shift-click, but also including all the actions above
this packet is very spam-able and I think can be safely block on party/guild/clan/bg flags
for supportive class, I also think can block all of them since supportive class doesn't need information from enemies
-
AnnieRuru got a reaction from IndieRO in @packetfilter
No more Work in Progress, Please report if there are any bug
Download: 1.0a [Complete]
plugin
What is `@packetfilter` ?
`@packetfilter` is a custom mod originate from eamod
https://github.com/zephyrus-cr/eamod/blob/master/Servers/rAthena/conf/groups.conf#L418-L422
it can actually reduce lag on your live server during woe depends on how many players activate it
it totally depends on the player's side, community effort that every player should together turn on the `@packetfilter` to reduce massive lag during woe
this modification is actually very famous and there are members willingly to pay for it
https://rathena.org/board/topic/121200-packetfilter-battleinfo/
https://rathena.org/board/topic/123203-battleinfo-packetfilter/
https://rathena.org/board/topic/111797-packetfilter-zepyhrus-ramod/
https://rathena.org/board/topic/79995-buy-noactnodelay-partybuff-src-as-it-was-on-pro-ro-or-packetfilter/
this `@packetfilter` is unlike the one you are having, or that is circulating on rathena forum
this one has been written entirely from scratch and added some other flags that the original don't
for example,
`@packetfilter COHM EOHM`
allow block normal chat and emotion from non-related players, pets, homunculus and monsters
but this doesn't block normal chat from party/guild members
a full list of flags are
C = ignore normal Chat, including Dancer's scream, Bard's frost joke, and pet's talk (pet start to talk when intimacy > 900) E = ignore emotion, including monster and pet emotion (but NOT pet performance) I = ignore Item use effect A = ignore normal Attack animation (based on receiving side), your own attack animation are always shown B = Buffing skill animations (based on receiving side), your own casting animation are always shown S = Status effect T = offensive single Target skill/spell animations (based on receiving side), your own casting animation are always shown G = Ground based skills (eg:storm gust), your own casting animation are always shown M = Music dance/songs from Bard/Dancer D = Direction. Recommend filter on Party/Guild type and not enemies. Highly Recommend for supportive type Class. after the Main type, also support additional flags
S = Self P = Party G = Guild B = Battleground C = Clan O = Other players, none of the above H = Homunculus/pets/elementals/mercenary and player's @summon M = Monsters
Why This plugin doesn't block Kaite or Energy Coat ?
2 reasons
No.1 - currently there is a bug with plugin,
struct packet_spawn_unit *p = (struct packet_spawn_unit*)RBUFP(buf, 0); this line will throw error on Linux
so no choice, maybe I'll make a bug report
this bug also has been reported on Dastgir's `@noview`
No.2 - just set p->virtue = 0; isn't really blocking the packet
this goes against the very principle of this plugin, which is NOT send certain packet to the client
OPT3 (including OPT3_KAITE | OPT3_ENERGYCOAT | OPT3_SOULLINK) is part of the idle_unitType, unit_walkingType and spawn_unitType function
and blocking those 3 packet entirely is stupid
in case you don't understand, look under clif_set_unit_walking and clif_set_unit_idle function inside src\map\clif.c file
p.GUID = g_id; p.GEmblemVer = status->get_emblem_id(bl); p.honor = (sd) ? sd->status.manner : 0; // p.virtue = (sc) ? sc->opt3 : 0; <-- change this line p.virtue = 0; p.isPKModeON = (sd && sd->status.karma) ? 1 : 0; p.sex = vd->sex;
Note: about [D]irection type packet
try add a ShowDebug inside clif->send
src/map/clif.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/map/clif.c b/src/map/clif.c index ab3c4422a..9e245f335 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -450,6 +450,7 @@ static bool clif_send(const void *buf, int len, struct block_list *bl, enum send return true; } +ShowDebug("source:%s buf:0x%x send_target:%d\n", (sd != NULL)? sd->status.name : "NULL", RBUFW(buf, 0), type); switch(type) { case ALL_CLIENT: //All player clients. iter = mapit_getallusers(); you will find 0x9c is being send repeatedly on every attack and every skill cast , getting attack etc
this direction update packet isn't just send by Shift-click, but also including all the actions above
this packet is very spam-able and I think can be safely block on party/guild/clan/bg flags
for supportive class, I also think can block all of them since supportive class doesn't need information from enemies
-
AnnieRuru got a reaction from Kuroyama in @packetfilter
0.5 - plugin
- fix linux compile warning `type` not being use
- change useItemAckType into 0x1c8 ... hopefully no more nullpo ?
- allow blocking casting animation, save more bandwidth
- implement [T], [G], [D] type respectively
also, I split the original Land Protector and bard/dancer song out
Land Protector is under [G] type, Apple of Idun is under [D] type
Basilica is under [B.] type
type [S.] still has some bug, if being cast directly in front of the player, it doesn't block correctly
.. very close to finish
@Kuroyama, try again
-
AnnieRuru got a reaction from xJhay in @packetfilter
0.5 - plugin
- fix linux compile warning `type` not being use
- change useItemAckType into 0x1c8 ... hopefully no more nullpo ?
- allow blocking casting animation, save more bandwidth
- implement [T], [G], [D] type respectively
also, I split the original Land Protector and bard/dancer song out
Land Protector is under [G] type, Apple of Idun is under [D] type
Basilica is under [B.] type
type [S.] still has some bug, if being cast directly in front of the player, it doesn't block correctly
.. very close to finish
@Kuroyama, try again
-
AnnieRuru got a reaction from fiction in @packetfilter
0.5 - plugin
- fix linux compile warning `type` not being use
- change useItemAckType into 0x1c8 ... hopefully no more nullpo ?
- allow blocking casting animation, save more bandwidth
- implement [T], [G], [D] type respectively
also, I split the original Land Protector and bard/dancer song out
Land Protector is under [G] type, Apple of Idun is under [D] type
Basilica is under [B.] type
type [S.] still has some bug, if being cast directly in front of the player, it doesn't block correctly
.. very close to finish
@Kuroyama, try again
-
AnnieRuru got a reaction from Shatowolf in @packetfilter
0.5 - plugin
- fix linux compile warning `type` not being use
- change useItemAckType into 0x1c8 ... hopefully no more nullpo ?
- allow blocking casting animation, save more bandwidth
- implement [T], [G], [D] type respectively
also, I split the original Land Protector and bard/dancer song out
Land Protector is under [G] type, Apple of Idun is under [D] type
Basilica is under [B.] type
type [S.] still has some bug, if being cast directly in front of the player, it doesn't block correctly
.. very close to finish
@Kuroyama, try again
-
AnnieRuru reacted to Kuroyama in @packetfilter
Tried the latest Ms. @AnnieRuru and getting error on @packetfilter IOHM
-
AnnieRuru got a reaction from freezing1 in @packetfilter
https://devblogs.microsoft.com/cppblog/clang-llvm-support-in-visual-studio/
and maybe this one ?
https://devblogs.microsoft.com/dotnet/debug-your-net-core-apps-in-wsl-2-with-visual-studio/
... maybe next time ...
0.4 - plugin
- if its not BL_PC|BL_PET|BL_HOM|BL_MER|BL_ELEM|BL_MOB immediately jump out of function for faster processing
- fix sd->status.clan_id
- implement block attack [A] and buff [B ] flag
- don't need to use snprintf needlessly when print out the flags
- just unset the flag if the SELF flag isn't supported
Kaite is indeed very interesting
I'm 100% sure I've block the casting animation for Kaahi Kaizel Kaupe ... and of course Kaite
but I think what you guys want is the effect of the Kaite to turn off ?
that should be another kind of source edit plugin
EDIT: wait, let me put ShowDebug on it again .... editing ....
it send 2 types of packet, 0x9cb and 0x983
0x9cb is clif_skill_nodamage
0x983 is clif_status_change_sub
means has to read p.index to know the the skill ID ....
EDIT2: 0x229 ... WOW don't block this packet
if the player is hiding/cloaking, enable this packetfilter will show her !!
needs to be cautious about this packet...
EDIT3: I think I figure it out, it is OPT3, means just set OPT3 into 0 will do
-
AnnieRuru got a reaction from IndieRO in @packetfilter
PLEASE GIVE ME YOUR COMPILER
I want my visual studio 2019 also display error like yours
btw I'm guessing that's CentOS, this happened before on my OnPCUseSkillEvent
0.3 - plugin
- add missing FILTER_CLAN flag
- implement block_item type 'I' flag
- fix FILTER_OTHER not working properly when the player doesn't have a party or guild
- fix [C]hat type shouldn't able to filter self, since the client always shows you are talking anyway
- and attempt to fix the above stupid error that doesn't show on Visual Studio
-
AnnieRuru got a reaction from Kuroyama in @packetfilter
PLEASE GIVE ME YOUR COMPILER
I want my visual studio 2019 also display error like yours
btw I'm guessing that's CentOS, this happened before on my OnPCUseSkillEvent
0.3 - plugin
- add missing FILTER_CLAN flag
- implement block_item type 'I' flag
- fix FILTER_OTHER not working properly when the player doesn't have a party or guild
- fix [C]hat type shouldn't able to filter self, since the client always shows you are talking anyway
- and attempt to fix the above stupid error that doesn't show on Visual Studio