Skip to content

Configuration

iliyan85 edited this page Jul 9, 2026 · 3 revisions

Configuration

AISMixer loads /etc/aismixer/config.yaml when it exists. Otherwise it loads config.yaml in the current working directory.

The examples in the main repository are inactive until copied or adapted by an operator:

Top-Level Options

Key Purpose
station_id Preferred emitted TAG s label when non-empty. Separate from routing source_id.
debug Enables debug printing.
udp_inputs Direct plain UDP listeners.
sec_inputs Direct UDPSEC listeners.
forwarders UDP output destinations.
udp_alias_map_file Optional UDP remote-IP to alias map.
g_preserve_ingress_gid Preserve valid ingress TAG g group ID when possible.
g_id_digits Digit count for generated numeric TAG g IDs.
g_always_tag_single Emit TAG g on single-sentence output when true.
c_preserve_ingress_c Preserve valid ingress TAG c when true.
routing Optional static routing table.
control Optional runtime control configuration.

UDP Inputs

udp_inputs:
  - id: roof_receiver
    listen_ip: "0.0.0.0"
    listen_port: 17778
    allow_from:
      - 192.0.2.15

id is optional. A non-empty id becomes the preferred UDP source identity: udp:<id>.

Omitted allow_from means no application ACL. allow_from: [] denies all packets. allow_from: null is invalid.

UDPSEC Inputs

sec_inputs:
  - id: secure_listener_alias
    listen_ip: "::"
    listen_port: 29999
    allow_from:
      - 2001:db8:42::/64

UDPSEC routing identity comes from the authenticated station ID, not from sec_inputs[].id.

Forwarders

forwarders:
  - id: aishub
    host: 192.0.2.20
    port: 10110
    source_ip: 192.0.2.15

Named forwarders create target IDs such as udp:aishub. Unnamed forwarders are valid only in legacy broadcast mode.

Omitted source_ip lets the operating system select the source address. source_ip must be a literal IP address; null, hostnames, and CIDR values are invalid.

UDP Alias Map

udp_alias_map_file can point to an IP-to-alias map. Supported shapes include:

udp_alias_map:
  - ip: "192.0.2.10"
    id: "roof_receiver"

or:

192.0.2.10: roof_receiver

The alias can affect UDP source_id and TAG s selection when no stronger configured identity applies.

Routing

Omitted routing or routing: null means legacy broadcast mode.

routing:
  zones:
    fixed_udp:
      include:
        - udp:roof_receiver
  routes:
    - name: fixed_to_aishub
      from_zone: fixed_udp
      to:
        - udp:aishub

routing must contain only zones and routes. Unknown fields, missing fields, invalid zone expressions, unknown route zones, and unknown target IDs fail validation.

See Routing Engine.

Runtime Control

control is optional. control: null, omitted control, omitted control.unix, or control.unix.enabled: false leaves runtime control disabled.

When control.unix is present, enabled is required and must be a boolean.

control:
  unix:
    enabled: true
    socket_path: /run/aismixer/control.sock
    socket_mode: "0660"
    max_request_bytes: 1048576

Unknown fields are rejected. socket_path is required when enabled. socket_mode accepts octal integer or string forms such as 0o660, "660", or "0660". max_request_bytes must be a positive integer.

See Runtime Routing Control.

Keys

AISMixer server keys are installed under:

/etc/aismixer/keys/aismixer_private.pem
/etc/aismixer/keys/aismixer_public.pem

Authorized station public keys are normally stored in:

/etc/aismixer/authorized_keys.yaml

Station private keys belong on nmea_sproxy stations, not on AISMixer.

Clone this wiki locally