danb35
Hall of Famer
- Joined
- Aug 16, 2011
- Messages
- 15,504
I've played with Organizr, and it gives a nice GUI. Caddy is a full-blown web server, and certainly could be used to serve it, but you'd kind of be on your own as far as configuration. For my installation, I just prepared a simple landing page using Skeleton, of which I posted a screen shot up-thread. Here's the HTML for that page:Plus, it would be great for everything to be accessible from Organizr (or something equivalent) to be used as landing page.
Code:
<!DOCTYPE html> <html lang="en"> <head> <!-- Basic Page Needs --> <meta charset="utf-8"> <title>MyDomain LAN Services</title> <meta name="description" content="Landing page for apps.mydomain.com, explaining and giving links to available services"> <meta name="author" content="danb35"> <!-- Mobile Specific Metas --> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- FONT --> <link href="//fonts.googleapis.com/css?family=Raleway:400,300,600" rel="stylesheet" type="text/css"> <!-- CSS --> <link rel="stylesheet" href="css/normalize.css"> <link rel="stylesheet" href="css/skeleton.css"> <!-- Favicon --> <link rel="icon" type="image/png" href="images/favicon.png"> </head> <body> <!-- Primary Page Layout --> <div class="container"> <div class="row"> <h2><strong>MyDomain LAN Services</strong></h2> <p>This server provides TLS termination and proxies for a variety of services provided in other FreeNAS jails and elsewhere on the LAN, as described and linked below.</p> </div> <div class="row"> <div class="two columns"></div> <div class="ten columns"> <h4>Installed web applications</h4> <ul> <li><a href="https://dup.mydomain.com/" target="_blank">Duplicati</a>: Duplicati provides encrypted cloud backup to Google Drive for files on the FreeNAS server.</li> <li><a href="/nzbget/" target="_blank">NZBGet</a>: NZBGet is a binary newsreader, downloading and decoding articles specified by .nzb index files</li> <li><a href="/radarr/" target="_blank">Radarr</a>: Radarr is an automated movie indexing and downloading system.</li> <li><a href="/sabnzbd/" target="_blank">SABnzbd</a>: SABnzbd is another binary newsreader.</li> <li><a href="/sonarr/" target="_blank">Sonarr</a>: Sonarr functions as a DVR, indexing and downloading episodes of specified TV shows.</li> <li><a href="/tautulli/" target="_blank">Tautulli</a>: Tautulli (formerly PlexPy) monitors the status of the Plex Media Server.</li> <li><a href="/transmission/" target="_blank">Transmission</a>: Transmission is a Bittorrent client.</li> <li><a href="https://urb.mydomain.com/" target="_blank">Urbackup</a>: Urbackup is a backup server for computers on the LAN.</li> </ul> </div> </div> </div> <!-- End Document --> </body> </html>
Fancy? Not at all. But it's clean, readable, and has links for everything. I may play with Organizr a bit in the future, but probably not in the short term.
As far as setting this up for more of your apps, start by trying (and adapting with a suitable path and the proper URL to the service) the basic proxy block I give in the example Caddyfile--I've found that works more often than not. If it doesn't work immediately, I've found a few things to look at before you start Googling for examples:
- Many applications have a setting for the "base URL"--of those I've tried, Radarr, Sonarr, and Tautulli have that setting. If the app has such a setting, set it to whatever path you're using (in my case, those would respectively be radarr, sonarr, and tautulli).
- Some applications limit connections to certain specified FQDNs--two I've encountered with this limit are Duplicati and Transmission. For those apps, you can connect using an IP address, but they'll refuse connections to your FQDN unless you configure the app to accept that--in Transmission, the setting in settings.json is "rpc-host-whitelist".
- Some applications don't appear to support being served as a subdirectory; two I've encountered with this limitation are Duplicati and Urbackup. IOW, I can't set a proxy for apps.mydomain.com/duplicati -> 192.168.1.20:8200. What I've had to do in those cases is assign separate hostnames for those, using separate blocks in the Caddyfile.