Installazione completa di nextcloud in debian 9.xx – versione 13.xx

Di seguito i passi per l’installazione completa di NextCloud su macchina Virtuale debian 9.xx.

Trattandosi di installazione da zero dopo il passaggio a superuser è  opportuno aggiornare il sistema

su
apt update && apt upgrade

Next cloud necessita di un server di tipo  LAMP cioè con installati  Apache – MySQL o MariaDB) e PHP.

prima, per semplificarci le operazioni, installiamo: sudo,  unzip, wget ed un editor vim, mcedit, nano o altro

installiamo sudo e per comodità aggiungiamo il nostro user al gruppo sudoers, che sarà disponibile al prossimo login

apt install sudo  

adduser tuo-user sudo
apt install wget unzip vim -y

Installare i componenti per il server LAMP 

apt install apache2 mariadb-server -y

Installare PHP 

apt install libapache2-mod-php

verranno installati anche i seguenti pacchetti :

libapache2-mod-php7.0 php-common php7.0-cli php7.0-common php7.0-json
php7.0-opcache php7.0-readline

Quindi installare

apt install php-cgi php-gd php-json php-mysql php-curl php-intl
apt install php-zip php-mbstring php-mcrypt php-imagick
apt install php-xmlwriter php-xmlreader php-xml php-simplexml

Configurare MariaDB

Configurare mysql per l’avvio al boot debian 9 usa systemd come init quindi

systemctl start mysql
systemctl enable mysql

Di default MariaDB il fork opensource di mysql non è sicuro per passare all’installazione sicura avviare:

mysql_secure_installation
mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

You already have a root password set, so you can safely answer 'n'.

Change the root password? [Y/n] n
 ... skipping.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Creare il database per nextcloud  (scegliamo: nextclouddb)  e lo specifico user in MariaDB (mysql ):

entrare  in  myslq

mysql -u root -p
MariaDB [(none)]> CREATE DATABASE nextclouddb;

Creare utente e password per NextCloud

MariaDB [(none)]> CREATE user 'nextcloud'@'localhost' IDENTIFIED BY 'nextcloud-DBpassword';

Garantire allo user nexcloud i privilegi al database creato nextclouddb

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nextclouddb.* TO 'nextcloud'@'localhost';

Per attivare i permessi con

MariaDB [(none)]> FLUSH PRIVILEGES;

uscire da mysql con

MariaDB [(none)]>  \q

Configurare apache

Configurare apache per l’avvio al boot debian 9 usa systemd come init quindi

systemctl start apache2
systemctl enable apache2

Abilitare i moduli aggiuntivi

a2enmod rewrite 
a2enmod headers 
a2enmod env 
a2enmod dir 
a2enmod mime

Riavviare apache con

systemctl restart apache2

Installare nextcloud da terminale

Configurata la basedati  installare l’ultima versione dell’applicativo nextcloud. La versione corrente è nextcloud ver. 13.0.2. rilasciata a fine aprile.

wget https://download.nextcloud.com/server/releases/latest.zip
unzip latest.zip
mv nextcloud/ /var/www

