docker-compose.yml should be a super simple/generic file. It should be treated as static, never changing. docker-compose.override.yml should be a file that has the ports, network, and environment variables The .env file should be a file that has the environment variables (sensitive information) The docker_files directory should have the yml files for the different GPUs for hardware transcoding setup_jellyfin.sh will first check before doing anything else 1. Check if docker is installed 2. Check if docker-compose is installed 3. Ask where to install jellyfin docker files (assume it will be in the same location as the setup script, but ask if it should be in a different directory. Set value install_dir) 4. Check if jellyfin docker files are already installed a. is the docker-compose.yml file in the install location ($install_dir) ? b. is the docker-compose.override.yml file in the install location ($install_dir) ? c. Does the .env file exist in the install location ($install_dir) ? 4. Get hardware information a. Check if GPU is available and if it is NVIDIA, AMD, or Intel. Is it integrated or dedicated? Older or newer? b. Run ```getent group render | cut -d: -f3``` to get the render group ID c. Is the appropriate yml file for the GPU in the install location ($install_dir), if not copy it? 5. Get requested information a. Domain name (if not already set in the .env file) b. Email address (if not already set in the .env file) c. Jellyfin admin username (if not already set in the .env file) d. Jellyfin admin password (if not already set in the .env file) 6. Get network information a. Ask if Jellyfin should be configured to use the host network (if not already set in the docker-compose.override.yml file) b. If NOT using the host network, check if some other service is using ports 80, 443, 8080, 8920, 8096, DLNA, or 8096, if so ask which ports to use instead, offer to change the ports in the docker-compose.override.yml file c. If using the host network, check if some other service is using ports 80 or 443, if so ask which ports to use instead, offer to change the ports in the docker-compose.override.yml file d. Ask if Jellyfin will need to get SSL certs or if it will be running behind a reverse proxy like nginx Proxy Manager, Caddy, or Traefik e. Some other service might already be using the DLNA port, ask if Jellyfin should use a different port, or not include DLNA in the docker-compose.override.yml file f. Ask if Jellyfin should use a specific docker network, if so, list the networks for the user to choose. Add options to add a network, or to do manually do later. 7. Add Volumes a. If volumes are not configured in the override file, do a ```docker volume ls | grep -v "^local.*[0-9a-f]\{64\}$"``` to list the volumes. If there are volumes listed, ask if they should be used, if so, add them to the docker-compose.override.yml file ```yml volumes: $volume_name: external: true `` Also add option to add path as a volume Also add option to do manually do later. 8. Check if jellyfin is configured to use the correct volumes 9. Check if jellyfin is configured to use the correct environment variables 10. Check if jellyfin is configured to use the correct transcoding settings 11. Check if jellyfin is configured to use the correct SSL settings (if not behind a reverse proxy) 12. Check if jellyfin is configured to use the correct DLNA settings 13. Check if jellyfin is configured to use the correct transcoding settings