Negli ultimi 3 mesi mi sono divertito a perdere dei neuroni dietro questi due progetti:

  1. Installare localmente Nextcloud su un Raspberry Pi 3
  2. Installare localmente Invidious sul mio computer

Queste sono le guide che sono uscite da tutti gli appunti presi durante gli scleri.
Buona lettura

Nextcloud (14/04/2024)

Qualche tempo fa ho perso un paio di neuroni dietro ad uno sfizio che mi avevo lì da un pò di tempo: Installare Nextcloud sopra il Raspberry Pi 3 che ho in casa.

Una roba semplicissima mi direte, peccato che ho avuto a che fare con un paio di problemi che mi hanno dato abbastanza da pelare e questo articolo serve proprio per questi problemi.

Tutto quello che c’è scritto qua dentro è una specie di cronologia che mi permetterà in futuro di rifare la stessa operazione senza avere ulteriori problemi (spero).

Installare Nextcloud

Prima di installare NextCloud, è necessario disporre di alcuni prerequisiti sul sistema. NextCloud ha bisogno di un server web con Apache, MySQL (MariaDB) e PHP, in particolare di alcuni moduli PHP.

 sudo apt install apache2 mariadb-server libapache2-mod-php
 sudo apt install php-gd php-json php-mysql php-curl php-mbstring php-intl php-imagick php-xml php-zip

Attendi qualche minuto per il completamento dell’installazione e riavviare Apache per caricare i nuovi moduli PHP:

 sudo service apache2 restart

Per installare Nextcloud bisogna andare nelle cartelle di Apache web e installare l’ultima releas di Nextcloud

 cd /var/www/html
 sudo wget https://download.nextcloud.com/server/releases/latest.zip
 sudo unzip latest.zip

Se ti da dei problemi ad estrarre i file devi modificare i permessi della cartella per consentire ad Apache di accedervi

 sudo chmod 750 nextcloud -R
 sudo chown www-data:www-data nextcloud -R

NextCloud è quasi pronto per essere utilizzato, ma dobbiamo prima creare un database MySQL per memorizzare i suoi dati.

Configura MYSQL

Dopo l’installazione del server MariaDB, viene creato un utente root che può essere utilizzato solo dalla riga di comando. Connettiti a MYSQl tramite sudo mysql e copia questo file sql

 -- Create the new user
 CREATE USER 'nextcloud' IDENTIFIED BY 'password';
 -- Create the new database
 CREATE DATABASE nextcloud;
 -- Give all permissions
 GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@localhost IDENTIFIED BY 'password';
 FLUSH PRIVILEGES;
 quit

Il database è pronto e possiamo finire l’installazione di NextCloud.

Errori

Ora, se hai provato ad accedere a questo link https://IP/nextcloud e ti escono degli errori rimani in questa sezione, altrimenti puoi tranquillamente andare avanti. Il problema mi usciva colpa la versione di PHP che avevo installato. Ho risolto così:

installo PHP 8.3

 sudo wget -qO /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
 echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
 sudo apt update
 sudo apt install -y php8.3-common php8.3-cli

Poi ho cambiato la versione di Default con questi comandi:

 sudo a2dismod php* 
 sudo a2enmod php8.3 
 sudo systemctl restart apache2 

Configura Nextcloud

Ora è possibile accedere alla pagina di configurazione di NextCloud e completare la configurazione.

Apri il seguente URL nel browser: https://IP/nextcloud. sostitusci “IP” con l’indirizzo IP di Raspberry Pi.

Viene visualizzato un modulo in cui scegliere un nome utente e una password per NextCloud.

La seconda parte chiede dove si desidera memorizzare i file di NextCloud. È possibile mantenere il valore predefinito se si dispone di una sola partizione principale, oppure modificarlo per utilizzare, ad esempio, un’unità USB esterna.

La terza parte è la configurazione del database. Inserite le credenziali appena create in MySQL:

  • Utente: nextcloud
  • Password: “password” (la password che avete usato nei comandi di MySQL)
  • Database: nextcloud
  • Host: localhost

Quindi fare clic su “Installa” e attendere qualche minuto.

Riapri il seguente URL nel browser: https://IP/nextcloud e ti troverai davanti al form di login.

Le Fontih!

Progetto realizzato grazie a questi tre articoli:

  1. Installing NextCloud on Your Raspberry Pi (2 ways)
  2. Install PHP 8.3 on Raspberry Pi
  3. How to Change Default PHP Version on Ubuntu

