Occasioni.

Helen è una ragazza cinese. In realtà quello è un nome d’arte, il nome che durante la scuola per traduttrici lei scelse per presentarsi agli interlocutori occidentali. Conosco il suo nome, l’ho salvato nella mia rubrica ma a distanza di anni continuo ad avere dubbi circa la corretta pronuncia.

La conobbi durante il mio anno cinese. Helen veniva a prendermi in aeroporto a Shanghai. Le prime volte la trovavo agli arrivi con un bel cartello in mano col mio cognome, più avanti ci riconoscevamo senza bisogno di intermediazioni. La mattina la trovavo nella hall del mio albergo, in paziente attesa che arrivassi, per prendere insieme un minivan che ci portava in impianto [1]. Lei era sempre pronta e tranquilla, io apparivo tutto trafelato dalla porta roteante con la faccia ancora con le linee del cuscino.

Nelle giornate lavorative era la mia ombra. Sempre molto discreta e pacata con Helen parlai un po’ di tutto.

Ad un certo punto del progetto Helen si invaghì di me. Si propose di accompagnarmi un weekend ad Hanghzou (cosa che poi sfumò e andai solo) e una domenica mi invitò a pranzare insieme in un locale all’interno di un grande centro commerciale. Io da bravo rincoglionito per questo genere di affari, non mi resi conto di nulla finché una sua collega non mi confessò la cosa qualche mese più avanti.

Mi fece sorridere. Non reputo Helen una bella ragazza, ma so che questo mio giudizio è fortemente influenzato dalle differenze fisionomiche importanti [2]. La reputavo comunque un’ottima traduttrice e una persona dalla pazienza encomiabile.

In questi anni non ci siamo persi di vista. Abbiamo continuato a farci gli auguri per i compleanni o per capodanno (e io per questo ho imparato a far caso a quando cade il Capodanno cinese) e in questo periodo in cui “tutto il mondo è più vicino” abbiamo condiviso informazioni e consigli sulla strategia di sopravvivenza.

Lei mi racconta che nella sua città (Nanjing, un’altra cittadella da otto milioni di abitanti) sono tornati ad una pseudo-normalità. E’ tornata a lavoro ma quasi tutti i luoghi pubblici sono “no mask, no access“: devi avere la mascherina. Al contempo i ristoranti non sono ancora pieni di gente come lo erano un tempo.

Credo che anche l’Europa del dopo-coronavirus vivrà quelle dinamiche: un distanziamento sociale dato sia dalla necessità che dalla paura leggittima delle persone (“come faccio a fidarmi che l’altro non sia infetto?”). Chiederle come vanno le cose di là, mi aiuta a prepararmi mentalmente a quel che vivrò di qua.

Mascherine facciali

So che la mia non è l’unica bella storia di Italia-Cina da raccontare, ma in questi giorni Helen ha deciso di mandarmi un bel pacco di mascherine e questo gesto così carino mi ha ricordato ancor di più come questi momenti di crisi sono un’occasione per rafforzare relazioni e rivedere la lista di ciò che riteniamo indispensabile nelle nostre vite.

Probabilmente all’occidente toccherà un cambio di mentalità in tanti aspetti. In questi giorni leggevo di una proposta tedesca del diritto al lavoro da casa (nuovo paradigma, non più una possibilità, ma un diritto) per tutte quelle professioni che lo permettono ma anche di nuove dinamiche di contatto sociale. Penso ai giapponesi che quando hanno un’influenza, stanno a casa perché è culturalmente deplorevole farsi vedere in giro come untori.

Siamo abituati all’idea che la mascherina sia qualcosa che usano solo gli orientali, ma quest’idea in fin dei conti è solo un retaggio culturale e nient’altro. Riusciremo ad abituarci all’idea che usarla durante il prossimo raffreddore stagionale possa essere un segno di rispetto verso tutti? Quale sarebbe il risparmio per la società in termini di carico sul servizio sanitario e disponibilità di forza lavoro?

