Alla ricerca di una sedia da studio.

Questo immenso lockdown mi ha fatto concentrare tantissimo sul comfort a casa. A Settembre abbiam messo la carta da parati e in autunno il falegname ci ha consegnato quanto avevamo ordinato a Febbraio così, finalmente, lo studio ha preso vita.

Un elemento non ancora definito però sono le sedie per le due scrivanie. Le sedie ergonomiche da ufficio, quando si sta seduti tante ore, fanno la differenza e durante l’anno ne ho preso in prestito una proprio da lì ma la necessità di trovare qualcosa di carino e definitivo mi ha spinto in una ricerca che, ad oggi, non ha ancora risposta.

AvoChair by Autonomous

Alcuni mesi fa ho provato ad ordinare due AvoChair da Autonomous che però ho rimandato indietro il giorno dopo esserci state consegnate. Il motivo? Il mesh a dispetto delle immagini è abbastanza plasticoso e la parte anteriore della seduta ha un cuscino orizzontale proprio dove il mesh viene fissato alla struttura della sedia. L’effetto, data la differente risposta alla pressione era di avere un panchetta iniziale e una zona più flessibile sotto il sedere. Fastidiosissime, sono state bocciate subito e rimandate al mittente con FedEx.

ErgoChair 2 by Autonomous

Prima di arrendermi ho voluto provare la ErgoChair 2. Questa volta ne ho ordinato solo una per evitare di dover rendere due pacchi enormi. Ho deciso di provarla qualche settimana ma, alla fine, anche la ErgoChair 2 è tornata al mittente. Le ragioni in questo caso sono varie, la principale è che il supporto lombare è molto sporgente al punto da risultare fastidioso. Si può regolare in altezza ma non in profondità. Oltre questo la sedia non regala grande sensazione di solidità per via del fatto che anche la seduta può scorrere e quando fissata non rimane immobile ma ha sempre qualche gioco o scricchiolio. La qualità percepita era inferiore al prezzo pagato.

In questo momento sono tornato alla mia sedia dell’ufficio ma i suggerimenti sono benvenuti. Ricapitolando, sto cercando due buone sedie, sono disposto a spendere qualcosina dato che, potenzialmente, durano una vita e se hanno un design carino tanto meglio. I commenti sono aperti: su che sedia state quando lavorate da casa?

Emanuele

Questo sito non ti traccia.

«Think outside the box» è un modo di dire nato tra gli anni ’70 e ’80 per spronare la gente ad usare nuovi approcci verso problemi classici. Molti tecnici del web (webmaster si usa ancora?!) sembra abbiano dimenticato la possibilità di utilizzare soluzioni alternative. Dovunque tu possa navigare, la tecnica è sempre simile: JavaScript, CDN e risorse esterne quasi fosse il medico a prescriverle.

Il problema ovviamente non sta nell’utilizzare strumenti altrui (sono d’accordo, non ha senso reinventare la ruota) quanto piuttosto nel dare il fianco a profilazione, dispersione dei dati e blanda gestione della privacy con tutti gli effetti sempre più evidenti che questo comporta.

Il più delle volte però basterebbero piccole attenzioni e un paio di modifiche per incrementare in maniera enorme il livello di privacy fornito da un sito web.

Questo sito non ti traccia e difende i tuoi dati e mi piacerebbe che questa fosse un’occasione per tanti colleghi-blogger per rivedere le proprie scelte.

Nel mondo reale il portiere del palazzo non va dicendo a chiunque se oggi gli sei passato davanti. I siti odierni invece comunicano puntualmente a terzi il nostro passaggio.

Pulsanti di Facebook, share su Twitter, font di Google… sono davvero necessari? Hai la matematica certezza che l’interazione sul tuo sito sia amplificata in maniera netta tramite questi servizi? Oppure non hai mai approfondito l’argomento ma data la pressante offerta hai creduto e ceduto ai proclami di maggiore socialità?

Ogni volta in cui un utente carica quei contenuti attraverso la tua pagina, i gestori di quel servizio aggiungono un tassello al tracking verso l’utente: «è passato da qui, alle ore X, usando il browser Y, collegato con IP 1.2.3.4 e dunque geolocalizzabile in zona K, usando un device Z, pochi minuti fa era sul sito blablabla e solitamente tra un po’ lo vedrò apparire sul sito BBB».