Invidious (03/07/2024)

Ecco come ho installato localmente un’istanza invidious locale, in modo da vedere i video dei tuoi youtuber preferiti senza essere tracciato da YouTube.

Pacchetti richiesti

Invidious può essere installato sia tramite Docker che tramite Podman, ma in questo caso vedremo la seconda opzione.

Quindi, prima di cominciare, bisogna installare Podman sul nostro computer tramite questo comando:

 sudo dnf install podman-compose pwgen

Ora possiamo cominciare.

Installare Invidious

In primis bisogna scaricare la Github il repository ufficiale di Invidious ed entrare dentro la directory appena creata

git clone https://github.com/iv-org/invidious.git
cd invidious

Il passo successivo consiste nell’editare il file docker-compose.yml con queste modifiche:

Aggiungi l’image di Invidious:

image: quay.io/invidious/invidious:latest

Cambiare la Porta:

 ports: - "3000:3000"

Cambiare l’hmac_key. È necessario impostare un valore casuale generato per il parametro hmac_key. Su Linux è possibile generarlo utilizzando il comando pwgen 20 1

.Prima
hmac_key: "CHANGE_ME!!"

.Dopo
hmac_key: saeNg5xufooraofeevee

A fine modifiche, il file docker_compose.yml deve assomigliare a questo qui sotto:

# Warning: This docker-compose file is made for development purposes.
# Using it will build an image from the locally cloned repository.
#
# If you want to use Invidious in production, see the docker-compose.yml file provided
# in the installation documentation: https://docs.invidious.io/installation/

# Warning: This docker-compose file is made for development purposes.
# Using it will build an image from the locally cloned repository.
#
# If you want to use Invidious in production, see the docker-compose.yml file provided
# in the installation documentation: https://docs.invidious.io/installation/

version: "3"
services:

 invidious:
 image: quay.io/invidious/invidious:latest
 build:
      context: .
     dockerfile: docker/Dockerfile
    restart: unless-stopped
    ports:
        - "3000:3000"
    environment:
    # Please read the following file for a comprehensive list of all available
    # configuration options and their associated syntax:
    # https://github.com/iv-org/invidious/blob/master/config/config.example.yml
    INVIDIOUS_CONFIG: |
        db:
            dbname: invidious
            user: kemal
            password: kemal
            host: invidious-db
            port: 5432
        check_tables: true
        # external_port:
        # domain:
        # https_only: false
        # statistics_enabled: false
        hmac_key: Ees6vou2IekaipeiCeib
    healthcheck:
        test: wget -nv --tries=1 --spider http://127.0.0.1:3000/api/v1/comments/jNQXAC9IVRw || exit 1
        interval: 30s
        timeout: 5s
        retries: 2
    depends_on:
     - invidious-db

    invidious-db:
        image: docker.io/library/postgres:13
        restart: unless-stopped
        volumes:
            - postgresdata:/var/lib/postgresql/data
            - ./config/sql:/config/sql
            - ./docker/init-invidious-db.sh:/docker-entrypoint-initdb.d/init-invidious-db.sh
        environment:
            POSTGRES_DB: invidious
            POSTGRES_USER: kemal
            POSTGRES_PASSWORD: kemal
        healthcheck:
            test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"]

    volumes:
        postgresdata:

Piccola nota a margine: A causa di vari problemi, Invidious deve essere riavviato spesso, almeno una volta al giorno, idealmente ogni ora.

Eseguire invidious

Per eseguire Invidious, basta entrare dentro la directory invidious ed eseguire il comando podman-compose up

 cd invidious/
 podman-compose up

Per ottimizzare quest’operazione ho creato un piccolo script shell che mi permette di accendere, spegnere e aggiornare invidious

 #!/bin/bash

 clear
 # Mostra il primo menu
 echo "Scegli un'opzione:"
 echo "1. Accendi"
 echo "2. Spegni"
 echo "3. aggiorna"
 read -p "Inserisci il numero corrispondente: " scelta

 # Esegui l'azione in base alla scelta
 case $scelta in
     1)  cd invidious/ # Cambia la directory in "invidious/"
         podman-compose up # Esegui "podman-compose up"
         ;;
    
     2)
         cd invidious/
         podman-compose stop
         echo "Invidious spento!"
         ;;
     3)
         cd invidious/
         podman-compose pull
         podman-compose up -d
         podman image prune -f
         echo "Invidious aggiornato!"
         ;;
 esac