Docker container for FFXIV 1.0 servers running with project-meteor-server.
The docker network uses MariaDB, nginx and mono under the hood.
Currently all the FFXIV-related servers run under 1 container and only 1 World instance is used. This might change in the future but getting this to work to begin with was already a huge pain in the ass.
- Build the solution of the repository linked above. (Before building you might want to commenting out lines 84-86 in
Program.cs
forMap Server
and lines102-103
inProgram.cs
for World Server as that behaves very poorly under mono) - Place all build files under
game/server/
so you end up withgame/server/World Server/World Server.exe
etc. - Get the
staticactors.bin
file from<FINAL FANTASY XIV client install location>\client\script\rq9q1797qvs.san
, paste it intogame/server/Map Server/
and rename it asstaticactors.bin
. - Copy all files from
/Data/sql
from the original repository underdb/sql/
. - Copy all files from
/Data/www/login_su
from the original repository underlogin/www/
. - Set the
PUBLIC_IP
environment variable to the public IP of the host. - Set the
WORLD_NAME
environment variable to the name of the world you want to host. - Download
docker
anddocker-compose
. - Run
docker-compose build
.
- Set the
PUBLIC_IP
environment variable to the public IP of the host. - Make sure you have ports
54994
,1989
, and54992
open. Due to how the servers connect to each other there is not much room for remapping these ports in thedocker-compose.yml
file to give you more freedom over selection of the publicly exposed ports. - Run
docker-compose up
.
-
Q: Why does the server seemingly hang on initializing the database?
-
A: Because there is currently a bug with MariaDB where getting timezone information takes ages on HDDs. You won't experience this if your server has an SSD but if it doesn't, you have two options:
-
Wait around 20-ish minutes before it proceeds to initializing the database, then shut down all containers and start them up again since the FFXIV container will have timed out by then.
-
Add
MYSQL_INITDB_SKIP_TZINFO: 1
under theenvironment
key of thedb
service indocker-compose.yml
.
-