Sostituire Vodafone Station con ASUS DSL-AC68U

Sostituire Vodafone Station con ASUS DSL-AC68U

Sostituire Vodafone Station con ASUS DSL-AC68U

Dopo la delibera AGCOM 348/18/CONS, per il modem libero anche l’Italia  si uniforma alla direttiva europea n. 2015/2120. Praticamente quasi tutti gli operatori si sono adeguati gradualmente dall’inizio dell’anno, e quindi si può decidere di sostituire il modem rilasciato dai provider, magari comprandone uno più performante. Ultima ad adeguarsi in ordine di tempo è stata Vodafone, che era in ritardo con la parte voce. Da qualche settimana Vodafone rilascia anche le credenziali Voip relative alla propria linea. Quindi adesso si può utilizzare un modem alternativo sia per la parte dati che per quella voce. Io ho utilizzato il mio fedele Asus DSL-AC68U, come modem router, anche se a differenza dei FRITZ!Box, non ha le analogiche, ma questo per me non è un problema, e sarà argomento di una prossima guida. Sul sito Vodafone vi sono elencati i Requisiti tecnici minimi, ed i Parametri di configurazione. Per quanto riguarda Asus DSL-AC68U, eseguire un factory reset e poi configurarlo con i parametri Vodafone. Di seguito i mei screen:

Sostituire Vodafone Station con ASUS DSL-AC68U Sostituire Vodafone Station con ASUS DSL-AC68U Sostituire Vodafone Station con ASUS DSL-AC68U Sostituire Vodafone Station con ASUS DSL-AC68U

Sostituire Vodafone Station con ASUS DSL-AC68U

sopra lato wan ho lasciato il DNS in modo automatico, che mi servirà per la parte voce., argomento delle prossime due guide.

enjoy 😉

Backup incrementale con Tar

 

Backup incrementale con Tar

 

Backup incrementale con Tar è il titolo di questa guida, ma il sottotitolo potrebbe essere: come dormire sonni tranquilli facendo un backup incrementale, sicuro e veloce. Ci sono diversi strumenti con cui fare un backup dei propri dati, sia con programmi grafici, come luckyBackup, deja-dup o systemback-1.9.3, sia con strumenti da linea di comando, già presenti di default in Gnu-Linux. Tempo fa avevo gia fatto una guida sull’utilizzo di rsync come strumento di backup, invece questa guida mostrerà come ottenere un backup incrementale usando Tar.

Creazione di cartelle, sotto cartelle e files per testare il backup:

$ mkdir -p big-data/{backup,restore}
$ cd big-data/backup/
$ mkdir {1..4}
$ man ls > file1
$ man wc > file2
$ man tar > file3
$ man mv > file4
$ ls

output ls:

edmond@debianbox:~/Desktop/big-data/backup$ ls
1 2 3 4 file1 file2 file3 file4
$ cd ..
$ ls

output ls:

edmond@debianbox:~/Desktop/big-data$ ls
backup restore

Backup generale:

$ tar -czvg snapshot-file -f backup.tar.gz backup

output:

edmond@debianbox:~/Desktop/big-data$ tar -czvg snapshot-file -f backup.tar.gz backup
tar: backup: Directory is new
tar: backup/1: Directory is new
tar: backup/2: Directory is new
tar: backup/3: Directory is new
tar: backup/4: Directory is new
backup/
backup/1/
backup/2/
backup/3/
backup/4/
backup/file1
backup/file2
backup/file3
backup/file4

output ls:

edmond@debianbox:~/Desktop/big-data$ ls
backup backup.tar.gz restore snapshot-file

come si può vedere tutte le cartelle ed i files sono stati clonati nell’ archivio backup.tar.gz, mentre il file chiamato snapshot-file, si occuperà di tenere traccia dei cambiamenti. A questo punto il passo successivo sarà quello di andare ad inserire nella cartella di backup originale, altre cartelle e files così da testare il backup incrementale.

$ mkdir backup/{5..8} 
$ man sed > backup/file5 
$ ls backup/

output:

edmond@debianbox:~/Desktop/big-data$ ls backup/
1 2 3 4 5 6 7 8 file1 file2 file3 file4 file5

