UniFi Controller na Ubuntu 24.04

UniFi Controller je softvérový nástroj. Slúži k centrálnej správe, konfigurácií a monitorovaniu sieťových zariadení rady UniFi, ako sú prístupové body (AP), switche, routre a ďalšie zariadenia v sieti.

Je možné ho nainštalovať na :

  • Windows Server 2016/2019
  • Linux
  • Pre novšie systémy macOS

Minimálne požiadavky

CPUDual-core procesor (1 GHz alebo viac)
RAM2 GB (pre malé inštalácie; doporučujú 4 GB)
Disk10 GB volného miesta (pre logy a zálohy)
Sieť1 Gbps pripojenie (doporučuje sa)

V tomto článku som robil inštaláciu na Ubuntu 22.04 cez VMware

Ako prvé pomocou textového editora napíšeme skript napr. unifi.sh

nano unifi.sh

Vložíme daný skript

#!/bin/sh

# set up repos
echo 'deb [ arch=amd64,arm64 ] https://www.ui.com/downloads/unifi/debian staubiquiti' > /etc/apt/sources.list.d/100-ubnt-unifi.list
echo 'deb [trusted=yes] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-o.6 multiverse' > /etc/apt/sources.list.d/mongodb-org-3.6.list

# for libssl1
echo 'deb http://security.ubuntu.com/ubuntu focal-security main' > /etc/apt/ces.list.d/old-ubuntu.list

curl -sO https://dl.ui.com/unifi/unifi-repo.gpg --output-dir /etc/apt/trusteg.d/
curl -sO https://www.mongodb.org/static/pgp/server-3.6.asc --output-dir /etc/trusted.gpg.d/

apt update
apt install -y unifi

Ten uložíme

Teraz mu dáme práva, aby sa mohol spustiť

chmod +x unifi.sh

Teraz spustíme skript

./unifi.sh

Keď všetko zbehne otvorte webový prehliadač zadajte IP adresu daného servera s portom 8443

https://X.X.X.X/8443

Upgrage Unifi Controllera

Pri upgrade controllera, je vhodné si urobiť si urobiť snapshot

sudo apt update && sudo apt upgrade -y
sudo apt install apt-transport-https ca-certificates gnupg -y
wget -qO - https://dl.ui.com/unifi/unifi-repo.gpg | sudo gpg --dearmor -o /usr/share/keyrings/unifi-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/unifi-archive-keyring.gpg] https://www.ui.com/downloads/unifi/debian stable ubiquiti" | sudo tee /etc/apt/sources.list.d/unifi.list
sudo apt update
sudo apt install --only-upgrade unifi

priapadne overiť, či beži

sudo systemctl status unifi

Ak náhodou skúste ho spustiť manuálne

sudo systemctl start unifi

Prípadný troubleshooting

tail -f /var/log/unifi/server.log

Je potrebné urobiť aj update java

sudo apt install openjdk-11-jre -y

Skript na generovanie mien

So ženou sa nevieme dohodnúť na vymyslení mena pre naše prvé dieťa, tak som sa rozhodol, že napíšem skript.

Ak sa aj Vy budete chcieť zahrať a zasmiať, tak tu posielam šablónu

Ako prvé musíme vytvoriť skript .sh napr. deti.sh

nano deti.sh

#!/bin/bash

# Zoznam mien
chlapci=("Adam" "Adrián" "Ahmed" "Branislav" "Ciril" 
"Denis" "Dobroslav" "Dušan" "Daniel" "Ervín" 
"Evžen" "Emil" "Emanuel" "Erik" 
"Gustáv" "Gabriel" "Hasan" "Henrich" "Ivan" "Kristián" 
"Miloš" "Marcel" "Micha" 
"Tomáš" "Timotej" "Viktor" "Zdeno" "Bacigáľ")