Per procedere  all’installazione usano il terminale spostarsi nella cartella di nextcloud  ( installing from command line

cd /var/www/nextcloud/

impostare i permessi della cartella con.

chown www-data:www-data . -R

installare con

sudo -u www-data php occ maintenance:install –database “mysql” –database-name “nextclouddb” –database-user “nextcloud” –database-pass “nextcloud-DBpassword” –admin-user “ncadmin” –admin-pass “ncadmin-password”

 
# sudo -u www-data php occ maintenance:install --database "mysql" 
--database-name "nextclouddb" --database-user "nextcloud" 
--database-pass "xxxxxx" --admin-user "ncadmin"  
--admin-pass "xxxxx"

Nextcloud is not installed - only a limited number of commands are available

Nextcloud was successfully installed

E’ necessario ora aggiungere l’indirizzo ip e/o il nome di dominio (fwdn)  tra i domini sicuri nella sezione ‘trusted domain’ nel file di configurazione:

/var/www/nextcloud/config/config.php

Editare il file di configurazione ad esempio con vi o nano è possibile aggiungere più domini che dovranno essere preceduti da un numero progressivo.

vi /var/www/nextcloud/config/config.php
...
'trusted_domains' => 
 array (
0 => 'localhost',
1 => '192.168.1.189',
2 => 'cloud.example.com', 
3 => 'cloud.internal',
 ),
...

Firewall ufw

Installazione e configurazione del firewall ufw

E’ sufficiente rendere disponibile la porta 80 di seguito le istruzioni per rendere disponibili anche la porta 443 per il protocollo https e la porta 22 per il protocollo ssh.

apt install ufw   # installazione firewall 
ufw allow http    # apertura porta 80 
ufw allow https   # apertura porta 443 
ufw allow ssh     # opzionale apertura porta 22 

ufw enable        # abilitazione firewall ufw

Avviare Next Cloud

Per poter avviare Nextcloud è necessario ora  definire  un virtual host file per apache.
In questa fase abilitiamo all’utilizzo del solo protocollo http: .
In un secondo momento verrà configurato apache affinche risponda alla porta https:

creare il file nextcloud.conf

vi  /etc/apache2/sites-available/nextcloud.conf

del tipo

<VirtualHost *:80>
   ServerAdmin admin@example.com
   DocumentRoot "/var/www/nextcloud"
   ServerName 192.168.1.189
   <Directory "/var/www/nextcloud/">
     Options MultiViews FollowSymlinks
     AllowOverride All
     Order allow,deny
     Allow from all
   </Directory>
   TransferLog /var/log/apache2/nextcloud_access.log
   ErrorLog /var/log/apache2/nextcloud_error.log
</VirtualHost>

quindi disabilitare il virtual host file di default che reindirizza alla classica pagina Apache2 Debian Default Page 

a2dissite 000-default

e abilitare il virtual host file che farà puntare apache a Nextcloud

a2ensite nextcloud

E riavviare apache

systemctl restart apache2

Rendere sicuro l’accesso a Nextcloud con SSL

Oramai gli standard di accesso alle applicazioni web prevedono l’utilizzo del protocollo https. Quindi risulta necessario creare i certificati SSL per il server apache.
Se non si dispone di un certificato rilasciato da un authority a seconda delle esigenze si può procedere con la creazione di un certificato auto-firmato. Oppure si può utilizzare il servizio online gratuito let’s encrypt per la generazioni di un certificato associato ad un proprio dominio.

Generazione di certificato auto firmato per apache

mkdir /etc/apache2/ssl
cd /etc/apache2/ssl

generare le chiavi SSL

openssl req -new -x509 -days 365 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.key

abilitare il modulo ssl di apache e la configurazione di default per il protocollo https

a2enmod ssl  
a2ensite default-ssl

creare il file nextcloud-s.conf per configurare l’accesso https

vi  /etc/apache2/sites-available/nextcloud.conf

del tipo

<IfModule mod_ssl.c>
<VirtualHost *:80>
#   ServerName cloud.example.com
#   Redirect permanent / https://cloud.example.com/
</VirtualHost>
   
 <VirtualHost *:443>
   DocumentRoot "/var/www/nextcloud"
   
   # ServerName cloud.example.com  
   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined

   <Directory /var/www/nextcloud/>
     Options +FollowSymlinks
     AllowOverride All

     SetEnv HOME /var/www/nextcloud
     SetEnv HTTP_HOME /var/www/nextcloud
     Satisfy Any
   </Directory>
   SSLEngine on
   SSLCertificateFile /etc/apache2/ssl/apache.pem
   SSLCertificateKeyFile /etc/apache2/ssl/apache.key

   <IfModule mod_headers.c>
     Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
   </IfModule>
 </VirtualHost>
</IfModule>

abilitare il virtual host https  nextcloud-s con

a2ensite nextcloud-s

E riavviare apache

systemctl restart apache2

In questo momento nexcloud risponde sia sulla porta 80 che sulla porta 443 dell’indirizzo locale 192.168.1.189.
Per questioni di sicurezza nexcloud invita ad utilizzare il protocollo https

  • You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our security tips.

pertanto la porta 80 andrebbe reindirizzata verso la porta 443 modificando il file di configurazione nexcloud.conf  e aggiungendo la riga in verde con il Redirect permanent /  verso https

<VirtualHost *:80>
    ServerAdmin admin@example.com
    Redirect permanent / https://192.168.1.189/
    
    ...

Let’s Encrypt Certificato SSL/TLS gratuito

Il certificato utilizzato essendo auto firmato  farà si che i browser qualifichino la connessione come non sicura per evitare il warning si può generare il certificato facendo ricorso a Let’s Encrypt .  Let’s Encrypt consente di generare certificati per domini  pubblico gratuitamente. Per utilizzare questo serivizio online in Debian  installare letsencrypt

apt install letsencrypt

ed   apt install python-certbot-apache

generare il certificato con

certbot

perchè letsencrypt possa generare il certificato il dominio indicato dovrà essere esposto sulla rete internet. Per completare il rilascio letsencrypt chiederà infatti di pubblicare in una cartella specifica del dominio un piccolo file con inserita una stringa che verrà verificata dal servizio stesso.

Generato il certificato i file di configurazione di apache andranno modificati sostituendo l’indirizzo ip presente nel parametro ServerName  con il nome del dominio utilizzato per generare il certificato

 

Schermata di login di Nextcloud 13.0.2

Rendere sicura e personalizzare installazione di nextcloud

Prima di procedere alla personalizzazione dell’installazione si può generare una  copia di backup di nextcloud. Così da poter ripristinare l’installazione da questo punto in caso di errori. Si può generare il backup con tar procedere ad una semplice copia

tar zcvf  nextcloudxx.tar.gz /var/www/nexcloud/

oppure

cp -a /var/www/nextcloud   /var/www/nexcloud01

Spostare la cartella data di nextcloud

Per Nextcloud può essere opportuno utilizzare una data directory  diversa da quella default, localizzata nello spazio web.

/var/www/nextcloud/data

ad esempio i dati potrebbero essere spostati  /var/nc-data (  o /opt/nc-data )

/var/nc-data

Muovere la cartella data con

 mv /var/www/nextcloud/data /var/nc-data

ora è necessario precisare il nuovo percorso nel file di configurazione

modificare il file di configurazione con

 vi /var/www/nextcloud/config/config.php

cambiare il valore di datadirectory

'datadirectory' => '/var/www/nextcloud/data',

in

'datadirectory' => '/var/nc-data',

Rendere sicura l’installazione di Nextcloud

Per rendere sicura l’installazione di nextcloud può essere conveniente utilizzare lo script proposto da SyS0p3r  in https://help.nextcloud.com/t/complete-nc-installation-on-debian-9-stretch-and-manual-update/21881

salvare lo script di seguito riportato in /var/www/nc_perm.sh  facendo attenzione che le variabili evidenziate siano correttamente impostate

vi  /var/www/nc_perm.sh
#!/bin/bash
ncpath='/var/www/nextcloud'
ncdata='/var/nc-data'
htuser='www-data'
htgroup='www-data'
rootuser='root'

printf "Creating possible missing Directories\n"
mkdir -p $ncpath/data
mkdir -p $ncpath/updater

printf "chmod Files and Directories\n"
find ${ncpath} -type f -print0 | xargs -0 chmod 0640
find ${ncpath} -type d -print0 | xargs -0 chmod 0750
find ${ncdata} -type f -print0 | xargs -0 chmod 0640
find ${ncdata} -type d -print0 | xargs -0 chmod 0750

printf "chown Directories\n"
chown -R ${rootuser}:${htgroup} ${ncpath}
chown -R ${htuser}:${htgroup} ${ncpath}/apps/
chown -R ${htuser}:${htgroup} ${ncpath}/config/
chown -R ${htuser}:${htgroup} ${ncdata}/
chown -R ${htuser}:${htgroup} ${ncpath}/themes/
chown -R ${htuser}:${htgroup} ${ncpath}/updater/

chmod +x ${ncpath}/occ

printf "chmod/chown .htaccess\n"
if [ -f ${ncpath}/.htaccess ]
then
        chmod 0644 ${ncpath}/.htaccess
        chown ${rootuser}:${htgroup} ${ncpath}/.htaccess
fi
if [ -f ${ncdata}/.htaccess ]
then
        chmod 0644 ${ncdata}/.htaccess
        chown ${rootuser}:${htgroup} ${ncdata}/.htaccess
fi
## END SCRIPT

Cambiare i permessi del file script con

chmod 750 /var/www/nc_perm.sh

eseguire con

./nc_perm.sh

Primo accesso in Nextcloud 13

Nextcloud 13 dashboard

Configurare PHP OPcache

Al primo avvio Nexcloud nella sezione basic setting  evidenzia che PHPOcache non è configurato in modo appropriato.

* The PHP OPcache is not properly configured. For better performance it is recommended to use the following settings in the php.ini:
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

Aprire il file di configurazione php.ini per apache modificare le voci specifiche della sezione opcache oppure incollare il blocco di voci al termine della sezione stessa.

opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

riavviare apache2

systemctl restart apache2

In setting si evidenzia che le performance migliorano con la configurazione di una cache come memcache.

Nextcloud è un’ applicazione  matura con molte funzionalità, Molte le apps/plugin disponibili.

Alcune apps della sezione multimedia

User Manual disponibile nella sezione help

 

Risorse:

 

 

Annunci

Home server linux motherboard x79

La disponibilità di processori Xeon usati e di motheboard x79 cinesi a costo contenuto consente di realizzare home server linux e computer da gioco potenti a costi contenuti.

Nel post la realizzazione di una macchina Debian 9.3 che potrà essere adibita a Home Server Linux  per la virtualizzazione KVM.  Al centro del sistema c’è la motheboard cinese x79   3.5B mATX. Il formato ridotto consente anche di contenere gli ingombri .

motheboard x79 mATX 3.5B

Debian

Premesso da subito che l’installazione di Debian 9  non evidenzia nessun problema nel riconoscimento della mainboard passiamo alle caratteristiche  della stessa

La scheda madre x79 in oggetto, ha stampato sulla piastra E5 ver: 3.5B. Supporta processori con socket LGA 2011. Precisamente  Xeon E5 v1 (Sandy-Bridge) e Xeon E5 v2 (Ivi Bridge) e Core i7 (sandy Bridge-E) che possono essere facilmente trovati di seconda mano a basso costo. 

Caratteristica molto interessante la 3.5B supporta memorie DDR3 U-DIMM ( pc standard – memorie unbuffered ) che R-DIMM ( server – memoria registered ) con e senza controllo di parità (ECC) .  Praticamente sembra accettare qualsiasi tipo di DDR3 con il limite della frequenza 1066/1333/1600.   Viene dichiarata una capacità massima di 64 GB. 

I vari tipi di memoria sono descritti sinteticamente nel post:  Memorie DIMM SDRAM DDR: U-DIMM, U-DIMM ECC, R-DIMM, R-DIMM ECC.

I processori i7 possono usare solo DDR3 U-DIMM (regular / x desktop) . Gli Xeon sia U-DIMM che R-DIMM

La scheda viene fornita in una confezione molto economica. Il vero limite però  è un manuale veramente molto spartano e un po’ approssimativo. Si tratta di 2 fogli A4 piegati. 6 facciatine di testo dal titolo generico x79 User Manual. All’interno non è riportato il modello della scheda che invece è leggibile sulla piastra E5 VER: 3.5B. Lo schema riportato lascia a desiderare. E’ fornito un Cd-Rom con i driver per Windows,   ovviamente il backpanel per  il case e 2 cavi Sata. In compenso come già evidenziato nessun problema nell’installazione di Debian se non la necessità di installare i soliti driver non free per la scheda di rete  firmware-realtek_0.43_all.deb.  Ubuntu non dovrebbe richiedere neppure questo mettendo da subito a disposizione anche i driver non free.

Caratteristiche della scheda:

  • Chipset: x79  ( o compatibile ), intel 6series o 7series, DMI 2.0
  • Cpu:  Xeon E5 V1 e V2  , core i7 Sandy Bridge-E
  • BIOS: American Megatrend v 4.6.5  data 06/26/2017
  • Memory4*240pin DDR3 1066/1333/1600 – capacità massima dichiarata 64 GB
  • LAN:  RTL 8111el   Realteck 10/100/1000 LAN
  • PCI Express:
    • 1*PCI Express x 16 supporta schede grafiche PCI 3.0,
    • 2*PCI Express  x  1
  • Audio: Realteck ALC662 5.1 Channel
  • SATA: 1* SATA 3.03* SATA 2.0
  • USB: 4* USB 3.0,  10* USB 2.0
  • 1 x RS232
  • I/O connectors:
    • 1 Ps/ 2  Keyboard
    • 1 Ps/2 Mouse
    • 1 RJ45  Giga LAN Realteck
    • 2 x USB 3.0
    • 4 x USB 2.0
    • audio:  input/output/mic
    • 5.1 Channel Audio
    • Ovviamente mancano connettori per display
  • Dimensioni: 237mm x 250mm Micro ATX
  • Brand: Non indicato

Processori supportati

Processori: i7 Core

i7 3820,  i7 3930K,  i7 3960x,  i7 3970x, i7 4820K, i7 4930k, i7 4960x e altri

Processori: Intel Xeon

Xeon v1 ( Sandy Bridge ) e Xeon v2 ( Ivi Bridge )  E5-16xx, E5-26xx, E5-46xx

Elenco esemplificativo di processori Xeon supportati :

 Xeon V.1 Xeon V.2
 Xeon E5-1620 Xeon E5-1620 v2
 Xeon E5-1650 Xeon E5-1650 v2
 Xeon E5-1660 Xeon E5-1660 v2
Xeon E5-1680 Xeon E5-1680 v2
Xeon E5-2603 v2
 Xeon E5-2620 Xeon E5-2620 v2
Xeon E5-2628L v2 (basso consumo)
Xeon E5 2630 Xeon E5-2630 v2
Xeon E5-2630L ( basso consumo ) Xeon E5-2630L v2
Xeon E5-2637 v2
Xeon E5-2640 Xeon E5-2640 v2
Xeon E5-2643 Xeon E5-2643 v2
Xeon E5-2648L v2 (basso consumo)
Xeon E5 2650 Xeon E5-2650 v2
Xeon E5 2658 ( usato per il test )  Xeon E5-2658 v2
 Xeon E5-2660 Xeon E5-2660 v2
 Xeon E5-2667 Xeon E5-2667 v2
 Xeon E5-2670 Xeon E5-2670 v2
 Xeon E5-2680 Xeon E5-2680 v2
Xeon E5-2687W
Xeon E5-2690 v2
Xeon E5-2695 v2
Xeon E5-2697 v2
Xeon E5-4603
Xeon E5-4616
Xeon E5-4640
Xeon E5-4650
Xeon E5-4616

Il sistema è stato assemblato utilizzando hardware usato o già a disposizione. Nuovi la mortherboard e il dissipatore.

Home Server Linux – Configurazione di test:

  • Motherboard x79 3.5B LGA 2011 ( circa 100 Euro ebay: serverit_nl)
  • CPU: Intel Xeon E5-2658 V18 core CPU ( usato )
    Dissipatore : ARCTIC Alpine 20 CO
  • RAM: 16GB DDR3 1600 R-DIMM ECC SK Hynix ( usato )
  • Scheda Video PCI Express base AMD Radeon HD5400
  • HD Western Digital – WD20EARX-00P
  • Scheda di rete aggiuntiva Intel 82572EI Gigabit Ethernet Controller
  • Sistema Operativo: Debian 9.3
  • Alimentatore sovradimensionato da 460 Watt.

Per inxi il sistema ha le seguenti caratteristiche. Inxi evidenzia che il pc è acceso da 14 giorni.

$ inxi -Fxz
System:    Host: deb9p4B Kernel: 4.9.0-5-amd64 x86_64 (64 bit gcc: 6.3.0) Desktop: N/A Distro: GNU/Linux 9 (stretch)
Machine:   Device: desktop Mobo: INTEL model: X79 INTEL(INTEL Xeon E5/Core i7 DMI2 - C600/C200 Cipset v: V3.5B
           UEFI: American Megatrends v: 4.6.5 date: 06/26/2017
CPU:       Octa core Intel Xeon E5-2658 0 (-HT-MCP-) cache: 20480 KB 
           flags: (lm nx sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx) bmips: 33521 
           clock speeds: max: 2400 MHz 1: 2380 MHz 2: 2330 MHz 3: 2350 MHz 4: 2389 MHz 
           5: 2299 MHz 6: 2296 MHz  7: 2305 MHz 8: 2377 MHz 9: 2351 MHz 10: 2292 MHz 
           11: 2362 MHz 12: 2371 MHz 13: 2356 MHz 14: 2306 MHz  15: 2302 MHz 16: 2250 MHz
Graphics:  Card: Advanced Micro Devices [AMD/ATI] Cedar [Radeon HD 5000/6000/7350/8350 Series]
           bus-ID: 03:00.0  
           Display Server: X.org 1.19.2 drivers: ati,radeon (unloaded: modesetting,fbdev,vesa)
           tty size: 122x42 Advanced Data: N/A for root
Audio:     Card-1 Advanced Micro Devices [AMD/ATI] Cedar HDMI Audio [Radeon HD 5400/6300/7300 Series]
           driver: snd_hda_intel bus-ID: 03:00.1
           Card-2 Intel 7 Series/C216 Family High Definition Audio Controller
           driver: snd_hda_intel bus-ID: 00:1b.0
           Sound: Advanced Linux Sound Architecture v: k4.9.0-5-amd64
Network:   Card-1: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
           driver: r8169 v: 2.3LK-NAPI port: d000 bus-ID: 07:00.0
           IF: enp7s0 state: up speed: 1000 Mbps duplex: full mac: <filter>
           Card-2: Intel 82572EI Gigabit Ethernet Controller (Copper)
           driver: e1000e v: 3.2.6-k port: c000 bus-ID: 08:00.0
           IF: enp8s0 state: up speed: 1000 Mbps duplex: full mac: <filter>
Drives:    HDD Total Size: 2000.4GB (73.8% used)
           ID-1: /dev/sda model: WDC_WD20EARX size: 2000.4GB temp: 27C
Partition: ID-1: / size: 42G used: 17G (42%) fs: ext4 dev: /dev/sda3            
Sensors:   System Temperatures: cpu: 32.0C mobo: N/A gpu: 41.5
Info:      Processes: 294 Uptime: 14 days Memory: 10104.2/15984.1MB  Init: systemd 
           runlevel: 5 Gcc sys: 6.3.0 Client: Shell (bash) inxi: 2.1.28 

Xeon E5-2658

La cpu Xeon E5-2658 è una cpu a 8 core 16 thread di discreta potenza con consumi come riportato tutto sommato contenuti. I molti core nel caso della virtualizzazione consentono di meglio ripartire la potenza di calcolo tra le macchine virtuali.

Nel corso del test phoronic Smallpt 1.0  i consumi massimi del pc sono stati 141.5 W .  Consumi in idle circa75W.   Nmon evidenzia come tutte le unità di calcolo della cpu XEON siano al 100% nel corso del test.

test phoronic Smallpt 1.0

Molte sono le CPU Xeon E5-xxxx v1 e v2 rilasciate e che conseguentemente si possono acquistare usate in rete. Per un home server vale la pena considerare anche i consumi le versioni a basso consumo marcate L non sono molte. Il TDPdi  65W le rende  decisamente interessanti. Per confrontare le prestazioni in base ai Watt spesi il sito cpubenchmark ha un interessante tabella riepilogativa
https://www.cpubenchmark.net/CPU_mega_page.html

Nell’elenco le CPU sono ordinate per Power performance

 

Risorse:

Installare nextcloud 12 in debian 9

Di seguito i passi per una installazione semplice,  una istallazione base di NextCloud su macchina Virtuale debian 9.0.

su
apt update && apt upgrade

Next cloud necessita di un server di tipo  LAMP cioè con installati  Apache – MySQL o MariaDB) e PHP.

prima, per semplificarci le operazioni, installiamo: sudo unzip wget ed un editor vim, mcedit, nano o altro

installiamo sudo e per comodità aggiungiamo il nostro user al gruppo sudoers

apt install sudo  

adduser tuo-user sudo

che sarà disponibile al prossimo login

apt install wget unzip vim -y

Instalare le componenti per il server LAMP 

apt install apache2 mariadb-server -y

Configurare apache per l’avvio al boot debian 9 usa systemd come init quindi

systemctl start apache2 
systemctl enable apache2 
systemctl enable mysql
systemctl enable mysql

Installare PHP 

apt install libapache2-mod-php

verranno installati anche i seguenti pacchetti :

libapache2-mod-php7.0 php-common php7.0-cli php7.0-common php7.0-json
php7.0-opcache php7.0-readline

Quindi installare

apt install php-cgi php-gd php-json php-mysql php-curl php-intl
apt install php-zip php-mbstring php-mcrypt php-imagick
apt install php-xmlwriter php-xmlreader php-xml php-simplexml

Configurare MariaDB

Di default MariaDB il fork opensource di mysql non è sicuro per passare all’installazione sicura avviare:

mysql_secure_installation
mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

You already have a root password set, so you can safely answer 'n'.

Change the root password? [Y/n] n
 ... skipping.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Creare il database per nextcloud  (scegliamo: nextclouddb)  e lo specifico user in MariaDB (mysql ):

entrare  in  myslq

mysql -u root -p
MariaDB [(none)]> CREATE DATABASE nextclouddb;

Creare utente e password per NextCloud

MariaDB [(none)]> CREATE user 'nextcloud'@'localhost' IDENTIFIED BY 'nextcloud-DBpassword' ;

Garantire allo user nexcloud i privilegi al database creato nextclouddb

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nextclouddb.* TO 'nextcloud'@'localhost';

Per attivare i permessi con

MariaDB [(none)]> FLUSH PRIVILEGES;

uscire con

MariaDB [(none)]>  \q

Configurata la basedati  installare l’ultima versione dell’applicativo con l’applicativo con

wget https://download.nextcloud.com/server/releases/latest.zip
unzip latest.zip
mv nextcloud/ /var/www

Per poter avviare Nextcloud è necessario definire  un virtual host file per apache.
Per una configurazione base creare in sites-available  un file nextcloud.conf

nano  /etc/apache2/sites-available/nextcloud.conf

del tipo

<VirtualHost *:80>
   ServerAdmin admin@example.com
   DocumentRoot "/var/www/nextcloud"
   ServerName 192.168.1.189
   <Directory "/var/www/nextcloud/">
      Options MultiViews FollowSymlinks
      AllowOverride All
      Order allow,deny
      Allow from all
   </Directory>
   TransferLog /var/log/apache2/nextcloud_access.log
   ErrorLog /var/log/apache2/nextcloud_error.log
</VirtualHost>

quindi disabilitare il virtual host file di default che reindirizza alla classica pagina Apache2 Debian Default Page 

a2dissite 000-default

e abilitare il virtual host file che farà puntare apache a Nextcloud

a2ensite nextcloud

E riavviare apache

systemctl restart apache2

L’installazione può essere completata utilizzando il browser 

E’ necessario ora  aggiungere l’indirizzo ip o il nome di dominio(fwdn) tra i domini sicuri.

Quindi è possibile impostare l’account di amministrazione configurare il database e il data folder

oppure utilizzando  il terminale

spostarsi nella cartella nextcloud

cd /var/www/nextcloud/

impostare i permessi della cartella con.

chown www-data:www-data . -R

installare con

sudo -u www-data php occ maintenance:install --database "mysql" \
--database-name "nextclouddb" --database-user "nextcloud"  \
--database-pass "nextcloud-DBpassword" --admin-user "ncadmin" \ 
--admin-pass "ncadmin-password"

Nextcloud is not installed - only a limited number of commands are available

Nextcloud was successfully installed

aggiungere l’indirizzo ip e il nome di dominio tra i domini sicuri nella sezione ‘trusted domain’ nel file di configurazione  /var/www/nextcloud/config/config.php

nano /var/www/nextcloud/config/config.php

 

...

'trusted_domains' => 
 array (
0 => 'localhost',
1 => '192.168.1.189',
2 => 'cloud.internal',
3 => 'cloud.example.com', 
 ),

...

Terminata l’installazione sarà possibile effettuare il login

e quindi accedere alla dashboard

Firewall ufw

Installazione e configurazione del firewall ufw

E’ sufficiente rendere disponibile la porta 80 di seguito le istruzioni per rendere disponibili anche la porta 443 per il protocollo https e la porta 22 per il protocollo ssh.

apt install ufw 
ufw allow http 
ufw allow https 
ufw allow ssh 
ufw enable

 

Risorse:

 

Come Configurare SQLWorkbench per PostgreSQL

SQLWorkbench è un SQL query tool free particolarmente efficace che supporta un ampio numero di DBMS. Scritto in Java è in grado di interfacciarsi con qualsiasi database per il quale sia disponibile un JDBC driver.  Essendo in java SQLWorkbench potrebbe essere eseguito in qualsiasi Sistema Operativo che disponga di JRE ( Java Runtime Environment).  L’ultima versione stabile è la Build 123 del settembre 2017.  Tra i database supportati e testati non poteva mancare PostgreSQL. Di seguito i passi per “installare” e configurare SQLWorkbench per PostgreSQL.

Per poter utilizzare SQLWorkbench è necessario java JRE. Possiamo controllare la versione java disponibile con java -version

# java -version
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-8u151-b12-1~deb9u1-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)