per ottenere un backup incrementale il comando da eseguire è come quello sopra, l’unica differenza sarà quella di personalizzare il nome del backup, in base alla data oppure con dei numeri:

$ tar -czvg snapshot-file -f 1-backup.tar.gz backup

output:

edmond@debianbox:~/Desktop/big-data$ tar -czvg snapshot-file -f 1-backup.tar.gz backup
tar: backup/5: Directory is new
tar: backup/6: Directory is new
tar: backup/7: Directory is new
tar: backup/8: Directory is new
backup/
backup/1/
backup/2/
backup/3/
backup/4/
backup/5/
backup/6/
backup/7/
backup/8/
backup/file5

per vedere le differenze dei due backup:

$ tar -tvf backup.tar.gz
$ tar -tvf 1-backup.tar.gz

output:

edmond@debianbox:~/Desktop/big-data$ tar -tvf backup.tar.gz
drwxr-xr-x edmond/edmond 41 2019-02-28 20:31 backup/
drwxr-xr-x edmond/edmond 1 2019-02-28 20:30 backup/1/
drwxr-xr-x edmond/edmond 1 2019-02-28 20:30 backup/2/
drwxr-xr-x edmond/edmond 1 2019-02-28 20:30 backup/3/
drwxr-xr-x edmond/edmond 1 2019-02-28 20:30 backup/4/
-rw-r--r-- edmond/edmond 7823 2019-02-28 20:30 backup/file1
-rw-r--r-- edmond/edmond 2026 2019-02-28 20:31 backup/file2
-rw-r--r-- edmond/edmond 45323 2019-02-28 20:31 backup/file3
-rw-r--r-- edmond/edmond 2989 2019-02-28 20:31 backup/file4
edmond@debianbox:~/Desktop/big-data$ tar -tvf 1-backup.tar.gz
drwxr-xr-x edmond/edmond 60 2019-02-28 20:51 backup/
drwxr-xr-x edmond/edmond 1 2019-02-28 20:30 backup/1/
drwxr-xr-x edmond/edmond 1 2019-02-28 20:30 backup/2/
drwxr-xr-x edmond/edmond 1 2019-02-28 20:30 backup/3/
drwxr-xr-x edmond/edmond 1 2019-02-28 20:30 backup/4/
drwxr-xr-x edmond/edmond 1 2019-02-28 20:50 backup/5/
drwxr-xr-x edmond/edmond 1 2019-02-28 20:50 backup/6/
drwxr-xr-x edmond/edmond 1 2019-02-28 20:50 backup/7/
drwxr-xr-x edmond/edmond 1 2019-02-28 20:50 backup/8/
-rw-r--r-- edmond/edmond 11183 2019-02-28 20:51 backup/file5

Ripristino Backup nella cartella restore:

$ tar -xvf 1-backup.tar.gz -C restore/

enjoy 😉

 

Anonsurf su Debian 10

Anonsurf su Debian 10

Anonsurf su Debian 10

Anonsurf è la modalità anonima di ParrotOS per forzare le connessioni attraverso Tor e/o la rete i2p.  Tor è un protocollo di crittografia SOCKS4 e SOCKS5. Tor esegue il tunnelling di tutto il traffico che circola nella rete dell’utente in modo anonimo. Tor nasconde la posizione di un utente e i dati di rete da chiunque monitora l’utente localmente e in remoto. L’utilizzo di Anonsurf si può avviare anche da terminale, ed oltre ad essere integrato in ParrotOS ed in Kali Linux, si può installare in Debian 9 Stretch o Debian 10 Buster.

$ sudo apt install git
$ git clone https://github.com/ParrotSec/anonsurf
$ cd anonsurf/
$ chmod a+x ./anonsurf.sh
$ sudo ./anonsurf.sh start

Anonsurf su Debian 10i comandi sono i seguenti:

anonsur start - Start system-wide TOR tunnel
anonsurf stop - Stop anonsurf and return to clearnet
anonsurf restart - Combines "stop" and "start" options
anonsurf changeid - Restart TOR to change identity
anonsurf status - Check if AnonSurf is working properly
anonsurf myip - Check your ip and verify your tor connection
anonsurf mymac - Check your mac and verify your change mac address