Tutelare la privacy di chi visita il tuo sito è una forma di rispetto in formato digitale.

In queste pagine, non esistono Google Fonts remoti (i font sono offerti localmente), non esistono i pulsanti di condivisione, non esistono contenuti multimediali remoti e di recente ho sostituito il mio feed di Twitter con il feed del mio account Mastodon servito direttamente da questo dominio. In condizioni come queste HTTP/2 e Lazy Loading delle risorse mostrano tutti i loro benefici.

In pratica, quando passi da queste parti nessun servizio esterno sarà informato della tua visita. Puoi saltellare tra le pagine di questo blog senza che nessuna big corporation si ponga qualche domanda. 🤣

Se hai un sito, che aspetti a rivedere le tue scelte?

Riprendiamoci i nostri dati.

Emanuele

Ti aspetto su Mastodon

L’internet odierno, è chiaro a tutti, è un luogo sempre più centralizzato. Pochissime piazze si spartiscono il tempo della maggior parte degli esseri umani.

La centralizzazione è nata da un’esigenza nobilissima: creare un luogo dove tutti fossero interconnessi e rintracciabili. Trent’anni fa era un’idea affascinante. Una piazza immensa.

La storia ci ha mostrato che questa centralizzazione purtroppo è nociva per la società stessa: l’incapacità di limitare comportamenti fuori dalle righe (mi riferisco alle normali regole di educazione civica), la perdita del controllo dei nostri dati personali e lo sfruttamento degli stessi per milioni di altri fini non voluti e non necessari.

Oggi la tecnologia è in grado di offrire risposte alle necessità senza per questo rinunciare ad un controllo migliore, alla gestione dei nostri dati e così via.

C’è chi sostiene che i confini del nostra persona non andrebbero più riconosciuti come legati alla nostra fisicità ma la nostra espressione digitale andrebbe inclusa in quegli stessi confini in quanto semplice estensione delle caratteristiche personali. Si parla di cyborg-rights.

Servizi federati, liberi da questo controllo massiccio, stanno (ri)nascendo come funghi. Uno di questi è Mastodon.

Mastodon - un network di istanze federato

Cos’è un network federato? Un network federato è una rete nella quale non esiste più un proprietario del servizio che permette l’accesso a tutti. Al contrario, esistono tanti provider capaci di offrire la medesima funzionalità senza creare delle comunità chiuse.

Non è una novità. La tua email è un ottimo esempio di network federato: ognuno di noi può registrarsi su un provider ma non perde la possibilità di comunicare con altri indirizzi email registrati su altri provider.

Mastodon è un Twitter federato: tu scegli l’istanza/provider alla quale registrarti (in base alle regole della community, alla fiducia verso gli amministratori, alla lingua principale dell’istanza o a quel che vuoi) ma non perderai mai la possibilità di comunicare con tutti gli altri utenti Mastodon registrati altrove.

Io ho avviato una mia istanza personale (scelta un po’ più estrema, non necessaria per tutti), tu puoi iniziare in maniera più soft registrandoti su una community Mastodon a tua scelta.

Riprendiamoci i nostri dati.

Emanuele

Codice promozionale NeN

Dopo lo spiegone del Post, ho cambiato operatore del gas. NeN è un operatore per luce e gas giovane (startup di A2A) con un target d’utenza tra i 26 ed i 45 anni.

Il conto si gestisce online o da app, non ha costi nascosti ma una tariffa fissa calcolata sullo storico dei tuoi consumi, senza particolari vincoli contrattuali. Tutto è giocato sulla massima trasparenza.

Al momento ho trasferito il contratto del gas e risparmirerò circa il 30%. Il calcolo della tariffa è semplicissima: carichi il PDF dell’ultima bolletta e il loro sistema legge i dati (luogo, consumi degli ultimi 12 mesi) e genera la sua proposta. La mia bolletta del gas per i prossimi 12 mesi sarà di 8,08€.

NeN gioca anche sul passaparola così il codice amico che mi è stato assegnato è:

@passiflora42

