Simple GUI to centralize all jail's web services

Bizarro252

Dabbler
Joined
Jul 1, 2019
Messages
36
Hi,
I am just looking for some sort of GUI that would give me a centralize all the web GUIs hosted on the different FreeNAS jails, I run Plex, Emby, Qbit, etc and they all have their own IPs and ports to get to their web interfaces.

I am thinking of just making a simple webpage and hosting it within a jail webserver, but... hoping there is some simple tool I am just missing that someone can point me to?

If not, for a super basic, internal network only web server, any recommendations? Just install a web server service in a new jail?

Thanks!!
 

KrisBee

Wizard
Joined
Mar 20, 2017
Messages
1,288
AFAIK, theer's nothing in the current plugin list that will do that job. An obvious gap which means running a web server in a jail. In linuxland, heimdall dashboard, organizr or muximux seem popular. Using them as docker apps being the simplest route, unless you're conversant with installing & configuring nginx/apache php etc.

I have installed docker inside an Ubuntu VM, so heimdall is trivial to run. Otherwise you might be able adapt the linux install instructions to install this in a FreeNAS jail ( for example, see: https://www.reddit.com/r/selfhosted/comments/ag1wzl/installing_heimdall_in_ubuntu_1804_lts/). Alternatively there are detailed instructions at https://organizr.app/howtos/ which you could adapt.
 

danb35

Hall of Famer
Joined
Aug 16, 2011
Messages
15,504
A fairly simple way to do it is: https://www.ixsystems.com/community...-using-caddy-with-optional-automatic-tls.114/

Then use Skeleton to write a simple page (the below took me about 10 minutes, and I'm pretty HTML-illiterate):
1565433234574.png

Doesn't have the buttons, knobs, bells, and whistles of something like Organizr, but it does what I need it to.

Edit: the resource configures Caddy as a reverse proxy, which is more than you're asking for, but it hides the non-standard ports, replacing them with paths like https://apps.mydomain.com/deluge (and also, optionally, does TLS for all those apps). But you could instead set up a very simple Caddyfile to just serve static html from wherever you want--if you didn't want to do the reverse proxy at all, it could be as simple as:
Code:
*:80 {
gzip
root /usr/local/www/html/
}

...and then put your HTML in /usr/local/www/html/.
 

danb35

Hall of Famer
Joined
Aug 16, 2011
Messages
15,504
heimdall dashboard
Heimdall looks pretty slick--it's a pity its manual installation instructions consist entirely of "Just point your HTTP daemons document route to the /public/ folder", with no discussion of other requirements and such. Looks like their GitHub repo has a little more detail, though...
 

sretalla

Powered by Neutrality
Moderator
Joined
Jan 1, 2016
Messages
9,703
HTPC-manager is something that could work for you, although it looks like most of your stuff would go under the "other apps" section which is just links.

I find it good for providing a single portal to check on status and do minor admin tasks on of a number of apps that I run.

Check it out: https://github.com/Hellowlol/HTPC-Manager
 

Bizarro252

Dabbler
Joined
Jul 1, 2019
Messages
36
Thank you all these all look like good ideas I will check them out this weekend and report back!
 

colmconn

Contributor
Joined
Jul 28, 2015
Messages
174
I have a script that will create a jail and install organizr. If you want it, let me know.
 

danb35

Hall of Famer
Joined
Aug 16, 2011
Messages
15,504
I have a script that will create a jail and install organizr.
It'd be great if you could post it as a resource/link to a GitHub repo/etc.
 

Bizarro252

Dabbler
Joined
Jul 1, 2019
Messages
36
@danb35
Got Caddy up and working with a suuuuper basic page to test it out and enabled the reverse proxies as in your walkthrough (I didn't know this was a thing, even better than the dashboard/GUI, or at least a nice addition :))
Emby works no problem, qbittorrent is being difficult, it will work from a link if I disable some of the security check within qbit for the web GUI (I dont expose this to the outside world so should not be an issue) but reverse proxy still giving me issues for that web GUI in particular.

Looks like NGINX needs all kinds of additional settings so now to just find out how to get the proper settings for Caddy and that should work too (https://github.com/qbittorrent/qBittorrent/wiki/NGINX-Reverse-Proxy-for-Web-UI)

Last question, for skeleton, is that a service you install within the Caddy jail? Not sure I understand what it is for (verses just writing up some basic html and dumping it into /usr/local/www/html/index.html

Thanks!
 

danb35

Hall of Famer
Joined
Aug 16, 2011
Messages
15,504
Last question, for skeleton, is that a service you install within the Caddy jail?
Skeleton is some CSS that makes the page look better--gives you some nice default fonts and widgets, as well as classes you can use for spacing/layout. The screen shot I posted above came from the following HTML, much of which was borrowed from their example page:
Code:
<!DOCTYPE html>
<html lang="en">
<head>

  <!-- Basic Page Needs -->
  <meta charset="utf-8">
  <title>Familybrown LAN Services</title>
  <meta name="description" content="Landing page for (site), explaining and giving links to available services">
  <meta name="author" content="Dan Brown">

  <!-- 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>Familybrown 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="/deluge/" target="_blank">Deluge</a>:  Deluge is a BitTorrent client.</li>
        <li><a href="https://www.familybrown.org/dokuwiki/" target="_blank">DokuWiki</a>:  This wiki contains "Uncle Fester's Guide".</li>
...

No images or animations on this page, and certainly no status information via the API of whatever is being linked to, but it makes it a lot easier to make a decent-looking text page. I ran across Skeleton when I was looking for a way to build a landing page for my domain that would look decent, without the overhead of something like Wordpress/Joomla/Drupal (all of which would do the job, but really be overkill).
 

Bizarro252

Dabbler
Joined
Jul 1, 2019
Messages
36
@danb35 got it thanks! No luck on getting qbittorrent to play nive with the reverse proxy. Will post here if I figure it out :)
 

danb35

Hall of Famer
Joined
Aug 16, 2011
Messages
15,504

Bizarro252

Dabbler
Joined
Jul 1, 2019
Messages
36
Will give that a shot too awesome thanks!
 

Bizarro252

Dabbler
Joined
Jul 1, 2019
Messages
36
Hi @danb35
Having some issues installing it looks like, I downloaded the install script, adjusted the IP and version (they are still on 2.2.2) and ran it, creates the jail and installed dependancies but seems to be having some issues with creating some of the files it needs for caddy. Thoughts?

Thanks!

Code:
root@freenas[...ipts/heimdall/freenas-iocage-heimdall]# ./heimdall-jail.sh
dashboard successfully created!

Testing SRV response to FreeBSD
Testing DNSSEC response to FreeBSD

Installing pkg...

Installing supplied packages:
  - nano...
  - caddy...
  - php72...
  - php72-mbstring...
  - php72-zip...
  - php72-tokenizer...
  - php72-openssl...
  - php72-pdo...
  - php72-pdo_sqlite...
  - php72-filter...
  - php72-xml...
  - php72-ctype...
  - php72-json...
  - sqlite3...
  - php72-session...
  - php72-hash...
* Starting dashboard
  + Started OK
  + Configuring VNET OK
  + Starting services OK

fetch: https://github.com/linuxserver/Heimdall/archive/2.2.2.tar.gz: size of remote file is not known
/tmp/2.2.2.tar.gz                                       10 MB 6310 kBps 00m02s







php_fpm_enable:  -> YES

caddy_enable:  -> YES

caddy_cert_email:  -> nobody@example.com

./heimdall-jail.sh: cannot create /mnt/iocage/jails/dashboard/root/usr/local/www/Caddyfile: No such file or directory


Application key set successfully.

Performing sanity check on php-fpm configuration:
[14-Aug-2019 22:38:41] NOTICE: configuration file /usr/local/etc/php-fpm.conf test is successful

Starting php_fpm.

/usr/local/etc/rc.d/caddy: WARNING: /usr/local/www/Caddyfile is not readable.
/usr/local/etc/rc.d/caddy: WARNING: failed precmd routine for caddy

root@freenas[...ipts/heimdall/freenas-iocage-heimdall]#
 

danb35

Hall of Famer
Joined
Aug 16, 2011
Messages
15,504
./heimdall-jail.sh: cannot create /mnt/iocage/jails/dashboard/root/usr/local/www/Caddyfile: No such file or directory
This looks like the source of your problem. Do you have any other jails running? Because my understanding is that iocage used the /mnt/iocage mount point for its dataset. Does /mnt/iocage exist?
 

Bizarro252

Dabbler
Joined
Jul 1, 2019
Messages
36
Yes I have several other jails running do I need to stop them all before attempting this?

/mnt/iocage doesn't exist. It's /mnt/data_pool/iocage

Sounds like I need to look in the script and add in the extra part to the path. My jails are all installed on my main pool (data_pool)
 

danb35

Hall of Famer
Joined
Aug 16, 2011
Messages
15,504
Yes I have several other jails running do I need to stop them all before attempting this?

No, I was just wondering if perhaps you didn't have a pool "activated" for iocage--but if you have other jails running, that isn't what's going on.

My jails are all installed on my main pool (data_pool)
Mine are too, but the iocage dataset is mounted at /mnt/iocage rather than /mnt/pool_name/iocage. I don't know why that discrepancy is there. In any event, at least in the short term, the remedy is as you describe--replace the couple of references in the script to /mnt/iocage/ with /mnt/data_pool/iocage/. I'll have to see if there's a definite way to determine this path in the script to avoid the need for manual edits.
 

Bizarro252

Dabbler
Joined
Jul 1, 2019
Messages
36
Got ya! Did you make the script? Maybe allow a variable to set the default jails path up top and reference it? Will give it another go thanks for your help :)
 

Bizarro252

Dabbler
Joined
Jul 1, 2019
Messages
36
@danb35
Edited this line and all is well!

# Create Caddyfile
cat <<__EOF__ >/mnt/data_pool/iocage/jails/"${JAIL_NAME}"/root/usr/local/www/Caddyfile
*:80 {
 
Joined
Jul 10, 2016
Messages
521
If you want to dynamically determine the iocage mountpoint for the active pool, you can do:

Code:
mountpoint=$(zfs get -H -o value mountpoint $(iocage get -p)/iocage)
 
Top