enjoy 😉

Video utilizzo Systemback-1.9.3

 

Video utilizzo Systemback-1.9.3

Questo video mostra come installare una copia del proprio OS, utilizzando Systemback-1.9.3. Nell’esempio sopra, utilizzo Ubuntu 18-04, installato in EFI mode. Nel caso si trattasse di una installazione in legacy mode, assicurarsi che il pacchetto grub-pc-bin sia installato correttamente, sopratutto se si parte da chiavetta usb live.

enjoy 😉

D-Link 5020L e ZoneMinder

 D-Link 5020L e ZoneMinder

D-Link 5020L e ZoneMinder. Guida su come configurare ZoneMinder con telecamere D.Link 5020L Nel wiki di ZoneMinder si trovano i riferimenti a tutte le telecamere supportate, comprese queste, ma in questa guida ci saranno immagini per tutti i passaggi. I parametri da inserire quando si aggiunge la telecamera sono i seguenti:

Source Type: Remote
Remote Protocol: HTTP
Remote Method: Simple
Remote Host Name: user:pass@IP-Camera
Remote Host Port: 80 (Default)
Remote Host Path: /video.cgi
Colors: 24 bit
Capture width: 640
Capture Height: 480

D-Link 5020L e ZoneMinderD-Link 5020L e ZoneMinder

 

PTZ Settings:

esiste uno script nel wiki che serve a far funzionare il tutto:

# =========================================================================r
#
# ZoneMinder D-Link DCS-5020L IP Control Protocol Module, $Date: $, $Revision: $
# Copyright (C) 2013 Art Scheel
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
#
# ==========================================================================
#
# This module contains the implementation of the D-Link DCS-5020L IP camera control
# protocol. 
#
package ZoneMinder::Control::DCS5020L;

use 5.006;
use strict;
use warnings;

require ZoneMinder::Base;
require ZoneMinder::Control;

our @ISA = qw(ZoneMinder::Control);

our $VERSION = $ZoneMinder::Base::VERSION;

# ==========================================================================
#
# D-Link DCS-5020L Control Protocol
#
# ==========================================================================

use ZoneMinder::Logger qw(:all);
use ZoneMinder::Config qw(:all);

use Time::HiRes qw( usleep );

sub new
{
    my $class = shift;
    my $id = shift;
    my $self = ZoneMinder::Control->new( $id );
    bless( $self, $class );
    srand( time() );
    return $self;
}

our $AUTOLOAD;

sub AUTOLOAD
{
    my $self = shift;
    my $class = ref($self) || croak( "$self not object" );
    my $name = $AUTOLOAD;
    $name =~ s/.*://;
    if ( exists($self->{$name}) )
    {
        return( $self->{$name} );
    }
    Fatal( "Can't access $name member of object of class $class" );
}

sub open
{
    my $self = shift;

    $self->loadMonitor();

    use LWP::UserAgent;
    $self->{ua} = LWP::UserAgent->new;
    $self->{ua}->agent( "ZoneMinder Control Agent/" . ZoneMinder::Base::ZM_VERSION );
    $self->{state} = 'open';
}

sub close
{
    my $self = shift;
    $self->{state} = 'closed';
}

sub printMsg
{
    my $self = shift;
    my $msg = shift;
    my $msg_len = length($msg);

    Debug( $msg."[".$msg_len."]" );
}

sub sendCmd
{
    my $self = shift;
    my $cmd = shift;

    my $result = undef;

    printMsg( $cmd, "Tx" );

    my $req = HTTP::Request->new( POST=>"http://".$self->{Monitor}->{ControlAddress}."/PANTILTCONTROL.CGI" );
    $req->content($cmd);
    my $res = $self->{ua}->request($req);

    if ( $res->is_success )
    {
        $result = !undef;
    }
    else
    {
        Error( "Error check failed: '".$res->status_line()."'" );
    }

    return( $result );
}