Non chiedermi in base a cosa il sistema generi questo codice, comunque il vantaggio è un ulteriore sconto di 36€ spalmato sul canone del primo anno.

Emanuele

Aggiornamento del 16 Novembre 2020: NeN ha confermato la cifra offerta e completato le verifiche sui miei dati. Lo stato della mia attivazione è passato in “Parliamo con il tuo distributore”.

Sempre più distante da questo web.

Ho iniziato a vivere «su internet» quando internet era per pochi, quando dovevi spiegare all’amico cosa fosse una mail e potevi fargli vedere che quel messaggio lì, in pochi istanti era arrivato, centinaia di chilometri più in là, a casa di un amico distante.

La rete era più lenta, meno interattiva, meno video-ludica, meno popolosa. Però era libera, incontrollata, potentissima. Mi regalava la sensazione di essere di fronte ad un luogo vastissimo il cui limite in realtà era proprio la difficoltà di scoprire nuovi lidi.

Ci si affidava a riviste del settore, a liste di siti tramite mailing list. La sezione preferiti del mio browser cresceva ogni giorno di più e ogni link nuovo era una preferenza accordata, una promozione del contenuto. Un segno di riconoscenza verso chi pubblicava informazioni.

Al contempo, non era un mondo isolato. Internet non era un fornitore silenzioso di informazioni senza possibilità di confronto. Le chat, i news group, le mailing list in realtà pullulavano di appassionati. Esistevano differenti sistemi, differenti tecnologie, differenti possibilità.

In ognuno di quei luoghi potevi essere qualcuno diverso. Impossibile probabilmente trasformarsi in Dr. Jekyll e Mr. Hyde ma gli spazi erano distanti abbastanza da permettere linguaggi differenti. Ogni luogo aveva il suo dialetto.

Il mondo purtroppo da allora è cambiato tantissimo. La rete si è rimpicciolita sempre più e i pesci sono stati intrappolati tra le maglie di pochissimi pescatori, appiattendo con violenza la varietà, il colore e la diversità. Quasi tutte le piattaforme principali ripropongono sempre lo stesso schema interattivo: follower + condivisione testo/audio/video e condivisione invisibile delle più disparate informazioni personali a centinaia di aziende nel campo del marketing e della profilazione.

Tutto è interconnesso, anche i luoghi del web tendono ad esserlo, non permettendo più una segregazione, eliminando la possibilità di esprimere in maniera diversa parti differenti del proprio Io.

Sopporto sempre meno questa maglia opprimente. Negli ultimi anni mi sono avvicinato con interesse crescente verso soluzioni che riportano all’internet di vent’anni fa. Sistemi decentralizzati, software rispettosi della privacy, tecnologie open sono tra le mie passioni principali.

Mi accorgo di non essere il solo, ma al contempo è impossibile non notare come la massa sia inconsapevolmente rinchiusa in luoghi standard e asettici. Per quanto forte possa provare, riuscire a tirare fuori un amico è molto complicato.

Il confronto tra la bellezza di un post su un qualsiasi weblog dei primi anni duemila, rispetto al grigiume di un “comunicato stampa” su Facebook è impietoso. L’occhio oggi non può godere di alcun beneficio. La piattaforma ha deciso l’intonazione grafica da trasmettere.

E’ un po’ come se, per comodità, tutte le piazze delle nostre città avessero la stessa forma.

La magia di certi dialoghi non dipende solo dai contenuti ma anche dal contesto.

Le piazze di internet sono tutte uguali e per tanti, tristemente, l’unica àncora di salvezza per non annegare è quella di dire quotidianamente la loro su ogni cosa nel modo più frizzante possibile. Sono tutti sagaci nel 2020. Sembra sia l’arma contro il piattume dato da piattaforme che non trasmettono emozioni.

Non so come sarà il web tra vent’anni. Se nel 1997 non capivo come potesse resistere un lurker dal dire la sua (avevo un’altra età), oggi la mia presenza sulle piattaforme online è sempre più limitata e l’interazione sociale sulle stesse ridotta ai minimi termini.

Questo post però non serve a raccontare di aver perso amore per la tecnologia. Al contrario mi accorgo d’esser sempre più dentro essa.