per installare Oracle JRE  manualmente su macchina linux si può fare riferimento  al post   Oracle Java Runtime 8 installazione manuale – versione 8.121 – Debian 8.xx 64 bit

Configurare e Installare SQLWorkbench per PostgreSQL

SQLWorkbench non necessita di una vera installazione è sufficiente scaricare il pacchetto generico per tutti i S.O e decomprimere lanciare lo script  sqlworkbench.sh.
Il pacchetto è disponibile alla pagina

http://www.sql-workbench.net/downloads.html

Per poter interagine con postgresql serve inoltre lo specifico driver JDBC scaricabile all’indirizzo che andra opportunamente configurato in SQL workbench.

https://jdbc.postgresql.org/download.html

Operando con il terminale

scegliamo la directory opt per l’applicazione quindi

su 
mkdir /opt/sqlworkbench
cd /opt/sqlworkbench

scarichiamo il pacchetto con l’ultima versione stable di SQLWorkBench 123 e l’ultima versione  del driver JDBC 42.2.1

wget http://www.sql-workbench.net/Workbench-Build123.zip

wget https://jdbc.postgresql.org/download/postgresql-42.2.1.jar

 

Decomprimiamo il pacchetto con

unzip Workbench-Build123.zip

Rendiamo eseguibile per tutti gli users lo script di avvio workbench.sh

