Table of Contents

Setting up Host

To Do:

sysrc jail_enable="YES"
service jail enable
/etc/jail.conf
$j="/jails";
path="$j/$name";
host.hostname="$name.domain.com";
 
mount.devfs;
exec.clean;
exec.start="sh /etc/rc";
exec.stop="sh /etc/rc.shutdown";
 
#BASE {
#	ip4.addr="10.0.0.70";
#       path="/jails/BASE"
#}

Create zfs jail base

Create from source

zfs create -o quota=30G zroot/jails/BASE
cd /usr/src
make installworld DESTDIR=/jails/BASE
make distribution DESTDIR=/jails/BASE

Create from release tarball


Configure zfs jail base

touch /jails/BASE/etc/fstab /jails/BASE/etc/rc.conf
mkdir -p /jails/BASE/usr/local/etc/pkg/repos
cp /usr/local/etc/pkg/repos/FreeBSD.conf /jails/BASE/usr/local/etc/pkg/repos
cp /etc/localtime /jails/BASE/etc/
cp /etc/resolv.conf /jails/BASE/etc/
echo 'sendmail_enable="NO"' >> /jails/BASE/etc/rc.conf
echo 'ntpd_enable="NO"' >> /jails/BASE/etc/rc.conf
echo 'sshd_enable="YES"' >> /jails/BASE/etc/rc.conf

install typical packages, add user, install dotfiles, copy keys.

pkg -j BASE install nano zsh git-lite python37 py37-pip
jexec -l BASE adduser
jexec -l -U sleepy BASE git clone https://gitlab.com/ikiryuta/dotfiles.git
jexec -l -U sleepy BASE /home/sleepy/dotfiles/install_links.sh
jexec -l BASE /home/sleepy/dotfiles/install_links.sh
jexec -l BASE chsh -s zsh
jexec -l -u sleepy BASE mkdir /home/sleepy/.ssh
cp ~sleepy/.ssh/authorized_keys_jails /jails/BASE/home/sleepy/.ssh/authorized_keys
jexec -l BASE chown -R sleepy:sleepy /home/sleepy/.ssh
jexec -l BASE chmod 700 /home/sleepy/.ssh
jexec -l BASE chmod 600 /home/sleepy/.ssh/authorized_keys

Snapshot the BASE jail

zfs snapshot zroot/jails/BASE@CLEAN_JAILS_BASE

Create jail


Updating jails

using source

assuming you have already built and installed world and kernel. Stop the running jail(s) first.

cd /usr/make
make installworld DESTDIR=/jails/path
mergemaster -iFU -D /jails/path

jails_update.sh

Script to automate the updates, just make sure to update the jails paths.

jails_update.sh
jails="/jails/postgres /jails/python /jails/nginx /jails/bitbot"
 
cd /usr/src
 
for jail in $jails
do
    make installworld DESTDIR=$jail
    mergemaster -iFU -D $jail
done

using freebsd-update binaries

freebsd-update -b /jails/path fetch
freebsd-update -b /jails/path install

To Do