Non so come sarà il mondo tra dodici mesi, ma so che abbiamo una bella occasione, nonostante tutto il dolore o forse grazie a tutto il dolore.

Emanuele

[1] Io dormivo in un lussuoso albergo per occidentali, per intenderci c’era persino un’addetta che “viveva” in ascensore e puliva continuamente pulsantiera e corrimano dorato dentro lo stesso. Le traduttrici invece soggiornavano in un albergo “per cinesi” lì vicino.

[2] Ad essere onesto, spesso faticavo nell’assegnare un’età alle persone: tante mi sembravano più giovani di quel che erano. Non so se dipendesse dalla frequentissima assenza di barba negli uomini o altro.

La primavera e i suoi contrasti.

Siamo ad Aprile e il giardino è un’esplosione di colori. Siamo tornati all’aperto, a pranzare sotto il cielo azzurro tra il ronzio di api e uccellini, a grigliare, a giocare con l’altalena e sdraiarci sull’amaca.

Il ciliegio in questo momento è un’immensa palla bianca mentre i tulipani col loro lungo stelo regalano eleganza al punto che – il mio Io più vecchio – continua ad esserne stupito e riempie di foto tutto quanto.

Siamo fortunati. So bene che questa quarantena non sia così per tutti. Per chi non ha una stabilità economica, uno spazio all’aperto o una miriade di altri fattori, questo periodo è tutt’altro che roseo.

Al contempo, penso sarebbe assurdo non osservare la bellezza intorno a noi. Sarebbe un po’ come non fermarsi più a leggere un bel libro perché da qualche parte qualcuno scappa per la guerra. Non leggere, non elimina la guerra. Allo stesso modo dunque godo di questa fortuna ma non dimentico.

Ho iniziato ad insegnare a Giorgia che non tutti hanno la fortuna di avere qualcosa da mangiare ogni giorno, ho iniziato a spiegarle che l’acqua è preziosa e va risparmiata. Sembra capisca (in questo periodo memorizza tutto).

Ho la convinzione che chi ha il privilegio di poter osservare o vivere qualcosa di bello, debba farlo.

Incupirci tutti non serve e analogamente non serve a nulla aggiornarsi continuamente sull’evoluzione di questa situazione. Personalmente evito sistematicamente i titoli acchiappaclick che provano a farci sprofondare in ansie/commiserazioni/storie tristi e il fatto che la mia informazione non passi dalla TV fa sì che non subisca passivamente questo bombardamento. Per la stessa ragione ho disattivato la sezione “Apple News” sul mio iPhone. Facevo questa selezione ancor prima di questa epidemia così ormai son molto allenato. Anche se non è evidentissimo (come può esserlo un frigo vuoto per l’appunto), le nostre energie sono finite. Tutto è finito. Ogni giorno abbiamo la possibilità di destinare la nostra quota di energie ad un numero finito di emozioni.

Guardo Giorgia, guardo Elena (coi suoi primi piccolissimi sorrisi) e la bellezza di sua mamma che la allatta, guardo i fiori, il cielo, le api che vanno a posarsi tra petali e pistilli.

Sono mesi amari e credo che, quando possibile, concentrarsi sul bello sia un dovere oltre che un’occasione.

Emanuele

Ve lo racconterò.

Elena, oggi compi un mese e tua sorella ti canta le canzoncine quando tu fai i tuoi versetti. Ogni tanto mi dice che sei una sorella buona. Io sorrido.

Sei nata in un momento stranissimo della storia di questo pianeta. I tuoi zii, i tuoi cugini, i tuoi nonni, ti hanno vista solamente in videochiamate che li privano del magnifico odore che fai. Siamo tutti interconnessi e iper-distanti.