Se un tempo la sensazione di libertà e il mio entusiasmo erano alimentati dai peer sperduti e distanti da raggiungere, oggi tutto ciò lo ritrovo nel codice, nella qualità di certe scelte ingegneristiche, nel riconoscere quando un progetto lavora in maniera umana e non-opportunistica.

Vado, via via, legandomi a piattaforme nuove, inesistenti, sconosciute. C’è gente alternativa, non omologata e non intrappolata.

Internet, in quelle piccole bolle di cui ogni tanto provo a parlare anche qui, ha ancòra la purezza di un tempo.

Emanuele

Guida completa per costruire un cloud personale gratuito

Uno dei problemi che incontro quando provo a suggerire di abbandonre Dropbox o Google Drive è che, molto spesso, è difficile fornire alternative altrettanto comode. Nel mio caso, ad esempio, ho configurato Nextcloud sul mio NAS e protetto tutti i servizi di casa tramite VPN: sono ben consapevole che non tutti possano spingersi verso queste soluzioni.

Quella che ti suggerirò adesso, è una soluzione gratuita che non richiede ragionamenti su possibili scenari di disaster-recovery esagerati (io ho dovuto gestire la possibilità che il mio NAS vada distrutto) ma che permette a chi è leggermente più coraggioso di avventurarsi verso soluzioni “self-hosted” che regalano un sufficiente controllo dei propri dati e della propria privacy. La mia proposta si basa sull’utilizzo di un VPS (virtual private server). Solitamente un VPS, essendo una risorsa hardware “di qualcun altro”, ha un certo costo. Oracle però offre la possibilità di utilizzare un VPS con 100GB di spazio gratuitamente.

Oracle infatti offre dei VPS in versione “free tier, dei tagli molto piccoli offerti principalmente per provare il servizio. Tale concessione non è a tempo, pertanto per servizi poco pesanti dal punto di vista delle risorse può risultare una buona soluzione, in piena legalità, per costruire un servizio di cloud personale, con ottimo uptime e buone garanzie di backup.

Per implementare una soluzione simile ti servono:

  1. una carta di credito (non bisogna pagare nulla ma è richiesta una carta di credito in fase di creazione dell’account Oracle)
  2. un dominio (non è obbligatorio ma certamente rende tutto più armonico) e la possibilità di configurare un record di tipo A sui DNS del dominio che punti all’IP del VPS. Se hai un dominio, al 99% è possibile farlo.

Il primo passo da fare è iscriverti ad Oracle Free Tier. Una volta iscritto, nella sezione Istanze va creata una nuova VM avendo cura di selezionare le risorse offerte “gratis per sempre” (a meno di non voler iniziare a pagare per le risorse usate in stile Amazon AWS).

I passaggi per ottenere una macchina funzionante su Oracle sono:

  1. Crea una istanza per una nuova Virtual Machine
  2. Dagli un nome
  3. Seleziona come OS: Canonical Ubuntu 20.04 Minimal
  4. Nelle opzioni del Network e Storage seleziona: Assegna un indirizzo IP pubblico
  5. Aggiungi una chiave SSH (puoi generarne una usando ssh-keygen se non ne hai già una)
  6. Nelle opzioni avanzate rimuovi la funzione di monitoring (poi toglieremo l’agente dalla VM per risparmiare risorse)
  7. Verifica le risorse e abbi cura che l’istanza e il volume di boot selezionato siano “Always Free” se non intendi pagare successivamente.
  8. Una volta creata la VM, assicurati di poterti collegare in SSH sul server (utilizzando la chiave privata che hai configurato precedentemente) utilizzando l’utente “ubuntu”.

A questo punto dovresti essere in grado di entrare in SSH sulla macchina (scegli tu il client che preferisci: su Windows consiglio Putty, su macOS va benissimo il terminale).

I passaggi per installare Nextcloud a questo punto sono i seguenti:

1. Aggiorna i repository, crea un’area di swap (la macchina ha solo 1GB di RAM, un po’ di swap tornerà utile specie se si installa anche elasticsearch) e imposta il timezone sulla macchina

sudo apt update && sudo apt upgrade
sudo apt install nano
sudo dd if=/dev/zero of=/swap bs=1M count=4k
sudo chmod 0600 /swap
sudo mkswap /swap
sudo swapon /swap
sudo echo '/swap none swap sw 0 0' >> /etc/fstab
sudo dpkg-reconfigure tzdata

