Question

cannot get azuracast to run with docker and nginx

Posted March 27, 2018 5.5k views
Linux BasicsGetting StartedDockerConfiguration ManagementApplicationsDeploymentLet's EncryptUbuntu 16.04Initial Server Setup

**
Hello all,

I am new and newbee confused… Dear dear oh my dear,

I really hope someone can help me out.

I have been trying for days now to set up azuracast on a droplet that is preconfigured with docker (Ubuntu Docker 17.12.0~ce on 16.04) …with minimum succes.

It is my first droplet and - although I understand some - I am not a coder…

I installed the droplet, then managed to install azuracast and got the webinterface running. Although it was not broadcasting yet. The stream would be stuck on loading the whole time.

Then in the process of installing ssh and ssl also nginx and certbot were installed. And with that the webinterface of azuracast has disappeared. Enginx has taken over all the ports.

Eversince then I have been trying to change configurationfiles and change ports. But unfortunately I am too much of a noob to get it sorted out.
I am doing something wrong and possibly the programms are conflicting or having a bug. And I cannot figure out exactely what the issues are and how to fix them.

Very unfortunate, because I like it here in DO and azuracast also seems really nice. My main goal for now is to set up a radiostation.

All I have tried to accomplish was done via tutorials from DO and azuracast and googling.

What I think needs doing is:
Configure the port right inside the config files
somehow reroute traffic to the new directory with this adjusted docker-compose.yml
maybe reset the firewall settings
dubbelcheck the ssl settings

I wanted to install portainer to see if that would help me tackle the problems, but…also there the message is:

Error response from daemon: driver failed programming external connectivity on endpoint gifted_bardeen (12bb79f1b96816ebafba4133443d83c171c29447ebf7631daa750445159409fe): Bind for 0.0.0.0:9000 failed: *port is already allocated.

I hope someone can tell me what to do – in simple terms (possibly in copy/paste-style :)
Alternatively if there is such a droplet preconfigured available that would be even better …

I have included below here the complete configfiles of docker and nginx, aswell as a little root tree and an overview of the ports that are taken. I have highlighted where I think things go wrong.
If anything else I can do to clarify…

Thnx for your time!

Br,

============================================================================================
.
├── acconf
│   ├── docker-compose.yml
│   └── ssh
└── acconfreroute
    └── docker-compose.yml
=============================================================================================
GNU nano 2.5.3                          File: docker-compose.yml

version: '2.2'

services:
  web:
    image: azuracast/azuracast_web:latest
    # Uncomment the lines below to build this image locally (Developer option)
    # build:
    #   context: ../docker-azuracast-web
    depends_on:
      - mariadb
      - influxdb
      - stations
      - redis
    environment: &default-environment
      APPLICATION_ENV: "production" # "production" or "development"
      MYSQL_HOST: "mariadb"         # You can change this if you plan to connect to an external DB host.
      MYSQL_PORT: 3306              # ^
      MYSQL_USER: "azuracast"       # Once the database has been installed, don't change this.
      MYSQL_PASSWORD: "azur4c457"   # ^
      MYSQL_DATABASE: "azuracast"   # ^
      MYSQL_RANDOM_ROOT_PASSWORD: "yes"
    volumes:
      # - www_data:/var/azuracast/www
      # For development, comment the line above and uncomment the line below.
      # - .:/var/azuracast/www
      - tmp_data:/var/azuracast/www_tmp
      - station_data:/var/azuracast/stations
    init: true
    restart: always

  nginx:
    image: azuracast/azuracast_nginx:latest
    # Uncomment the lines below to build this image locally (Developer option)
    # build:
    #   context: ../docker-azuracast-nginx
    ports:
      - '8000:80'
      - '443:443'
depends_on:
      - web
      - stations
    volumes:
      # - www_data:/var/azuracast/www
      # For development, comment the line above and uncomment the line below.
      - /acconfreroute/docker-compose.yml:/var/azuracast/www
      - nginx_letsencrypt_certs:/etc/nginx/ssl
      - nginx_letsencrypt_www:/var/www/letsencrypt
    restart: always

  # docker-compose run --rm letsencrypt \
  #   certonly --webroot -w /var/www/letsencrypt
  letsencrypt:
    image: certbot/certbot
    command: /bin/true
    volumes:
      - nginx_letsencrypt_certs:/etc/letsencrypt
      - nginx_letsencrypt_www:/var/www/letsencrypt