chmod a+x workbench.sh 

exit

Volendo si può creare un link simbolico nel desktop con

ln -s /opt/sqlworkbench/sqlworkbench.sh sqlworkbench

avviamo

La finestra in primo piano che viene presentata e quella per creare un profilo di connessione.

Per connettersi a postgresql è necessario a questo punto configurare il driver.

  • Click sul pulsante Manage Drivers
  • In primo piano ci sarà  una nuova finestra Manage drivers

  • Selezionare postgreSQL dall’ elenco di destra con i DBMS supportati
  • Click sul pulsante cartella in alto a sinistra e selezionare il file driver JDBC per postgres scaricato che apparirà nella Library e premere OK.
  • a questo  punto è possibile completare la il profilo di connessione

Si dovrà inserire:

  • nome per la connessione
  • nell URL:  host porta e database
  • username e password

SQLworkbench in azione grazie alla funzione  WbGrepData
viene ricercata la presenza della stringa Zeus in qualsiasi campo (field) di tutte le tabelle del database. 7 le tabelle riscontrate.

Database Compatibili con SQLworkbench

 

 

Risorse:

 

Systemd come controllare che un servizio sia in esecuzione in linux

Oramai praticamente tutte le nuove release delle distribuzioni Linux hanno abbandonando il denome init ( SystemV init o SysV init  ) per passare al demone systemd come controllore dei servizi e del sistema.

