Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.


Panel
titleColor#ffffff
titleBGColor#de2c68
borderStylesolid
titleInhalt

Inhalt


Über die Software

Bei einigen komplexen Umgebungen kann es Sinn machen ergeben neben den "üblichen" „üblichen“ Routern mit Freifunk-Software (Gluon) auch Geräte mit Original-Firmware der Hersteller zu nutzen. Solche Geräte sollten regelmäßig Updates erhalten. Unter anderem hierfür kann ein zentrales Management genutzt werden. Für einige Geräte der Firma Ubiquiti bietet sich hier die kostenfreie Software "UniFi Controller" an.

Von UniFi-Controller unterstützte Hardware:

Diese zentrale Software ist ein Hilfsmittel. Wir Freifunker finden Dezentralität gut. Daher sollen gerne auch eigene Management-Lösungen genutzt werden. Wir unterstützen auch beim Aufbau Diese zentrale Software ist ein Hilfsmittel. Wir Freifunker finden Dezentralität gut. Daher sollen gerne auch eigene Management-Lösungen genutzt werden. Wir unterstützen auch beim Aufbau eigener Systeme. Wer nur wenige Geräte hat oder keine Möglichkeit für ein eigenes Management hat, der kann gerne das zentrale System mitbenutzen.

Am 24.10.2018 wurde ein zweiter Server unifi-legacy installiert, damit EOL-Geräte auf diesen verschoben werden können. Erst danach konnte der Hauptserver auf die aktuelle Version aktualisiert werden.

Installation

Hardware

Unser Server hat nur eine Netzwerkkarte. Diese ist mit dem Freifunk-Netzwerk verbunden.

Codeblock
languagexml
<domain type='kvm' id='14'>>
    <name>FF_UniFi<<name>unifi</name>
    <uuid>7d491430<uuid>77b1989e-514937d9-43364f20-b239a2e9-6bf477ceebc9<bd1152a8208f</uuid>
    <memory unit='KiB'>4194304</memory>
    <currentMemory unit='KiB'>4194304</currentMemory>
    <vcpu placement='static'>2</vcpu>
  <os>
  <resource>
  <type arch='x86_64' machine='pc-i440fx-xenial'>hvm</type>
    <partition>/machine</partition><boot dev='hd'/>
  </os>
  </resource><features>
    <os><acpi/>
    <apic/>
  </features>
  <type<cpu archmode='x86_64custom' machinematch='pc-i440fx-xenial'>hvm</type>exact'>
        <boot dev<model fallback='hdallow'>IvyBridge</>model>
    </os>cpu>
    <features><clock offset='utc'>
    <timer    <acpiname='rtc' tickpolicy='catchup'/>
    <timer    <apicname='pit' tickpolicy='delay'/>
    </features>
    <cpu mode<timer name='customhpet' matchpresent='exactno'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
    <model fallback='allow'>IvyBridge</model>
    </cpu><on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <pm>
    <clock offset<suspend-to-mem enabled='utcno'/>
        <timer name<suspend-to-disk enabled='rtcno' tickpolicy='catchup'/>/>
  </pm>
  <devices>
    <emulator>/usr/bin/kvm-spice</emulator>
    <timer<disk nametype='pitfile' tickpolicydevice='delaydisk'/>
      <driver  <timer name='hpetqemu' type='raw' presentcache='nonone'/>
    </clock>
    <on_poweroff>destroy</on_poweroff><source file='/home/libvirt/images/ffms/unifi.raw'/>
    <on_reboot>restart</on_reboot>
  <target  <on_crash>restart</on_crash>dev='vda' bus='virtio'/>
    <pm>
  <address type='pci' domain='0x0000' bus='0x00'   <suspend-to-mem enabled='noslot='0x07' function='0x0'/>
    </disk>
    <suspend-to-disk enabled<controller type='no'/usb' index='0' model='ich9-ehci1'>
    </pm>
    <devices>
     <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x7'/>
    </controller>
     <emulator>/usr/bin/kvm-spice</emulator>
        <disk type='file' device='disk<controller type='usb' index='0' model='ich9-uhci1'>
      <master startport='0'/>
     <driver <address nametype='qemupci' typedomain='raw0x0000' cachebus='none'0x00' slot='0x06' function='0x0' multifunction='on'/>
    </controller>
    <controller type='usb'   <source file='/home/libvirt/images/ffms/unify.raw'/index='0' model='ich9-uhci2'>
            <backingStore<master startport='2'/>
      <address type='pci' domain='0x0000'    <target devbus='0x00' slot='vda0x06' busfunction='virtio0x1'/>
    </controller>
    <controller type='usb'   <alias nameindex='0' model='virtioich9-disk0uhci3'/>
      <master startport='4'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x040x06' function='0x00x2'/>
        </disk>controller>
        <controller type='usbpci' index='0' model='ich9pci-ehci1root'/>
    <controller        <alias name='usb'/type='virtio-serial' index='0'>
            <address type<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x70x0'/>
        </controller>
    <interface    <controller type='usb' index='0' model='ich9-uhci1network'>
            <alias name='usb<mac address='52:54:00:14:bb:9f'/>
      <source network='Clientnetz-Dom16'/>
      <master<model startporttype='0virtio'/>
            <address type='pci' domain='0x0000' bus='0x00' slot='0x050x03' function='0x0' multifunction='on'/>
        </controller>interface>
    <serial type='pty'>
     <controller type='usb' index<target port='0' model='ich9-uhci2'/>
    </serial>
        <alias name<console type='usbpty'/>
      <target      <master startport='2type='serial' port='0'/>
    </console>
    <channel type='spicevmc'>
      <address<target type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x1virtio' name='com.redhat.spice.0'/>
      <address type='virtio-serial' controller='0' bus='0' port='1'/>
        </controller>channel>
        <controller<input type='usbtablet' indexbus='0' model='ich9-uhci3'usb'/>
    <input type='mouse' bus='ps2'/>
    <input  <alias nametype='keyboard' bus='usbps2'/>
    <graphics type='spice' autoport='yes'>
      <master<image startportcompression='4off'/>
    </graphics>
    <sound model='ich6'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x050x04' function='0x20x0'/>
    </sound>
    </controller><video>
      <model  <controller type='pci' index='0' model='pci-root'type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1'/>
      <address      <alias name='pci.0type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
        </controller>video>
        <interface<redirdev bus='usb' type='networkspicevmc'>
    </redirdev>
    <redirdev bus='usb' type='spicevmc'>
   <mac address='52:54:00:1b:e9:27'/ </redirdev>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000'    <source network='Clientnetz-Dom16' bridge='virbr2bus='0x00' slot='0x08' function='0x0'/>
            <target dev='vnet3'/>
            <model type='virtio'/>
            <alias name='net0'/>
            <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
        </interface>
        <serial type='pty'>
            <source path='/dev/pts/2'/>
            <target port='0'/>
            <alias name='serial0'/>
        </serial>
        <console type='pty' tty='/dev/pts/2'>
            <source path='/dev/pts/2'/>
            <target type='serial' port='0'/>
            <alias name='serial0'/>
        </console>
        <input type='tablet' bus='usb'>
            <alias name='input0'/>
        </input>
        <input type='mouse' bus='ps2'/>
        <input type='keyboard' bus='ps2'/>
        <graphics type='vnc' port='5902' autoport='yes' listen='127.0.0.1' keymap='de'>
            <listen type='address' address='127.0.0.1'/>
        </graphics>
        <video>
            <model type='cirrus' vram='16384' heads='1'/>
            <alias name='video0'/>
            <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
        </video>
        <memballoon model='virtio'>
            <alias name='balloon0'/>
            <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
        </memballoon>
    </devices>