Assicurati che l’area di swap sia stata creata e resa attiva (puoi verificare usando il comando top) e poi rimuovi gli agenti di monitoring di Oracle

sudo apt purge netfilter-persistent iptables-persistent
sudo snap remove oracle-cloud-agent

2. Installa il server web e tutti i componenti PHP necessari a Nextcloud

sudo apt install nginx -y
sudo apt install wget unzip zip -y
sudo apt install php-fpm php-curl php-cli php-mysql php-gd php-common php-xml php-json php-intl php-pear php-imagick php-dev php-common php-mbstring php-zip php-soap php-bz2 php-gmp php-bcmath php-opcache php-apcu -y

Spostati nella cartella di PHP per configurare un paio di righe

cd /etc/php/7.4/
sudo nano fpm/php.ini
sudo nano cli/php.ini
nel primo file:
--> memory_limit=512M
in entrambi i file:
--> date.timezone = Europe/Rome
--> cgi.fix_pathinfo=0

Modifica inoltre la configurazione di www.conf in questo modo:

sudo nano fpm/pool.d/www.conf
Nel file rimuovere i commenti a:
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp

3. Installa il server SQL e avvia i servizi

sudo apt install mariadb-server -y

Avvia i servizi, configurali per l’avvio automatico e verifica che il server SQL sia partito

sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl start php7.4-fpm
sudo systemctl enable php7.4-fpm
sudo systemctl start mariadb
sudo systemctl enable mariadb
sudo systemctl status mariadb

Configura una password per l’utente di root del server SQL e rispondi SI alle altre domande…

sudo mysql_secure_installation

Entra nel server SQL (inserendo la password appena scelta) e crea l’utente e il database per Nextcloud

sudo mysql -u root -p
create database nextcloud_db;
create user Emanuele@localhost identified by 'PaSsWorDMolToComPleSsA';
grant all privileges on nextcloud_db.* to Emanuele@localhost identified by 'PaSsWorDMolToComPleSsA';
flush privileges;
\q

4. Installa certbot per far sì che il servizio possa girare in HTTPS con un certificato valido rilasciato da Let’s Encrypt

sudo apt install certbot -y
sudo systemctl stop nginx

Hai spento il server web, adesso assicurati che nel firewall di Oracle siano aperte la porta 80 e la 443 verso la tua VM (dovrai farlo dalla sezione Networking del pannello di controllo di Oracle) e poi esegui i comandi successivi per generare il certificato (sostituendo opportunamente il tuo dominio)

sudo certbot certonly --standalone -d nextcloud.dreamsworld.it

5. A questo punto dovresti aver generato il certificato (l’output in shell è abbastanza eloquente) e puoi iniziare a scaricare e installare Nextcloud

cd /var/www/
sudo wget -q https://download.nextcloud.com/server/releases/latest.zip
sudo unzip -qq latest.zip
sudo chown -R www-data:www-data /var/www/nextcloud
cd /etc/nginx/sites-available/
sudo nano nextcloud

Dovresti aver aperto un file vuoto, riempilo con tutto quel che è scritto qui a seguire, avendo cura di sostituire le due occorrenze del nome del dominio e il percorso corretto del certificato SSL

upstream php-handler {
    #server 127.0.0.1:9000;
    server unix:/var/run/php/php7.4-fpm.sock;
}