Uno dei principali vantaggi di systemd è la capacità di avviare i processi in parallelo (aggressive parallelization capabilities). Con init infatti i processi vengono avviati in modo seriale e un task può essere avviato solo quando il precedente si è concluso correttamente.  Come per avviene per init systemd è il primo processo che sia avvia ed è il padre di tutti i processi nati dopo successivamente, tipicamente ha assegnato pid=1.

A differenza di SysV init,  systemd init è responsabile del mount point, della crittografia, di syslog, etc  superando così le funzionalità di un init system di base. La gran parte delle azioni di systemd si svolge agendo su risorse denominate  “units”. Le units sono definite da files noti come unit files. Il tipo di unit files è in genere riconoscibile a partire dall’estensione del file. Conseguentemente lo unit file di un servizio avrà l’estensione .service: il servizio di dbase postgresql  avrà come target uno unit files del tipo postgresql.service.

Il comando utilizzato per controllare systemd è systemctl.

Conseguentemente la situazione abbastanza frequente di verificare che un servizio o demone  (service o daemon)  sia in esecuzione ad esempio: apache ,mysqld, postrgresql, samba, ssh, nfs, rsync, cron, syslogd, etc. in un sistema Linux con systemd init sarà diversa da quella con SysV init.

Controllare che un servizio sia attivo: comparazione tra SysV init e systemd init

