Jump to content

airtonix

Recommended Posts

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. 

Link to comment
Share on other sites

  • 4 weeks later...

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

 

Link to comment
Share on other sites

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)

Link to comment
Share on other sites

  • 2 months later...

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

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
  • Discord

×
×
  • Create New...