airtonix Posted November 14, 2014 Report Share Posted November 14, 2014 Calling it now, I'm keen to get the ball rolling on making EpochArma3 available as docker images for all the linux guys out there. When done, Linux server operators can use something like Shipyard to orchestrate the speedy creation of new EpochArma3 instances. Essentially it'll come down to this for installing on a fresh linux installed with docker: $ docker run -T --name myworld-data epoch/epoch-arma3-data --ports $ docker run -T --name myworld --volumes-from=myworld-data epoch/epoch-arma3 or with fig $ wget docker.epoch.com/files/fig/epoch-arma3.yml $ fig build $ fig up bam, new self contained server instance installed and running. Value Created All the things you love about virtual machines without all the overhead. Evidence It seems to be possible, this server status report indicates an arma3 server running in docker. @vbawol, hit me up if if you're interested. Mr.XXX, DirtySanchez and crckdns 3 Link to comment Share on other sites More sharing options...
airtonix Posted December 8, 2014 Author Report Share Posted December 8, 2014 So I've spent the last couple of weeks working on creating a base docker image for arma that is as customisable as possible. - ubuntu image - mount your /data in here - steamcmd image - specify your steam username/password here - arma3 image - uses config files from /data - mounts /server as /opt/arma3 - uses steamcmd to install arma3server into /opt/arma3 (if doesn't exist already) I pulled down a copy of the epoch3 server files and here are some suggestions: Critical changes required to work on linux - all folders and filenames need to be lower case (arma3 server does this because it's the easiest way to enforce common naming pattern that works across platforms) - any references to those files/folders of course need to be updated. - bec/plugins/watchdog/__init__.py: - python modules as a rule shouldn't mess with the system path. - when writing out paths, use path.join() (let python decide the appropriate path separator) - use sets rather than lists (they're faster) - don't use print, it mucks with stdout and stderr, use logger so it can be configured to transport into syslog by project integrator - - please tell me you're going to be hosting this on github soon Mr.XXX 1 Link to comment Share on other sites More sharing options...
airtonix Posted December 8, 2014 Author Report Share Posted December 8, 2014 Progress so far: # ./fig.yml --- server: image: maxexcloo/arma3-epoch hostname: arma3 net: host ports: - "10.0.0.20:2342:2302/udp" - "10.0.0.20:2343:2303/udp" - "10.0.0.20:2344:2304/udp" - "10.0.0.20:2346:2306/udp" volumes: - ./data:/data - ../arma3-server-files/:/opt/arma3 environment: STEAM_USER: YOUR_STEAM_USERNAME STEAM_PASS: YOUR_STEAM_PASSWORD ARMA3_SERVER_PORT: 2342 ARMA3_SERVER_NAME: YOUR_EPOCH_SERVERNAME ARMA3_MODLIST: "@epoch;@epochhive;" EPOCH_INSTANCEID: YOUR_EPOCH_INSTANCEID db: image: maxexcloo/redis ports: - "10.0.0.20:6379:6379" volumes: - ./db:/data environment: REDIS_DB: 0 Directory Layout: $ tree ./ ./ ├── bin │ └── configure-hive ├── config │ ├── server.cfg │ ├── server.geo.sqf │ ├── server.i18n.sqf │ ├── server.network.sqf │ ├── server.video.sqf │ ├── world.cfg │ ├── world.events.sqf │ ├── world.global.sqf │ ├── world.mission.sqf │ ├── world.mission.whitelist.sqf │ ├── world.motd.sqf │ ├── world.settings.sqf │ └── world.voting.sqf ├── data │ ├── battleye │ │ ├── addbackpackcargo.txt │ │ ├── addmagazinecargo.txt │ │ ├── addweaponcargo.txt │ │ ├── attachto.txt │ │ ├── bans-epoch.txt │ │ ├── beserver.cfg.example │ │ ├── beserver.dll │ │ ├── createvehicle.txt │ │ ├── deletevehicle.txt │ │ ├── mpeventhandler.txt │ │ ├── publicvariable.txt │ │ ├── publicvariableval.txt │ │ ├── remotecontrol.txt │ │ ├── remoteexec.txt │ │ ├── scripts.txt │ │ ├── selectplayer.txt │ │ ├── setdamage.txt │ │ ├── setpos.txt │ │ ├── setvariable.txt │ │ ├── setvariableval.txt │ │ ├── teamswitch.txt │ │ ├── waypointcondition.txt │ │ └── waypointstatement.txt │ ├── bec │ │ └── plugins │ │ └── watchdog │ │ └── __init__.py │ ├── @epoch │ │ ├── addons │ │ │ ├── a2_epoch_weapons_license.txt │ │ │ ├── a2_epoch_weapons.pbo │ │ │ ├── a2_epoch_weapons.pbo.epoch0250.bisign │ │ │ ├── a3_epoch_assets_1.pbo │ │ │ ├── a3_epoch_assets_1.pbo.epoch0250.bisign │ │ │ ├── a3_epoch_assets_2.pbo │ │ │ ├── a3_epoch_assets_2.pbo.epoch0250.bisign │ │ │ ├── a3_epoch_assets_3.pbo │ │ │ ├── a3_epoch_assets_3.pbo.epoch0250.bisign │ │ │ ├── a3_epoch_assets.pbo │ │ │ ├── a3_epoch_assets.pbo.epoch0250.bisign │ │ │ ├── a3_epoch_code.pbo │ │ │ ├── a3_epoch_code.pbo.epoch0250.bisign │ │ │ ├── a3_epoch_config.pbo │ │ │ ├── a3_epoch_config.pbo.epoch0250.bisign │ │ │ ├── a3_epoch_language.pbo │ │ │ ├── a3_epoch_language.pbo.epoch0250.bisign │ │ │ ├── a3_epoch_underground.pbo │ │ │ ├── a3_epoch_underground.pbo.epoch0250.bisign │ │ │ ├── a3_epoch_vehicles_1.pbo │ │ │ ├── a3_epoch_vehicles_1.pbo.epoch0250.bisign │ │ │ ├── a3_epoch_vehicles.pbo │ │ │ ├── a3_epoch_vehicles.pbo.epoch0250.bisign │ │ │ ├── a3_epoch_weapons.pbo │ │ │ └── a3_epoch_weapons.pbo.epoch0250.bisign │ │ ├── keys │ │ │ └── epoch0250.bikey │ │ ├── LICENSE.txt │ │ ├── mod.cpp │ │ ├── mod.paa │ │ └── README.txt │ ├── @epochhive │ │ ├── addons │ │ │ ├── a3_epoch_server.pbo │ │ │ └── a3_epoch_server_settings.pbo │ │ ├── epochah.hpp │ │ ├── epochconfig.hpp │ │ ├── epochserver.dll │ │ └── epochserver.ini │ ├── keys │ │ └── epoch0250.bikey │ ├── logs │ │ └── arma3.log │ ├── mpmissions │ │ ├── epoch.altis.pbo │ │ └── epoch.stratis.pbo │ └── profiles │ ├── default.arma3profile │ └── users ├── db │ └── dump.rdb └── fig.yml Result: $ fig up Recreating arma3epoch_db_1... Recreating arma3epoch_server_1... Attaching to arma3epoch_db_1, arma3epoch_server_1 db_1 | _._ db_1 | _.-``__ ''-._ db_1 | _.-`` `. `_. ''-._ Redis 2.8.18 (00000000/0) 64 bit db_1 | .-`` .-```. ```\/ _.,_ ''-._ db_1 | ( ' , .-` | `, ) Running in stand alone mode db_1 | |`-._`-...-` __...-.``-._|'` _.-'| Port: 6379 db_1 | | `-._ `._ / _.-' | PID: 1 db_1 | `-._ `-._ `-./ _.-' _.-' db_1 | |`-._`-._ `-.__.-' _.-'_.-'| db_1 | | `-._`-._ _.-'_.-' | http://redis.io db_1 | `-._ `-._`-.__.-'_.-' _.-' db_1 | |`-._`-._ `-.__.-' _.-'_.-'| db_1 | | `-._`-._ _.-'_.-' | db_1 | `-._ `-._`-.__.-'_.-' _.-' db_1 | `-._ `-.__.-' _.-' db_1 | `-._ _.-' db_1 | `-.__.-' db_1 | db_1 | [1] 08 Dec 10:02:01.389 # Server started, Redis version 2.8.18 db_1 | [1] 08 Dec 10:02:01.390 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect. db_1 | [1] 08 Dec 10:02:01.390 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled. db_1 | [1] 08 Dec 10:02:01.390 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128. db_1 | [1] 08 Dec 10:02:01.390 * DB loaded from disk: 0.000 seconds db_1 | [1] 08 Dec 10:02:01.390 * The server is now ready to accept connections on port 6379 server_1 | /usr/lib/python2.7/dist-packages/supervisor/options.py:295: UserWarning: Supervisord is running as root and it is searching for its configuration file in default locations (including its current working directory); you probably want to specify a "-c" argument specifying an absolute path to a configuration file for improved security. server_1 | 'Supervisord is running as root and it is searching ' server_1 | 2014-12-08 10:02:02,889 CRIT Supervisor running as root (no user in config file) server_1 | 2014-12-08 10:02:02,889 WARN Included extra file "/etc/supervisor/conf.d/arma3server.conf" during parsing server_1 | 2014-12-08 10:02:03,036 INFO RPC interface 'supervisor' initialized server_1 | 2014-12-08 10:02:03,036 CRIT Server 'unix_http_server' running without any HTTP authentication checking server_1 | 2014-12-08 10:02:03,036 INFO supervisord started with pid 12 server_1 | 2014-12-08 10:02:04,039 INFO spawned: 'arma3server' with pid 15 server_1 | 2014-12-08 10:02:05,309 INFO success: arma3server entered RUNNING state, process has stayed up for > than 1 seconds (startsecs) Defent and Mr.XXX 2 Link to comment Share on other sites More sharing options...
airtonix Posted December 8, 2014 Author Report Share Posted December 8, 2014 play with it yourself: fig projecthttps://github.com/airtonix/arma3-epoch-fig-project dockerfile collection https://github.com/airtonix/dockerfiles Link to comment Share on other sites More sharing options...
Jimmeh Posted December 8, 2014 Report Share Posted December 8, 2014 Nice work! Link to comment Share on other sites More sharing options...
Fumler Posted March 5, 2015 Report Share Posted March 5, 2015 Does this work? Will this let me host ArmA3 epoch on a linux server? Link to comment Share on other sites More sharing options...
vbawol Posted March 5, 2015 Report Share Posted March 5, 2015 Sounds interesting and certainly worth a try. We have some offers to help out with the native Linux build and we should get started testing a Linux build sometime after we release the 0.3 server update to the public. elbabar 1 Link to comment Share on other sites More sharing options...
elbabar Posted March 5, 2015 Report Share Posted March 5, 2015 Sounds interesting and certainly worth a try. We have some offers to help out with the native Linux build and we should get started testing a Linux build sometime after we release the 0.3 server update to the public. YIIIIIIIIIIIIHHHHHHHHHHHHAAAAAAAAAAAAAAAAAAAAA !! Thx a lot ^^ Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now