</domain>

Software

Die Installation ist per APT recht einfach. Siehe Schritt-für-Schritt unter https://help.ubnt.com/hc/en-us/articles/220066768-UniFi-How-to-Install-Update-via-APT-on-Debian-or-Ubuntu

Nutzung

Es gibt verschiedene sogenannte Sites (Standorte bzw. Gruppierung von Geräten).

Jedem dieser Standorte können Benutzer hinzugefügt werden. Für deine eigene Site sprich gerne Sebastian Danek oder einen der anderen Administratoren an oder komme zu einem unserer Treffen.

</memballoon>
  </devices>
</domain>

Software

Die Installation ist per APT recht einfach. Siehe Schritt-für-Schritt unter https://help.ubnt.com/hc/en-us/articles/220066768-UniFi-How-to-Install-Update-via-APT-on-Debian-or-Ubuntu

Die Installation wurde umgestellt auf das Script von Glenn: https://community.ui.com/questions/UniFi-Installation-Scripts-or-UniFi-Easy-Update-Script-or-UniFi-Lets-Encrypt-or-UniFi-Easy-Encrypt-/ccbc7530-dd61-40a7-82ec-22b17f027776

Nutzung

Im Freifunk-Münsterland-Netz wird ein Unifi-Controller als Service zur Verfügung gestellt.

Es gibt verschiedene sogenannte Sites (Standorte bzw. Gruppierung von Geräten). Jedem dieser Standorte können Benutzer hinzugefügt werden. Für deine eigene Site sprich gerne Sebastian Danek oder einen der anderen Administratoren an oder komme zu einem unserer Treffen.

IP-Adressen / Zugriff unifi Hauptserver