server {
    listen 80;
    listen [::]:80;
    server_name nextcloud.dreamsworld.it;
    # enforce https
    return 301 https://$server_name:443$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name nextcloud.dreamsworld.it;

    # Use Mozilla's guidelines for SSL/TLS settings
    # https://mozilla.github.io/server-side-tls/ssl-config-generator/
    # NOTE: some settings below might be redundant
    ssl_certificate /etc/letsencrypt/live/nextcloud.dreamsworld.it/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/nextcloud.dreamsworld.it/privkey.pem;

    # Add headers to serve security related headers
    # Before enabling Strict-Transport-Security headers please read into this
    # topic first.
    #add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always;
    #
    # WARNING: Only add the preload option once you read about
    # the consequences in https://hstspreload.org/. This option
    # will add the domain to a hardcoded list that is shipped
    # in all major browsers and getting removed from this list
    # could take several months.
    add_header Referrer-Policy "no-referrer" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header X-Download-Options "noopen" always;
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header X-Permitted-Cross-Domain-Policies "none" always;
    add_header X-Robots-Tag "none" always;
    add_header X-XSS-Protection "1; mode=block" always;

    # Remove X-Powered-By, which is an information leak
    fastcgi_hide_header X-Powered-By;

    # Path to the root of your installation
    root /var/www/nextcloud;

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    # The following 2 rules are only needed for the user_webfinger app.
    # Uncomment it if you're planning to use this app.
    #rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
    #rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;

    # The following rule is only needed for the Social app.
    # Uncomment it if you're planning to use this app.
    #rewrite ^/.well-known/webfinger /public.php?service=webfinger last;

    location = /.well-known/carddav {
      return 301 $scheme://$host:$server_port/remote.php/dav;
    }
    location = /.well-known/caldav {
      return 301 $scheme://$host:$server_port/remote.php/dav;
    }

    # set max upload size
    client_max_body_size 512M;
    fastcgi_buffers 64 4K;

    # Enable gzip but do not remove ETag headers
    gzip on;
    gzip_vary on;
    gzip_comp_level 4;
    gzip_min_length 256;
    gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
    gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;

    # Uncomment if your server is build with the ngx_pagespeed module
    # This module is currently not supported.
    #pagespeed off;

    location / {
        rewrite ^ /index.php;
    }

    location ~ ^\/(?:build|tests|config|lib|3rdparty|templates|data)\/ {
        deny all;
    }
    location ~ ^\/(?:\.|autotest|occ|issue|indie|db_|console) {
        deny all;
    }

    location ~ ^\/(?:index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+)\.php(?:$|\/) {
        fastcgi_split_path_info ^(.+?\.php)(\/.*|)$;
        set $path_info $fastcgi_path_info;
        try_files $fastcgi_script_name =404;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $path_info;
        fastcgi_param HTTPS on;
        # Avoid sending the security headers twice
        fastcgi_param modHeadersAvailable true;
        # Enable pretty urls
        fastcgi_param front_controller_active true;
        fastcgi_pass php-handler;
        fastcgi_intercept_errors on;
        fastcgi_request_buffering off;
    }

    location ~ ^\/(?:updater|oc[ms]-provider)(?:$|\/) {
        try_files $uri/ =404;
        index index.php;
    }

    # Adding the cache control header for js, css and map files
    # Make sure it is BELOW the PHP block
    location ~ \.(?:css|js|woff2?|svg|gif|map)$ {
        try_files $uri /index.php$request_uri;
        add_header Cache-Control "public, max-age=15778463";
        # Add headers to serve security related headers (It is intended to
        # have those duplicated to the ones above)
        # Before enabling Strict-Transport-Security headers please read into
        # this topic first.
        add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always;
        #
        # WARNING: Only add the preload option once you read about
        # the consequences in https://hstspreload.org/. This option
        # will add the domain to a hardcoded list that is shipped
        # in all major browsers and getting removed from this list
        # could take several months.
        add_header Referrer-Policy "no-referrer" always;
        add_header X-Content-Type-Options "nosniff" always;
        add_header X-Download-Options "noopen" always;
        add_header X-Frame-Options "SAMEORIGIN" always;
        add_header X-Permitted-Cross-Domain-Policies "none" always;
        add_header X-Robots-Tag "none" always;
        add_header X-XSS-Protection "1; mode=block" always;

        # Optional: Don't log access to assets
        access_log off;
    }

    location ~ \.(?:png|html|ttf|ico|jpg|jpeg|bcmap)$ {
        try_files $uri /index.php$request_uri;
        # Optional: Don't log access to other assets
        access_log off;
    }
}

Abilita e verifica la configurazione, poi riavvia i servizi:

sudo ln -s /etc/nginx/sites-available/nextcloud /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
sudo systemctl restart php7.4-fpm

6. Configura il firewall della macchina limitando l’accesso alle sole porte 80 e 443

