ju ka

FreeBSD

Update vom 29. Juli 2016

Wegen einiger Umstrukturierungen der Dotfiles muss die Einrichtung der Z-Shell angepasst werden:

cd $HOME && git clone https://github.com/JulianKahnert/.dotfiles.git && cd $HOME/.dotfiles/dotfiles.sh install

Original vom 12. Mai 2016

Ein neues Blog und jetzt auch noch ein neues Betriebssystem (FreeBSD 10.3). Ich habe mir den FreeBSD Guide mal genauer angesehen und dachte mir, dass es vielleicht ganz nützlich sein könnte eine Mitschrift davon zu haben. Ich halte mich hier bei der Beschreibung bewusst kurz, um eine Überblick zu bekommen. Der Ablauf sieht wie folgt aus:

  • Basiseinstellungen (ports, pkg, sudo, Zeit)
  • ZFS Auto Snapshot
  • Jails
  • BTSync

Basiseinstellungen

Ports & Paket Manager

Zuerst werden die Ports für FreeBSD heruntergeladen und extrahiert. Anschließend wird der Port portmaster kompiliert, um später einfacher weitere Ports installieren zu können. Für sudo, git und nano wird der Paket Manager verwendet.

su
portsnap fetch
portsnap extract

cd /usr/ports/ports-mgmt/portmaster/ && make install

portmaster /usr/ports/shells/zsh

pkg install security/sudo devel/git editors/nano

Einstellungen sudo

  • visudo um Einstellungen für sudo zu verändern.
  • Kein Passwort für sudo:
## Same thing without a password
%wheel ALL=(ALL) NOPASSWD: ALL

Zeit einstellen

  • sudo ntpdate pool.ntp.org Systemzeit aktualisieren
  • sudo nano /etc/rc.conf Eintrag hinzufügen um Dienst automatisch zu starten:
ntpd_enable="YES"
  • sudo service ntpd start Dienst beim ersten Mal manuell starten.
  • sudo ntpq -p bzw. date um zu prüfen, ob die Uhrzeit richtig eingestellt wurde.

Z-Shell einrichten

  • chsh um die standard Shell (which zsh) zu verändern:
Shell: /usr/local/bin/zsh
  • Dotfiles von GitHub kopieren und installieren:
git clone https://github.com/JulianKahnert/.dotfiles.git && cd ~/.dotfiles && sh ./install-dotfiles.sh

ZFS Auto Snapshot einrichten

  • sudo pkg install zfstools Tools installieren
  • mit denen sudo nano /etc/crontab Einträge erstellen
  • PATH in Crontab hinzufügen which ruby && which zfs-auto-snapshot z.B.:
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

und crontabs einrichten:

# ZFS Autosnapshots
15,30,45 * * * * root /usr/local/sbin/zfs-auto-snapshot frequent  4
0        * * * * root /usr/local/sbin/zfs-auto-snapshot hourly   24
7        0 * * * root /usr/local/sbin/zfs-auto-snapshot daily     7
14       0 * * 7 root /usr/local/sbin/zfs-auto-snapshot weekly    4
28       0 1 * * root /usr/local/sbin/zfs-auto-snapshot monthly  12
  • Autosnapshots für ZPOOL/DATASET aktivieren und Frequenz auswählen:
sudo zfs set com.sun:auto-snapshot=true ZPOOL/DATASET
sudo zfs set com.sun:auto-snapshot:hourly=true ZPOOL/DATASET
  • Einstellungen für Autosnapshots ansehen:
sudo zfs get com.sun:auto-snapshot:frequent,com.sun:auto-snapshot:hourly,com.sun:auto-snapshot:daily,com.sun:auto-snapshot:weekly,com.sun:auto-snapshot:monthly POOL/DATASET

Jails

Netzwerk für die Jails

sudo nano /etc/rc.conf editieren, diese Zeilen hinzufügen:

ifconfig_em0="inet 10.0.1.65 netmask 255.255.255.0"
defaultrouter="10.0.1.1"