dievcata=("Alžbeta" "Anna" "Aneta" "Barbara" "Barbora" 
"Brigita" "Denisa" "Eva" "Erika" "Gabriela" "Henrieta" 
"Ivana" "Janka" "Kristína" "Lenka" "Mária" "Nina" 
"Oxana" "Petra," "Róberta" "Sabina" "Slávka" "Simona")

# Funkcia na generovanie mena
function vygeneruj_meno {
    echo "Zvoľ pohlavie:"
    echo "1. Chlapec"
    echo "2. Dievča"
    read -p "Zadaj číslo (1 alebo 2): " volba

    if [[ "$volba" == "1" ]]; then
        meno=${chlapci[RANDOM % ${#chlapci[@]}]}
        echo "Vygenerované chlapčenské  meno: $meno"
    elif [[ "$volba" == "2" ]]; then
        meno=${dievcata[RANDOM % ${#dievcata[@]}]}
        echo "Vygenerované dievčenské meno: $meno"
    else
        echo "Neplatná voľba, zvoľ 1 alebo 2."
    fi
}

# Hlavný cyklus
while true; do
    vygeneruj_meno
    read -p "Chceš vygenerovať ďalšie meno? Áno = a, Nie = n (a/n): " odpoved
    if [[ "$odpoved" != "a" ]]; then
        echo "Ďakujeme za používanie generátora mien. Dovidenia!"
        break
    fi
done

Dáme oprávnenia na spustenie skriptu

chmod +x deti.sh

Spustíme skript

./deti.sh

Keď zvolíme a, zopakuje sa slučka

Keď zvolíme 2, tak sa začnú generovať dievčenské mená

Keď stlačíte n, tak program sa automaticky ukončí a vypíše hlášku:


Ďakujeme za používanie generátora mien. Dovidenia!

Inštalácia WordPress pomocou skriptu

Vytvoríme textový súbor

nano wordpress.sh

Do neho vložíme a uložíme tento text

#!/bin/bash

# Inštalácia MySQL/MariaDB
echo "Inštalácia MySQL/MariaDB..."
sudo apt update
sudo apt install -y mysql-server

# Zabezpečenie MySQL/MariaDB
echo "Zabezpečenie MySQL/MariaDB..."
sudo mysql_secure_installation

# Inštalácia Apache (voliteľné) a PHP
echo "Inštalácia Apache a PHP..."
sudo apt install -y apache2
sudo apt install -y php libapache2-mod-php php-mysql

# Inštalácia WordPress
echo "Inštalácia WordPress..."
wget -c http://wordpress.org/latest.tar.gz
tar -xzvf latest.tar.gz
sudo mv wordpress /var/www/html/
sudo chown -R www-data:www-data /var/www/html/wordpress
sudo chmod -R 755 /var/www/html/wordpress
cp /var/www/html/wordpress/wp-config-sample.php /var/www/html/wordpress/wp-config.php
sudo sed -i "s/database_name_here/wordpress/g" /var/www/html/wordpress/wp-config.php
sudo sed -i "s/username_here/wpuser/g" /var/www/html/wordpress/wp-config.php
sudo sed -i "s/password_here/password/g" /var/www/html/wordpress/wp-config.php

# Vytvorenie databázy pre WordPress
echo "Vytvorenie databázy pre WordPress..."
sudo mysql -u root -p -e "CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;"
sudo mysql -u root -p -e "CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'password';"
sudo mysql -u root -p -e "GRANT ALL ON wordpress.* TO 'wpuser'@'localhost';"
sudo mysql -u root -p -e "FLUSH PRIVILEGES;"

# Nastavenie Apache
echo "Nastavenie Apache..."
sudo a2enmod rewrite
sudo systemctl restart apache2

echo "Inštalácia WordPress bola úspešne dokončená."

Textový súbor uložte

Udeľte skriptu práva na spustenie:

chmod +x wordpress.sh

Spustite skript s príkazom --install ako sudo, aby mohol vykonávať inštaláciu a nastavenia:

sudo ./wordpress.sh --install

Konfigurácia databázy WordPressu: Ak už máte nainštalované závislosti a chcete iba konfigurovať databázu, spustite skript s príkazom --configure

sudo ./wordpress.sh --configure

Po zbehnutí choďte na webový prehliadač a zadajte IP adresu v tvare

X.X.X.X/wordpress

Zadanie skriptu

Napíš bash script, ktorý z výpisu spĺňa formát riadku alebo STDIN:

<server>: (<pocet> dbs)<disk> <total>G <used>G <free>G <perc>% <mount>

pre vypinac –full:

vypisu obsadenosti databazovych serverov vyberie tie, ktore maju zaplneny priestor na viac ako 75%

pre vypinac –count:

vypise pocet suborov

pre vypinac –validate:

vypise riadky, ktore splnaju strukturu do STDOUT a nevalidne riadky do STDERR

pre vypinac -h:

vypise help

Sprav script, tak aby vedel čítať súbor ako parameter, teda: $ ./script.sh <subor> ale zároveň aj ako STDIN: $ ./script.sh < cat subor

ukážkový súbor:

mysql1: (1016 dbs)/dev/xvda 62G 30G 29G 52% /

mysql2: (866 dbs)/dev/xvda 71G 36G 32G 54% /

mysql3: (1051 dbs)/dev/xvda 86G 43G 43G 50% /

mysql4: (648 dbs)/dev/sda1 58G 30G 25G 56% /

mysql5: (133 dbs)/dev/sda1 69G 68G 1.5G 98% /

mysql6: (1147 dbs)/dev/sda1 67G 43G 25G 64% /

mysql7: (705 dbs)/dev/sda1 67G 35G 30G 54% /

mysql8: (274 dbs)/dev/xvda 45G 29G 15G 67% /

mysql9: (222 dbs)/dev/xvda1 32G 18G 14G 56% /

mysql10: (289 dbs)/dev/xvda1 42G 23G 19G 55% /

mysql11: (1163 dbs)/dev/xvda1 37G 21G 16G 57% /

mysql12: (207 dbs)/dev/xvda 55G 32G 23G 59% /

mysql13: (175 dbs)/dev/xvda 32G 18G 13G 59% /

mysql14: (182 dbs)/dev/xvda 50G 28G 22G 57% /

mysql15: (188 dbs)/dev/xvda 30G 17G 12G 59% /

mysql16: (138 dbs)/dev/xvda 40G 34G 6.4G 84% /

mysql17: (178 dbs)/dev/xvda 40G 24G 17G 60% /

Vytvoríme si súbor

nano zadanieskriptu.sh

Napíšeme skript

#!/bin/bash

print_help() {
    echo "Usage: $0 [--full|--count|--validate|-h] [file]"
    echo "Options:"
    echo "  --full       Display database servers with more than 75% disk usage."
    echo "  --count      Count the number of lines in the input."
    echo "  --validate   Validate the input format. Valid lines to STDOUT, invalid to STDERR."
    echo "  -h           Display this help message."
}

process_input() {
    count=0
    while IFS= read -r line; do
        if [[ $1 == "--full" ]]; then
            if echo "$line" | grep -qP '^[^:]+: \([0-9]+ dbs\)[^ ]+ [0-9]+G [0-9]+G [0-9\.]+G [0-9]+% .+'; then
                perc=$(echo "$line" | grep -oP ' ([0-9]+)% ' | grep -oP '[0-9]+')
                if (( perc > 75 )); then
                    echo "$line"
                fi
            fi
        elif [[ $1 == "--count" ]]; then
            count=$((count+1))
        elif [[ $1 == "--validate" ]]; then
            if echo "$line" | grep -qP '^[^:]+: \([0-9]+ dbs\)[^ ]+ [0-9]+G [0-9]+G [0-9\.]+G [0-9]+% .+'; then
                echo "$line"
            else
                echo "$line" >&2
            fi
        fi
    done < "${2:-/dev/stdin}"

    if [[ $1 == "--count" ]]; then
        echo "$count"
    fi
}

if [[ $1 == "-h" ]]; then
    print_help
    exit 0
elif [[ $1 == "--full" || $1 == "--count" || $1 == "--validate" ]]; then
    process_input "$1" "$2"
else
    print_help
    exit 1
fi

Uložíme

Vytvoríme ďalší textový súbor

nano datafile.txt

Vložíme hodnoty

mysql1: (1016 dbs)/dev/xvda 62G 30G 29G 52% /
mysql2: (866 dbs)/dev/xvda 71G 36G 32G 54% /
mysql3: (1051 dbs)/dev/xvda 86G 43G 43G 50% /
mysql4: (648 dbs)/dev/sda1 58G 30G 25G 56% /
mysql5: (133 dbs)/dev/sda1 69G 68G 1.5G 98% /
mysql6: (1147 dbs)/dev/sda1 67G 43G 25G 64% /
mysql7: (705 dbs)/dev/sda1 67G 35G 30G 54% /
mysql8: (274 dbs)/dev/xvda 45G 29G 15G 67% /
mysql9: (222 dbs)/dev/xvda1 32G 18G 14G 56% /
mysql10: (289 dbs)/dev/xvda1 42G 23G 19G 55% /
mysql11: (1163 dbs)/dev/xvda1 37G 21G 16G 57% /
mysql12: (207 dbs)/dev/xvda 55G 32G 23G 59% /
mysql13: (175 dbs)/dev/xvda 32G 18G 13G 59% /
mysql14: (182 dbs)/dev/xvda 50G 28G 22G 57% /
mysql15: (188 dbs)/dev/xvda 30G 17G 12G 59% /
mysql16: (138 dbs)/dev/xvda 40G 34G 6.4G 84% /
mysql17: (178 dbs)/dev/xvda 40G 24G 17G 60% /

Nastavíme práva na spustenie:

chmod +x zadanieskriptu.sh

Spustíme script

./zadanieskriptu.sh --full datafile.txt

Výsledok

mysql5: (133 dbs)/dev/sda1 69G 68G 1.5G 98% /
mysql16: (138 dbs)/dev/xvda 40G 34G 6.4G 84% /

Rozšírenie disku Vcenter + Ubuntu

Označťte si server na ktorom, chcete rozšíriť Disk

Kliknite na Actions

Edit Settings


Add new device

Zvoľte hardisk

Objaví sa Vám Hardisk s kapacitou 25 GB, samozrejme, môžetet kedykoľvek zmeniť

Kliknite na OK

Teraz sa prostredníctvom ssh pripojte na daný server a na ňom vytvorte textový súbor napr:

nano extend_disk.sh

Do neho napíšte tento skript

#!/bin/bash

# Check current disk sizes
echo "Current disk sizes:"
sudo fdisk -l /dev/sda
sudo fdisk -l /dev/sdb

# Extend logical volume
echo "Extending logical volume..."

# Add sdb to volume group ubuntu-vg (assuming sdb is not partitioned)
sudo vgextend ubuntu-vg /dev/sdb

# Extend logical volume ubuntu-lv to use all available space
sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv

# Resize the filesystem
echo "Resizing filesystem..."
# For ext4 filesystems
sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
# OR for XFS filesystems
# sudo xfs_growfs /dev/ubuntu-vg/ubuntu-lv

echo "Logical volume extended and filesystem resized successfully." 

Daný dokument uložte

Pred spustením skriptu je vhodne si pomocou príkazu lsblk zistiť, ako sa volaju disky napr.

  • sda
  • sdb
  • sdc

V tomto prípade nemusíme meniť skript, ak by sa disky volali inak, tak ich musíme v skripúte upraviť

upravovali by sa tieto riadky

sudo fdisk -l /dev/sda
sudo fdisk -l /dev/sdb
sudo vgextend ubuntu-vg /dev/sdb
lsblk

Teraz napíšte 2 príkay

sudo chmod +x extend_disk.sh
sudo ./extend_disk.sh

Úspešné rozšírenie disku bude vyzerať následovne