• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Ubuntu Build Script

Syntax

Developer
Joined
Oct 10, 2007
Messages
2,890
Reaction score
458
Location
Texas
Hello, many of you might find this useful. Many cloud providers allow you to specify a bash script to execute on init. You may also execute the bash script manually, or follow line by line.

Bash:
#!/bin/bash

# CONFIG
DOMAIN="example.com"
USER="ubuntu"
TARGET="/var/tfs"
WORLD="<path to world folder zipped>"
GIT_AUTH="<user>:<personal_access_token>"
GIT_ORIGIN="https://github.com/OXGaming"
GIT_SERVER="TibiaServer"
GIT_DATA="TibiaServerData"
GIT_TAG="master"

# PREP
SERVER=$GIT_ORIGIN/$GIT_SERVER/archive/$GIT_TAG.zip
DATAPACK=$GIT_ORIGIN/$GIT_DATA/archive/$GIT_TAG.zip
BASE=$TARGET/$DOMAIN/$GIT_TAG

# PACKAGES
apt-get update                                # update packages
apt-get install -y \
  unzip \
  cmake \
  build-essential \
  software-properties-common \
  mariadb-client-core-10.1 \
  libboost-system-dev \
  libboost-iostreams-dev \
  libcrypto++-dev \
  libgmp3-dev \
  libluajit-5.1-dev \
  libmysqlclient-dev \
  libpugixml-dev                              # install packages
apt autoremove -y                             # cleanup packages

# SERVER
mkdir -p $BASE                                # create server folders
curl -L -u $GIT_AUTH $SERVER -o server.zip    # download server
curl -L -u $GIT_AUTH $DATAPACK -o data.zip    # download datapack
curl -L $WORLD -o world.zip                   # download world
unzip -o server.zip                           # unzip server
unzip -o data.zip                             # unzip datapack
cp -a $GIT_SERVER-$GIT_TAG $BASE/server       # copy server contents to target
cp -a $GIT_DATA-$GIT_TAG $BASE/data           # copy datapack contents to target
unzip -o world.zip -d $BASE/data              # unzip world in datapack
mkdir $BASE/server/build                      # make build folder
cd $BASE/server/build                         # set build folder as cwd
cmake ..                                      # configure server build
make                                          # build server
cp tfs ../../tfs                              # copy executable to server root
chown -R $USER $BASE                          # make tfs user owner

# CLEANUP
cd /                                          # set root as cwd
rm data.zip server.zip world.zip              # remove files
rm -rf $GIT_SERVER-$GIT_TAG                   # remove server repo
rm -rf $GIT_DATA-$GIT_TAG                     # remove datapack repo

# FIREWALL
ufw allow 22/tcp                              # open port: ssh
ufw allow 80/tcp                              # open port: http
ufw allow 443/tcp                             # open port: https
ufw allow 7171/tcp                            # open port: tfs
ufw allow 9000/tcp                            # open port: login
ufw enable                                    # block everything else
 
Last edited:
Back
Top