sub sendCmd2
{
    my $self = shift;
    my $cmd = shift;
    my $result = undef;
    printMsg( $cmd, "Tx" );

    my $req = HTTP::Request->new( GET=>"http://".$self->{Monitor}->{ControlAddress}."/$cmd".$self->{Monitor}->{ControlDevice} );

    my $res = $self->{ua}->request($req);

    if ($res->is_success )
    {
        $result = !undef;
    }
    else
    {
        Error( "Error check failed:'".$res->status_line()."'" );
    }

    return( $result );
}

sub move
{
    my $self = shift;
    my $dir = shift;
    my $panSteps = shift;
    my $tiltSteps = shift;

    my $cmd = "PanSingleMoveDegree=$panSteps&TiltSingleMoveDegree=$tiltSteps&PanTiltSingleMove=$dir";
    $self->sendCmd( $cmd );
}

sub moveRelUpLeft
{
    my $self = shift;
    Debug( "Move Up Left" );
    $self->move( 0, 1, 1 );
}

sub moveRelUp
{
    my $self = shift;
    Debug( "Move Up" );
    $self->move( 1, 1, 1 );
}

sub moveRelUpRight
{
    my $self = shift;
    Debug( "Move Up" );
    $self->move( 2, 1, 1 );
}

sub moveRelLeft
{
    my $self = shift;
    Debug( "Move Left" );
    $self->move( 3, 1, 1 );
}

sub moveRelRight
{
    my $self = shift;
    Debug( "Move Right" );
    $self->move( 5, 1, 1 );
}

sub moveRelDownLeft
{
    my $self = shift;
    Debug( "Move Down" );
    $self->move( 6, 1, 1 );
}

sub moveRelDown
{
    my $self = shift;
    Debug( "Move Down" );
    $self->move( 7, 1, 1 );
}

sub moveRelDownRight
{
    my $self = shift;
    Debug( "Move Down" );
    $self->move( 8, 1, 1 );
}

# moves the camera to center on the point that the user clicked on in the video image. 
# This isn't extremely accurate but good enough for most purposes 
sub moveMap
{
    # if the camera moves too much or too little, try increasing or decreasing this value
    my $f = 11;

    my $self = shift;
    my $params = shift;
    my $xcoord = $self->getParam( $params, 'xcoord' );
    my $ycoord = $self->getParam( $params, 'ycoord' );

    my $hor = $xcoord * 100 / $self->{Monitor}->{Width};
    my $ver = $ycoord * 100 / $self->{Monitor}->{Height};
   
    my $direction;
    my $horSteps;
    my $verSteps;
    if ($hor < 50 && $ver < 50) {
        # up left
        $horSteps = (50 - $hor) / $f;
        $verSteps = (50 - $ver) / $f;
        $direction = 0;
    } elsif ($hor >= 50 && $ver < 50) {
        # up right
        $horSteps = ($hor - 50) / $f;
        $verSteps = (50 - $ver) / $f;
        $direction = 2;
    } elsif ($hor < 50 && $ver >= 50) {
        # down left
        $horSteps = (50 - $hor) / $f;
        $verSteps = ($ver - 50) / $f;
        $direction = 6;
    } elsif ($hor >= 50 && $ver >= 50) {
        # down right
        $horSteps = ($hor - 50) / $f;
        $verSteps = ($ver - 50) / $f;
        $direction = 8;
    }
    my $v = int($verSteps + .5);
    my $h = int($horSteps + .5);
    Debug( "Move Map to $xcoord,$ycoord, hor=$h, ver=$v with direction $direction" );
    $self->move( $direction, $h, $v );
}

# this clear function works, but should probably be disabled because 
# it isn't possible to set presets yet. 
sub presetClear
{
    my $self = shift;
    my $params = shift;
    my $preset = $self->getParam( $params, 'preset' );
    Debug( "Clear Preset $preset" );
    my $cmd = "ClearPosition=$preset";
    $self->sendCmd( $cmd );
}

# not working yet
sub presetSet
{
    my $self = shift;
    my $params = shift;
    my $preset = $self->getParam( $params, 'preset' );
    Debug( "Set Preset $preset" );
    # TODO need to first get current position $horPos and $verPos
    #my $cmd = "PanTiltHorizontal=$horPos&PanTiltVertical=$verPos&SetName=$preset&SetPosition=$preset";
    #$self->sendCmd( $cmd );
}