Siamo presi mentalmente da altro, anche se io all’altro cerco di pensare il meno possibile. Credo che l’ultima volta che abbiamo acceso la TV fosse Dicembre (ma non mi lamento di pagare il canone, tranquilli) e non abbiamo intenzione di farlo ora. Ci teniamo informati e ho la netta convinzione che l’informazione via internet sia decisamente più precisa, specialmente in questo periodo in cui i tuttologi sbocciano a primavera. Bisogna saper selezionare le fonti ovviamente.

Lavoro tanto, paradossalmente questo smart working mi ha privato di un limite: il momento in cui esci dall’ufficio e dimentichi progetti e impegni. Per il resto ero già abituato a lavorare in mobilità, così a parte il mega-monitor dell’ufficio non mi manca nulla.

Il lavoro in questi giorni è molto più fluido, per certi versi più bello. Le pause sono diverse: tè coi biscotti, passeggiata in giardino per respirare un po’ d’aria e due tiri con la palla con Giorgia. Vuoi mettere rispetto ad un caffè bruciato davanti ad una macchinetta?

Casa-lavoro-famiglia è un tutt’uno che si mescola continuamente. Mi è capitato di interrompere una conference call con alcuni colleghi perché «scusate, si è svegliata mia figlia». Giorgia ama i risvegli lenti, gli abbracci in poltrona nella sua stanza e a me sembra un privilegio poterle concedere quella coccola.

E’ uno stato di grazia e uno stato d’ansia, tutto insieme. Abbiamo cibo per i prossimi mesi e viaggiare non mi manca (faccio un lavoro in cui i viaggi non mancano e ho spesso il terrore di una vita in cui la routine non viene più spezzata da trasferte). L’orso che è in me però si sta godendo questo momento nonostante là fuori il mondo vada a rotoli.

A proposito, Giorgia ha capito che là fuori tante persone hanno la febbre e per questo non andiamo al parco giochi o a mangiare un gelato (Giorgia ama il gelato al lampone). Un po’ invidio la vostra età e un po’ capisco perché da piccoli ci veniva detto di non aver fretta di crescere: il mondo è più semplice e le cose brutte si affrontano solo quando arrivano.

Grazie, ad entrambe.

Emanuele

A porte chiuse.

Avevo già vissuto un compleanno in solitaria. Era il giorno dei miei trent’anni ed ero in Cina per lavoro. Festeggiai facendo un giro di Hangzhou, una tranquillissima città costruita intorno ad un lago. Fu una bella giornata nonostante a farmi compagnia – un po’ per via del fuso orario e un po’ per via delle difficoltà di connessione – ci fossero solo due auricolari e qualche playlist scaricata localmente sul cellulare.

Sette anni dopo, un compleanno stranissimo in famiglia, circondato dalle mie donne e dal loro affetto ma senza grandi schiamazzi, senza amici, senza bottiglie da stappare.

Elena è arrivata al mondo in un momento che finirà nei libri di storia. Ho la sensazione che questa crisi umanitaria sia solo l’alba di una rivoluzione sociale non indifferente che – se mi permettete un desiderio soffiando due candeline – mi auguro possa diventare quanto prima una pagina da leggere per non dimenticare.

We are the champions, my friends
And we’ll keep on fighting, till the end.

Emanuele

Stella stellina.

Da alcune settimane Giorgia ama ascoltare e cantare questa canzoncina. Io mi sto abituando all’idea di dover imparare – inevitabilmente – canzoni che ormai facevano parte di un capitolo distante del mio percorso.

Alle 9 e 05 del 27 Febbraio una nuova stellina si è aggiunta per davvero alla nostra famiglia e così questa canzone mi è tornata immediatamente alla mente.

In un periodo in cui il mondo sembra confuso e incupito, questa vita nuova è musica e luce nelle nostre giornate.

Benvenuta Elena e grazie.

Emanuele

Come Amazon sa così tanto di te

