name: azuracast
services:
    web:
        container_name: azuracast
        image: 'ghcr.io/azuracast/azuracast:${AZURACAST_VERSION:-latest}'
        labels:
            - com.centurylinklabs.watchtower.scope=azuracast
        ports:
            - '${AZURACAST_HTTP_PORT:-80}:${AZURACAST_HTTP_PORT:-80}'
            - '${AZURACAST_HTTPS_PORT:-443}:${AZURACAST_HTTPS_PORT:-443}'
            - '${AZURACAST_SFTP_PORT:-2022}:${AZURACAST_SFTP_PORT:-2022}'
            - '10000:10000'
            - '10005:10005'
            - '10006:10006'
            - '10010:10010'
            - '10015:10015'
            - '10016:10016'
            - '10020:10020'
            - '10025:10025'
            - '10026:10026'
            - '10030:10030'
            - '10035:10035'
            - '10036:10036'
            - '10040:10040'
            - '10045:10045'
            - '10046:10046'
            - '10050:10050'
            - '10055:10055'
            - '10056:10056'
            - '10060:10060'
            - '10065:10065'
            - '10066:10066'
            - '10070:10070'
            - '10075:10075'
            - '10076:10076'
            - '10080:10080'
            - '10085:10085'
            - '10086:10086'
            - '10090:10090'
            - '10095:10095'
            - '10096:10096'
            - '10100:10100'
            - '10105:10105'
            - '10106:10106'
            - '10110:10110'
            - '10115:10115'
            - '10116:10116'
            - '10120:10120'
            - '10125:10125'
            - '10126:10126'
            - '10130:10130'
            - '10135:10135'
            - '10136:10136'
            - '10140:10140'
            - '10145:10145'
            - '10146:10146'
            - '10150:10150'
            - '10155:10155'
            - '10156:10156'
            - '10160:10160'
            - '10165:10165'
            - '10166:10166'
            - '10170:10170'
            - '10175:10175'
            - '10176:10176'
            - '10180:10180'
            - '10185:10185'
            - '10186:10186'
            - '10190:10190'
            - '10195:10195'
            - '10196:10196'
            - '10200:10200'
            - '10205:10205'
            - '10206:10206'
            - '10210:10210'
            - '10215:10215'
            - '10216:10216'
            - '10220:10220'
            - '10225:10225'
            - '10226:10226'
            - '10230:10230'
            - '10235:10235'
            - '10236:10236'
            - '10240:10240'
            - '10245:10245'
            - '10246:10246'
            - '10250:10250'
            - '10255:10255'
            - '10256:10256'
            - '10260:10260'
            - '10265:10265'
            - '10266:10266'
            - '10270:10270'
            - '10275:10275'
            - '10276:10276'
            - '10280:10280'
            - '10285:10285'
            - '10286:10286'
            - '10290:10290'
            - '10295:10295'
            - '10296:10296'
            - '10300:10300'
            - '10305:10305'
            - '10306:10306'
            - '10310:10310'
            - '10315:10315'
            - '10316:10316'
            - '10320:10320'
            - '10325:10325'
            - '10326:10326'
            - '10330:10330'
            - '10335:10335'
            - '10336:10336'
            - '10340:10340'
            - '10345:10345'
            - '10346:10346'
            - '10350:10350'
            - '10355:10355'
            - '10356:10356'
            - '10360:10360'
            - '10365:10365'
            - '10366:10366'
            - '10370:10370'
            - '10375:10375'
            - '10376:10376'
            - '10380:10380'
            - '10385:10385'
            - '10386:10386'
            - '10390:10390'
            - '10395:10395'
            - '10396:10396'
            - '10400:10400'
            - '10405:10405'
            - '10406:10406'
            - '10410:10410'
            - '10415:10415'
            - '10416:10416'
            - '10420:10420'
            - '10425:10425'
            - '10426:10426'
            - '10430:10430'
            - '10435:10435'
            - '10436:10436'
            - '10440:10440'
            - '10445:10445'
            - '10446:10446'
            - '10450:10450'
            - '10455:10455'
            - '10456:10456'
            - '10460:10460'
            - '10465:10465'
            - '10466:10466'
            - '10470:10470'
            - '10475:10475'
            - '10476:10476'
            - '10480:10480'
            - '10485:10485'
            - '10486:10486'
            - '10490:10490'
            - '10495:10495'
            - '10496:10496'
            - '10500:10500'
            - '10505:10505'
            - '10506:10506'
            - '10510:10510'
            - '10515:10515'
            - '10516:10516'
            - '10520:10520'
            - '10525:10525'
            - '10526:10526'
            - '10530:10530'
            - '10535:10535'
            - '10536:10536'
            - '10540:10540'
            - '10545:10545'
            - '10546:10546'
            - '10550:10550'
            - '10555:10555'
            - '10556:10556'
            - '10560:10560'
            - '10565:10565'
            - '10566:10566'
            - '10570:10570'
            - '10575:10575'
            - '10576:10576'
            - '10580:10580'
            - '10585:10585'
            - '10586:10586'
            - '10590:10590'
            - '10595:10595'
            - '10596:10596'
            - '10600:10600'
            - '10605:10605'
            - '10606:10606'
            - '10610:10610'
            - '10615:10615'
            - '10616:10616'
            - '10620:10620'
            - '10625:10625'
            - '10626:10626'
            - '10630:10630'
            - '10635:10635'
            - '10636:10636'
            - '10640:10640'
            - '10645:10645'
            - '10646:10646'
            - '10650:10650'
            - '10655:10655'
            - '10656:10656'
            - '10660:10660'
            - '10665:10665'
            - '10666:10666'
            - '10670:10670'
            - '10675:10675'
            - '10676:10676'
            - '10680:10680'
            - '10685:10685'
            - '10686:10686'
            - '10690:10690'
            - '10695:10695'
            - '10696:10696'
            - '10700:10700'
            - '10705:10705'
            - '10706:10706'
            - '10710:10710'
            - '10715:10715'
            - '10716:10716'
            - '10720:10720'
            - '10725:10725'
            - '10726:10726'
            - '10730:10730'
            - '10735:10735'
            - '10736:10736'
            - '10740:10740'
            - '10745:10745'
            - '10746:10746'
            - '10750:10750'
            - '10755:10755'
            - '10756:10756'
            - '10760:10760'
            - '10765:10765'
            - '10766:10766'
            - '10770:10770'
            - '10775:10775'
            - '10776:10776'
            - '10780:10780'
            - '10785:10785'
            - '10786:10786'
            - '10790:10790'
            - '10795:10795'
            - '10796:10796'
            - '10800:10800'
            - '10805:10805'
            - '10806:10806'
            - '10810:10810'
            - '10815:10815'
            - '10816:10816'
            - '10820:10820'
            - '10825:10825'
            - '10826:10826'
            - '10830:10830'
            - '10835:10835'
            - '10836:10836'
            - '10840:10840'
            - '10845:10845'
            - '10846:10846'
            - '10850:10850'
            - '10855:10855'
            - '10856:10856'
            - '10860:10860'
            - '10865:10865'
            - '10866:10866'
            - '10870:10870'
            - '10875:10875'
            - '10876:10876'
            - '10880:10880'
            - '10885:10885'
            - '10886:10886'
            - '10890:10890'
            - '10895:10895'
            - '10896:10896'
            - '10900:10900'
            - '10905:10905'
            - '10906:10906'
            - '10910:10910'
            - '10915:10915'
            - '10916:10916'
            - '10920:10920'
            - '10925:10925'
            - '10926:10926'
            - '10930:10930'
            - '10935:10935'
            - '10936:10936'
            - '10940:10940'
            - '10945:10945'
            - '10946:10946'
            - '10950:10950'
            - '10955:10955'
            - '10956:10956'
            - '10960:10960'
            - '10965:10965'
            - '10966:10966'
            - '10970:10970'
            - '10975:10975'
            - '10976:10976'
            - '10980:10980'
            - '10985:10985'
            - '10986:10986'
            - '10990:10990'
            - '10995:10995'
            - '10996:10996'
        env_file:
            - azuracast.env
            - .env
        volumes:
            - 'station_data:/var/azuracast/stations'
            - 'backups:/var/azuracast/backups'
            - 'db_data:/var/lib/mysql'
            - 'www_uploads:/var/azuracast/storage/uploads'
            - 'shoutcast2_install:/var/azuracast/storage/shoutcast2'
            - 'stereo_tool_install:/var/azuracast/storage/stereo_tool'
            - 'rsas_install:/var/azuracast/storage/rsas'
            - 'geolite_install:/var/azuracast/storage/geoip'
            - 'sftpgo_data:/var/azuracast/storage/sftpgo'
            - 'acme:/var/azuracast/storage/acme'
        restart: unless-stopped
        ulimits:
            nofile:
                soft: 65536
                hard: 65536
        logging:
            options:
                max-size: 1m
                max-file: '5'
        environment:
            NGINX_RADIO_PORTS: (10000|10010|10020|10030|10040|10050|10060|10070|10080|10090|10100|10110|10120|10130|10140|10150|10160|10170|10180|10190|10200|10210|10220|10230|10240|10250|10260|10270|10280|10290|10300|10310|10320|10330|10340|10350|10360|10370|10380|10390|10400|10410|10420|10430|10440|10450|10460|10470|10480|10490|10500|10510|10520|10530|10540|10550|10560|10570|10580|10590|10600|10610|10620|10630|10640|10650|10660|10670|10680|10690|10700|10710|10720|10730|10740|10750|10760|10770|10780|10790|10800|10810|10820|10830|10840|10850|10860|10870|10880|10890|10900|10910|10920|10930|10940|10950|10960|10970|10980|10990)
            NGINX_WEBDJ_PORTS: (10005|10015|10025|10035|10045|10055|10065|10075|10085|10095|10105|10115|10125|10135|10145|10155|10165|10175|10185|10195|10205|10215|10225|10235|10245|10255|10265|10275|10285|10295|10305|10315|10325|10335|10345|10355|10365|10375|10385|10395|10405|10415|10425|10435|10445|10455|10465|10475|10485|10495|10505|10515|10525|10535|10545|10555|10565|10575|10585|10595|10605|10615|10625|10635|10645|10655|10665|10675|10685|10695|10705|10715|10725|10735|10745|10755|10765|10775|10785|10795|10805|10815|10825|10835|10845|10855|10865|10875|10885|10895|10905|10915|10925|10935|10945|10955|10965|10975|10985|10995)
    updater:
        container_name: azuracast_updater
        image: 'ghcr.io/azuracast/updater:latest'
        restart: unless-stopped
        volumes:
            - '/var/run/docker.sock:/var/run/docker.sock'
        logging:
            options:
                max-size: 1m
                max-file: '5'
volumes:
    db_data: {  }
    acme: {  }
    shoutcast2_install: {  }
    stereo_tool_install: {  }
    rsas_install: {  }
    geolite_install: {  }
    sftpgo_data: {  }
    station_data: {  }
    www_uploads: {  }
    backups: {  }
