├── INDEX ├── README.md ├── asigra-11.1.json ├── asigra.json ├── bitcoin-node.json ├── iconik.json ├── icons ├── asigra.png ├── bacula-server.png ├── bru-server.png ├── btsync.png ├── channels-dvr.png ├── crashplan.png ├── deluge.png ├── dnsmasq.png ├── dnsmasq.svg ├── gitlab.png ├── homebridge.png ├── iconik.png ├── irssi.png ├── madsonic.png ├── minio.png ├── nextcloud.png ├── openvpn.png ├── plex.png ├── quasselcore.png ├── redmine.png ├── rtorrent-flood.png ├── sabnzbd.png ├── sickchill.png ├── sickrage.png ├── subsonic.png ├── syncthing.png ├── tarsnap.png ├── ttrss.png ├── unificontroller.png ├── weechat.png └── xmrig.png ├── minio.json ├── nextcloud.json ├── plexmediaserver-plexpass.json ├── plexmediaserver.json ├── syncthing.json ├── tarsnap.json └── template ├── README.md ├── overlay └── usr │ └── local │ └── bin │ ├── quasselget │ └── quasselset ├── post_install.sh ├── settings.json └── ui.json /INDEX: -------------------------------------------------------------------------------- 1 | { 2 | "asigra": { 3 | "MANIFEST": "asigra.json", 4 | "name": "Asigra Backup", 5 | "icon": "https://media.sys.truenas.net/core/icons/asigra.png", 6 | "description": "Allows administrators to back up data from network-connected computers and mobile devices. Leverages standard API calls from a single on-site Asigra service (DS-Client) to reach into these devices and access the data.", 7 | "official": true, 8 | "primary_pkg": "dssystem", 9 | "category": "backup", 10 | "maintainer": "iXsystems ", 11 | "homepage": "https://www.asigra.com/" 12 | }, 13 | "minio": { 14 | "MANIFEST": "minio.json", 15 | "name": "Minio", 16 | "icon": "https://media.sys.truenas.net/core/icons/minio.png", 17 | "description": "High-performance object (S3) storage suite.", 18 | "official": true, 19 | "primary_pkg": "minio", 20 | "category": "collaboration", 21 | "maintainer": "iXsystems ", 22 | "homepage": "https://min.io/" 23 | }, 24 | "nextcloud": { 25 | "MANIFEST": "nextcloud.json", 26 | "name": "Nextcloud", 27 | "icon": "https://media.sys.truenas.net/core/icons/nextcloud.png", 28 | "description": "Suite of client-server software for creating and using file hosting services.", 29 | "official": true, 30 | "primary_pkg": "nextcloud-php74", 31 | "category": "collaboration", 32 | "maintainer": "iXsystems ", 33 | "homepage": "https://nextcloud.com/" 34 | }, 35 | "plexmediaserver": { 36 | "MANIFEST": "plexmediaserver.json", 37 | "name": "Plex Media Server", 38 | "icon": "https://media.sys.truenas.net/core/icons/plex.png", 39 | "description": "Media center software to easily manage and stream digital media.", 40 | "official": true, 41 | "primary_pkg": "plexmediaserver", 42 | "category": "entertainment", 43 | "maintainer": "iXsystems ", 44 | "homepage": "https://www.plex.tv/" 45 | }, 46 | "plexmediaserver-plexpass": { 47 | "MANIFEST": "plexmediaserver-plexpass.json", 48 | "name": "Plex Media Server (Beta)", 49 | "icon": "https://media.sys.truenas.net/core/icons/plex.png", 50 | "description": "Media center software to easily manage and stream digital media. (Requires Plex Pass Subscription)", 51 | "official": true, 52 | "primary_pkg": "plexmediaserver-plexpass", 53 | "category": "entertainment", 54 | "maintainer": "iXsystems ", 55 | "homepage": "https://www.plex.tv/plex-pass/" 56 | }, 57 | "syncthing": { 58 | "MANIFEST": "syncthing.json", 59 | "name": "Syncthing", 60 | "icon": "https://media.sys.truenas.net/core/icons/syncthing.png", 61 | "description": "Open source, peer-to-peer file synchronization application available for many operating systems.", 62 | "official": true, 63 | "primary_pkg": "syncthing", 64 | "category": "collaboration", 65 | "maintainer": "iXsystems ", 66 | "homepage": "https://syncthing.net/" 67 | }, 68 | "tarsnap": { 69 | "MANIFEST": "tarsnap.json", 70 | "name": "Tarsnap", 71 | "icon": "https://media.sys.truenas.net/core/icons/tarsnap.png", 72 | "description": "Secure online backup service for UNIX-like operating systems.", 73 | "official": true, 74 | "primary_pkg": "tarsnap", 75 | "category": "backup", 76 | "maintainer": "iXsystems ", 77 | "homepage": "https://www.tarsnap.com/" 78 | }, 79 | "iconik": { 80 | "MANIFEST": "iconik.json", 81 | "name": "Iconik", 82 | "description": "Streamlines media asset management by making local and cloud-based assets discoverable from a single interface.", 83 | "official": true, 84 | "icon": "https://media.sys.truenas.net/core/icons/iconik.png", 85 | "primary_pkg": "iconik_storage_gateway", 86 | "category": "collaboration", 87 | "maintainer": "iXsystems ", 88 | "homepage": "https://iconik.io/" 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # iocage-ix-plugins 2 | Official iXsystems iocage plugins for [TrueNAS CORE](http://www.truenas.com) 3 | 4 | Plugin Json files are added to this repo, along with a respective icon in icons/ 5 | 6 | When a plugin is made 'official' it should be added to the INDEX json and 7 | it will appear in iocage's plugin listing 8 | 9 | # Installing Plugins 10 | 11 | ## Using Local File 12 | ``` 13 | iocage fetch -P /the/path/to/jenkins.json ip4_addr="re0|192.168.0.100" -n jenkins 14 | ``` 15 | 16 | ## Pulling from Internet 17 | ``` 18 | iocage fetch --plugins --name "jenkins" ip4_addr="igb0|192.168.0.91" 19 | ``` 20 | -------------------------------------------------------------------------------- /asigra-11.1.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "asigra", 3 | "release": "11.1-RELEASE", 4 | "artifact": "https://github.com/freenas/iocage-plugin-asigra.git", 5 | "pkgs": [ 6 | "ca_root_nss", 7 | "gettext-runtime", 8 | "icu", 9 | "indexinfo", 10 | "libxml2", 11 | "nss_ldap", 12 | "openldap-client", 13 | "pam_ldap", 14 | "lang/perl5.28", 15 | "postgresql96-client", 16 | "postgresql96-server", 17 | "nginx" 18 | ], 19 | "properties": { 20 | "mount_devfs": "1", 21 | "mount_fdescfs": "1", 22 | "mount_procfs": "1", 23 | "allow_set_hostname": "1", 24 | "allow_raw_sockets": "1", 25 | "allow_sysvipc": "1", 26 | "sysvmsg": "new", 27 | "sysvsem": "new", 28 | "sysvshm": "new" 29 | }, 30 | "packagesite": "http://pkg.cdn.trueos.org/iocage/unstable", 31 | "fingerprints": { 32 | "iocage-plugins": [ 33 | { 34 | "function": "sha256", 35 | "fingerprint": "226efd3a126fb86e71d60a37353d17f57af816d1c7ecad0623c21f0bf73eb0c7" 36 | } 37 | ] 38 | }, 39 | "revision": "0" 40 | } -------------------------------------------------------------------------------- /asigra.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "asigra", 3 | "release": "11.3-RELEASE", 4 | "artifact": "https://github.com/ix-plugin-hub/iocage-plugin-asigra.git", 5 | "pkgs": [ 6 | "postgresql10-server", 7 | "postgresql10-client", 8 | "postgresql10-contrib", 9 | "postgresql10-plpython", 10 | "ca_root_nss", 11 | "nss_ldap", 12 | "pam_ldap", 13 | "nginx", 14 | "dsoperator", 15 | "dssystem" 16 | ], 17 | "properties": { 18 | "mount_devfs": 1, 19 | "mount_fdescfs": 1, 20 | "mount_procfs": 1, 21 | "allow_set_hostname": 1, 22 | "allow_raw_sockets": 1, 23 | "allow_sysvipc": 1, 24 | "sysvmsg": "new", 25 | "sysvsem": "new", 26 | "sysvshm": "new", 27 | "vnet": 1, 28 | "dhcp": 1 29 | }, 30 | "packagesite": "http://download.truenas.com/plugins/asigra/stable/11.3-RELEASE", 31 | "fingerprints": { 32 | "iocage-plugins": [ 33 | { 34 | "function": "sha256", 35 | "fingerprint": "226efd3a126fb86e71d60a37353d17f57af816d1c7ecad0623c21f0bf73eb0c7" 36 | } 37 | ] 38 | }, 39 | "revision": "0" 40 | } 41 | -------------------------------------------------------------------------------- /bitcoin-node.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bitcoin-node", 3 | "plugin_schema": "2", 4 | "release": "12.2-RELEASE", 5 | "artifact": "https://github.com/freenas/iocage-plugin-bitcoin-node.git", 6 | "official": false, 7 | "properties": { 8 | "nat": 1 9 | }, 10 | "pkgs": [ 11 | "net-p2p/bitcoin-daemon" 12 | ], 13 | "packagesite": "http://pkg.FreeBSD.org/${ABI}/latest", 14 | "fingerprints": { 15 | "iocage-plugins": [ 16 | { 17 | "function": "sha256", 18 | "fingerprint": "b0170035af3acc5f3f3ae1859dc717101b4e6c1d0a794ad554928ca0cbb2f438" 19 | } 20 | ] 21 | }, 22 | "revision": "0" 23 | } 24 | -------------------------------------------------------------------------------- /iconik.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "iconik-storage-gateway", 3 | "release": "12.3-RELEASE", 4 | "artifact": "https://github.com/freenas/iocage-plugin-iconik-storage-gateway.git", 5 | "properties": { 6 | "nat": 1, 7 | "nat_forwards": "tcp(8000:8000)" 8 | }, 9 | "pkgs": [ 10 | "iconik_storage_gateway" 11 | ], 12 | "packagesite": "http://download.truenas.com/plugins/iconik/stable/12.3-RELEASE", 13 | "fingerprints": { 14 | "iocage-plugins": [ 15 | { 16 | "function": "sha256", 17 | "fingerprint": "226efd3a126fb86e71d60a37353d17f57af816d1c7ecad0623c21f0bf73eb0c7" 18 | } 19 | ] 20 | }, 21 | "revision": "0" 22 | } 23 | -------------------------------------------------------------------------------- /icons/asigra.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freenas/iocage-ix-plugins/66b8680290d1922641c2158617b68d97b6849eb1/icons/asigra.png -------------------------------------------------------------------------------- /icons/bacula-server.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freenas/iocage-ix-plugins/66b8680290d1922641c2158617b68d97b6849eb1/icons/bacula-server.png -------------------------------------------------------------------------------- /icons/bru-server.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freenas/iocage-ix-plugins/66b8680290d1922641c2158617b68d97b6849eb1/icons/bru-server.png -------------------------------------------------------------------------------- /icons/btsync.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freenas/iocage-ix-plugins/66b8680290d1922641c2158617b68d97b6849eb1/icons/btsync.png -------------------------------------------------------------------------------- /icons/channels-dvr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freenas/iocage-ix-plugins/66b8680290d1922641c2158617b68d97b6849eb1/icons/channels-dvr.png -------------------------------------------------------------------------------- /icons/crashplan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freenas/iocage-ix-plugins/66b8680290d1922641c2158617b68d97b6849eb1/icons/crashplan.png -------------------------------------------------------------------------------- /icons/deluge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freenas/iocage-ix-plugins/66b8680290d1922641c2158617b68d97b6849eb1/icons/deluge.png -------------------------------------------------------------------------------- /icons/dnsmasq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freenas/iocage-ix-plugins/66b8680290d1922641c2158617b68d97b6849eb1/icons/dnsmasq.png -------------------------------------------------------------------------------- /icons/dnsmasq.svg: -------------------------------------------------------------------------------- 1 | 2 | image/svg+xml 35 | 47 | 110 | 123 | 128 | 133 | 136 | 143 | 147 | 151 | 152 | 157 | -------------------------------------------------------------------------------- /icons/gitlab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freenas/iocage-ix-plugins/66b8680290d1922641c2158617b68d97b6849eb1/icons/gitlab.png -------------------------------------------------------------------------------- /icons/homebridge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freenas/iocage-ix-plugins/66b8680290d1922641c2158617b68d97b6849eb1/icons/homebridge.png -------------------------------------------------------------------------------- /icons/iconik.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freenas/iocage-ix-plugins/66b8680290d1922641c2158617b68d97b6849eb1/icons/iconik.png -------------------------------------------------------------------------------- /icons/irssi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freenas/iocage-ix-plugins/66b8680290d1922641c2158617b68d97b6849eb1/icons/irssi.png -------------------------------------------------------------------------------- /icons/madsonic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freenas/iocage-ix-plugins/66b8680290d1922641c2158617b68d97b6849eb1/icons/madsonic.png -------------------------------------------------------------------------------- /icons/minio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freenas/iocage-ix-plugins/66b8680290d1922641c2158617b68d97b6849eb1/icons/minio.png -------------------------------------------------------------------------------- /icons/nextcloud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freenas/iocage-ix-plugins/66b8680290d1922641c2158617b68d97b6849eb1/icons/nextcloud.png -------------------------------------------------------------------------------- /icons/openvpn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freenas/iocage-ix-plugins/66b8680290d1922641c2158617b68d97b6849eb1/icons/openvpn.png -------------------------------------------------------------------------------- /icons/plex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freenas/iocage-ix-plugins/66b8680290d1922641c2158617b68d97b6849eb1/icons/plex.png -------------------------------------------------------------------------------- /icons/quasselcore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freenas/iocage-ix-plugins/66b8680290d1922641c2158617b68d97b6849eb1/icons/quasselcore.png -------------------------------------------------------------------------------- /icons/redmine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freenas/iocage-ix-plugins/66b8680290d1922641c2158617b68d97b6849eb1/icons/redmine.png -------------------------------------------------------------------------------- /icons/rtorrent-flood.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freenas/iocage-ix-plugins/66b8680290d1922641c2158617b68d97b6849eb1/icons/rtorrent-flood.png -------------------------------------------------------------------------------- /icons/sabnzbd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freenas/iocage-ix-plugins/66b8680290d1922641c2158617b68d97b6849eb1/icons/sabnzbd.png -------------------------------------------------------------------------------- /icons/sickchill.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freenas/iocage-ix-plugins/66b8680290d1922641c2158617b68d97b6849eb1/icons/sickchill.png -------------------------------------------------------------------------------- /icons/sickrage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freenas/iocage-ix-plugins/66b8680290d1922641c2158617b68d97b6849eb1/icons/sickrage.png -------------------------------------------------------------------------------- /icons/subsonic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freenas/iocage-ix-plugins/66b8680290d1922641c2158617b68d97b6849eb1/icons/subsonic.png -------------------------------------------------------------------------------- /icons/syncthing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freenas/iocage-ix-plugins/66b8680290d1922641c2158617b68d97b6849eb1/icons/syncthing.png -------------------------------------------------------------------------------- /icons/tarsnap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freenas/iocage-ix-plugins/66b8680290d1922641c2158617b68d97b6849eb1/icons/tarsnap.png -------------------------------------------------------------------------------- /icons/ttrss.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freenas/iocage-ix-plugins/66b8680290d1922641c2158617b68d97b6849eb1/icons/ttrss.png -------------------------------------------------------------------------------- /icons/unificontroller.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freenas/iocage-ix-plugins/66b8680290d1922641c2158617b68d97b6849eb1/icons/unificontroller.png -------------------------------------------------------------------------------- /icons/weechat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freenas/iocage-ix-plugins/66b8680290d1922641c2158617b68d97b6849eb1/icons/weechat.png -------------------------------------------------------------------------------- /icons/xmrig.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freenas/iocage-ix-plugins/66b8680290d1922641c2158617b68d97b6849eb1/icons/xmrig.png -------------------------------------------------------------------------------- /minio.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "minio", 3 | "plugin_schema": "2", 4 | "release": "12.2-RELEASE", 5 | "artifact": "https://github.com/freenas/iocage-plugin-minio.git", 6 | "official": true, 7 | "properties": { 8 | "nat": 1, 9 | "nat_forwards": "tcp(9001:9002),tcp(9000:9001)" 10 | }, 11 | "pkgs": [ 12 | "minio" 13 | ], 14 | "packagesite": "http://pkg.freebsd.org/${ABI}/latest", 15 | "fingerprints": { 16 | "iocage-plugins": [ 17 | { 18 | "function": "sha256", 19 | "fingerprint": "b0170035af3acc5f3f3ae1859dc717101b4e6c1d0a794ad554928ca0cbb2f438" 20 | } 21 | ] 22 | }, 23 | "revision": "0" 24 | } 25 | -------------------------------------------------------------------------------- /nextcloud.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Nextcloud", 3 | "plugin_schema": "2", 4 | "release": "12.2-RELEASE", 5 | "artifact": "https://github.com/freenas/iocage-plugin-nextcloud.git", 6 | "official": false, 7 | "properties": { 8 | "nat": 1, 9 | "nat_forwards": "tcp(80:8282),tcp(443:8283)" 10 | }, 11 | "pkgs": [ 12 | "ffmpeg", 13 | "nextcloud-php80", 14 | "php80-pecl-imagick-3.7.0_2", 15 | "php80-bcmath", 16 | "php80-gmp", 17 | "php80-pcntl", 18 | "php80-pecl-redis", 19 | "php80-phar", 20 | "nginx", 21 | "mysql80-server", 22 | "redis", 23 | "py39-fail2ban", 24 | "py39-certbot" 25 | ], 26 | "packagesite": "http://pkg.FreeBSD.org/${ABI}/latest", 27 | "fingerprints": { 28 | "iocage-plugins": [ 29 | { 30 | "function": "sha256", 31 | "fingerprint": "b0170035af3acc5f3f3ae1859dc717101b4e6c1d0a794ad554928ca0cbb2f438" 32 | } 33 | ] 34 | }, 35 | "revision": "1" 36 | } 37 | -------------------------------------------------------------------------------- /plexmediaserver-plexpass.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "plexmediaserver-plexpass", 3 | "release": "12.2-RELEASE", 4 | "official": false, 5 | "artifact": "https://github.com/freenas/iocage-plugin-plexmediaserver-plexpass.git", 6 | "properties": { 7 | "dhcp": 1 8 | }, 9 | "pkgs": [ 10 | "plexmediaserver-plexpass", 11 | "ffmpeg" 12 | ], 13 | "packagesite": "http://pkg.FreeBSD.org/${ABI}/latest", 14 | "fingerprints": { 15 | "iocage-plugins": [ 16 | { 17 | "function": "sha256", 18 | "fingerprint": "b0170035af3acc5f3f3ae1859dc717101b4e6c1d0a794ad554928ca0cbb2f438" 19 | } 20 | ] 21 | }, 22 | "revision": "0" 23 | } 24 | -------------------------------------------------------------------------------- /plexmediaserver.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Plex", 3 | "release": "13.1-RELEASE", 4 | "artifact": "https://github.com/freenas/iocage-plugin-plexmediaserver.git", 5 | "official": "false", 6 | "properties": { 7 | "dhcp": 1 8 | }, 9 | "pkgs": [ 10 | "plexmediaserver", 11 | "ffmpeg" 12 | ], 13 | "packagesite": "http://pkg.FreeBSD.org/${ABI}/latest", 14 | "fingerprints": { 15 | "iocage-plugins": [ 16 | { 17 | "function": "sha256", 18 | "fingerprint": "b0170035af3acc5f3f3ae1859dc717101b4e6c1d0a794ad554928ca0cbb2f438" 19 | } 20 | ] 21 | }, 22 | "revision": "0" 23 | } 24 | -------------------------------------------------------------------------------- /syncthing.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "syncthing", 3 | "release": "12.2-RELEASE", 4 | "artifact": "https://github.com/freenas/iocage-plugin-syncthing.git", 5 | "official": false, 6 | "properties": { 7 | "nat": 1, 8 | "nat_forwards": "tcp(80:8384),tcp(22000:22000),udp(22000:22000),udp(21027:21027)" 9 | }, 10 | "pkgs": [ 11 | "syncthing", 12 | "ca_root_nss", 13 | "nginx" 14 | ], 15 | "packagesite": "http://pkg.FreeBSD.org/${ABI}/latest", 16 | "fingerprints": { 17 | "iocage-plugins": [ 18 | { 19 | "function": "sha256", 20 | "fingerprint": "b0170035af3acc5f3f3ae1859dc717101b4e6c1d0a794ad554928ca0cbb2f438" 21 | } 22 | ] 23 | }, 24 | "revision": "0" 25 | } 26 | -------------------------------------------------------------------------------- /tarsnap.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Tarsnap", 3 | "plugin_schema": "2", 4 | "release": "12.2-RELEASE", 5 | "artifact": "https://github.com/freenas/iocage-plugin-tarsnap.git", 6 | "official": false, 7 | "properties": { 8 | "nat": 1 9 | }, 10 | "pkgs": [ 11 | "tarsnap" 12 | ], 13 | "packagesite": "http://pkg.FreeBSD.org/${ABI}/latest", 14 | "fingerprints": { 15 | "iocage-plugins": [ 16 | { 17 | "function": "sha256", 18 | "fingerprint": "b0170035af3acc5f3f3ae1859dc717101b4e6c1d0a794ad554928ca0cbb2f438" 19 | } 20 | ] 21 | }, 22 | "revision": "0" 23 | } 24 | -------------------------------------------------------------------------------- /template/README.md: -------------------------------------------------------------------------------- 1 | # Iocage Plugin Artifact Template 2 | 3 | This is an example of what a typical plugin "artifact" git repo will contain. 4 | 5 | Artifacts are where 3rd party scripts and settings are stored for a particular plugin. 6 | 7 | They allow you do run Post Install actions, which are often required to enable 8 | specific services or perform other post package setup. 9 | 10 | # File Documentation 11 | 12 | - `post_install.sh` 13 | 14 | This script is run *inside* the jail after it has been created and packages installed. 15 | 16 | Typically you will enable services in /etc/rc.conf that need to start with the jail startup, 17 | apply configuration settings, etc. 18 | 19 | 20 | - `ui.json` 21 | 22 | Json file that accepts the following key/value options: 23 | 24 | - `adminportal : "http://%%IP%%/"` 25 | 26 | Plugin's web-interface for control / configuration. %%IP%% will be replaced dynamically withe the jails IP address. 27 | 28 | - `overlay/` 29 | 30 | Directory of files that will be copied on top of the jail post-install. I.E. usr/local/bin/myfile will 31 | be placed in the jails /usr/local/bin/myfile location. Can be used to supply custom files / configuration 32 | data, scripts and more. 33 | 34 | - `settings.json` 35 | 36 | JSON file which controls plugins settings interface (Both iocage CLI and GUI of TrueOS / FreeNAS) 37 | 38 | The required fields include: 39 | 40 | - `"servicerestart" : "service plexmediaserver restart"` 41 | 42 | Command to run when restarting service after changing settings 43 | 44 | - `"serviceget" : "/usr/local/bin/myget"` 45 | 46 | Points to the command used to get values for plugin configuration. Usually will be provided by the plugin creator, can be any language as long as it takes a single "key" argument, and returns the setting text. 47 | 48 | - `"serviceset" : "/usr/local/bin/myset"` 49 | 50 | Points to the command used to set values for plugin configuration. Will be provided by the plugin creator, can be any language as long as it accepts two arguments for key/value pair. 51 | 52 | - `"options": { }` 53 | 54 | The following subsection will contain arrays of elements, starting with the "key" name and required arguments 55 | for that particular type of setting. Example: 56 | 57 | 58 | ``` 59 | "options": { 60 | "adduser": { 61 | "type": "add", 62 | "name": "Add User", 63 | "description": "Add new quasselcore user", 64 | "requiredargs": { 65 | "username": { 66 | "type": "string", 67 | "description": "Quassel Client Username" 68 | }, 69 | "password": { 70 | "type": "password", 71 | "description": "Quassel Client Password" 72 | }, 73 | "fullname": { 74 | "type": "string", 75 | "description": "Quassel Client Full Name" 76 | } 77 | }, 78 | "optionalargs": { 79 | "adminuser": { 80 | "type": "bool", 81 | "description": "Can this user administrate quasselcore?" 82 | } 83 | } 84 | }, 85 | "port": { 86 | "type": "int", 87 | "name": "Quassel Core Port", 88 | "description": "Port for incoming quassel connections", 89 | "range": "1024-32000", 90 | "default": "4242", 91 | "requirerestart": true 92 | }, 93 | "sslmode": { 94 | "type": "bool", 95 | "name": "SSL Only", 96 | "description": "Only accept SSL connections", 97 | "default": true, 98 | "requirerestart": true 99 | 100 | }, 101 | "ssloption": { 102 | "type": "combo", 103 | "name": "SSL Options", 104 | "description": "SSL Connection Options", 105 | "requirerestart": true, 106 | "default": "tlsallow", 107 | "options": { 108 | "tlsrequire": "Require TLS", 109 | "tlsallow": "Allow TLS", 110 | "tlsdisable": "Disable TLS" 111 | } 112 | }, 113 | "deluser": { 114 | "type": "delete", 115 | "name": "Delete User", 116 | "description": "Remove a quasselcore user" 117 | } 118 | 119 | } 120 | ``` 121 | -------------------------------------------------------------------------------- /template/overlay/usr/local/bin/quasselget: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | get_port() 4 | { 5 | while [ $# -gt 0 ] 6 | do 7 | if [ "$1" = "-p" ] ; then 8 | shift 9 | port="$1" 10 | break 11 | fi 12 | shift 13 | done 14 | if [ -z "$port" ] ; then 15 | port="4242" 16 | fi 17 | echo "$port" 18 | } 19 | 20 | get_sslmode() 21 | { 22 | while [ $# -gt 0 ] 23 | do 24 | echo "$1" | grep -q "require-ssl" 25 | if [ $? -eq 0 ] ; then 26 | ssl="true" 27 | break 28 | fi 29 | shift 30 | done 31 | if [ -z "$ssl" ] ; then 32 | ssl="false" 33 | fi 34 | echo "$ssl" 35 | } 36 | 37 | get_ssloption() 38 | { 39 | # Bogus value 40 | echo "tlsallow" 41 | } 42 | 43 | get_users() 44 | { 45 | # Quasselcore is somewhat stupid and doesn't let you 46 | # list or delete users, keeping this here for example purposes 47 | echo "NA" 48 | } 49 | 50 | # Stub for something which gets quasselsettings 51 | case $1 in 52 | port) serviceflags=`sysrc -n -f /etc/rc.conf quasselcore_args` 53 | get_port $serviceflags ;; 54 | sslmode) serviceflags=`sysrc -n -f /etc/rc.conf quasselcore_args` 55 | get_sslmode $serviceflags ;; 56 | ssloption) get_ssloption ;; 57 | deluser) get_users ;; 58 | *) echo "Unknown option" ;; 59 | esac 60 | -------------------------------------------------------------------------------- /template/overlay/usr/local/bin/quasselset: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set_port() 4 | { 5 | newargs="" 6 | while [ $# -gt 0 ] 7 | do 8 | if [ "$1" = "-p" ] ; then 9 | shift 10 | shift 11 | continue 12 | fi 13 | newargs="$newargs $1" 14 | shift 15 | done 16 | newargs="$newargs -p $NEWPORT" 17 | sysrc -f /etc/rc.conf quasselcore_args="$newargs" 18 | exit 0 19 | } 20 | 21 | set_sslmode() 22 | { 23 | newargs="" 24 | while [ $# -gt 0 ] 25 | do 26 | if [ "$1" = "--require-ssl" ] ; then 27 | shift 28 | continue 29 | fi 30 | newargs="$newargs $1" 31 | shift 32 | done 33 | if [ "$NEWSSLMODE" = "true" ] ; then 34 | newargs="$newargs --require-ssl" 35 | fi 36 | sysrc -f /etc/rc.conf quasselcore_args="$newargs" 37 | exit 0 38 | 39 | } 40 | 41 | set_ssloption() 42 | { 43 | # Bogus value 44 | echo "tlsallow" 45 | } 46 | 47 | adduser() 48 | { 49 | # Retarded how you add users to quassel 50 | # Example only 51 | printf "$1\n$2\n$2\n" | quasselcore --configdir=/var/db/quassel --add-user 52 | } 53 | 54 | # Stub for something which sets quasselsettings 55 | case $1 in 56 | port) serviceflags=`sysrc -n -f /etc/rc.conf quasselcore_args` 57 | NEWPORT="$2" 58 | set_port $serviceflags ;; 59 | sslmode) serviceflags=`sysrc -n -f /etc/rc.conf quasselcore_args` 60 | NEWSSLMODE="$2" 61 | set_sslmode $serviceflags ;; 62 | ssloption) set_ssloption ;; 63 | adduser) adduser "$2" "$3" ;; 64 | *) echo "Unknown option" ;; 65 | esac 66 | -------------------------------------------------------------------------------- /template/post_install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | : ${quasselcore_data="/var/db/quasselcore"} 4 | : ${quasselcore_log="/var/log/quasselcore.log"} 5 | : ${quasselcore_listen="0.0.0.0,::"} 6 | 7 | # Enable the service 8 | sysrc -f /etc/rc.conf quasselcore_args="--configdir=${quasselcore_data} --logfile=${quasselcore_log} --listen=${quasselcore_listen} --ssl-cert=${quasselcore_data}/quasselCert.pem --require-ssl" 9 | sysrc -f /etc/rc.conf quasselcore_enable="YES" 10 | 11 | # Make the default DB dir 12 | mkdir -p /var/db/quasselcore 13 | chown quasselcore:quasselcore /var/db/quasselcore 14 | 15 | # Gen the SSL key 16 | printf "\n\n\n\n\n\n\n\n\n\n" | /usr/local/etc/rc.d/quasselcore onekeygen 2>/dev/null >/dev/null 17 | 18 | # Start the service 19 | if $(service quasselcore start 2>/dev/null >/dev/null) ; then 20 | echo "Starting quasselcore." 21 | fi 22 | -------------------------------------------------------------------------------- /template/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "servicerestart":"service quasselcore restart", 3 | "serviceget": "/usr/local/bin/quasselget", 4 | "serviceset": "/usr/local/bin/quasselset", 5 | "options": { 6 | "adduser": { 7 | "type": "add", 8 | "name": "Add User", 9 | "description": "Add new quasselcore user", 10 | "requiredargs": { 11 | "username": { 12 | "type": "string", 13 | "description": "Quassel Client Username" 14 | }, 15 | "password": { 16 | "type": "password", 17 | "description": "Quassel Client Password" 18 | }, 19 | "fullname": { 20 | "type": "string", 21 | "description": "Quassel Client Full Name" 22 | } 23 | }, 24 | "optionalargs": { 25 | "adminuser": { 26 | "type": "bool", 27 | "description": "Can this user administrate quasselcore?" 28 | } 29 | } 30 | }, 31 | "port": { 32 | "type": "int", 33 | "name": "Quassel Core Port", 34 | "description": "Port for incoming quassel connections", 35 | "range": "1024-32000", 36 | "default": "4242", 37 | "requirerestart": true 38 | }, 39 | "sslmode": { 40 | "type": "bool", 41 | "name": "SSL Only", 42 | "description": "Only accept SSL connections", 43 | "default": true, 44 | "requirerestart": true 45 | 46 | }, 47 | "ssloption": { 48 | "type": "combo", 49 | "name": "SSL Options", 50 | "description": "SSL Connection Options", 51 | "requirerestart": true, 52 | "default": "tlsallow", 53 | "options": { 54 | "tlsrequire": "Require TLS", 55 | "tlsallow": "Allow TLS", 56 | "tlsdisable": "Disable TLS" 57 | } 58 | }, 59 | "deluser": { 60 | "type": "delete", 61 | "name": "Delete User", 62 | "description": "Remove a quasselcore user" 63 | } 64 | 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /template/ui.json: -------------------------------------------------------------------------------- 1 | { 2 | "adminportal": "http://%%IP%%:32400/web" 3 | } 4 | --------------------------------------------------------------------------------