sudo apt install ufw
sudo su
for svc in ssh http https
do
ufw allow $svc
done
ufw enable
ufw status numbered
exit

7. Installa Elasticsearch, il “motore di ricerca” che indicizzerà i contenuti sul tuo cloud per ricerche velocissime (con scansione anche dei contenuti dei file)

sudo apt update
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo sh -c 'echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" > /etc/apt/sources.list.d/elastic-7.x.list'
sudo apt update
sudo apt install elasticsearch
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-attachment
sudo systemctl enable --now elasticsearch.service

Date le risorse limitate della macchina, il servizio potrebbe fallire ad avviarsi, in tal caso aumenta il tempo di timeout e avvialo nuovamente

sudo systemctl show elasticsearch | grep ^Timeout
sudo mkdir /etc/systemd/system/elasticsearch.service.d
echo -e "[Service]\nTimeoutStartSec=180" | sudo tee /etc/systemd/system/elasticsearch.service.d/startup-timeout.conf
sudo systemctl daemon-reload

8. Abilita la cache nella configurazione di Nextcloud per velocizzarne il funzionamento

sudo nano var/www/nextcloud/config/config.php
inserire:
'memcache.local' => '\OC\Memcache\APCu',

9. Installa e configura un cron per le routine di manutenzione di Nextcloud e riavvia i servizi

sudo apt install cron
sudo crontab -e -u www-data
inserire:
*/15  *  *  *  * php -f /var/www/nextcloud/cron.php
sudo systemctl restart nginx
sudo systemctl restart php7.4-fpm

A questo punto, se hai eseguito tutto correttamente, collegandoti a https://nextcloud.TUODOMINIO.it, dovresti vedere la pagina di configurazione di Nextcloud.

I parametri da inserire sono i seguenti (sostituisci ovviamente il tuo nome e la tua password)

Configurazione nextcloud:
utente: Emanuele
password: PaSsWorDMolToComPleSsA
Dir dati: /var/www/nextcloud/data
Dati database: nextcloud_db

Nelle “Impostazioni di base” di Nextcloud (l’url è /settings/admin), vai a selezionare “Cron” come modalità di esecuzione delle attività di manutenzione e installa i tre plugin necessari al funzionamento di Elasticsearch: Full text search / Full text search – Elasticsearch Platform / Full text search – Files (questo lo fai da /settings/apps).

Da qui in poi, sta tutto a te. Nextcloud è una piattaforma di file sharing che si può ampliare all’infinito attraverso i suoi plugin.

Ho scritto questa guida per un amico che aveva voglia di imparare ad installare Nextcloud da sé. Se credi ti sia stata utile, se trovi imperfezioni o hai suggerimenti sei caldamente invitato a lasciare un commento.

Riprendiamoci i nostri dati!

Emanuele

L’illusione pericolosa dei software per prevenire i crimini

Siamo portati a credere che il tracciamento sia utile solo alla pubblicità che verrà mostrata sui social network o che ci insegue durante la nostra navigazione.

In realtà, il limite alla fantasia è quasi inesistente ed è molto alto il rischio di ritrovarci catapultati in distopie aggressive, pericolose e limitanti della libertà personale.

Questo è un problema molto vasto di soluzionismo tecnologico molto in voga nell’industria della tecnologia che porta a credere che la tecnologia possa risolvere tutti i nostri problemi invece di spingerci a riflettere di cosa abbiamo bisogno per avere una società equa e imparziale e quale sia il ruolo della tecnologia se ne esiste uno.

Per questo genere di problemi non esistono mezze misure: finché i dati verranno raccolti qualcuno sarà interessato ad usarli. Nel 2011 i browser provarono ad inserire il “Do-Not Track”, un sistema che doveva informare il sito visitato circa la nostra volontà a non essere tracciati. La storia ci ha insegnato che è rimasto un sistema ignorato sia dai piccoli siti che dai grandi portali: Google, Facebook o Twitter non rispettano il DNT.

L’unico metodo per evitare tutto ciò è favorire tecnologie che abbiano rispetto del nostro spazio vitale e che non colgano ogni occasione per analizzare le nostre abitudini. L’industria porta a credere che sia inevitabile semplicemente per proteggere il proprio mercato.

Emanuele