dbfbd489fa
* Multi-install support, Blueprints and config changes. Initial commit * Migrating jails to blueprints, first steps. Tested Working: - Transmission - Lidarr - Sonarr - Radarr fix lidarr config (+10 squashed commit) Squashed commit: [5f14653] always link ports folders [f18f2f0] Optional (blueprint) ports mount Fixes #89 [96ef7e7] chmod all the things [129e707] same mistake... again... [e1596dc] missing reference [6da3567] Forgot one reference [d78b5b6] Update wiki.yml [cecc53a] Update filecheck.yml [5244abd] basic settings changed. More involved blueprints still need changes, such as: Bitwarden, nextcloud, Mariadb [6568e92] jails -> blueprints * Added Tested Working: - KMS - Plex - Tautulli - Organizr - InfluxDB - MariaDB Many squashed small fixes included: Make *.rc executable (+13 squashed commit) Squashed commit: [b28aa83] use .rc for rc.d config files [e940a48] some mariadb cleanup [dc27aff] testing another way [83bd91b] Mariadb root password alter instead of update, initial config for unifi [0ca3074] some light config cleanup [a0d4352] also remove database from influxdb example config (db should be created when required) [2c218cc] Prepare influxdb and remove unneeded content [1b34109] more shellcheck fixups [c96566c] Some shellcheck cleanup [8969ca7] bitwarden mostly done, some work on nextcloud and unifi [7f89bfa] initial mariadb patch [dd7e85f] missed one problem [f814cb7] Initial pseudo-compatibility patch for unifi * Enable Bitwarden support and some small fixes/tweaks Fixes #95 more bugs and typo's (+3 squashed commit) Squashed commit: [3b5213e] Bitwarden not correctly installing db [b7438a5] yeah thats not gonna cut it... >.< [e7987c2] some slight bitwarden tweaks * Enable Unifi support and some small fixes/tweaks small unifi cleanup. Unifi is working (+3 squashed commit) Squashed commit: [d906d2d] chmod unifi [545e999] Add extra sanity, remove unneeded variables from example [b8c0b24] Some small Unifi Tweaks * Nextcloud Cleanup, Some fixes, Initial support for blueprintsystem Fixes #96 Fixes #97 Fixes #98 some bloat and syntax fixes (+5 squashed commit) Squashed commit: [78f6428] Some more nextcloud cleanup and tweaks - combines multiple variables for cert system selection (Fixes #98 ) - Default to self signed cert - Force manual admin password [7cacae4] slight fixes [3d81cda] More cleanup [50496cc] small mariadb fix and more nextcloud cleanup [c1b2c20] Cleaning nextcloud - Remove external DB (Fixes #97 ) - Remove Postgresql (Fixes #96 ) - Some preparation for blueprint * Nextcloud done and.. another... (+5 squashed commit) Squashed commit: [c65751b] caddy not installed right. [e5da66b] more fixes [a33300e] Damnit, two typo's same scentence [4292a7a] another typo [1b820cf] typo and example hotfix * Introduce version checking for config file |
||
---|---|---|
.github | ||
blueprints | ||
docs | ||
.gitignore | ||
.shellcheckrc | ||
config.yml.example | ||
global.sh | ||
jailman.sh | ||
LICENSE | ||
mkdocs.yml |
JailMan is a collection of shell scripts designed to make it easier to install all sorts of iocage Jails on FreeNAS.
Intro
There are a lot of great scripts out there to create all sorts of custom jails on FreeNAS. Sadly enough, they all take their own approach to configuration, which lead to a lot of time wasted configuring all sorts of different scripts.
We do not aim to be some sort of XKCD like "solution to replace all solutions", but aim to simply improve, iterate and integrate the great work others have already put forward.
The goal of this project is to be able to install, update, reinstall, upgrade and delete most of your services by just running a single command using a single config file. While doing this we aim for a "docker like" scenario, where the jail is completely disposable and all configuration is saved outside of the jail.
Getting started
Installing
- Get into FreeNAS using the in-gui console or SSH. Run the following commands to install jailman:
git clone https://github.com/Ornias1993/jailman.git
cd jailman
cp config.yml.example config.yml
- edit config.yml to reflect your personal settings (optional, see "use")
- Run one of the commands under "How-To Use"
Updating
This script includes an autoupdate feature which checks if changes to the script has been posted to github.
How-To Use
Replace $jailname with the name of the jail you want to install. For supported jails, please see this readme or config.yml.example
-
First: CD into the directory you downloaded jailman into (see above) example:
cd /root/jailman
-
Install:
./jailman.sh -i $jailname
Example:./jailman.sh -i sonarr
-
ReInstall:
./jailman.sh -r $jailname
Example:./jailman.sh -r sonarr
-
Destroy
./jailman.sh -d $jailname
Example:./jailman.sh -d sonarr
You can also do multiple jails in one pass:
Example:
jailman.sh -i sonarr radarr lidarr
This installs the jail, creates the config dataset if needed, installs all packages and sets them up for you. Only thing you need to do is do the setup of the packages in their respective GUI. All settings for the applications inside the jails are persistent across reinstalls, so don't worry reinstalling!
config.yml.example includes basic configuration for all jails. Basic means: The same setup as a FreeNAS plugin would've, DHCP on bridge0.
Currently Supported Services
General
- organizr
- py-kms
- nextcloud
- bitwarden
- unifi controller
Backend
- mariadb
Downloads
- transmission
- jackett
Media
- plex
- tautulli
- sonarr
- radarr
- lidarr
Get involved
Preparing your own copy of JailMan
Getting involved with JailMan and creating your own Jails, is really simple although experience with Bash, BSD and iocage is highly recommended.
- Fork the JailMan Repository and clone your own fork to disk.
- Create a new branch, starting from the dev branch (with all current development changes)
- Open Jailman.sh and
BRANCH="dev"
into your own branch.
Making changes
To add a jail, you need 4 things:
- A jailfolder under jails/
- an install script in the jail folder, named
install.sh
- an update script in the jail folder, named
update.sh
- an entry in
config.yml
with the name of your jail
All jails created by JailMan start with their own persistant data folder in a seperate dataset, mounted under /config
.
You can safely use this, or create additional datasets and mount those.
To make your experience making changes to Jailman as easy as possible, we already made some convenience functions in global.sh, those are available to your jail install and update scripts from the start!
But above all: Have fun building it!
LICENCE
This work is dual licenced under GPLv2 and BSD-2 clause
Sub-Licences
Some sub-modules available under "jails" might be licenced under a different licence. Please be aware of this and take note of any LICENCE files signaling a differently licenced sub-module.