«Tutti abbiamo bisogno di spazi privati dove non siamo osservati» dice il venture capitalist Roger McNamee, che conobbe Bezos a metà degli anni 90 durante una vendita del leader di Amazon ad un fondo della Silicon Valley.

«Un posto in cui possiamo essere noi stessi nel modo più sincero senza paura di essere visti o spiati».

«E‘ nella strategia di business di Amazon con Alexa, ma anche con i videocitofoni Ring, trasformare questi santuari e convertirli in spazi pubblici».

La gente pensa: “Hey, rinuncio ad un po’ di dati personali per un servizio che mi piace davvero”.

«C’è stato un tempo in cui questo è stato vero. Ma cosa sta accadendo adesso è molto più invasivo e manipolativo».

Estratto da un bel report della BBC inglese «Why Amazon knows so much about you» che racconta come Amazon si è trasformata dall’essere un negozio di libri ad avere informazioni sulle nostre vite.

Emanuele

Amazon registra ogni digitazione.

Amazon appears to be tracking every tap on Kindle. I just got my data back and there are 90K rows of this pic.twitter.com/wVCSXCTVwv

Adrianne Jeffries (@adrjeffries) January 28, 2020

Le domande che mi pongo sono:

È necessario registrare questi dati? Qualora fossero utili al funzionamento dell’applicazione, non è possibile mantenere queste registrazioni sul dispositivo invece di conservarle online? Se invece fossero usate per tenere sincronizzati più device, è realmente necessario conservarle a lungo termine piuttosto che eliminarle dopo che la sincronizzazione è avvenuta?

Amazon certamente fa analisi del tempo di lettura, dell’interesse verso determinate pagine (e determinate frasi/keyword), del tempo speso sul Kindle per cercare informazioni e così via.

Perché ogni dispositivo elettronico che prendiamo in mano, ormai, deve analizzare il nostro comportamento?

Sono videocamere piazzate su di noi.

La tecnologia può fare a meno di questo continuo tracking, è esclusivamente l’ingordigia del capitalismo a richiedere lo sviluppo di questi sistemi. Certi servizi possono essere offerti senza trasformarci in prodotti ma queste grandi aziende cercano continuamente di convincerci che la raccolta dati sia necessaria e inevitabile.

La sicurezza e la privacy non dovrebbero essere un privilegio disponibile solo ad una élite tecnicamente preparata.

Emanuele

Installare Nextcloud con nginx, PHP7.4 e MySQL8.

Amo avere il controllo dei miei strumenti e anche il mio cloud non fa eccezione. Il plugin fornito da FreeNAS (provatelo, non tornerete mai più indietro) era perfetto ma limitante.

Ecco dunque come installare manualmente Nextcloud su PHP7.4 e MySQL8.

1. Su FreeNAS creiamo una jail con iocage e una volta entrati aggiorniamo i suoi repository

pkg update && pkg upgrade

Installiamo i pacchetti necessari al funzionamento di nextcloud

pkg install php74-mysqli-7.4.0 php74-ctype-7.4.0 php74-curl-7.4.0 php74-dom-7.4.0 php74-gd-7.4.0 php74-iconv-7.4.0 php74-json-7.4.0 php74-iconv-7.4.0 php74-mbstring-7.4.0 php74-openssl-7.4.0 php74-posix-7.4.0 php74-session-7.4.0 php74-simplexml-7.4.0 php74-xmlreader-7.4.0 php74-xmlwriter-7.4.0 php74-zip-7.4.0 php74-zlib-7.4.0 php74-pdo_mysql-7.4.0 php74-fileinfo-7.4.0 php74-bz2-7.4.0 php74-intl-7.4.0 php74-imap-7.4.0 php74-pecl-imagick-im7-3.4.4 php74-xml-7.4.0 php74-filter-7.4.0 php74-readline-7.4.0 php74-pdo-7.4.0 php74-pecl-APCu

Installiamo MySQL8

pkg install mysql80-server-8.0.17

Installiamo il webserver (e qualche utility)