sub presetGoto
{
    my $self = shift;
    my $params = shift;
    my $preset = $self->getParam( $params, 'preset' );
    Debug( "Goto Preset $preset" );
    my $cmd = "PanTiltPresetPositionMove=$preset";
    $self->sendCmd( $cmd );
}

sub presetHome
{
    my $self = shift;
    Debug( "Home Preset" );
    my $cmd = "PanTiltSingleMove=4";
    $self->sendCmd( $cmd );
}


#  IR Controls
#
#  wake = IR on
#  sleep = IR off
#  reset = IR auto


sub wake
{
    my $self = shift;
    Debug( "Wake - IR on" );
    my $cmd = "setDaynightMode?ReplySuccessPage=night.htm&ReplyErrorPage=errrnight.htm&DayNightMode=3&ConfigDayNightMode=Save";
    $self->sendCmd2( $cmd );
}

sub sleep
{
    my $self = shift;
    Debug( "Sleep - IR off" );
    my $cmd = "setDaynightMode?ReplySuccessPage=night.htm&ReplyErrorPage=errrnight.htm&DayNightMode=2&ConfigDayNightMode=Save";
    $self->sendCmd2( $cmd );
}

sub reset
{
    my $self = shift;
    Debug( "Reset - IR auto" );
    my $cmd = "setDaynightMode?ReplySuccessPage=night.htm&ReplyErrorPage=errrnight.htm&DayNightMode=0&ConfigDayNightMode=Save";
    $self->sendCmd2( $cmd );
}

1;
__END__
# Below is stub documentation for your module. You'd better edit it!

=head1 NAME

ZoneMinder::Database - Perl extension for DCS-5020L

=head1 SYNOPSIS

  use ZoneMinder::Database;
  DLINK DCS-5020L

=head1 DESCRIPTION

ZoneMinder driver for the D-Link consumer camera DCS-5020L.

=head2 EXPORT

None by default.



=head1 SEE ALSO

See if there are better instructions for the DCS-5020L at
http://www.zoneminder.com/wiki/index.php/Dlink

=head1 AUTHOR

Art Scheel <lt>ascheel (at) gmail<gt>

=head1 COPYRIGHT AND LICENSE

LGPLv3

=cut

e va copiato nel PATH: /usr/share/perl5/ZoneMinder/Control. Dopodichè andare nel menu Control-Edit-Add New Control:

DLink 5020L e ZoneMinder

ed inserire i parametri  seguenti:

Main: Type: Remote, Protocol: DCS5020L, Name: DCS5020L, Can Wake, Can Sleep, Can Reset
Move: Can Move, Can Move Diagonally, Can Move Mapped, Can Move Relative
Pan: Can Pan, Min Pan Step 1, Max Pan Step 30
Tilt: Can Tilt, Min Tilt Step 1, Max Pan Step 30
Presets: Has Presets, Number: 24, Has Home Preset

Nel Tab Control inserire:

Controllable, Control Type: DCS5020L, Control address: user:pass@ipaddress

D-Link 5020L e ZoneMinder

D-Link 5020L e ZoneMinder

adesso tutto è pronto per la video sorveglianza.

enjoy 😉

 

Analizzare routers e devices IoT con RouterSploit

Analizzare routers e devices IoT con RouterSploitAnalizzare routers e devices IoT con RouterSploit

RouterSploit è uno script in python che serve ad analizzare devices IoT e routers per scoprire eventualmente exploit noti, e quindi mettere il tutto in sicurezza. Può essere anche usato per analizzare dispositivi embedded, stampanti, telecamere. Per installarlo su Debian Stretch/Buster basta seguire questi semplici passi:

sudo apt install python3-pip git
git clone https://www.github.com/threat9/routersploit
cd routersploit/
sudo pip3 install -r requirements.txt

Avviare RouterSploit:

cd routersploit/
sudo python3 rsf.py
use scanners/autopwn
set target 192.168.1.1

i comandi sopra avvieranno RouterSploit che analizzerà l’ip del router, successivamente cambiare target per gli altri devices.

Analizzare routers e devices IoT con RouterSploit

enjoy 😉

NordVPN su ASUS DSL-AC68U Merlin

