this post was submitted on 03 Oct 2026
41 points (100.0% liked)

Selfhosted

62666 readers
305 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

Detailed Rules Post

  1. Be civil.

  2. No spam.

  3. Posts are to be related to self-hosting.

  4. Don't duplicate the full text of your blog or readme if you're providing a link.

  5. Submission headline should match the article title.

  6. No trolling.

  7. Promotion posts require active participation, with an account that is at least 30 days old. F/LOSS without a paywall has exceptions, with requirements. See the rules link for details. Tags [CBH] or [AIP] are required, see the links in Rule 8 for details.

  8. AI-related discussions and AI-involved promotional posts have additional requirements for tagging, as noted in Rule 7 and the AI & Promotional Post Expanded Rules post, and find example disclosures here.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 3 years ago
MODERATORS
 

Apologies if this has been asked before however after some searching I've found several posts / articles here in Lemmy (plus generally around via web searches). Some of the posts are dated however so want to see what the most 'up to date' suggestions are.

I have spare hardware so this is more a software query.

I want to run my own private radio station where I can listen to my music while on the move and at work. Nothing special and it doesnt need bells and whistles however at minimum :

  1. able to listen via web browser (android app would be a bonus but not required)
  2. able to lock it down so only people with the password can listen (me and other half in UK and brother in Australia)
  3. ) a generic login so people without the password do not know what it is or what its for
  4. option to set playlists and / or random via genre over specific time periods

Thanks in advance.

you are viewing a single comment's thread
view the rest of the comments
[–] cideyav138@lemmy.ml 2 points 7 hours ago* (last edited 7 hours ago)

Just a heads up, their example Docker compose comes with a support for 50 radio stations (with 50+ ports mapped), and it isn't meant to sit behind a reverse proxy. Below is a simplified Docker compose that I made to run a single radio station.

services:
  azuracast:
    image: ghcr.io/azuracast/azuracast:latest
    container_name: azuracast
    restart: unless-stopped
    environment:
      AZURACAST_VERSION: latest
      AZURACAST_HTTP_PORT: "80"
      AZURACAST_SFTP_PORT: "2022"
      AZURACAST_STATION_PORTS: "8000,8005,8006"
      AUTO_ASSIGN_PORT_MIN: "8000"
      AUTO_ASSIGN_PORT_MAX: "8006"
      MYSQL_RANDOM_ROOT_PASSWORD: 1
    ports:
      - "4580:80"
      - "4522:2022"
    volumes:
      - /dir-for-db:/var/lib/mysql
      - /dir-for-stations:/var/azuracast/stations
      - /dir-for-storage:/var/azuracast/storage
      - /dir-for-music:/var/azuracast/music
    ulimits:
      nofile:
        soft: 65536
        hard: 65536
    logging:
      driver: json-file
      options:
        max-size: 1m
        max-file: "5"

My nginx routes traffic to port 4580 using the subdomain I assigned for my station, and LetsEncrypt handles SSL. I use SWAG to manage all of that.

I can't remember why, but AZURACAST_STATION_PORTS: "8000,8005,8006" is in fact required for a single station. The Azuracast admin portal has an option to consolidate the public player and admin portal behind a single domain, so radio.example.com hits the public player and radio.example.com/login hits the admin login.

It's nowhere near the level of pain you have to go through to run Matrix with chat bridges on Docker, but getting all of that right and simplified was more work than I wanted it to be. Hope this helps!

EDIT: Got carried away sharing my setup and ignored the login requirement for the player. SWAG supports adding an auth layer like Authentik. Or, as the previous commenter mentioned, you could just forego exposing to the outside web entirely and use Tailscale. Or Wireguard.