IP-Adressen / Zugriff unifi-legacy


Let's-Encrypt-Zertifikat

Neben dem normalen acme.sh-Certbot braucht man noch ein Skript, was den Import in den Controller übernimmt.

Codeblock
wget https://source.sosdg.org/brielle/lets-encrypt-scripts/raw/master/gen-unifi-cert.sh -O /root/bin/gen-unifi-cert.sh

Dieses Skript prüft automatisch, ob eine Erneuerung erforderlich ist und stoppt dann ggfs. automatisch den Controller. Der Aufruf erfolgt so:

Codeblock
/root/bin/gen-unifi-cert.sh -e info@freifunk-muensterland.de -d unifi.freifunk-muenster.de -d unifi.ffmsl.de -d unifi.freifunk-muensterland.de -d unifi.freifunk-muensterland.org -d unifi.freifunk-muensterland.net

Das ACME- und das Unifi-Cert-Skript benötigen einen Cronjobeintrag:

Codeblock
#1 0 * * 1 "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
16 0 * * 1 /root/bin/gen-unifi-cert.sh -e info@freifunk-muensterland.de -d unifi.freifunk-muenster.de -d unifi.ffmsl.de -d unifi.freifunk-muensterland.de -d unifi.freifunk-muensterland.org -d unifi.freifunk-muensterland.net

Performance-Anpassung

Am 11.07.2018 haben wir einige Anpassungen an der Datei system.properties (Siehe https://help.ubnt.com/hc/en-us/articles/205202580) vorgenommen.

Als Grundlage haben wir die Tipps von der Seite https://help.ubnt.com/hc/en-us/articles/115005159588-UniFi-How-to-Tune-the-Controller-for-High-Number-of-UniFi-Devices genommen.

Codeblock
title/var/lib/unifi/system.properties
unifi.xmx=3072
unifi.xms=3072
unifi.G1GC.enabled=true
inform.num_thread=500
inform.max_keep_alive_requests=100
Codeblock
languagexml
collapsetrue
<domain type='kvm' id='14'>
  <name>FF_UniFi</name>
  <uuid>7d491430-5149-4336-b239-6bf477ceebc9</uuid>
  <memory unit='KiB'>4194304</memory>
  <currentMemory unit='KiB'>4194304</currentMemory>
  <vcpu placement='static'>2</vcpu>
  <resource>
    <partition>/machine</partition>
  </resource>
  <os>
    <type arch='x86_64' machine='pc-i440fx-xenial'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
  </features>
  <cpu mode='custom' match='exact'>
    <model fallback='allow'>IvyBridge</model>
  </cpu>
  <clock offset='utc'>
    <timer name='rtc' tickpolicy='catchup'/>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='hpet' present='no'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <pm>
    <suspend-to-mem enabled='no'/>
    <suspend-to-disk enabled='no'/>
  </pm>
  <devices>
    <emulator>/usr/bin/kvm-spice</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw' cache='none'/>
      <source file='/home/libvirt/images/ffms/unify.raw'/>
      <backingStore/>
      <target dev='vda' bus='virtio'/>
      <alias name='virtio-disk0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </disk>
    <controller type='usb' index='0' model='ich9-ehci1'>
      <alias name='usb'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x7'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci1'>
      <alias name='usb'/>
      <master startport='0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0' multifunction='on'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci2'>
      <alias name='usb'/>
      <master startport='2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x1'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci3'>
      <alias name='usb'/>
      <master startport='4'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x2'/>
    </controller>
    <controller type='pci' index='0' model='pci-root'>
      <alias name='pci.0'/>
    </controller>
    <interface type='network'>
      <mac address='52:54:00:1b:e9:27'/>
      <source network='Clientnetz-Dom16' bridge='virbr2'/>
      <target dev='vnet3'/>
      <model type='virtio'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    <serial type='pty'>
      <source path='/dev/pts/2'/>
      <target port='0'/>
      <alias name='serial0'/>
    </serial>
    <console type='pty' tty='/dev/pts/2'>
      <source path='/dev/pts/2'/>
      <target type='serial' port='0'/>
      <alias name='serial0'/>
    </console>
    <input type='tablet' bus='usb'>
      <alias name='input0'/>
    </input>
    <input type='mouse' bus='ps2'/>
    <input type='keyboard' bus='ps2'/>
    <graphics type='vnc' port='5902' autoport='yes' listen='127.0.0.1' keymap='de'>
      <listen type='address' address='127.0.0.1'/>
    </graphics>
    <video>
      <model type='cirrus' vram='16384' heads='1'/>
      <alias name='video0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <memballoon model='virtio'>
      <alias name='balloon0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </memballoon>
  </devices>
</domain>