mariadb:
    image: mariadb:10.2
    # Uncomment to expose MariaDB to the host computer (for testing only!)
    # ports:
    #  - "127.0.0.1:3306:3306"
    volumes:
      - db_data:/var/lib/mysql
    environment:
      << : *default-environment
    restart: always

  influxdb:
    image: influxdb:1.4-alpine
    volumes:
      - influx_data:/var/lib/influxdb
    restart: always

  redis:
    image: redis:4.0-alpine
    # Uncomment to expose Redis to the host computer (for testing only!)
# ports:
    #  - "127.0.0.1:6379:6379"
    restart: always

  cron:
    container_name: azuracast_cron
    image: azuracast/azuracast_web:latest
    volumes_from:
      - web
    depends_on:
      - mariadb
      - influxdb
      - stations
      - redis
    environment:
      << : *default-environment
    command: 'cron'
    init: true
    restart: always

cli:
    image: azuracast/azuracast_web:latest
    volumes_from:
      - web
    depends_on:
      - mariadb
      - influxdb
      - stations
      - redis
    environment:
      << : *default-environment
    user: 'azuracast'
    working_dir: '/var/azuracast/www'
    command: 'bash'
    tty: true # Pretty colors
    init: true

  stations:
    container_name: azuracast_stations
    image: azuracast/azuracast_stations:latest
# Enable the lines below to build the image locally (Developer option)
    # build:
    #   context: ../docker-azuracast-stations
    ports:
    # Uncomment the line below to expose the full range of available station ports.
    # Note: This is not recommended currently due to performance and memory usage problems with Docker.
    # - '8000-8500:8000-8500'

     - '8005:8005'
     - '8006:8006'
     - '8010:8010'
 # Enable the lines below to build the image locally (Developer option)
    # build:
    #   context: ../docker-azuracast-stations
    ports:
    # Uncomment the line below to expose the full range of available station ports.
    # Note: This is not recommended currently due to performance and memory usage problems with Docker.
    # - '8000-8500:8000-8500'
         xxxxxxxx
     - '8005:8005'
     - '8006:8006'
     - '8010:8010'
     - '8015:8015'
     - '8016:8016'
     - '8020:8020'
     - '8025:8025'
     - '8026:8026'
     - '8030:8030'
     - '8035:8035'
     - '8036:8036'
     - '8040:8040'
     - '8045:8045'
     - '8046:8046'
     - '8050:8050'
     - '8055:8055'
     - '8056:8056'
     - '8060:8060'
     - '8065:8065'
     - '8066:8066'
     - '8070:8070'
     - '8075:8075'
     - '8076:8076'
         xxxxxxxxx
     - '8085:8085'
     - '8086:8086'
     - '8090:8090'
     - '8095:8095'
     - '8096:8096'
    volumes:
     - station_data:/var/azuracast/stations
     - nginx_letsencrypt_certs:/etc/nginx/ssl:ro
    init: true
    restart: always

  # Developer Mode services
  # static:
  #    build:
  #      context: ./util/docker/static
  #    volumes:
  #      - ./web/static:/data
  #
  # chronograf:
  #  image: chronograf:alpine
  #  ports:
  #   - "8888:8888"
  #  command: "chronograf --influxdb-url=http://influxdb:8086"

volumes:
  nginx_letsencrypt_certs: {}
  nginx_letsencrypt_www: {}
  db_data: {}
  influx_data: {}
  station_data: {}
  www_data: {}
  tmp_data: {}

==============================================================================================

