You must setup Podman first.

Steps

  1. create coturn directory in $HOME/podman
    mkdir -p ~/podman/coturn && cd ~/podman/coturn
    
  2. copy from compose.yml
    nano compose.yml
    
  3. copy from turn_with_password.conf
    nano turn_with_password.conf
    
  4. copy from turn_with_secret.conf
    nano turn_with_secret.conf
    
  5. start coturn
    podman-compose -f ~/podman/coturn/compose.yml systemd -a register
    systemctl --user enable --now podman-compose@coturn
    

compose.yml

version: "3"
services:
  coturn_secret:
    image: docker.io/coturn/coturn:alpine
    container_name: coturn_secret
    network_mode: host
    volumes:
      - ./turn_with_secret.conf:/etc/coturn/turnserver.conf
    restart: unless-stopped
    labels:
      - "io.containers.autoupdate=registry"
  coturn_password:
    image: docker.io/coturn/coturn:alpine
    container_name: coturn_password
    network_mode: host
    volumes:
      - ./turn_with_password.conf:/etc/coturn/turnserver.conf
    restart: unless-stopped
    labels:
      - "io.containers.autoupdate=registry"

turn_with_password.conf

listening-port=4000
listening-ip=<ip>
relay-ip=<ip>
min-port=44000
max-port=44444
verbose
fingerprint
lt-cred-mech
user=<user>:<password>
server-name=<domain name>
realm=<domain name>
total-quota=100
no-software-attribute
no-stun
no-multicast-peers
no-cli
no-rfc5780
no-stun-backward-compatibility
response-origin-only-with-rfc5780

turn_with_secret.conf

listening-port=5000
listening-ip=<ip>
relay-ip=<ip>
min-port=55000
max-port=55555
verbose
fingerprint
use-auth-secret
static-auth-secret="<secret>"
server-name=<domain name>
realm=<domain name>
total-quota=100
no-software-attribute
no-stun
no-multicast-peers
no-cli
no-rfc5780
no-stun-backward-compatibility
response-origin-only-with-rfc5780