ifconfig_em0_alias0="inet 10.0.1.101 netmask 255.255.255.0"
ifconfig_em0_alias1="inet 10.0.1.102 netmask 255.255.255.0"
ifconfig_em0_alias2="inet 10.0.1.103 netmask 255.255.255.0"

EZJail einrichten

  • sudo portmaster sysutils/ezjail Installation
  • sudo nano /usr/local/etc/ezjail.conf editieren, um ZFS verwenden zu können:
# ZFS options

# Setting this to YES will start to manage the basejail and newjail in ZFS
ezjail_use_zfs="YES"

# Setting this to YES will manage ALL new jails in their own zfs
ezjail_use_zfs_for_jails="YES"

# The name of the ZFS ezjail should create jails on, it will be mounted at the ezjail_jaildir
ezjail_jailzfs="zroot/ezjail"

# ADVANCED, be very careful!
ezjail_zfs_properties="-o compression=lz4"
  • sudo ezjail-admin install -msp ezjail installieren
  • sudo nano /etc/rc.conf Zeile anhängen:
ezjail_enable="YES"
  • cd /usr/jails/flavours && sudo cp -r example myflavour neues Template für weitere Jails einrichten.
  • sudo nano /usr/jails/flavours/myflavour/etc/rc.conf editieren:
sshd_enable="YES"
  • sudo nano /usr/jails/flavours/myflavour/etc/resolv.conf Nameserver eintragen:
search no-dns-available.example.com
nameserver 208.67.222.222
nameserver 8.8.8.8
  • IP Adresse nochmal prüfen und Jail erstellen:
ifconfig
sudo ezjail-admin create -f myflavour sync.juliankahnert.de 10.0.1.101
  • Jail starten: sudo ezjail-admin console -f sync_juliankahnert_de oder sudo ezjail-admin start sync_juliankahnert_de

ZPool erstellen und in Jail einbinden

  • Data Set erzeugen
    • sudo zpool create mypool mirror /dev/ada1 /dev/ada2
    • sudo zfs set compression=lz4 mypool
    • Status anzeigen lassen: zpool status
  • Einstellungen aus
sudo sysctl security.jail.mount_allowed=1
sudo sysctl security.jail.mount_devfs_allowed=1
sudo sysctl security.jail.mount_zfs_allowed=1
  • sudo nano /usr/local/etc/ezjail/sync_juliankahnert_de EZJail config verändern:
export jail_sync_juliankahnert_de_zfs_datasets="mypool/BTSync"
export jail_sync_juliankahnert_de_parameters="enforce_statfs=1 allow.mount=1 allow.mount.zfs=1 allow.mount.procfs=1 allow.mount.devfs=1"
  • Auf Host: ZFS einbinden:
sudo zfs create mypool/BTSync
sudo zfs set jailed=on mypool/BTSync
sudo zfs jail sync_juliankahnert_de mypool/BTSync
  • Im Jail: ZPool mounten sudo ezjail-admin console sync_juliankahnert_de:
sudo zfs mount mypool/BTSync
sudo chown -R sync_user:wheel /mypool/BTSync

  • sudo nano /usr/local/etc/crontab Autostart einrichten:
@reboot		root    	zfs mount mypool/BTSync

BTSync: Installation, Autostart und Data Set einrichten

  • BTSync installieren: cd /usr/ports/net-p2p/btsync/ && make install clean
  • sudo nano /etc/crontab editieren für Autostart:
@reboot 	sync_user  	/usr/local/bin/btsync
  • Autosnapshot für BTSync Daten einrichten:
sudo zfs set com.sun:auto-snapshot=true mypool/BTSync
sudo zfs set com.sun:auto-snapshot:frequent=true mypool/BTSync
sudo zfs set com.sun:auto-snapshot:hourly=true mypool/BTSync
sudo zfs set com.sun:auto-snapshot:daily=true mypool/BTSync
sudo zfs set com.sun:auto-snapshot:weekly=true mypool/BTSync
sudo zfs set com.sun:auto-snapshot:monthly=true mypool/BTSync
Tagged with: