XAMPP PHP 8 su Debian Bullseye

 

XAMPP PHP 8 su Debian Bullseye

XAMPP PHP 8 su Debian Bullseye

XAMPP è una suite completamente gratuita e facile da installare che contiene Apache, MariaDB, PHP, e Perl. La pagina di download è la seguente, una volta scaricato l’installer, cambiare i permersi ed iniziare l’installazione:

$ chmod 755 xampp-linux-*-installer.run
$ sudo ./xampp-linux-*-installer.run --mode gtk --installer-language it

alla fine si potrà scegliere di lanciare subito xampp, e quindi andare in Manage-Servers per avviare i servizi. La schermata iniziale è raggiungibile all’indirizzo https://localhost/. Per avviare xampp da interfaccia grafica quindi utilizzare:

$ sudo /opt/lampp/manager-linux-x64.run

altrimenti si possono utilizzare i seguenti singoli comandi:

$ sudo /opt/lampp/xampp start
$ sudo /opt/lampp/xampp stop
$ sudo /opt/lampp/xampp restart
$ sudo /opt/lampp/xampp startapache
$ sudo /opt/lampp/xampp startmysql
$ sudo /opt/lampp/xampp startftp
$ sudo /opt/lampp/xampp stopapache
$ sudo /opt/lampp/xampp stopmysql
$ sudo /opt/lampp/xampp stopftp
$ sudo /opt/lampp/xampp enablessl
$ sudo /opt/lampp/xampp disablessl

Per il server ProFTP: nome utente «nobody», password «lampp». E’ necessario mettere in sicurezza xampp, creando le password di accesso per i vari servizi. Il comando è il seguente:

$ sudo /opt/lampp/xampp security
XAMPP PHP 8 su Debian Bullseye

enjoy 😉

 

Server DHCP su Debian 11

 

Server DHCP su Debian 11 Bullseye.

 

Installazione e configurazione di un server dhcp su Debian Bullseye:

$ sudo su
# apt install isc-dhcp-server

settare la scheda di rete da utilzzare, nel mio caso eth0:

# nano /etc/default/isc-dhcp-server
# Defaults for isc-dhcp-server initscript
# sourced by /etc/init.d/isc-dhcp-server
# installed at /etc/default/isc-dhcp-server by the maintainer scripts

#
# This is a POSIX shell fragment
#

# Path to dhcpd's config file (default: /etc/dhcp/dhcpd.conf).
#DHCPD_CONF=/etc/dhcp/dhcpd.conf

# Path to dhcpd's PID file (default: /var/run/dhcpd.pid).
#DHCPD_PID=/var/run/dhcpd.pid

# Additional options to start dhcpd with.
#       Don't use options -cf or -pf here; use DHCPD_CONF/ DHCPD_PID instead
#OPTIONS=""

# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
#       Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES="eth0"

poi modificare il file dhcpd.conf inserendo i parametri della nostra rete, nel mio caso 192.168.100.0/24:

# nano /etc/dhcp/dhcpd.conf
# Sample configuration file for ISC dhcpd for Debian
#
#

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;

# option definitions common to all supported networks...
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;
default-lease-time 600;
max-lease-time 7200;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.

#subnet 10.152.187.0 netmask 255.255.255.0 {
#}

# This is a very basic subnet declaration.
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.150 192.168.100.160;
option routers 192.168.100.1;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.100.254;
option domain-name-servers 192.168.100.1, 192.168.100.2;
option ntp-servers 192.168.100.1;
option netbios-name-servers 192.168.100.1;
option netbios-node-type 8;
}
#subnet 10.254.239.0 netmask 255.255.255.224 {
#  range 10.254.239.10 10.254.239.20;
#  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
#}

# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.

#subnet 10.254.239.32 netmask 255.255.255.224 {
#  range dynamic-bootp 10.254.239.40 10.254.239.60;
#  option broadcast-address 10.254.239.31;
#  option routers rtr-239-32-1.example.org;
#}

# A slightly different configuration for an internal subnet.
#subnet 10.5.5.0 netmask 255.255.255.224 {
#  range 10.5.5.26 10.5.5.30;
#  option domain-name-servers ns1.internal.example.org;
#  option domain-name "internal.example.org";
#  option routers 10.5.5.1;
#  option broadcast-address 10.5.5.31;
#  default-lease-time 600;
#  max-lease-time 7200;
#}

# Hosts which require special configuration options can be listed in
# host statements.   If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.

#host passacaglia {
#  hardware ethernet 0:0:c0:5d:bd:95;
#  filename "vmunix.passacaglia";
#  server-name "toccata.fugue.com";
#}

# Fixed IP addresses can also be specified for hosts.   These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP.   Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
#host fantasia {
#  hardware ethernet 08:00:07:26:c0:a5;
#  fixed-address fantasia.fugue.com;
#}

# You can declare a class of clients and then do address allocation
# based on that.   The example below shows a case where all clients
# in a certain class get addresses on the 10.17.224/24 subnet, and all
# other clients get addresses on the 10.0.29/24 subnet.

#class "foo" {
#  match if substring (option vendor-class-identifier, 0, 4) = "SUNW";
#}

#shared-network 224-29 {
#  subnet 10.17.224.0 netmask 255.255.255.0 {
#    option routers rtr-224.example.org;
#  }
#  subnet 10.0.29.0 netmask 255.255.255.0 {
#    option routers rtr-29.example.org;
#  }
#  pool {
#    allow members of "foo";
#    range 10.17.224.10 10.17.224.250;
#  }
#  pool {
#    deny members of "foo";
#    range 10.0.29.10 10.0.29.230;
#  }
#}

dopo le modifiche riavviare il servizio:

# systemctl restart isc-dhcp-server.service
Server DHCP su Debian 11 Bullseye

enjoy ?

FreePBX Trunk Pjsip su FRITZBox

 FreePBX Trunk Pjsip su FRITZ!Box

FreePBX Trunk Pjsip su FRITZ!Box

 

Guida su come configurare un FreePBX Trunk Pjsip su FRITZBox, per funzionare in parallelo ad un centralino FreePBX/Asterisk. Io ho una connessione dati e voce con Vodafone, ed il mio numero si registra correttamente attraverso il router FRITZ!Box, utilizzando dei dect. I router FRITZ!Box, hanno un centralino incorporato, che in maniera semplice registrano sia i telefoni analogici che i telefoni voip, ma se si volesse  aumentare di molto i telefoni, ed avere un centralino più strutturato, con un IVR per esempio, bisogna affidarsi al centralino Asterisk/FreePBX. Questa guida parte dal presupposto, che il FRITZ!Box ed il server PBX sono gia configurati e funzionanti.

1) Creare interno server FreePBX direttamente sul FRITZ!Box:

Menù Telefonia > Dispositivi di telefonia > Configurazione nuovo dispositivo, e poi seguire le immagini:

FreePBX Trunk Pjsip su FRITZ!BoxFreePBX Trunk Pjsip su FRITZ!BoxFreePBX Trunk Pjsip su FRITZ!BoxNotare che il nome utente è numerico e queste credenziali andranno inserite successivamente nel Trunk pjsip in FreePBX.

 

2) Creazione Trunk pjsip in FreePBX

Esempio delle immagini:

Trunk Name=FreePBX
Outbound caller ID=numero telefonico
CID Options=Force Trunk CID
Maximum Channels=2

 

Trunk Pjsip Settings:

username=15051948
password=PasswordDifficile
server=192.168.1.1 (ip FRITZ!Box)
porta=5060 udp

 

Trunk Pjsip Settings Advanced:

Contact User=15051948
From User=15051948

 

Trunk Codecs:

 

In conclusione, con questo tipo di configurazione abbiamo integrato il nostro centralino Asterisk/FreePBX, con la robustezza di un router FRITZ!Box.

FreePBX Trunk Pjsip su FRITZ!Box

enjoy 😉

 

Asterisk 18 FreePBX 16 su Raspberry Pi 4 e Raspberry Pi OS Bullseye

 

Asterisk 18 FreePBX 16 su Raspberry Pi 4 e Raspberry Pi OS BullseyeAsterisk 18 FreePbx 16 su Raspberry Pi 4 e Raspberry Pi OS Bullseye

 

In questa guida aggiornata, scriverò di una installazione su single board Raspberri py 4 con Raspberry Pi OS Bullseye 11, di Asterisk 18 e Freepbx 16. FreePBX 16 funziona bene, e la novità principale è il supporto a php7.4. Esiste anche una versione già pronta, raspbx, ma io preferisco installare tutto da me, poichè il sistema risulta molto più fluido. I passaggi successivi saranno eseguiti come utente root, su una nuova installazione di Raspberry Pi OS Bullseye lite. L’installazione prenderà circa 90 minuti, e prevede che il sistema sia già stato installato e che si abbia un accesso ssh.

1) Aggiornare il sistema

$ sudo su
# apt update
# apt upgrade -y
# reboot
2) Scaricare le dipendenze ed i servizi necessari
# apt install -y wget bison flex php php-pear php-cgi php-common php-curl php-mbstring php-gd php-mysql php-php-gettext php-bcmath php-zip php-xml php-imap php-json php-snmp php-fpm libapache2-mod-php git curl libnewt-dev libssl-dev libncurses5-dev subversion libsqlite3-dev build-essential libedit-dev libjansson-dev libxml2-dev uuid-dev dh-make libssl-dev sox mariadb-client-10.5 mariadb-server-10.5

3) Installare nodejs

# curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash -
# apt install -y nodejs

4) Reboot server

# reboot

5) Scaricare Asterisk 18 e FreePBX 16

$ sudo su
# cd /usr/src
# wget https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-18-current.tar.gz
# wget https://mirror.freepbx.org/modules/packages/freepbx/freepbx-16.0-latest.tgz

6) Installare Asterisk 18

# tar xvfz asterisk-18-current.tar.gz
# rm -rf asterisk-18-current.tar.gz
# cd asterisk-18.*
# contrib/scripts/get_mp3_source.sh
# ./contrib/scripts/install_prereq install
# ./configure --with-jansson-bundled
# make menuselect

 

inserire il prefisso internazionale, nel nostro caso 39:

Asterisk 14 Freepbx 14 su Debian Stretch 9.1abilitare format_mp3:

abilitare “macro” in make menuselect > Application > app_macro:

Asterisk 18 FreePBX 16 su Raspberry Pi 4 e Raspberry Pi OS Bullseye

quindi:

# make -j8
# make install
# make samples
# make config

7) Creazione utente Asterisk e permessi

# groupadd asterisk
# useradd -r -d /var/lib/asterisk -g asterisk asterisk
# usermod -aG audio,dialout asterisk
# chown -R asterisk.asterisk /etc/asterisk
# chown -R asterisk.asterisk /var/{lib,log,run,spool}/asterisk
# chown -R asterisk.asterisk /usr/lib/asterisk
# sed -i 's/#AST_USER="asterisk"/AST_USER="asterisk"/g' /etc/default/asterisk
# sed -i 's/#AST_GROUP="asterisk"/AST_GROUP="asterisk"/g' /etc/default/asterisk
# systemctl restart asterisk
# /lib/systemd/systemd-sysv-install enable asterisk

verificare che asterisk funzioni correttamente:

# asterisk -rvvv

8) Configurazione Apache2

# cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf_orig
# sed -i 's/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf
# sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/apache2/apache2.conf
# mv /var/www/html /var/www/html.bak
# a2enmod rewrite
# systemctl restart apache2

9) Installare FreePBX 16

# cd /usr/src/
# tar xvfz freepbx-16.0-latest.tgz
# rm -rf freepbx-16.0-latest.tgz
# cd freepbx
# ./install -n
# fwconsole chown
# fwconsole ma refreshsignatures
# fwconsole ma installall
# fwconsole reload
# fwconsole restart

In conclusione, se tutto è andato bene il server Asterisk è raggiungibile all’indirizzo http://ip_raspberry. La prima cosa da fare è quella di scegliere nome utente, password e mail, per accedere al pannello di amministrazione. Andare poi nel menu Admin-Module Admin e scaricare ed aggiornare i moduli rimanenti.

 

enjoy 😉

 

Fast-cli speedtest da terminale Debian 10

 

Fast-cli speedtest da terminale Debian 10

Fast-cli speedtest da terminale Debian 10

Il sito Fast.com per misurare la connessione internet, è un servizo a cui provvede Netflix per far verificare se si è in grado di visualizzare i loro contenuti. Anche in questo caso, con fast-cli, come per speedtest-cli, la misurazione si può fare anche da terminale. Quello che serve è una installazione aggiornata di nodejs, poichè la versione nei repository, la v10.24.0, non va bene.

Rimozione ed Installazione nodejs:

$ sudo apt purge npm
$ sudo apt-get install curl software-properties-common
$ curl -sL https://deb.nodesource.com/setup_15.x | sudo bash -
$ sudo apt-get install nodejs

Installazione fast-cli:

$ sudo npm install --global fast-cli

Utilizzo:

$ fast -u
Fast-cli speedtest da terminale Debian 10

enjoy 😉

Speedtest-cli failed su Debian 10

Speedtest-cli failed su Debian 10

Speedtest-cli failed su Debian 10

