May 2, 2022

Azuracast ARM64 Docker Deployment

Azuracast now supports ARM64

Azuracast ARM64 Docker Deployment

0. Background

Azuracast now supports ARM64, with easy all-in-one docker installation.

1. Install via official script

mkdir -p /var/azuracast
cd /var/azuracast

Note: It’s recommended to use default directory, which is `/var/azuracast’.

curl -fsSL https://raw.githubusercontent.com/AzuraCast/AzuraCast/main/docker.sh > docker.sh
chmod a+x docker.sh
./docker.sh install

Here assume that you are using Nginx reverse proxy. So let’s set http port to 20000, instead of default 80. For https port, you can set it to any non-443 port, and let Nginx to do the rest of the jobs.

2. Nginx conf

nano /etc/nginx/conf.d/azuracast.conf
server {
        listen 80;
        server_name azuracast.henrywithu.com;
        if ($host = azuracast.henrywithu.com) {
                return 301 https://$host$request_uri;
        }
        return 404;
}

server {
  listen 443 http2 ssl; 

  ssl_certificate       /home/ubuntu/keys/fullchain.pem; #replace path
  ssl_certificate_key   /home/ubuntu/keys/privkey.pem; #replace path
#ssl_dhparam          /your/path/dhparams.pem; #optional
#Authenticated Origin Pull is optional. Please refer to https://developers.cloudflare.com/ssl/origin/authenticated-origin-pull/
#ssl_client_certificate  /etc/ssl/origin-pull-ca.pem;
#ssl_verify_client on;
  ssl_session_timeout 1d;
  ssl_session_cache shared:MozSSL:10m;
  ssl_session_tickets off;

  proxy_read_timeout 300;
  proxy_connect_timeout 300;
  proxy_send_timeout 300;

  client_max_body_size 50G; # define your max_upload_file_size

  ssl_protocols         TLSv1.2 TLSv1.3;
  ssl_ciphers           ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
  ssl_prefer_server_ciphers off;

  server_name           azuracast.example.com;
    add_header Content-Security-Policy upgrade-insecure-requests;
  location / {
    proxy_redirect off;
    proxy_pass http://127.0.0.1:20000; 
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}
nginx -t
systemctl restart nginx

3. Post Installation

Since we use Nginx reverse proxy, make sure to check YES on Azuracast - Administration - Settings - Use Web Proxy for Radio, otherwise the audio cannot be played.