NordVPN su ASUS DSL-AC68U Merlin

NordVPN su ASUS DSL-AC68U Merlin

Dopo le indicazioni su come configurare NordVPN su Debian Stretch, in questa guida mostrerò come integrare la VPN h24 sul Modem/Router ASUS DSL-AC68U con firmware Asuswrt-Merlin. Il presupposto quindi è che questo firmware sia già onboard.

Scaricare i files con i server vpn:

mkdir vpn_server; cd vpn_server/
wget https://nordvpn.com/api/files/zip
unzip zip
rm zip

accedere all'interfaccia del router e andare nel menu vpn:

NordVPN su ASUS DSL-AC68U Merlin

andare in Client VPN:

NordVPN su ASUS DSL-AC68U Merlin

Aggiungere un profilo:

NordVPN su ASUS DSL-AC68U Merlin

inserire user e passord della VPN, e caricare il server scelto:

NordVPN su ASUS DSL-AC68U Merlin

abilitare la VPN:

NordVPN su ASUS DSL-AC68U Merlin

NordVPN su ASUS DSL-AC68U Merlin

a questo punto tutta la rete interna sarà sotto VPN, protetta e sicura.

enjoy 😉

NordVPN OpenVPN su Debian Stretch

NordVPN OpenVPN su Debian Stretch

NordVPN OpenVPN su Debian Stretch

Guida su come configurare una VPN, in questo caso NordVPN, su Debian Stretch, in modo grafico, utilizzando Network Manager oppure avviandola direttamente dal  terminale. Io ho un abbonamento con NordVPN,  quindi ho user e password. Il perchè utilizzare una VPN, i pro ed i contro, non è oggetto di questo post. Dico solo che questa VPN ha sede a Panama e non memorizza logs.

sudo apt-get install openvpn network-manager-openvpn-gnome ca-certificates unzip
sudo service network-manager restart
cd /etc/openvpn
sudo wget https://downloads.nordcdn.com/configs/archives/servers/ovpn.zip
sudo unzip ovpn.zip
sudo rm ovpn.zip
cd ovpn_udp
ls -al

per far partire la VPN, basta scegliere un server della lista, io consiglio di testarne diversi per poter scegliere quello più performante:

sudo openvpn us844.nordvpn.com.udp.ovpn

OpenVPN chiederà le credenziali, quindi inserire user e password.

Configurazione di Network Manager

Scaricare i seguenti files:

mkdir vpn_server; cd vpn_server/
wget https://nordvpn.com/api/files/zip
unzip zip
rm zip

cliccare sopra l'immagine

NordVPN OpenVPN su Debian Stretch

NordVPN OpenVPN su Debian Stretch

enjoy 😉

 

Zoneminder su Raspberry pi 3 B+ Raspbian Stretch

Zoneminder su Raspberry pi 3 B+ Raspbian Stretch

Zoneminder su Raspberry pi 3 B+ Raspbian Stretch

Con l’arrivo del nuovo Raspberry pi 3 B+ nella mia collezione, ho deciso di dedicarlo alla video sorveglianza installando Zoneminder. Per avere delle ottime performance, è necessrio avere una sd card performante, io ho optato per una SanDisk Extreme PRO 64GB, MicroSDXC Classe 10. Si può anche utilizzare un ssd esterno come capiente storage. Tutti i comandi sotto saranno eseguiti come root:

# apt update; apt upgrade -y
# apt install -y build-essential openssh-server apache2 mysql-server mysql-client bison flex php php7.0-curl php7.0-cli php7.0-mysql php-pear php7.0-gd curl sox libncurses5-dev libssl-dev mpg123 libxml2-dev libnewt-dev sqlite3 libsqlite3-dev libasound2-dev libogg-dev libapache2-mod-php7.0 sendmail ffmpeg vlc vlc-data zoneminder
# rm -rf /etc/mysql/my.cnf
# cp /etc/mysql/mariadb.conf.d/50-server.cnf /etc/mysql/my.cnf
# nano /etc/mysql/my.cnf

ed aggiungere:

sql_mode = NO_ENGINE_SUBSTITUTION

come sotto:

# * Basic Settings
#
user            = mysql
sql_mode = NO_ENGINE_SUBSTITUTION
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
# systemctl restart mysql

mettere in sicurezza mysql

# mysql_secure_installation
# service mariadb restart
# systemctl status mariadb.service

Creazione del database:

# mysql -uroot -p < /usr/share/zoneminder/db/zm_create.sql
# mysql -uroot -p -e "grant all on zm.* to 'zmuser'@localhost identified by 'zmpass';"
# mysqladmin -uroot -p reload
# chmod 740 /etc/zm/zm.conf
# chown root:www-data /etc/zm/zm.conf
# adduser www-data video
# a2enmod cgi
# a2enconf zoneminder
# a2enmod rewrite
# systemctl restart apache2
# chown -R www-data:www-data /usr/share/zoneminder/
# systemctl enable zoneminder
# service zoneminder start

per evitare errori modificare il file php.ini aggiungendo Europe/Rome nella sezione Module Settings:

# nano /etc/php/7.0/apache2/php.ini

date.timezone = Europe/Rome

# systemctl restart apache2

a questo punto zoneminder sarà raggiungibile all’indirizzo http://ip_seerver/zm

Per utilizzare un ssd esterno come storage, bisogna configurare /etc/fstab per il montaggio automatico:

# systemctl stop zoneminder
# mkdir -p /ssd/zoneminder/events/
# rm -rf /var/cache/zoneminder/events/
# nano /etc/fstab

ed aggiungere qualcosa del genere:

/dev/sdX1 /ssd ext4 defaults 0 2
/ssd/zoneminder/images /var/cache/zoneminder/images none defaults,bind  0 2
/ssd/zoneminder/events /var/cache/zoneminder/events none defaults,bind 0 2

per poter scrivere sul nuovo storage:

# chown -R www-data:www-data /ssd/zoneminder/
# reboot

Zoneminder su Raspberry pi 3 B+ Raspbian Stretch

al riavvio tutto dovrebbe funzionare, e si potrà procedere alla configurazione di Zoneminder

enjoy 😉

Systemback 1.9.3 per Debian 9 Ubuntu 17-10 18-04

Systemback 1.9.3 per Debian 9 Ubuntu 17-10 18-04

update 26/01/2019

Systemback 1.9.3 per Debian 9 Ubuntu 17-10 18-04

Nuovo aggiornamento per Systemback che arriva alla versione 1.9.3, aggiungendo i pacchetti e la compatibilità con Ubuntu 17-10 ed Ubuntu 18-04. In questa versione, oltre a qualche vezzo, ed alcuni bug fix, ho aggiunto anche il supporto per SSD NVMe, anche se al momento funziona meglio se si ha già una partizione pronta all’uso. Tenendo conto che è un lavoro che faccio a tempo perso ogni feed e commento saranno bene accetti.

DOWNLOAD SYSTEMBACK-1.9.3

DOWNLOAD SOURCE

poi:

$ cd Downloads/
$ tar xvf systemback-install_pack-1.9.3.tar.xz
$ cd systemback-install_pack-1.9.3/
$ sudo ./install.sh

DEBIAN 32 BIT

cercando di installare Systemback-1.9.3 su Debian Stretch 32 bit e non solo, si verifica l’errore di versione per i pacchetti: libqt5core5a (>= 5.10.0) e libqt5gui5. Si risolve aggiornando i pacchetti dai repo testing:

# nano /etc/apt/sources.list

ed aggiungere:

deb http://ftp.it.debian.org/debian/ testing main non-free contrib

poi affinchè non si aggiorni tutto il sistema, andiamo a creare un file , dove diremo che, la priorità dei pacchetti è solo quella della versione della distro installata, e cioè in questo caso stable/stretch:

# nano /etc/apt/apt.conf.d/99defaultrelease

ed incollare dentro:

APT::Default-Release "stable";

a questo punto siamo pronti ad installare la versione dei pacchetti aggiornati:

# apt update
# apt install -t testing libqt5core5a libqt5gui5

poi si potrà proseguire con l’installazione di systemback-1.9.3

Systemback 1.9.3 per Debian 9 Ubuntu 17-10 18-04

enjoy 😉