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: