Gå till innehållet

iblis.df.lth.se

  • HCX Nexus Series NX465 4U Extended Depth Server Case 15 x 3.5″ HDD
  • 1x AMD EPYC 7543 32 core
  • 128 GB RAM
  • 1x 512gb SSD
  • OS: FreeBSD 14.2-RELEASE
  • GPU: NVIDIA RTX 3090 (passthrough till bifrost)
  • HBA: LSI 9200-8e kopplat till 2st disk arrays

noteringar

Kör vår bouncer, znc Konton skapas vid första inlogg, lösenord kollar genom ldap, saslauthd. ldap config för saslauthd har en egen config fil.

Kör vår irc brygga till discord, matterbridge

Kör distcc

poudriere

Kör poudriere för att bygga FreeBSD ports och agerar sen mirror genom http://pkg.dflund.se/.

Har två olika repos för paket, en vid HEAD vid namn default och en med custom patches som heter skunk.

För ny release vid typ upgrade behöver du skapa ett nytt jail för att bygga i, gör det genom följande kommando.
poudriere jail -c -j 14_2_amd64 -v 14.2-RELEASE -a amd64
För att bygga paket du vill ha så kör följande:
poudriere bulk -f /usr/local/etc/poudriere.d/packages.txt -j 14_2_amd64
Där /usr/local/etc/poudriere.d/packages.txt är en textfil med paket du vill installera, inklusive dess kategori.

Kolla dokumentationen för poudriere, du kan även ändra inställningarna för programmen du ska bygga genom poudriere options. Se då till att du ändrar för ditt jail och inte alla andras.

Bygg alla installerade paket

Du lär vilja ha alla paket från vår egna repo, skapa en lista av alla installerade paket genom pkg genom följande:
pkg info -ao | awk '{ print $2 }' | sort > portlist.txt

Använd pkg.dflund.se som din egna mirror

Lägg till följande i din pkg config.

$ cat /usr/local/etc/pkg/repos/FreeBSD.conf
dflund: {
        url: http://pkg.dflund.se/data/14_2_amd64-default/
        mirror_type: http
        priority: 100
        enabled: yes
}

skunk: {
        url: file:///klump/poudriere/data/packages/14_2_amd64-skunk
        mirror_type: http
        priority: 999
        enabled: yes
}

FreeBSD: {
  enabled: yes
  priority: 1
}

znc

Vår irc bouncer, logga in på https://iblis.dflund.se:1025/ För att sen logga in genom valfri irc klient typ weechat

/server add EFNET iblis.dflund.se/1026 -tls -username=namn/EFNET -password=hunter2
/connect EFNET

bhyve

Använd vm-bhyve. Kolla exempel i /usr/vm

jails

Finns en massa jails också, exempelvis gamma mediawiki innan denna blev till För att starta mediawiki samt den gamla databasen så kan du köra

jailer start stretch
jexec -u root stretch
chroot /compat/ubuntu
source /etc/apache2/envvars
apache2
mysqld_safe --skip-grant-tables --skip-networking

jails skapas lättast med jailer. Alternativt kan du skapa ett thinjail och bygga därifrån zfs clone klump/jails/templates/14.2-RELEASE@base klump/jails/containers/thinjail och sen följa FreeBSD handbook.

jail

Använd gärna jailer, här är en exempel jail.conf

exec.clean;
allow.raw_sockets;
mount.devfs;

namn {
  $id             = "2";
  mount.devfs;
  devfs_ruleset   = 10;
  $bridge         = "bridge0";
  $domain         = "iblis";
  vnet;
  vnet.interface = "epair${id}b";

  exec.prestart   = "ifconfig epair${id} create up";
  exec.prestart  += "ifconfig epair${id}a up descr vnet-${name}";
  exec.prestart  += "ifconfig ${bridge} addm epair${id}a up";

  exec.start      = "/sbin/ifconfig lo0 127.0.0.1 up";
  exec.start     += "/bin/sh /etc/rc";

  exec.stop       = "/bin/sh /etc/rc.shutdown jail";
  exec.poststop   = "ifconfig ${bridge} deletem epair${id}a";
  exec.poststop  += "ifconfig epair${id}a destroy";

  mount.fstab     = "/usr/local/jails/fstab.d/namn.fstab";

  host.hostname   = "${name}.${domain}";
  path            = "/usr/local/jails/namn";
  exec.consolelog = "/var/log/jail/${name}.log";
  persist;
}

linux jail

Vill du ha ett linux jail kan du följa denna guiden.

Om du vill ha ett debian jail utan att behöva chroota så kan du skapa ett nytt dataset med zfs create -p /klump/jails/namn och sen köra debootstrap --no-check-gpg --arch=amd64 daedalus /usr/local/jails/devuan/ http://pkgmaster.devuan.org/merged/ eller någon annan version av debian ist. för daedalus. Se då till att du har mount.nodevfs i din jail.conf fil i /etc/jail.conf.d/

Här är ett exempel på en jail.conf för ett linux jail

exec.clean;
allow.raw_sockets;
#mount.devfs;

devuan {

  # STARTUP/LOGGING
  exec.start      = "/sbin/openrc default";
  exec.stop       = "/sbin/openrc shutdown";
  exec.consolelog = "/var/log/jail_console_${name}.log";

  # PERMISSIONS
  allow.raw_sockets;
  exec.clean;
  mount.nodevfs;

  # not needed?
  allow.mount;
  allow.mount.devfs;
  allow.mount.fdescfs;
  allow.mount.procfs;
  allow.mount.linprocfs;
  allow.mount.linsysfs;
  allow.mount.tmpfs;
  enforce_statfs=1;

  # HOSTNAME/PATH
  host.hostname   = "${name}.${domain}";
  path = "/usr/local/jails/${name}";

  # NETWORK
  $bridge         = "";
  $domain         = "dflund.se";
  ip4             = "inherit";

  # MOUNT

  # MOUNT
  mount += "devfs     $path/dev     devfs     rw  0 0";
  mount += "tmpfs     $path/dev/shm tmpfs     rw,size=1g,mode=1777  0 0";
  mount += "fdescfs   $path/dev/fd  fdescfs   rw,linrdlnk 0 0";
  mount += "linprocfs $path/proc    linprocfs rw  0 0";
  mount += "linsysfs  $path/sys     linsysfs  rw  0 0";
  mount += "/tmp      $path/tmp     nullfs    rw  0 0";

  persist;
  allow.socket_af;
}