root@111010111:~# sudo lsof -i -P -n | grep LISTEN
sshd      1581     root    3u  IPv4  16713      0t0  TCP *:22 (LISTEN)
sshd      1581     root    4u  IPv6  16723      0t0  TCP *:22 (LISTEN)
nginx     1716     root    6u  IPv4  17698      0t0  TCP *:80 (LISTEN)
nginx     1716     root    7u  IPv6  17699      0t0  TCP *:80 (LISTEN)
nginx     1716     root    8u  IPv6  17700      0t0  TCP *:443 (LISTEN)
nginx     1716     root    9u  IPv4  17701      0t0  TCP *:443 (LISTEN)
nginx     1721 www-data    6u  IPv4  17698      0t0  TCP *:80 (LISTEN)
nginx     1721 www-data    7u  IPv6  17699      0t0  TCP *:80 (LISTEN)
nginx     1721 www-data    8u  IPv6  17700      0t0  TCP *:443 (LISTEN)
nginx     1721 www-data    9u  IPv4  17701      0t0  TCP *:443 (LISTEN)
docker-pr 2370     root    4u  IPv6  19938      0t0  TCP *:8096 (LISTEN)
docker-pr 2600     root    4u  IPv6  20283      0t0  TCP *:8095 (LISTEN)
docker-pr 3115     root    4u  IPv6  21815      0t0  TCP *:8090 (LISTEN)
docker-pr 3237     root    4u  IPv6  22215      0t0  TCP *:8086 (LISTEN)
docker-pr 3250     root    4u  IPv6  22261      0t0  TCP *:8085 (LISTEN)
docker-pr 3260     root    4u  IPv6  22302      0t0  TCP *:8076 (LISTEN)
docker-pr 3271     root    4u  IPv6  22338      0t0  TCP *:8075 (LISTEN)
docker-pr 3348     root    4u  IPv6  22734      0t0  TCP *:8070 (LISTEN)
docker-pr 3358     root    4u  IPv6  22820      0t0  TCP *:8066 (LISTEN)
docker-pr 3368     root    4u  IPv6  22882      0t0  TCP *:8065 (LISTEN)
docker-pr 3378     root    4u  IPv6  22990      0t0  TCP *:8060 (LISTEN)
docker-pr 3399     root    4u  IPv6  23059      0t0  TCP *:8056 (LISTEN)
docker-pr 3432     root    4u  IPv6  23161      0t0  TCP *:8055 (LISTEN)
docker-pr 3445     root    4u  IPv6  23202      0t0  TCP *:8050 (LISTEN)
docker-pr 3456     root    4u  IPv6  23241      0t0  TCP *:8046 (LISTEN)
docker-pr 3467     root    4u  IPv6  23279      0t0  TCP *:8045 (LISTEN)
docker-pr 3478     root    4u  IPv6  23320      0t0  TCP *:8040 (LISTEN)
docker-pr 3489     root    4u  IPv6  23350      0t0  TCP *:8036 (LISTEN)
docker-pr 3505     root    4u  IPv6  23420      0t0  TCP *:8035 (LISTEN)
docker-pr 3520     root    4u  IPv6  23487      0t0  TCP *:8030 (LISTEN)
docker-pr 3539     root    4u  IPv6  23601      0t0  TCP *:8026 (LISTEN)
docker-pr 3549     root    4u  IPv6  23638      0t0  TCP *:8025 (LISTEN)
docker-pr 3559     root    4u  IPv6  23667      0t0  TCP *:8020 (LISTEN)
docker-pr 3570     root    4u  IPv6  23695      0t0  TCP *:8005 (LISTEN)
docker-pr 3581     root    4u  IPv6  23722      0t0  TCP *:8006 (LISTEN)
docker-pr 3591     root    4u  IPv6  23758      0t0  TCP *:8016 (LISTEN)
docker-pr 3602     root    4u  IPv6  23785      0t0  TCP *:8015 (LISTEN)
docker-pr 3613     root    4u  IPv6  23815      0t0  TCP *:8010 (LISTEN)
docker-pr 4544     root    4u  IPv6  36972      0t0  TCP *:9000 (LISTEN)

=============================================================================================
 
GNU nano 2.5.3                  File: /etc/nginx/nginx.conf

user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
        worker_connections 768;
        # multi_accept on;
}

http {

        ##
        # Basic Settings
        ##

        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        # server_tokens off;

        # server_names_hash_bucket_size 64;
        # server_name_in_redirect off;

        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        ##
        # SSL Settings
        ##

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
        ssl_prefer_server_ciphers on;

        ##
        # Logging Settings
        ##

        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        ##
        # Gzip Settings
        ##

        gzip off;
        gzip_disable "msie6";

        # gzip_vary on;
        # gzip_proxied any;
        # gzip_comp_level 6;
        # gzip_buffers 16 8k;
        # gzip_http_version 1.1;
        # gzip_types text/plain text/css application/json application/javascript text/xml application/$

        ##
        # Virtual Host Configs
        ##

        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
}


#mail {
#       # See sample authentication script at:
#       # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
#       # auth_http localhost/auth.php;
#       # pop3_capabilities "TOP" "USER";
#       # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
#       server {
#               listen     localhost:110;
#               protocol   pop3;
#               proxy      on;
#       }
#
#       server {
#               listen     localhost:143;
#               protocol   imap;
#               proxy      on;
#       }
#}
edited by bobbyiliev

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

×
Submit an Answer
1 answer

Hi there,

From the error that you are getting, it looks like that there is a container already running on port 9000, if you want to start a new container on the same port, you need to stop the old one before you could do that.

Also an alternative option is to use this 1-Click Azuracast installation option from the Marketplace:

https://marketplace.digitalocean.com/apps/azuracast

Regards,
Bobby