Creación de un template de FreeBSD
Crear templates de para jails de FreeBSD es algo bastante bueno, ya que te permite ahorrar tiempo y crear templates para según lo que quieras hacer. Un template general con herramientas como git instaladas, o un template que tenga nginx con php para ahorrarte unos minutos a la hora de instalar un nuevo servicio que use ese software.
Para empezar crea un filesystem de zfs donde quieras
zfs create stranger/jails/template
Y procedemos a instalar el sistema base
cd /stranger/jails/template fetch https://download.freebsd.org/releases/amd64/14.2-RELEASE/base.txz tar xfv base.txz -C /stranger/jails/template
Con esto ya tendremos el sistema base instalado. Ahora tendrías que crear la jail (o hacer un chroot, pero mejor crear la jail ¿no?) e instalar el software que quisieras y configurarlo como quieras
- /etc/jail.conf
squirrelmail { # STARTUP/LOGGING exec.start = "/bin/sh /etc/rc"; exec.stop = "/bin/sh /etc/rc.shutdown"; exec.consolelog = "/var/log/jail_console_${name}.log"; # PERMISSIONS allow.raw_sockets; exec.clean; mount.devfs; # HOSTNAME/PATH host.hostname = "${name}"; path = "/stranger/jails/${name}"; # NETWORK ip4.addr = "bge4|192.168.1.201/24"; }
Podemos iniciar la jail con service jail start template
y luego jexec template sh
para acceder a la consola de la jail. Donde podremos instalar todo lo que queramos, por ejemplo
pkg install -y git zsh
Y los que quieras.
Una vez instalados y configurados ya tendríamos nuestro templates
Podemos hacer exit para salir de la jail.
Y para crear el template para clonar filesystems tendremos que crear una snapshot zfs snapshot stranger/jail/template@2025-04-06
Por ejemplo, para crear un template para php pues haríamos
pkg install -y nginx php84
Tras configurar el nginx.conf para que cargue php (así, por ejemplo)
- /usr/local/etc/nginx/nginx.conf
server { listen 80; server_name localhost; root /usr/local/www/roundcube; index index.php index.html index.htm; # scripts de PHP location ~ \.php$ { fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; } }
Iniciamos el coso con
service nginx enable service php_fpm enable service nginx start service php_fpm start
Luego podemos crear un nuevo FS con el template de php que acabamos de crear. Vamos a crear una nueva snapshot para esto
zfs snapshot stranger/jails/template@2025-04-06_php zfs send stranger/jails/template@2025-04-06_php | zfs recv -F stranger/jails/template_php
Y restauramos el template a su estado de template sin más (sin php ni cosas raras). También tenemos el template con php
zfs rollback stranger/jails/template@2025-04-06
Y por ejemplo, para instalar roundcube podríamos hacer
zfs send stranger/jails/template_php@2025-04-06_php | zfs recv -F stranger/jails/roundcube
¡Felicidades por haber conseguido crear templates de jails con FreeBSD!