pkg install nginx nano sudo

Mettiamo tutto in auto-start nella jail

sysrc -f /etc/rc.conf nginx_enable="YES"
sysrc -f /etc/rc.conf mysql_enable="YES"
sysrc -f /etc/rc.conf php_fpm_enable="YES"

2. Configuriamo i local PATH per PHP modificando il file www.conf

nano /usr/local/etc/php-fpm.d/www.conf

Rimuoviamo il commento a

env[PATH] = /usr/local/bin:/usr/bin:/bin

3. Avviamo il server SQL e avviamo la procedura di messa in sicurezza di base

service mysql-server start
mysql_secure_installation

Qui verrà richiesto il livello di sicurezza e la password per l’utente root e una serie di domande alle quali potrete rispondere sempre YES 😉

Creiamo un utente nel db di nextcloud modificando prima la modalità di autenticazione (MySQL8 introduce una nuova modalità non ancora supportata da nextcloud)

nano /usr/local/etc/mysql/my.cnf
default_authentication_plugin=mysql_native_password (da inserire dentro sezione mysqld)

Effettuiamo il login sul server MySQL con l’utente di root creato al punto 7

mysql -u root -p
Password:
create database nextcloud; 
create user 'dbadmin'@'localhost' identified by '<password-per-utente-dbadmin>';
grant all privileges on nextcloud.* to 'dbadmin'@'localhost';
flush privileges;
quit;

4. Richiediamo un nuovo certificato per far girare il web server su HTTPS:

mkdir /usr/local/etc/ssl/openssl
cd /usr/local/etc/ssl/openssl
openssl req -new > cert.csr

Completata la procedura effettuiamo qualche rename

openssl rsa -in privkey.pem -out key.pem
openssl x509 -in cert.csr -out cert.pem -req -signkey key.pem -days 1825
cat key.pem>>cert.pem
openssl dhparam 2048 -out dhparam.pem

Modifichiamo nginx.conf in modo da utilizzare https

touch /usr/local/etc/nextcloud_ssl.conf
nano /usr/local/etc/nginx/nextcloud_ssl.conf

E inseriamo la configurazione del server in SSL:

