Jump to content
  • We are looking for staff for the Wiki area!
    If interested please
    click here and select "Documentation Team"

  • Installing MaNGOS on Ubuntu 18.04 LTS (LXD container)


    Specu

    With LXD you can easy take snapshots and move your server to another physical machine.

    Guide is fully tested on it MaNGOS Zero with bots module enabled.

    If you do not want to use LXD, simple pass LXD instruction and go further.

    Let's start

    LXD installation & configuration:

    sudo apt install lxd && reboot

    Reboot is needed for reloading groups that will be assigned to your account.

    sudo lxd init

    with above command anserw Y to all questions.

    Create container for our server:

    lxc launch ubuntu:bionic mangos-zero

    check if your container is running:

    lxc list
    +-------------+---------+-----------------------+-----------------------------------------------+------------+-----------+
    |   NAME      |  STATE  |         IPV4          |                     IPV6                      |    TYPE    | SNAPSHOTS |
    +-------------+---------+-----------------------+-----------------------------------------------+------------+-----------+
    | mangos-zero | RUNNING | *.*.*.* (eth1)        |                                               | PERSISTENT | 3         |
    +-------------+---------+-----------------------+-----------------------------------------------+------------+-----------+

    now we will connect to our container:

    lxc exec mangos-zero bash

    Please verify that you are on your contierner, you should have promt like this

    [email protected]:~#

    if not you must try again with previous command providing your container name.


    MaNGOS server installation

    Install necessary packages:

    apt install git make cmake libssl-dev libbz2-dev build-essential default-libmysqlclient-dev libace-6.4.5 libace-dev mysql-server

    We need also install additional mysql package. I've attached file in this post so you don't need to search it.

    Download this file and send to your container. Open another terminal window and type:

    lxc file push /DOWNLOADED_DIRECTORY/mysql-apt-config_0.8.14-1_all.deb mangos-zero/root/

    Go back to first terminal where you are logged to your container and type:

    dpkg -i /root/mysql-apt-config_0.8.14-1_all.deb

    on installation window check mysql 5.7 is selected and hit Enter, when window will close type:

    apt update && apt full-upgrade -y

    When all packages are installed, secure your mysql installation.

    Please type and anserw to few questions to secure your mysql server.

    mysql_secure_installation

    Create new username and password to access our mysql server:

    mysql
    GRANT ALL ON *.* to '[email protected]'localhost' IDENTIFIED BY 'set_database_password';

    Getting MaNGOS source code, compile and configuration.

    We will create new folder for sources:

    mkdir /opt/mangos && cd /opt/mangos

    Now we will download server and database sources to created folder.

    MaNGOS zero source (if you want different mangos version please change mangoszero to different repo name):

    git clone https://github.com/mangoszero/server.git --recursive --depth 1

    Database files:

    git clone https://github.com/mangoszero/database.git --recursive --depth 1

    Compiling MaNGOS (if your CPU have less than 4cores change -j4 to -j2 for two core CPU):

    cd server && mkdir build && cd build && cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/bin/mangos && make -j4 && make install

    above command will create build folder, compile and install compiled server.

    Database installation:

    cd /opt/mangos/database && chmod -R +x *.sh && ./InstallDatabases.sh

    above command will fix script permissions and install your database.

    GameData files extraction:

    This can me done inside or outside the container, choice is yours how you do it. Remember that extraction take some time, so go take a cup of tea/coffe and cookie and wait. (ETA 1-2h)

    We need proper files for exctraction, go to your mangos installation and copy those files to yor game client:

    cd /usr/local/bin/mangos/bin/ && chmod -R +x *.sh && cp -av tools/* ExtractResources.sh MoveMapGen.sh mmap_excluded.txt offmesh.txt /GAME_CLIENT_DESTINATION

    now go to your game client and run:

    ./ExtractResources.sh

    Server configuration:

    First we have to fix path to MaNGOS configruation. We can do this in config files or simply creating a symlink. In this tutorial we will create symlink to keep defaults.

    cd /usr/local/bin/mangos/ && ln -s ../etc

    Now we have to copy config files:

    cd etc/ && cp -av mangosd.conf.dist mangosd.conf && cp -av realmd.conf.dist realmd.conf

    In realmd.conf find "LoginDatabaseInfo" and change database username and password to credentials we created before.

    In mangosd.conf find "LoginDatabaseInfo", "WorldDatabaseInfo", "CharacterDatabaseInfo" and change database username and password to credentials we created before.

    Systemd configuration:

    Create systemd configuration to autostart your realmd and mangosd. In LXD I recommend to run mangosd in screen, we prepare such a configuration in this tutorial.

    Realmd service:

    cat > /etc/systemd/system/realmd.service <<EOF
    [Unit]
    Description=MangosZ server
    After=network.target mysql.service
    
    [Service]
    Type=simple
    User=root
    ExecStart=/usr/local/bin/mangos/bin/realmd -c /usr/local/bin/mangos/etc/realmd.conf
    WorkingDirectory=/usr/local/bin/mangos/bin/
    Restart=on-abort
    
    [Install]
    WantedBy=multi-user.target
    EOF

    Mangosd service:

    cat > /etc/systemd/system/mangosd.service <<EOF
    [Unit]
    Description=MangosZ server
    After=network.target mysql.service
    
    [Service]
    Type=simple
    User=root
    #ExecStart=/usr/local/bin/mangos/bin/mangosd -c /usr/local/bin/mangos/etc/mangosd.conf
    ExecStart=/usr/bin/screen -mdS mangosd /usr/local/bin/mangos/bin/mangosd -c /usr/local/bin/mangos/etc/mangosd.conf
    WorkingDirectory=/usr/local/bin/mangos/bin/
    PIDFile=/usr/local/bin/mangos/etc/mzero.pid
    RemainAfterExit=true
    Restart=on-abort
    
    [Install]
    WantedBy=multi-user.target
    EOF

    Reload systemd with:

    systemctl daemon-reload

    Enable services for autostart:

    systemctl enable realmd
    systemctl enable mangosd

    Start services:

    systemctl start realmd
    systemctl start mangosd

    Checking status of running services:

    systemctl status realmd
    systemctl status mangosd

    If you want to attach to mangosd console, simply type:

    screen -r mangosd

    to detach mangosd screen press keyboard combination:

    CTRL+A+D

    Update IP address in database, so you can connect to your server:

    mysql realmd -h localhost -u mangos -p

    check your values in realmlist table

    select address,localAddress from realmlist;
    +---------------+---------------+
    | address       | localAddress  |
    +---------------+---------------+
    | 192.168.1.180 | 192.168.1.180 |
    +---------------+---------------+

    then update address and localAddress values with two query (replace IP_ADDRESS with yours)

    update realmlist set address='IP_ADDRESS';
    update realmlist set localAddress='IP_ADDRESS';

    Last thing is to restart both services and try to connect.

    At the end I wan't to share with you LXD container image, I made this tutorial based on it. Container do not include GameData so you have to extract it by yourself.

    MaNGOS-Zero LXD container based on Ubuntu 18.04

    How to use it? Download the file and type in terminal (you must have LXD)

    lxc image import mangoszero-serv.tar.gz --alias mangosz-img
    lxc launch mangosz-img mangos-zero

    mysql-apt-config_0.8.14-1_all.deb



    User Feedback

    Recommended Comments

    There are no comments to display.



    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now

Contact Us

To contact us click here
You can also email us at [email protected]

Privacy Policy | Terms & Conditions

Repositories

The Link to the master list
of MaNGOS repositories:
Copyright © getMaNGOS. All rights Reserved.

This website is in no way associated with or endorsed by Blizzard Entertainment®
×
×
  • Create New...