# openRA

# openRA Server Docker container

## Beschreibung:  


Drei OpenRA-Server in Docker für Red Alert, Command &amp; Conquer und Dune 2000.

### Schnellstart

1. `openra.env` anpassen (Servername, Passwort, etc.)
2. Server starten: ```bash
    docker compose up -d
    
    ```

### Ports

<table id="bkmrk-spiel-port-red-alert"><thead><tr><th>Spiel</th><th>Port</th></tr></thead><tbody><tr><td>Red Alert</td><td>1234</td></tr><tr><td>Command &amp; Conquer</td><td>1235</td></tr><tr><td>Dune 2000</td><td>1236</td></tr></tbody></table>

Alle Ports müssen in der Firewall für TCP und UDP freigegeben sein.

### Konfiguration

Alle Einstellungen in `openra.env`:

<table id="bkmrk-variable-beschreibun"><thead><tr><th>Variable</th><th>Beschreibung</th><th>Default</th></tr></thead><tbody><tr><td>`OPENRA_SERVER_NAME`</td><td>Name in der Serverliste</td><td>HackerSoft OpenRA</td></tr><tr><td>`OPENRA_PASSWORD`</td><td>Serverpasswort (leer = öffentlich)</td><td>-</td></tr><tr><td>`OPENRA_MAX_PLAYERS`</td><td>Max. Spieler pro Server</td><td>8</td></tr><tr><td>`OPENRA_SINGLEPLAYER`</td><td>Alleine gegen Bots spielen</td><td>False</td></tr><tr><td>`OPENRA_PORT_RA`</td><td>Port für Red Alert</td><td>1234</td></tr><tr><td>`OPENRA_PORT_CNC`</td><td>Port für C&amp;C</td><td>1235</td></tr><tr><td>`OPENRA_PORT_D2K`</td><td>Port für Dune 2000</td><td>1236</td></tr></tbody></table>

### Befehle

```bash
# Starten
docker compose up -d

# Stoppen
docker compose down

# Logs anzeigen
docker compose logs -f

# Einzelnen Server neustarten
docker compose restart openra-ra

```

### Einzelne Spiele deaktivieren

In `docker-compose.yml` den entsprechenden Service auskommentieren oder löschen.

## Die Dateien:

#### docker-compose.yml

```
nano /root/openra-server/docker-compose.yml
```

Inhalt:

```
services:
  openra-ra:
    image: ghcr.io/dkruyt/openra:latest
    container_name: openra-red-alert
    restart: unless-stopped
    env_file:
      - .env
    ports:
      - "${OPENRA_PORT_RA:-1234}:1234/tcp"
      - "${OPENRA_PORT_RA:-1234}:1234/udp"
    environment:
      - Name=${OPENRA_SERVER_NAME:-HackerSoft OpenRA} - Red Alert
      - Mod=ra
      - ListenPort=1234
      - ExternalPort=${OPENRA_PORT_RA:-1234}
      - Password=${OPENRA_PASSWORD:-}
      - AdvertiseOnline=${OPENRA_ADVERTISE:-True}
      - EnableSingleplayer=${OPENRA_SINGLEPLAYER:-False}
      - RequireAuthentication=${OPENRA_REQUIRE_AUTH:-False}
      - RecordReplays=${OPENRA_RECORD_REPLAYS:-False}
    volumes:
      - ./openra-ra-data:/home/openra/.openra

  openra-cnc:
    image: ghcr.io/dkruyt/openra:latest
    container_name: openra-command-conquer
    restart: unless-stopped
    env_file:
      - .env
    ports:
      - "${OPENRA_PORT_CNC:-1235}:1234/tcp"
      - "${OPENRA_PORT_CNC:-1235}:1234/udp"
    environment:
      - Name=${OPENRA_SERVER_NAME:-HackerSoft OpenRA} - C&C
      - Mod=cnc
      - ListenPort=1234
      - ExternalPort=${OPENRA_PORT_CNC:-1235}
      - Password=${OPENRA_PASSWORD:-}
      - AdvertiseOnline=${OPENRA_ADVERTISE:-True}
      - EnableSingleplayer=${OPENRA_SINGLEPLAYER:-False}
      - RequireAuthentication=${OPENRA_REQUIRE_AUTH:-False}
      - RecordReplays=${OPENRA_RECORD_REPLAYS:-False}
    volumes:
      - ./openra-cnc-data:/home/openra/.openra

  openra-d2k:
    image: ghcr.io/dkruyt/openra:latest
    container_name: openra-dune2000
    restart: unless-stopped
    env_file:
      - .env
    ports:
      - "${OPENRA_PORT_D2K:-1236}:1234/tcp"
      - "${OPENRA_PORT_D2K:-1236}:1234/udp"
    environment:
      - Name=${OPENRA_SERVER_NAME:-HackerSoft OpenRA} - Dune 2000
      - Mod=d2k
      - ListenPort=1234
      - ExternalPort=${OPENRA_PORT_D2K:-1236}
      - Password=${OPENRA_PASSWORD:-}
      - AdvertiseOnline=${OPENRA_ADVERTISE:-True}
      - EnableSingleplayer=${OPENRA_SINGLEPLAYER:-False}
      - RequireAuthentication=${OPENRA_REQUIRE_AUTH:-False}
      - RecordReplays=${OPENRA_RECORD_REPLAYS:-False}
    volumes:
      - ./openra-d2k-data:/home/openra/.openra

```

#### die .env Datei:

```
nano /root/openra-server/.env
```

Inhalt eigene Werte natürlich anpassen:

```
# OpenRA Server Konfiguration
# ============================

# Basis-Name des Servers (Spielname wird automatisch angehängt)
OPENRA_SERVER_NAME=HackerSoft OpenRA

# Passwort für alle Server (leer = öffentlich)
OPENRA_PASSWORD=

# Server in öffentlicher Liste anzeigen
OPENRA_ADVERTISE=True

# Singleplayer erlauben (alleine gegen Bots spielen)
OPENRA_SINGLEPLAYER=False

# Authentifizierung erforderlich (OpenRA-Account)
OPENRA_REQUIRE_AUTH=False

# Replays aufzeichnen
OPENRA_RECORD_REPLAYS=False

# Ports (TCP + UDP müssen offen sein)
OPENRA_PORT_RA=1234
OPENRA_PORT_CNC=1235
OPENRA_PORT_D2K=1236
```

nun noch Rechte anpassen

```
cd /root/openra-server
chmod 777 -R openra-*data 
```

Jetzt container starten:

```
docker-compose up -d
```