Nell’ultimo periodo lo strumento di speedtest da riga di comando, speedtest-cli, installato direttamente dai repository, sembra non funzionare più. L’errore che si ha, se non ricordo male, riporta ad errori “php ed altri”  Io ho risolto rimuovendo la vecchia installazione, ed installando il tutto manualmente:

Rimozione:

sudo apt remove --purge speedtest-cli

oppure:

sudo pip uninstall speedtest-cli

Installazione:

sudo apt-get install python3-pip
wget https://raw.github.com/sivel/speedtest-cli/master/speedtest.py
chmod a+rx speedtest.py
sudo mv speedtest.py /usr/local/bin/speedtest-cli
sudo chown root:root /usr/local/bin/speedtest-cli
sudo speedtest-cli
Speedtest-cli failed su Debian 10

enjoy 😉

Raspberry Pi backup veloce sd card

 

Raspberry Pi backup veloce sd card

Raspberry Pi backup veloce sd card

 

Guida su come ottenere un backup veloce e funzionante del proprio sistema. Per chi utilizza un Raspberry Pi, con tutto il sistema installato su sd card, è buona regola avere un backup completo, per poter ovviare velocemente ad una ipotetica perdita/rottura dei dati sulla sd card. A difesa delle sd card, io posso tetimoniare, essendo possessore di tanti Raspberry Pi, fin da  maggio 2012, che se si acquistano le migliori, difficilmente si rompono. Io per i vari utilizzi, ho speso di più per la sd card che per il Raspberry Pi. I metodi di backup a cui io mi riferisco utilizzano i comandi dd e rsync.  Il classico metodo più utilizzato e sicuro è il seguente:

 

Metodo 1)

Estrarre dal Raspberry Pi la sd card di origine e creare un file img

sudo dd bs=4M if=/dev/sdx of=PiOS.img

Ripristinare su sd card di backup:

sudo dd bs=4M if=PiOS.img of=/dev/sdx

Con il metodo sopra i tempi sono più lunghi, poichè dd, clona tutto. Esistono altri metodi simili, aggiungendo la compressione, ma a me non soddisfano.

 

Metodo 2)

Questo metodo è quello che utilizzo io, e può essere eseguito sia a caldo, sia estraendo la sd card clonandola. Per questo metodo si utilizza dd, solo per quanto riguarda le tabelle delle partizioni, e la partizione di boot, tutto il resto lo farà rsync copiando velocemente il contenuto della rootfs.

Inserire su pc la  sd card da cui effettuare il backup e raccogliere informazioni:

sudo fdisk -l

 

Raspberry Pi backup veloce sd card

 

 

esistono 2 partizioni, nel mio caso, /dev/sdc1 di boot ed /dev/sdc2 rootfs. Bisogna prendere nota delle 2 voci start, 8192 e 534528, cosicchè da creare una identica tabella delle partizioni, contenendo tutti i files di boot:

sudo dd bs=4k count=$((8192/8)) if=/dev/sdc | gzip >boot-img.gz
sudo dd bs=4k count=$((534528/8)) if=/dev/sdc | gzip >rootfs-img.gz

Adesso dobbiamo copiare in una cartella il contenuto di /dev/sdc2 utilizzando rsync:

sudo apt install rsync
sudo mkdir /mnt/{dati,rootfs}
sudo mount /dev/sdc2 /mnt/dati/
sudo rsync -aHAXSP /mnt/dati/ /mnt/rootfs/
sudo umount /dev/sdc2

Basta. Finito. Tempo totale meno di 3 minuti:

 

Raspberry Pi backup veloce sd card

 

Inserire la sd card di backup:

Azzerare tabella partizioni:

sudo dd count=1 bs=512 if=/dev/zero of=/dev/sdc

creazione della tabella delle partizione come da sd card origine:

sudo zcat boot-img.gz | sudo dd bs=4k iflag=fullblock of=/dev/sdc
sudo partprobe /dev/sdc
sudo zcat rootfs-img.gz | sudo dd bs=4k iflag=fullblock of=/dev/sdc
sudo partprobe /dev/sdc

formattare la seconda partizione in ext4:

sudo mkfs.ext4 -L rootfs /dev/sdc2

mount e copia :

sudo mount /dev/sdc2 /mnt/dati/
sudo rsync -aHAXSP /mnt/rootfs/ /mnt/dati/

umount ed attendere, può volerci qualche minuto:

sudo umount /dev/sdc2

 

Tempo totale 15 minuti circa. A questo punto se tutto è andato bene, abbiamo una copia perfetta della sd card di origine. Questo metodo funziona anche in presenza di database.

Raspberry Pi backup veloce sd card

 

enjoy 😉

 

OpenMediaVault 5 su Raspberry Pi 4

 

OpenMediaVault su Raspberry Pi 4

OpenMediaVault su Raspberry Pi 4

 

Guida su come installare OpenMediaVault su Raspberry Pi 4, con setup iniziale minimale. Io ho già un Nas in casa, più un cloud con Nextcloud accessibile da internet, sempre su Raspberry Pi 4, ma ho voluto unificare tutto sotto OMV. Il punto forte è quello di avere una unica interfaccia centralizzata, e da lì avviare tutti i servizi di cui un Nas ha bisogno. I servizi fondamentali riguardano la sicurezza, il failover e la ridondanza, e su OMV si possono avere con l’aggiunta anche di plugin esterni. Per questa guida ho usato Raspberry Pi OS Lite.

Aggiornamento OS:

sudo apt update
sudo apt upgrade -y
sudo reboot

Installazione:

wget -O - https://raw.githubusercontent.com/OpenMediaVault-Plugin-Developers/installScript/master/install | sudo bash

per il completamento dell’installazione ci vorrà circa 20 minuti, dopodichè il sistema si riavvierà. A questo punto accedere al raspberry pi via WEB GUI, come user=admin e password=openmediavault:

http://Raspberry-ip-address

OpenMediaVault 5 su Raspberry Pi 4

Per prima cosa all’accesso bisognerà subito modificare un paio di cosette, ricordandosi che le modifiche fatte via WEB GUI hanno la priorità su quelle fatte manualmente, in virtù del fatto che OMV utilizza files di configurazione differenti.

System>General Settings

cambiare porta, Auto logout su disabled, e cambiare password di accesso alla WEB GUI:

OpenMediaVault 5 su Raspberry Pi 4

Services>SSH

cambiare porta ssh:

OpenMediaVault 5 su Raspberry Pi 4

 

System>OMV-Extra

abilitare repository addizionali:

System>Plugins

installare i plugins di cui si ha bisogno (quasi tutti)

 

successivamente pubblicherò altre guide entrando nel dettaglio su alcune configurazioni fondamentali.

OpenMediaVault 5 su Raspberry Pi 4

 

enjoy 😉

 

Raspberry rimuovere utente Pi

 

Raspberry rimuovere utente Pi
Raspberry rimuovere utente Pi

Per chi utilizza il Raspberry Pi, e di conseguenza Raspberry Pi OS ex Raspbian e non solo, si deve loggare con username “pi” e password “raspberry“. Chiaramente la prima cosa che si fa è quella di cambiare la password di default, ma ancora meglio sarebbe creare un nuovo user ed eliminare quello di default. Questo è quello che io faccio al primo accesso ssh:

1) Login come user pi e creazione nuovo utente “edmond

$ sudo adduser edmond

2) aggiungere utente al gruppo visudo

$ sudo visudo

ed aggiungere

edmond ALL=(ALL:ALL) ALL

come sotto:

# User privilege specification
root ALL=(ALL:ALL) ALL
edmond ALL=(ALL:ALL) ALL

3) aggiungere il nuovo utente al gruppo sudo

$ sudo usermod -a -G sudo edmond

4) aggiungere il nuovo utente agli stessi gruppi dell’utente “pi”

$ sudo usermod -a -G adm,dialout,cdrom,sudo,audio,plugdev,games,users,input,netdev,ssh,gpio,i2c,spi edmond

5) logout ed accesso col nuovo utente:

$ sudo deluser pi
$ sudo rm -rf /home/pi/

da questo momento si può utilizzare l’utility:

$ sudo raspi-config
Raspberry rimuovere utente Pi

 

enjoy 😉

 

Incrementare swap su Rasperry Pi

Incrementare swap su Rasperry Pi Incrementare swap su Rasperry Pi

Guida su come incrementare lo spazio di swap su tutti i Raspberry Pi.

Verifica swap attuale:

$ cat /proc/meminfo | grep Swap

Incrementare:

$ sudo dphys-swapfile swapoff
$ sudo nano /etc/dphys-swapfile

modificare:

CONF_SWAPSIZE=100

a

CONF_SWAPSIZE=512

Abilitare nuovo spazio di swap:

$ sudo dphys-swapfile setup
$ sudo dphys-swapfile swapon
Incrementare swap su Rasperry Pi

enjoy 😉