I feel bad writing about this because it doesn't constitute a bug as much as it is me bugging the dev team for advice on what they would recommend for the most optimal setup in my case. But this, being the only available avenue for questions, is where I must ask it. Maybe someone in the future with a similar situation as mine might be able to benefit from said advice.
So, as mentioned before in my previous thread, I have an Ubuntu Server 18.04 LTS on a single machine. Mine happens to be a hand-me-down Dell T7500 Workstation which does have hardware support for things like KVM.
Before opting for AzuraCast, I had found LibreTime, a fork of Airtime, and due to it not using Docker, they recommend that a VPS / VM setup be used due to the many dependencies and alterations it makes in the environment, such as its altered form of Apache, etc.
So here's where my guesstimation comes into play:
I'm supposing that AzuraCast also requires plenty of alteration of its host environment to operate. I noticed it installs and utilizes Apache, sets the IP address of the machine as the default address for accessing the web interface, and it probably does other things to its dependencies that I don't even know about. So, from what I can tell, even though it uses Docker to maintain a stable environment for production status, it still makes itself home on the machine, which would render my use of the machine for other uses also difficult to operate without tinkering with Docker and AzuraCast's settings.
This has led me to believe that, even in the event I decide to use the supported Docker installation instead of Ansible, it still behoves me to create a Virtual Machine to run it so I may do other things with the server host as I please. In a perfect setup, I'm imagining that having AzuraCast, running on a VM, with its own IP address, with it able to tap into the file server on the host IP, would allow me to take advantage of the ease of setup of Docker while still partitioning things well.
The other option that I've considered is to purchase a nice little Raspberry Pi to use as a dedicated AzuraCast host, with nothing else on it.
Before going that route though, I have attempted (and am still attempting) to learn how to set up a VM. I'm running Ubuntu, and the supported method is to use libvirt. The pains I am going through currently are to create a VM, using virt-manager, through qemu+ssh, from a workstation, which I am having difficulties with things as simple as a "Why is the Browse button grayed out!? I need that so I can select where to create my storage pool!" I'm going on 24 hours of searching for clues just to figure THAT little problem out.
But, in the back of my mind, I thought.. wait, am I even doing the right thing? Does SilverEagle even recommend using a Docker install of AzuraCast on a VM? Or is it even necessary? Or will it even work? Are there other ways (SIMPLER ways) to achieve this, short of buying a Pi?
Lastly, you might be asking, why don't I just get an account on Digital Ocean? Ahhh, well, storage space! It costs way less for me to host my own server, where I have Terabytes worth of storage space for music and media, than it is to rent it on a service host. Plus, there is the experience of being able to say, "I did this, I learned this, I can DIY host things now!"
So, there's my verbose tale. There's my dilemma! I'm barely getting attuned to Linux in the first place, and so there's a learning curve of monumental proportions at my feet that I must climb, on TOP of that I don't even know if what I'm trying to achieve is the most optimal setup.
What do you recommend for a good, stable, clean, production model for installing and configuring AzuraCast on a multi-purpose self-hosted network server?
@TogarUshindi I believe your fundamental understanding of how our Docker installation works may be flawed. Let me attempt to clarify.
We have two installation types:
For your purposes, there is no reason to run AzuraCast's Docker installation inside another VM inside your server. You can just run the Docker installation on your server itself. If you want to host other web sites on the same server, that's possible and we even have a special page with instructions on how to set up the Docker Nginx Proxy to handle serving all of those sites alongside AzuraCast on the same web ports: https://www.azuracast.com/developers/multisite.html
Also, do not get a little Raspberry Pi and use it for AzuraCast. While they are great little devices and you can do all kinds of things with them, the only installation method currently possible for AzuraCast on the RPi 3/4 is the non-recommended Ansible method as described above, due to Docker limitations on building for ARM hardware. You're much better off using an x86-64 device if you can.
The recommended installation environment is definitely Docker as it will isolate AzuraCast as much as possible from your host system and makes it a lot easier to debug any problems you might have as we can more easily recreate the same conditions in our dev environments. You will still be able to make use of the host machine for other things too.
When running AzuraCast via Docker only "supporting" software such as Docker, Docker-Compose and git will be installed on your host machine so software like apache on the host will not be touched but you might need to modify ports in the .env (not azuracast.env) so that any existing webserver (apache / nginx) still runs on port 80. All the software that belongs to the AzuraCast software stack like the nginx, php-fpm, mariadb, liquidsoap, etc. are only running inside of those Docker containers in their own little linux system.
But, in the back of my mind, I thought.. wait, am I even doing the right thing? Does SilverEagle even recommend using a Docker install of AzuraCast on a VM? Or is it even necessary? Or will it even work? Are there other ways (SIMPLER ways) to achieve this, short of buying a Pi?
The Docker installation method will currently not work on the Pi because of some issues with DockerHub and the ARM architecture in the build pipeline.
In theory you can use a Pi when using the Ansible installation but I don't think this is recommended at all as the Pi is rather limited in performance, although the Pi 4 might not be that much bottlenecked as the previous models.
In general a normal VPS / VM is the way to go when hosting AzuraCast with a hosting provider as most people don't need the raw power of a dedicated server. When deciding on a VPS / VM type you need to pay attention because some hosting providers cut cost by giving you a VPS that is already a container (for example an LXC container) which is not able to run Docker itself.
In a perfect setup, I'm imagining that having AzuraCast, running on a VM, with its own IP address, with it able to tap into the file server on the host IP, would allow me to take advantage of the ease of setup of Docker while still partitioning things well.
Docker allows you to mount any directory from the machine that is running Docker into the containers you're running. If you are partitioning space on the same machine or even when you have another machine running a file server you can mount them into the AzuraCast containers to have them available to AC. With a file server you'll first need to mount the directory to your Docker host for example via FUSE.
What do you recommend for a good, stable, clean, production model for installing and configuring AzuraCast on a multi-purpose self-hosted network server?
I think this partly depends on how the multi-purpose server will be used in general.
What's your security model?
Are you the only one installing and configuring software on it?
Is everything that the server will provide a part of the same "product/service"?
How do you want to deploy updates?
What about backups?
How many users do you intend to server?
There are a lot of things that can be taken into account when deciding on how to run such a software stack. It can always get fancier if you need it but you also shouldn't overburden yourself with "setting up the absolutely perfect system" right in the beginning.
In general you don't need to create VMs on the server just to have a dedicated Docker host for AzuraCast. If you want to learn about configuring and running VMs you can absolutely do that though or if you want to have more isolation but it is not needed.
.... Huh! ... Well then! ... I guess I'll chalk it up to "Well that was an interesting but needless adventure!"
Thanks so much, guys. Sorry for being such a newb. :)