SysV init

per controllare che il servizio postgresql sia in esecuzione con SysV init utilizziamo il comando

service nome-del-servizio status
per postgresql
service postgresql status

ubuntu  12

$ service postgresql status
9.1/main (port 5432): online

per dettagli sul controllo dello stato di un servizio in SysV init fare riferimento al post:

Come controllare che un servizio (service) sia in esecuzione in linux  

Systemd init

per controllare che un servizio con systemd  sia in esecuzione è necessario conoscere lo unit file di riferimento e utilizzare il comando systemctl

systemctl status nome-unit-file.estensione
per postgresql 
systemctl status postgresql@9.6-main.service

debian 9

# systemctl status postgresql@9.6-main.service
 postgresql@9.6-main.service - PostgreSQL Cluster 9.6-main
   Loaded: loaded (/lib/systemd/system/postgresql@.service; disabled; vendor preset: enabled)
   Active: active (running) since Sat 2018-04-28 16:23:29 CEST; 4min 36s ago
  Process: 19786 ExecStop=/usr/bin/pg_ctlcluster --skip-systemctl-redirect -m fast 9.6-main stop (code=exited, status=0/SUCCESS)
  Process: 19792 ExecStart=postgresql@9.6-main --skip-systemctl-redirect 9.6-main start (code=exited, status=0/SUCCESS)
 Main PID: 19799 (postgres)
    Tasks: 6 (limit: 4915)
   CGroup: /system.slice/system-postgresql.slice/postgresql@9.6-main.service
           ├─19799 /usr/lib/postgresql/9.6/bin/postgres -D /var/lib/postgresql/9.6/main -c config_file=/etc/postgresql/9.6/main/postgresql.conf
           ├─19801 postgres: 9.6/main: checkpointer process   
           ├─19802 postgres: 9.6/main: writer process   
           ├─19803 postgres: 9.6/main: wal writer process   
           ├─19804 postgres: 9.6/main: autovacuum launcher process   
           └─19805 postgres: 9.6/main: stats collector process   

Apr 28 16:23:27 deb9 systemd[1]: Starting PostgreSQL Cluster 9.6-main...
Apr 28 16:23:29 deb9 systemd[1]: Started PostgreSQL Cluster 9.6-main.

come si può osservare l’outup è decisamente più articolato di sysV.

Unit file 

Per visualizzare il contenuto dello unit file responsabile dell’avvio del servizio postgresql si può utilizzare il comando: systemctl cat nome-unit

systemctl cat postgresql@9.6-main.service

# /lib/systemd/system/postgresql@.service
# systemd service template for PostgreSQL clusters. The actual instances will
# be called "postgresql@version-cluster", e.g. "postgresql@9.3-main". The
# variable %i expands to "version-cluster", %I expands to "version/cluster".
# (%I breaks for cluster names containing dashes.)

[Unit]
Description=PostgreSQL Cluster %i
ConditionPathExists=/etc/postgresql/%I/postgresql.conf
PartOf=postgresql.service
ReloadPropagatedFrom=postgresql.service
Before=postgresql.service

[Service]
Type=forking
# @: use "postgresql@%i" as process name
ExecStart=@/usr/bin/pg_ctlcluster postgresql@%i --skip-systemctl-redirect %i start
ExecStop=/usr/bin/pg_ctlcluster --skip-systemctl-redirect -m fast %i stop
ExecReload=/usr/bin/pg_ctlcluster --skip-systemctl-redirect %i reload
PIDFile=/var/run/postgresql/%i.pid
SyslogIdentifier=postgresql@%i
# prevent OOM killer from choosing the postmaster (individual backends will
# reset the score to 0)
OOMScoreAdjust=-900
# restarting automatically will prevent "pg_ctlcluster ... stop" from working,
# so we disable it here. Also, the postmaster will restart by itself on most
# problems anyway, so it is questionable if one wants to enable external
# automatic restarts.
#Restart=on-failure
# (This should make pg_ctlcluster stop work, but doesn't:)
#RestartPreventExitStatus=SIGINT SIGTERM

[Install]
WantedBy=multi-user.target

Visualizzare le dipendenze di una unit

In systemd init è possibile visualizzare anche tutte le dipendenze di un servizio quale postgresql con il comando systemctl list-dependecies postgresql@96-main.service.

systemctl cat systemctl list-dependencies  postgresql@9.6-main.service
postgresql@9.6-main.service
 ├─system-postgresql.slice
 └─sysinit.target
●   ├─apparmor.service
   ├─dev-hugepages.mount
   ├─dev-mqueue.mount
●   ├─keyboard-setup.service
   ├─kmod-static-nodes.service
   ├─lvm2-lvmetad.socket
   ├─lvm2-lvmpolld.socket
   ├─lvm2-monitor.service
   ├─proc-sys-fs-binfmt_misc.automount
   ├─sys-fs-fuse-connections.mount
●   ├─sys-kernel-config.mount
   ├─sys-kernel-debug.mount
   ├─systemd-ask-password-console.path
●   ├─systemd-binfmt.service
●   ├─systemd-hwdb-update.service
   ├─systemd-journal-flush.service
   ├─systemd-journald.service
●   ├─systemd-machine-id-commit.service
   ├─systemd-modules-load.service
   ├─systemd-random-seed.service
   ├─systemd-sysctl.service
   ├─systemd-timesyncd.service
   ├─systemd-tmpfiles-setup-dev.service
   ├─systemd-tmpfiles-setup.service
   ├─systemd-udev-trigger.service
   ├─systemd-udevd.service
   ├─systemd-update-utmp.service
   ├─cryptsetup.target
   ├─local-fs.target
   │ ├─-.mount
   │ ├─media-ArchivioR.mount
   │ ├─media-Home_Dati.mount
●   │ ├─systemd-fsck-root.service
   │ └─systemd-remount-fs.service
   └─swap.target
     └─dev-sda15.swap

Verificare lo stato di tutti i servizi in systemd init – linux

SysV init

Per verificare lo stato di tutti i servizi presenti un sistema sysV init basta usare l’opzione –status-all