server {
   listen 443 ssl http2;
   server_name nextcloud.local;
   ssl_certificate /usr/local/etc/ssl/openssl/cert.pem;
   ssl_certificate_key /usr/local/etc/ssl/openssl/key.pem;
   ssl_prefer_server_ciphers on;
   ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DHE+AES128:!ADH:!AECDH:!MD5;
   ssl_dhparam /usr/local/etc/ssl/openssl/dhparam.pem;
   add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
   #ssl_ciphers         HIGH:!aNULL:!MD5;
 # Path to the root of your installation
   root /usr/local/www/nextcloud/;
 # set max upload size
   client_max_body_size 10G;
   fastcgi_buffers 64 4K;
 # Disable gzip to avoid the removal of the ETag header
   gzip off;
 rewrite ^/caldav(.)$ /remote.php/caldav$1 redirect;   rewrite ^/carddav(.)$ /remote.php/carddav$1 redirect;
   rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;
 index index.php;
   error_page 403 /core/templates/403.php;
   error_page 404 /core/templates/404.php;
 location = /robots.txt {
 allow all;
 log_not_found off;
 access_log off;
 }
 location ~ ^/(?:.htaccess|data|config|db_structure.xml|README){
 deny all;
 }
 location / {
 The following 2 rules are only needed with webfinger
 rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
 rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
 rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
 rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;
 rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;
 try_files $uri $uri/ =404;
 }
 location ~ .php(?:$|/) {
 fastcgi_split_path_info ^(.+.php)(/.+)$;
 include fastcgi_params;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 fastcgi_param PATH_INFO $fastcgi_path_info;
 fastcgi_pass unix:/var/run/nextcloud-php-fpm.sock;
 fastcgi_pass 127.0.0.1:9000;
 fastcgi_intercept_errors on;
 }
 Adding the cache control header for js and css files
 Make sure it is BELOW the location ~ .php(?:$|/) { block
 location ~* .(?:css|js)$ {
 add_header Cache-Control "public, max-age=7200";
 Add headers to serve security related headers
 add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
 add_header X-Content-Type-Options nosniff;
 add_header X-Frame-Options "SAMEORIGIN";
 add_header X-XSS-Protection "1; mode=block";
 add_header X-Robots-Tag none;
 Optional: Don't log access to assets
 access_log off;
 }
 Optional: Don't log access to other assets
 location ~* .(?:jpg|jpeg|gif|bmp|ico|png|swf)$ {
 access_log off;
 }
 }

Ricordiamoci di fare un include di nextcloud_ssl.conf dentro nginx.conf

nano /usr/local/etc/nginx/nginx.conf
include /usr/local/etc/nginx/nextcloud_ssl.conf; (da scrivere in fondo dentro al file)

5. Configuriamo la cache PHP

cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini
# Modify opcache settings in php.ini according to Nextcloud documentation (remove comment and set recommended value)
# https://docs.nextcloud.com/server/15/admin_manual/configuration_server/server_tuning.html#enable-php-opcache
sed -i '' 's/.opcache.enable_cli=./opcache.enable_cli=1/' /usr/local/etc/php.ini
sed -i '' 's/.opcache.opcache.file_cache=./opcache.opcache.file_cache=\/tmp\/.opcache\//' /usr/local/etc/php.ini
sed -i '' 's/.opcache.interned_strings_buffer=./opcache.interned_strings_buffer=8/' /usr/local/etc/php.ini
sed -i '' 's/.opcache.max_accelerated_files=./opcache.max_accelerated_files=10000/' /usr/local/etc/php.ini
sed -i '' 's/.opcache.memory_consumption=./opcache.memory_consumption=128/' /usr/local/etc/php.ini
sed -i '' 's/.opcache.save_comments=./opcache.save_comments=1/' /usr/local/etc/php.ini
sed -i '' 's/.opcache.revalidate_freq=./opcache.revalidate_freq=1/' /usr/local/etc/php.ini
# recommended value of 512MB for php memory limit (avoid warning when running occ)
sed -i '' 's/.memory_limit./memory_limit=512M/' /usr/local/etc/php.ini

6. Scarichiamo, estraiamo e modifichiamo i permessi per nextcloud

cd
fetch nextcloud-17.0.2.tar.bz2 https://download.nextcloud.com/server/releases/nextcloud-17.0.1.tar.bz2
tar -jxf nextcloud-17.0.2.tar.bz2
cp -rf nextcloud /usr/local/www/nextcloud
chown -R www:www /usr/local/www/nextcloud/

7. Installiamo nextcloud specificando il dataset nel quale registrare i dati del software e la cartella di destinazione dei file degli utenti

sudo -u www php /usr/local/www/nextcloud/occ  maintenance:install --database "mysql" --database-name "nextcloud"  --database-user "dbadmin" --database-pass "<passsword-utente-dbadmin>" --admin-user "NextCloud_Admin" --admin-pass "<password-utente-NextCloud_Admin>" --data-dir "/mnt/nextcloud"

Nel mio caso, il dataset accessibile alla jail da FreeNAS è stato montato dentro /mnt/nextcloud.

8. Modifichiamo il file di configurazione di NextCloud esplicitando l’indirizzo e l’eventuale DNS al quale verrà contattato

nano /usr/local/www/nextcloud/config/config.php
 e modificare l'array in questo modo:
 array (
   0 => 'localhost',
   1 => '192.168.0.100',
   2 => 'nextcloud.local',
 ),

9. Diamo il via ai servizi e, tramite browser, godiamoci il nostro nuovo cloud pronto ad esser riempito.

service nginx start
service php-fpm start

That’s all folks.

Emanuele