==== Jails de FreeBSD =====
Antes de que Linux supiese lo que es un contenedor o un Docker, FreeBSD ya tenía su manera de aislar procesos y mas recientemente, recursos de la máquina sin tener que virtualizar propiamente dicho (aunque sigue siendo por definición una máquina virtual)
Encontrarás respuestas mas esclarecedoras en el [[https://docs.freebsd.org/en/books/handbook/jails/|handbook]]
=== Creación de una Jail ===
Lo mas fácil es usar un gestor de jails como [[https://bastillebsd.org/|bastillebsd]] pero yo creé jails manualmente antes de usar Bastille, y migrar a bastille no fue precisamente fácil, así que sigo haciendolo de la manera por defecto y no hay demasiado dolor. Se deben crear en /etc/jail.conf, por ejemplo, para crear una jail básica:
ejemplo {
# 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 = 192.168.1.166;
interface = bge4;
}
Esto creara una jail llamada "ejemplo", que tendrá su root en /stranger/jails/ejemplo. Para instalar ahí un sistema base, podemos usar el comando "bsdinstall"
''bsdinstall jail /stranger/jails/ejemplo''
Lo que harías si fueses listo, es crear /stranger/jails/template como un FS de ZFS, hacer bsdinstall jail /stranger/jails/template y cuando necesites crear una jail, hacerlo con ''zfs send stranger/jails/template@snap || zfs recv stranger/jails/nueva_jail''
Esto te permite crear un FS para cada jail, para darles cuotas de disco y todo eso, además de que es mas fácil crear una jail así.
Una vez finalice la instalación, puedes iniciar la jail con ''service jail start ejemplo'' y verla con el comando ''jls''. Aquí un ejemplo del comando ''jls'' en un entorno donde ya se han creado distintas jails y algunas no tan básicas. Debido a que no me fío una mierda, las IPs de las máquinas están censuradas.
~ [icarus] % jls
JID IP Address Hostname Path
1 192.168.1.xxx mc /stranger/jails/mc
2 192.168.1.xxx shimmie2 /stranger/jails/shimmie2
3 192.168.1.xxx sakisafe /stranger/jails/sakisafe
4 192.168.1.xxx dokuwiki /stranger/jails/dokuwiki
5 192.168.1.xxx forgejo /stranger/jails/forgejo
6 grafana /stranger/jails/grafana
7 wireguard /stranger/jails/wireguard
8 192.168.1.xxx build /stranger/jails/build
9 192.168.1.xxx ansible /stranger/jails/ansible
10 192.168.1.xxx archivebox /stranger/jails/archivebox
11 192.168.1.xxx jellyfin /stranger/jails/jellyfin
{{:smile.png|}}
=== Jails VNET ====
TODO: Consulte el handbook de mientras