$ service --status-all

In pratica –status-all consente di vedere  i servizi installati.

systemd 

Come già affermato systemd gestisce un numero più elevato di funzionalità rispetto a sysV quindi la visualizzazione di tutte le unit diventa una schermata piuttosto estesa.

In questo caso conviene filtrare le units chiedendo di visualizzare sono le unit di tipo servizio. Per visualizzare tutte le units che systemd può gestire si usa il comando

# systemctl list-units

per restringere il campo a quelle di tipo service aggiungere l’opzione –type=service 

# systemctl list-units --type=service
systemctl list-units --type=service
  UNIT                                                                                      LOAD   ACTIVE SUB     DESCRIPTION                                                                  
  alsa-restore.service                                                                      loaded active exited  Save/Restore Sound Card State                                                
  avahi-daemon.service                                                                      loaded active running Avahi mDNS/DNS-SD Stack                                                      
  binfmt-support.service                                                                    loaded active exited  Enable support for additional executable binary formats                      
  colord.service                                                                            loaded active running Manage, Install and Generate Color Profiles                                  
  console-setup.service                                                                     loaded active exited  Set console font and keymap                                                  
  cron.service                                                                              loaded active running Regular background program processing daemon                                 
  cups-browsed.service                                                                      loaded active running Make remote CUPS printers available locally                                  
  cups.service                                                                              loaded active running CUPS Scheduler                                                               
  dbus.service                                                                              loaded active running D-Bus System Message Bus                                                     
  ebtables.service                                                                          loaded 
...                                                               loaded active exited  Set the console keyboard layout                                              
  kmod-static-nodes.service                                                                 loaded active exited  Create list of required static device nodes for the current kernel           
  libvirt-guests.service                                                                    loaded active exited  Suspend/Resume Running libvirt Guests                                        
  libvirtd.service                                                                          loaded active running Virtualization daemon                                                        
  lightdm.service                                                                           loaded active running Light Display Manager                                                        
...                                                                     loaded active exited  Raise                                                            
● nginx.service                                                                             loaded failed failed  A high performance web server and a reverse proxy server                     
  polkit.service                                                                            loaded active running Authorization Manager                                                        
  postgresql.service                                                                        loaded active exited  PostgreSQL RDBMS                                                             
  postgresql@9.6-main.service                                                               loaded active running PostgreSQL Cluster 9.6-main                                                  
  rpcbind.service
.....
LOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.

runlevel e System state

SysV init runlevel

In SysV init il modo più semplice per visualizzare i servizi attivi in un dato runlevel è digitare un comando del tipo:

sudo ls -l /etc/rc(num-run-level).d/

systemd init System state ( runlevel )

In systemd il concetto di runlevel è sostituito dal concetto di System State o punto di sincronizzazione.  Per definire un determinato System State vengono utilizzati degli unit file particolari con estensione .target.  Uno unit.target garantirà di avere disponibile tutti gli units che definiscono uno specifico System State senza doversi preoccupare dei singoli elementi. Se si utilizza lo unit sound.target questo starà ad indicare che servizi per l’audio sono pronti all’audio.

In systemd i System State sono più numerosi dei runlevel quelli comparabili con i runlevel possono essere elencati con il comando:

systemctl list-units --type=target
systemctl list-units --type=target
UNIT                       LOAD   ACTIVE SUB    DESCRIPTION              
basic.target               loaded active active Basic System             
cryptsetup.target          loaded active active Encrypted Volumes        
getty.target               loaded active active Login Prompts            
graphical.target           loaded active active Graphical Interface      
local-fs-pre.target        loaded active active Local File Systems (Pre) 
local-fs.target            loaded active active Local File Systems       
multi-user.target          loaded active active Multi-User System        
network-online.target      loaded active active Network is Online        
network-pre.target         loaded active active Network (Pre)            
network.target             loaded active active Network                  
paths.target               loaded active active Paths                    
remote-fs-pre.target       loaded active active Remote File Systems (Pre)
remote-fs.target           loaded active active Remote File Systems      
rpcbind.target             loaded active active RPC Port Mapper          
slices.target              loaded active active Slices                   
sockets.target             loaded active active Sockets                  
sound.target               loaded active active Sound Card               
swap.target                loaded active active Swap                     
sysinit.target             loaded active active System Initialization    
time-sync.target           loaded active active System Time Synchronized 
timers.target              loaded active active Timers                   
virt-guest-shutdown.target loaded active active Libvirt guests shutdown  

LOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.

22 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.

Benchè il concetto di System State conseguito con gli unit.target sia decisamente più flessibile del concetto di runlevel è possibile evidenziare alcuni target che sono in relazione proprio i principali runlevel di SysV. A questo proposito si può precisare  sono diponibili anche unit  dal nome evocativo: 

systemctl list-units-files --type=target
UNIT FILE                  STATE              
...
runlevel0.target           disabled
runlevel1.target           disabled
runlevel2.target           static  
runlevel3.target           static  
runlevel4.target           static  
runlevel5.target           static  
runlevel6.target           disabled            
...
59 unit files listed.

Comparazione tra runlevel e target ( System state) :

  • Run level 3 è emulato dal target multi-user.target;
  • Run level 5 è emulato da target graphycal.target;
  • runlevel3.target  è un link simbolico a multi-user.target;
  • runlevel5.target è un link simbolico a graphycal.target.

Comparazione tra alcuni comandi SysV init (service)  e systemd init (systemctl)

