Preparations before deploying

Prerequisites

Choose a domain name

First decide where you want AURA to be served to your users. Given your radio website is available under myradio.org, we recommend binding AURA to the subdomain like aura.myradio.org.

Update your DNS settings with your desired domain name and point it to the server instance you want to deploy AURA at.

In all of the following examples, we will refer to the aura.myradio.org example. Replace it with your personal AURA subdomain, where applicable.

Setting up the user & home directory

It’s time to log in to your fresh AURA server instance and get things moving.

Clone the aura repository to your desired AURA home directory.

For all of the following documentation steps, we assume you have chosen /opt/aura for your installation. This directory is also referenced as AURA_HOME. It is possible to use any directory of your choice for AURA_HOME though.

sudo mkdir /opt/aura
sudo chown -R $(id -u):$(id -g) /opt/aura
git clone https://gitlab.servus.at/aura/aura.git /opt/aura

This gives the current user ownership to /opt/aura and copies all the needed files into it.

Next, move to that directory and create the aura user and group:

$ make aura-user.add

This is user merely required for handling correct permissions and ownership. It is not required to login with that user.

Tip

All operations are can be done by the currently logged in admin user. This user is also added to the aura group, hence acts on behalf of the aura user.

Docker installation tips

Optionally manage containers without sudo

If you are the sole administrator, it is handy to start, stop and restart containers without the need of using sudo. To achieve this, install Docker Engine to be managed as a non-root user.

Please note that this is not practical if you have multiple people administering the system, as containers are only visible to the user who starts them. You can circumvent this issue by either continuing to start containers with sudo or by creating a dedicated admin account shared among administrators.

Skip Docker Desktop installation

You don’t need any fancy additions like Docker Desktop. Installing Docker Desktop can have side-effects like the change of the default context.

Ensure that Docker default context is enabled

If you have installed Docker Desktop for some reason, it may change the current context. Switch back to the default Docker context with docker context use default.

Start Docker on system boot

When configuring the Docker Engine for production, you may want to start all your containers automatically on system boot.

This can be achieved by running Docker Engine as a daemon.

Selecting the release

Ensure you have the latest codebase:

git pull

Then check for available releases:

git tag
   v1.0.0
   v1.1.0

This command returns a list of all tags corresponding to the available releases. Alternatively you can take a look at releases.aura.radio.

To learn about changes between releases, consult the Release Notes.

Then switch to the release you’d like to use.

git checkout tags/<release-version>

Replace <release_version> with one of the versions listed above, like v1.0.0.

git checkout tags/v1.0.0

Latest, unreleased state on the main branch

In case you want deploy the current development state, just take the latest commit on the main branch. That’s the state which is checked out by default. While we try to keep the main branch as stable as possible, we cannot guarantee it being functional at all times. So please use it at your own risk.

Setting up the Audio Store Directory

The Audio Store Directory is a folder structure used by various services to exchange audio files.

For example the Battery service stores media uploaded by users in the Audio Store, while the Engine service reads audio files from the Audio Store for broadcasting.

Assuming both, Engine and Battery are hosted on different machines, audio folders must be shared using some network share.

In case you are hosting Engine and Battery on the same machine, you can skip this step. Just think about pointing the settings the relevant audio directories, or create a symlink to do so behind the curtains.

By default the Audio Store is located in /opt/aura/audio on your host machine. In the Audio Store, the following subdirectories are expected:

Directory

Read/write access

Ready-only access

Description

audio/upload/

AURA Web

AURA Playout

The audio processing service (Media Store) stores uploaded and imported files here.

  L by-date

Holds symlinks to access files by date.

  L by-hash

Holds symlinks to access files by hash.

  L by-show

Holds symlinks to access files by show IDs.

  L tmp

Media Store working directory for temporary files.

audio/record/

AURA Web, AURA Recorder

AURA Playout

Audio recordings.

  L block

The recorder service stores block recordings here.

  L show

The audio cropping service (Cut & Glue) stores episode recordings, created from block recordings, here.

audio/pool/

-

AURA Web, AURA Playout

Directory for music pools.

  L fallback

Populate this default pool with audio files to be played randomly, when nothing is scheduled.

audio/m3u

-

AURA Web, AURA Playout

Place M3U audio playlists here.

Share Type

Then, there’s the question how the share is managed. Feasible options include:

Please evaluate for yourself what the most failsafe solution is. The next chapter outlines pro and cons of different scenarios.

Share Location

You have following options where your share can be located:

  1. Engine and all other AURA components (Battery, Dashboard, Steering) are running on the same instance. This is the most simple solution, as Engine and Battery can share the same directory locally. But this scenario requires some more sophisticated tuning of the system resources to avoid e.g. some overload of multiple Uploads in Battery may affect the performance of Engine. You can eliminate this risk by setting CPU and memory limits for Steering, Dashboard and Battery using Docker or systemd-cgroups. A disadvantage here is the case of maintenance of system reboot. This would mean that all components are offline at once.

  2. Physical directory where the Engine lives, mounted to Battery. This may cause an issue with the mount, when the network connection to Engine is unavailable or the instance is rebooting.

  3. Physical directory where the Battery lives, mounted to Engine. This may cause an issue with the mount, when the network connection to Battery is unavailable or the instance is rebooting.

  4. Central Data Store or Storage Box which is mountet to Engine and Battery. In this case a downtime of the store make both, Engine and Battery dysfunctional.

  5. Replicated storage solution using Gluster, both Engine and Battery have their virtual audio directory mounted. That’s the ideal approach, because if any of the instances is down, the other has all the data available.

In any case, you should think about some backup solution involving this directory.

Learn more on how what should be backed up in the chapter Update and Maintain / Backup Strategy.

Docker and service configuration

In the following chapters you will be dealing with .env configuration files created in the Docker Compose directories config/aura-web, config/aura-playout and config/aura-recorder. In most common setup scenarios all configuration done with these environment variables is sufficient.

For some services, advanced setups or debug purposes, there are also sample configuration files for each service under /opt/aura/config/services/sample-config available. To overwrite any service configuration, simply copy its configuration file to the parent services folder.

Only use these overrides if you are an advanced user, or are advised to do so.