systemctl start sshd.service service sshd start start
systemctl status sshd.service service sshd status status
systemctl stop sshd.service service sshd stop stop
systemctl reload sshd.service service sshd reload reload
ls /lib/systemd/system/*.service /etc/systemd/system/*.service ls /etc/rc.d/init.d/ lista tutti i servizi avviabili
systemctl enabled sshd.service service sshd enabled attivare un servizio al prossimo boot

Avviare e abilitare un servizio al prossimo boot

Per avviare un servizio come il webserver apache2 e come abilitarlo al riavvio al successvio boot

systemctl start apache2 

systemctl enable apache2

Risorse:

systemdctl State: degraded – una unit ha fallito l’avvio

Se controllando lo status del demone systemd con

systedctl status

compare  State: degraded

systemctl status State degraded

maurizio@deb9:~$ systemctl status
● deb9
    State: degraded
     Jobs: 0 queued
   Failed: 1 units
    Since: Sun 2017-08-04 14:01:22 CET; 6h ago
   CGroup: /
           ├─user.slice
           │ └─user-1000.slice
           │   ├─ session-2.scope

questo sta a significare che una delle units ha fallito l’avvio.

Per controllare quale unit è coinvolta utilizzare il comando

systemctl –failed

maurizio@deb9:~$ systemctl --failed
  UNIT               LOAD   ACTIVE SUB    DESCRIPTION                                                                              
● networking.service loaded failed failed Raise network interfaces                                                                 

LOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.

1 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.

controlliamo lo unit con systemctl status networking.service

maurizio@deb9:~$ systemctl status networking.service 
root@deb9:/etc/network/interfaces.d# systemctl status networking.service
 networking.service - Raise network interfaces
   Loaded: loaded (/lib/systemd/system/networking.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Sun 2018-02-04 20:36:48 CET; 31s ago
     Docs: man:interfaces(5)
  Process: 17836 ExecStop=/sbin/ifdown -a --read-environment --exclude=lo (code=exited, status=0/SUCCESS)
  Process: 17863 ExecStart=/sbin/ifup -a --read-environment (code=exited, status=1/FAILURE)
  Process: 17857 ExecStartPre=/bin/sh -c [ "$CONFIGURE_INTERFACES" != "no" ] && [ -n "$(ifquery --read-environment --list --exclude
 Main PID: 17863 (code=exited, status=1/FAILURE)

Aug 04 20:36:47 deb9 ifup[17863]: than a configuration issue please read the section on submitting
Aug 04 20:36:47 deb9 ifup[17863]: bugs on either our web page at www.isc.org or in the README file
Aug 04 20:36:47 deb9 ifup[17863]: before submitting a bug.  These pages explain the proper
Aug 04 20:36:47 deb9 ifup[17863]: process and the information we find helpful for debugging..
Aug  04 20:36:47 deb9 ifup[17863]: exiting.
Aug 04 20:36:47 deb9 ifup[17863]: ifup: failed to bring up eth0
Aug 04 20:36:48 deb9 systemd[1]: networking.service: Main process exited, code=exited, status=1/FAILURE
Aug 04 20:36:48 deb9 systemd[1]: Failed to start Raise network interfaces.
Aug 04 20:36:48 deb9 systemd[1]: networking.service: Unit entered failed state.
Aug 04 20:36:48 deb9 systemd[1]: networking.service: Failed with result 'exit-code'.


In questo caso ricontrollare e sistemare le impostazioni riguardanti i servizi di rete.

 

Risorse:

 

Networking creare un bridge su debian 9 per KVM

La creazione di un bridge di rete serve per soddisfare più esigenze. Dal punto di vista terminologico un bridge di rete è un elemento hardware o software che connette due o più reti in modo che possano comunicare tra di loro.

  • E’ possibile ad esempio create un bridge tra due schede di rete  e filtrare il traffico con un firewall.
  • Poichè un bridge è in grado di gestire più connessioni viene usata nella virtualizzione KVM per consentire alle macchine virtuali di comunicare con altri computer. La configurazione di default infatti consente la navigazione internet ma non permette la comunicazione con altri computer.

Bridge su singola scheda

Per creare il il bridge è necessaria la presenza del pacchetto bridge-utils

apt install bridge-utils

Il file di configurazione è il solito

/etc/network/interfaces

Di seguito il file di configurazione di un doppio bridge su un pc con due schede di rete standard: Realtek e Intel .

Network:   Card-1: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller driver: r8169
           IF: enp7s0 state: up speed: 1000 Mbps duplex: full mac: 00:e0:e4:69:01:43
           Card-2: Intel 82572EI Gigabit Ethernet Controller (Copper) driver: e1000e
           IF: enp8s0 state: up speed: 1000 Mbps duplex: full mac: 00:11:11:b1:16:b6

Il nome delle schede di rete enp7s0 è basato sul Predictable Network Interface Names utilizzato a partire dalla v197 di systemd.

dmesg | grep enp
[ 1.180950] r8169 0000:07:00.0 enp7s0: renamed from eth0
[ 1.326320] e1000e 0000:08:00.0 enp8s0: renamed from eth0

abilitare l’autoconfigurazione della schede e dei bridge con auto :
auto enp7s0
auto br0

manual per assicurarsi che ottengano indirizzi sul dispositivo se non quelli manuali indicati

iface enp7s0 inet manual

Le impostazioni riportate di seguito riguardano la configurazione di due bridge statici sulle due schede presenti.
I settaggi tengono conto anche di di ipv6

:~$ cat /etc/network/interfaces 
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# Network interfaces
allow-hotplug enp7s0
allow-hotplug enp8s0

# abitilità la configurazione automatica  
auto enp7s0 

iface enp7s0 inet manual
iface enp7s0 inet6 manual

# set up bridge0 and give it a static ip
auto br0
iface br0 inet static
 address 192.168.1.121
 netmask 255.255.255.0
 network 192.168.1.0
 broadcast 192.168.1.255
 gateway 192.168.1.1
 bridge_ports enp7s0 #eth0
 bridge_stp off
 bridge_fd 0
 bridge_maxwait 0
 dns-nameservers 8.8.8.8

#allow autoconf for ipv6
iface br0 inet6 auto
       accept_ra 1

...
...

in caso di modifiche per riavviare il bridge

systemctl  start mode-bridge

File di configurazione in debian con il settaggio del bridge di tipo static su enp8s0

cat /etc/network/interfaces

:~$ cat /etc/network/interfaces 
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

....
....
auto enp8s0
...
iface enp8s0 inet manual
iface enp8s0 inet6 manual
...
# enp8s0 network interface 
# set up bridge and give it a static ip
auto br1
iface br1 inet static
 address 192.168.2.141
 netmask 255.255.255.0
 network 192.168.2.0
 broadcast 192.168.2.255
 gateway 192.168.2.1
 bridge_ports enp8s0 #eth1
 bridge_stp off
 bridge_fd 0
 bridge_maxwait 0
 dns-nameservers 8.8.8.8

#allow autoconf for ipv6
iface br1 inet6 auto
        accept_ra 1

 

Riavvio Bridge

per riavviare un bridge in genere si ricorre a mode-bridge
il comando varia a seconda che sia attivo il gestore di sistema e di servizi systemd o SysV

Debian/Centos/linux
- systemd
systemctl stop mode-bridge  
e
systemctl start mode-bridge 
- System V init (initscript) 
/etc/init.d/mode-bridge stop     
e 
/etc/init.d/mode-bridge start

 

Configurazione Bridge  su Pc desktop

La gestione della connessioni di rete in un pc desktop debian attualmente è demandata a NetworkManager.

In generale network-manager gestisce solamente le interfacce di rete che non risultano dichiarate in /etc/network/interfaces

Tuttavia qualora si installi KVM su pc desktop con attivo Network-Manager potrebbe inzialmente risultare comoda o necessaria anche la disabiltazione manuale della scheda di rete da usare per il bridge.

 

Risorse: