This commit is contained in:
Andrea Fazzi 2024-10-31 08:52:16 +01:00
commit 53dad3f872
72 changed files with 1607 additions and 104 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

View file

@ -0,0 +1,10 @@
{
"type": "excalidraw",
"version": 2,
"source": "https://logseq.com",
"elements": [],
"appState": {
"viewBackgroundColor": "#FFF",
"gridSize": null
}
}

View file

@ -0,0 +1,10 @@
{
"type": "excalidraw",
"version": 2,
"source": "https://logseq.com",
"elements": [],
"appState": {
"viewBackgroundColor": "#FFF",
"gridSize": null
}
}

View file

@ -0,0 +1,599 @@
{
"type": "excalidraw",
"version": 2,
"source": "file://",
"elements": [
{
"id": "lvARJB4q2mylMGTGdcS9R",
"type": "freedraw",
"x": 146,
"y": 187,
"width": 296,
"height": 162,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "hachure",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"frameId": null,
"roundness": null,
"seed": 438944882,
"version": 139,
"versionNonce": 1952817134,
"isDeleted": false,
"boundElements": null,
"updated": 1729768588393,
"link": null,
"locked": false,
"points": [
[
0,
0
],
[
-1,
3
],
[
-2,
5
],
[
-3,
8
],
[
-4,
14
],
[
-4,
20
],
[
-2,
30
],
[
3,
43
],
[
14,
58
],
[
22,
66
],
[
33,
72
],
[
45,
76
],
[
57,
78
],
[
72,
77
],
[
87,
74
],
[
97,
69
],
[
104,
65
],
[
110,
61
],
[
114,
55
],
[
116,
52
],
[
116,
51
],
[
116,
48
],
[
116,
46
],
[
116,
45
],
[
115,
43
],
[
114,
41
],
[
111,
40
],
[
107,
39
],
[
101,
39
],
[
95,
40
],
[
90,
42
],
[
83,
46
],
[
79,
49
],
[
76,
53
],
[
73,
58
],
[
71,
64
],
[
70,
72
],
[
71,
80
],
[
75,
90
],
[
79,
97
],
[
82,
101
],
[
92,
110
],
[
98,
114
],
[
104,
116
],
[
112,
117
],
[
121,
117
],
[
130,
115
],
[
138,
111
],
[
146,
106
],
[
152,
99
],
[
155,
93
],
[
156,
87
],
[
156,
80
],
[
155,
78
],
[
155,
77
],
[
153,
75
],
[
151,
74
],
[
149,
74
],
[
147,
74
],
[
145,
74
],
[
141,
78
],
[
138,
85
],
[
138,
93
],
[
138,
101
],
[
140,
116
],
[
142,
121
],
[
143,
125
],
[
146,
128
],
[
150,
132
],
[
159,
135
],
[
169,
139
],
[
180,
142
],
[
188,
143
],
[
197,
144
],
[
203,
143
],
[
210,
140
],
[
213,
137
],
[
215,
132
],
[
217,
127
],
[
217,
120
],
[
216,
115
],
[
214,
110
],
[
213,
107
],
[
212,
106
],
[
210,
104
],
[
209,
103
],
[
206,
103
],
[
200,
104
],
[
196,
107
],
[
193,
110
],
[
192,
112
],
[
189,
118
],
[
188,
121
],
[
188,
125
],
[
188,
128
],
[
189,
132
],
[
192,
137
],
[
198,
144
],
[
205,
149
],
[
212,
153
],
[
221,
158
],
[
227,
161
],
[
231,
162
],
[
235,
162
],
[
239,
162
],
[
242,
159
],
[
247,
155
],
[
252,
148
],
[
255,
138
],
[
258,
124
],
[
258,
117
],
[
258,
111
],
[
257,
107
],
[
255,
104
],
[
252,
102
],
[
249,
100
],
[
245,
99
],
[
242,
99
],
[
239,
100
],
[
236,
101
],
[
234,
104
],
[
234,
107
],
[
234,
112
],
[
236,
115
],
[
241,
119
],
[
247,
121
],
[
253,
123
],
[
262,
124
],
[
265,
124
],
[
271,
123
],
[
275,
121
],
[
282,
116
],
[
286,
114
],
[
288,
111
],
[
290,
109
],
[
291,
108
],
[
292,
107
],
[
292,
107
]
],
"pressures": [],
"simulatePressure": true,
"lastCommittedPoint": [
292,
107
]
}
],
"appState": {
"gridSize": null,
"viewBackgroundColor": "#FFF"
},
"files": {}
}

View file

@ -1,4 +1,4 @@
- Per inviare una richiesta http da dentro un container verso il reverse proxy ospitato all'interno dello stesso host è a volte necessario impostare una regola di firewall per consentire il traffico dalla subnet interna di [[Docker]]. #linuxcommandline
- Per inviare una richiesta http da dentro un container verso il reverse proxy ospitato all'interno dello stesso host è a volte necessario impostare una regola di firewall per consentire il traffico dalla subnet interna di [[docker]]. #linuxcommandline
- ```bash
sudo ufw allow from 192.168.128.0/24
```

View file

@ -4,7 +4,7 @@
- https://news.ycombinator.com/item?id=29082526
- Articolo interessante sui flow di #kratos
- https://dev.to/peteole/how-we-built-a-student-project-platform-using-graphql-react-golang-ory-kratos-and-kubernetes-part-3-authentication-2603
- Dockerfile di [writefreely](https://github.com/writefreely) che costruisce l'immagine #Docker in due step (primo step FROM golang, secondo step FROM alpine). In questo modo l'immagine finale è molto piccola.
- Dockerfile di [writefreely](https://github.com/writefreely) che costruisce l'immagine #docker in due step (primo step FROM golang, secondo step FROM alpine). In questo modo l'immagine finale è molto piccola.
- ```Dockerfile
# Build image
FROM golang:1.15-alpine as build

View file

@ -1,4 +1,4 @@
- # Biografia #toot #fediverse #mastodon
# Biografia #toot #fediverse #mastodon
- Programmatore full-stack e docente di Matematica e Fisica nella scuola pubblica italiana. In fissa, tra le altre cose, con il #retrogaming, l'#AI e il #gamedev. Quando ho scritto il mio primo videogioco avevo cinque anni e pigiavo i tasti di una tastiera gommosa. Ho adottato #golang quando era ancora nella culla sviluppandoci il primo emulatore di #zxspectrum concorrente. Quando non sono impegnato a smontare giocattoli per vedere come sono fatti dentro oppure a costruirmene di nuovi giusto per il gusto di, mi occupo di sviluppare piattaforme web per le istituzioni scolastiche italiane. Sono in un percorso esistenziale che mi porterà presto alla totale #indipendenzadigitale dato che ho deciso di andare di #selfhosting infrattando un rack fatto in casa nell'armadio della cameretta dei miei bimbi. Insomma il mio piccolo #homelab alla faccia del monopolio dei #GAFAM dal quale vorrei rendere indipendenti chi è disposto ad accettare che nulla di ciò che conta è facile da ottenere senza sforzo. Allo stesso modo cerco di sfuggire in tutti i modi al purgatorio dei web framework #javascript.
- Full-stack dev and high school Mathematics and Physics teacher in an italian public school. I'm obsessed, among other things, with #retrogaming, #AI and #gamedev. When I wrote my first computer game I was a five years old pressing a rubbish keyboard. I adopted #golang in its early stage developing the first concurrent #zxspectrum emulator. When I'm not busy with #hacking new toys just for fun I'm a web developer for italian school institutions. I'm on an existential path that will bring me soon to total #digitalindependence given that I'm #selfhosting my services placing an homemade rack into my children room wardrobe: my little cute #homelab in the face of #GAFAM oligopoly from which I'd like to make independent those who accept that nothing valuable can be obtained effortless. Moreover, I'm trying to escape from the #Javascript web framework purgatory.
-

View file

@ -1,5 +1,5 @@
- **07:50** [[quick capture]]: CSS Tip: Style your Radio Buttons and Checkboxes for Printing - DEV Community 👩‍💻👨‍💻 [CSS Tip: Style your Radio Buttons and Checkboxes for Printing - DEV Community 👩‍💻👨‍💻](https://alvaromontoro.com/blog/68024/css-tip-style-checkboxes-radio-buttons-for-printing) #css
- **11:47** [[quick capture]]: Docker networking: Network Namespaces, Docker and DNS - DEV Community 👩‍💻👨‍💻 [Docker networking: Network Namespaces, Docker and DNS - DEV Community 👩‍💻👨‍💻](https://dev.to/pemcconnell/docker-networking-network-namespaces-docker-and-dns-19f1) #Docker
- **11:47** [[quick capture]]: Docker networking: Network Namespaces, Docker and DNS - DEV Community 👩‍💻👨‍💻 [Docker networking: Network Namespaces, Docker and DNS - DEV Community 👩‍💻👨‍💻](https://dev.to/pemcconnell/docker-networking-network-namespaces-docker-and-dns-19f1) #docker
-
- @kenobit@livellosegreto
- Aggiungi che non possediamo alcun contenuto, affittiamo soltanto, destinati a rimanere eterni noleggiatori in una effimera videoteca. E se il servizio decide di rimuovere il nostro film preferito, lo abbiamo perso, anche se lo avevamo pagato. Personalmente acquisto i DVD/BR che mi interessano, li archivio e li fruisco in streaming mediante un istanza self-hosted di Jellyfin.

View file

@ -3,7 +3,7 @@
- A lightweight blog written in #golang because I'm proficient with that language
- A quick deploying procedure because I want to modify pages templates in local and push them to the server #entr
- A revision system based on #git
- A self-hostable solution based on #Docker containers
- A self-hostable solution based on #docker containers
- Put my instance in the #fediverse
-
- ### Technologies involved

View file

@ -1,6 +1,6 @@
- [Documentazione](https://writefreely.org/docs/latest/writer/css) per la personalizzazione del #css di #WriteFreely
- Mail del dott. Fabio Traunero [fabio.traunero@asugi.sanita.fvg.it](mailto: fabio.traunero@asugi.sanita.fvg.it)
- **07:46** [[quick capture]]: From Commit to Registry: A Guide to Automate Docker Image Builds with Github Actions - DEV Community 👩‍💻👨‍💻 [From Commit to Registry: A Guide to Automate Docker Image Builds with Github Actions - DEV Community 👩‍💻👨‍💻](https://dev.to/dhanushreddy29/from-commit-to-registry-a-guide-to-automate-docker-image-builds-with-github-actions-4c6i) #Docker #Github #CDCI
- **07:46** [[quick capture]]: From Commit to Registry: A Guide to Automate Docker Image Builds with Github Actions - DEV Community 👩‍💻👨‍💻 [From Commit to Registry: A Guide to Automate Docker Image Builds with Github Actions - DEV Community 👩‍💻👨‍💻](https://dev.to/dhanushreddy29/from-commit-to-registry-a-guide-to-automate-docker-image-builds-with-github-actions-4c6i) #docker #Github #CDCI
- **18:51** [[quick capture]]: Im now a full-time professional open source maintainer [Im now a full-time professional open source maintainer](https://news.ycombinator.com/item?id=34633713) #freelance
-
- **20:08** [[quick capture]]: Linux from A to Z (Part 3) - DEV Community 👩‍💻👨‍💻 [Linux from A to Z (Part 3) - DEV Community 👩‍💻👨‍💻](https://dev.to/k1lgor/linux-from-a-to-z-part-3-3dob) #linuxcommandline #[[Amministrazione Sistemi Linux]]

View file

@ -1,6 +1,6 @@
- **11:16** [[quick capture]]: Path to a free, self-taught education in Computer Science [Path to a free, self-taught education in Computer Science](https://news.ycombinator.com/item?id=34673581) #giulia
- **20:08** [[quick capture]]: How much can you get out of a $4 VPS? [How much can you get out of a $4 VPS?](https://news.ycombinator.com/item?id=34676186) #vps #infrastructure
Per copiare negli appunti (clipboard )da terminale attraverso una pipe utilizzare il comando `xclip` #linuxcommandline
- Per copiare negli appunti (clipboard) da terminale attraverso una pipe utilizzare il comando `xclip` #linuxcommandline
- ```bash
cat ~/.ssh/id_rsa.pub | xclip -selection clipboard
```

View file

@ -3,7 +3,7 @@
- ```bash
kill `pidof mosh-server`
```
- Per mostrare la politica di restart in #Docker
- Per mostrare la politica di restart in #docker
- ```bash
docker ps | grep -v CON | awk '{print $1}' | while read line; do docker inspect -f "{{ .HostConfig.RestartPolicy.Name }}" $line | xargs echo $line ;done
```

View file

@ -4,7 +4,7 @@
sudo dpkg -i imager_latest_amd64.deb
sudo rpi-imager
```
- Eseguire il build di un'immagine #Docker ed effettuare il `push` sul registry locale
- Eseguire il build di un'immagine #docker ed effettuare il `push` sul registry locale
- ```bash
docker build -t andrea/oef_prod .
docker tag andrea/oef_prod localhost:5000/andrea/oef_prod
@ -23,5 +23,4 @@
#retrogaming
-
- **14:05** [[quick capture]]: Configuring GlusterFS in Linux Server - DEV Community 👩‍💻👨‍💻 [Configuring GlusterFS in Linux Server - DEV Community 👩‍💻👨‍💻](https://dev.to/waji97/configuring-gluster-in-linux-server-2n6a) #sysadmim
- **14:16** [[quick capture]]: Optimizing Bitbucket Pipelines with Custom Docker Images - DEV Community 👩‍💻👨‍💻 [Optimizing Bitbucket Pipelines with Custom Docker Images - DEV Community 👩‍💻👨‍💻](https://medium.com/@ibrarturi/optimizing-bitbucket-pipelines-with-custom-docker-images-ecbae7a84a26) #Docker
- **14:16** [[quick capture]]: Optimizing Bitbucket Pipelines with Custom Docker Images - DEV Community 👩‍💻👨‍💻 [Optimizing Bitbucket Pipelines with Custom Docker Images - DEV Community 👩‍💻👨‍💻](https://medium.com/@ibrarturi/optimizing-bitbucket-pipelines-with-custom-docker-images-ecbae7a84a26) #docker

View file

@ -2,5 +2,5 @@
- ```bash
ip --brief address | grep -o eth0 # => "eth0"
```
- **10:13** [[quick capture]]: ![IMG_20230223_101312](../assets/IMG_20230223_101312.jpg) Flusso di #deploy per sviluppo su #homelab #git #webhook #selfhosting #Docker
- **10:13** [[quick capture]]: ![IMG_20230223_101312](../assets/IMG_20230223_101312.jpg) Flusso di #deploy per sviluppo su #homelab #git #webhook #selfhosting #docker
- **10:41** [[quick capture]]: Mermaid Cheat Sheet [Mermaid Cheat Sheet](https://news.ycombinator.com/item?id=34906378) #pandoc #documentation

View file

@ -8,7 +8,7 @@
[ "sha1=$signature" != "$x_hub_signature" ] && die "bad hook signature: expecting $x_hub_signature and got $signature"
```
- Codice [sorgente](https://github.com/gogs/gogs/blob/c53a1998c589a544b25d53f6e6fdf0f24a4df25b/internal/db/webhook.go#L628) di #Gogs che gestisce i #webhook
- Per effettuare il build di un'immagine #Docker con `docker-compose` quando si verificano problemi di rete (CDN di Alpine Linux) si può
- Per effettuare il build di un'immagine #docker con `docker-compose` quando si verificano problemi di rete (CDN di Alpine Linux) si può
- ```docker-compose
version: "3.5"

View file

@ -1,5 +1,5 @@
- [Articolo](https://www.experts-exchange.com/articles/33412/Setup-a-Docker-Wordpress-LAMP-Stack.html) su come creare un'immagine #Docker utile per creare un container #LAMP #[[Migrazione sito LES]]
- Repository #Github per la costruzione dell'immagine #Docker di #wordpress
- [Articolo](https://www.experts-exchange.com/articles/33412/Setup-a-Docker-Wordpress-LAMP-Stack.html) su come creare un'immagine #docker utile per creare un container #LAMP #[[Migrazione sito LES]]
- Repository #Github per la costruzione dell'immagine #docker di #wordpress
- [Archivio](https://wordpress.org/download/releases/) con le release di #wordpress #[[Migrazione sito LES]]
- Per creare e rimuovere con una sola linea di comando n file in #linuxcommandline #[[Amministrazione Sistemi Linux]]
- ```bash

View file

@ -9,7 +9,7 @@
- ```php
$table_prefix = 'asds4w65t63x_';
```
- `Dockerfile` per costruire un'immagine #Docker per eseguire un container #LAMP utile, ad esempio, per ricostruire un'ambiente #wordpress #[[Migrazione sito LES]]
- `Dockerfile` per costruire un'immagine #docker per eseguire un container #LAMP utile, ad esempio, per ricostruire un'ambiente #wordpress #[[Migrazione sito LES]]
- ```dockerfile
FROM nimmis/apache-php5
RUN a2enmod rewrite

View file

@ -3,9 +3,8 @@
curl -s https://api.github.com/repos/jgm/pandoc/releases/latest | jq '.assets[] | select(.name|match(".*x64.*")) | .browser_download_url'
```
- [Pagina](https://gist.github.com/steinwaywhw/a4cd19cda655b8249d908261a62687f8) di riferimento
- **16:15** [[quick capture]]: Docker is deleting Open Source organisations - what you need to know [Docker is deleting Open Source organisations - what you need to know](https://news.ycombinator.com/item?id=35166317) #Docker #podman #CEF
- **16:15** [[quick capture]]: Docker is deleting Open Source organisations - what you need to know [Docker is deleting Open Source organisations - what you need to know](https://news.ycombinator.com/item?id=35166317) #docker #podman #CEF
- Matematica: BELLIA (8), KARIS (8), STALLONE (3), TATALOVIC (8), CRASNICH (8)
- Fisica: DI CANDIA (3), KUHAR (8), PADOVAN (3), DI VITTO (7)
- Matematica: COSLOVICH (8), SINDICI (9), RAO (9), GRISELLI (7,5), D'ARIENZO (6,5), WEINBERG (8-)
- Fisica: LOSER (5), ZOTTI (8), BERTOLINI (7,5)

View file

@ -1,4 +1,4 @@
- **06:08** [[quick capture]]: https://httptoolkit.com/blog/docker-image-registry-facade/ #Docker
- **06:08** [[quick capture]]: https://httptoolkit.com/blog/docker-image-registry-facade/ #docker
- **12:09** [[quick capture]]: concurrency - Goroutines with ListenAndServe increases performance? - Stack Overflow [concurrency - Goroutines with ListenAndServe increases performance? - Stack Overflow](https://stackoverflow.com/questions/30487703/goroutines-with-listenandserve-increases-performance) #golang
- **12:12** [[quick capture]]: Running multiple HTTP servers in Go | by Uday Hiwarale | RunGo | Medium [Running multiple HTTP servers in Go | by Uday Hiwarale | RunGo | Medium](https://medium.com/rungo/running-multiple-http-servers-in-go-d15300f4e59f) #golang
- **15:18** [[quick capture]]: Introducing react.dev [Introducing react.dev](https://news.ycombinator.com/item?id=35186812) #react #Javascript

View file

@ -1,4 +1,4 @@
- Per resettare una password di #nextcloud tramite #linuxcommandline se il servizio è all'interno di un container #Docker
- Per resettare una password di #nextcloud tramite #linuxcommandline se il servizio è all'interno di un container #docker
- ```bash
docker exec -it -u www-data nextcloud_app_1 ./occ user:resetpassword admin
```

View file

@ -19,3 +19,15 @@
- ```sql
DELETE FROM activities
```
- Preparazione dei file CSV da EDT
- Occorre esportare le attività
- Le colonne necessarie sono
- ```
NUMERO,DURATA,FREQUENZA,MAT_COD,MAT_NOME,DOC_COGN,DOC_NOME,CLASSE,AULA,PERIODICITÀ,SPECIFICA,CO-DOC.,COEFF.,GIORNO,O.INIZIO,SEDE,ALUNNI
```
- Importazione degli studenti
- Occorre cancellare i record della cartella `students`
- ```sql
DELTE FROM students;
```
- Occorre preparare un file csv contenente

View file

@ -2,7 +2,7 @@
- **20:54** [[quick capture]]: [Show HN: E-Ink Day Schedule](https://news.ycombinator.com/item?id=37642671) #eink #thinkering
- Player multimediale con possibilità di recepire uno stream da #jellyfin mediante un [proxy](https://wiki.archlinux.org/title/Jellyfin#Clients) #htpc
- https://github.com/mpv-player/mpv
- Per svuotare il cestino di un istanza #nextcloud all'interno di un container #Docker da #linuxcommandline
- Per svuotare il cestino di un istanza #nextcloud all'interno di un container #docker da #linuxcommandline
- ```bash
docker exec -it -u www-data nextcloud_app_1 ./occ trashbin:cleanup --all-users
```

View file

@ -1,4 +1,4 @@
- Per effettuare il debug di una mancata partenza del demone #Docker tramite #systemd
- Per effettuare il debug di una mancata partenza del demone #docker tramite #systemd
- ```bash
sudo journalctl -u docker -n 100 --no-pager
```

View file

@ -1,3 +1,3 @@
- Per installare #Docker su una distro Kali Linux con package manger `apt` occorre modificare il file `docker.list` inserendo come nome della release `bookworm` o comunque la release `Debian` da cui quella distribuzione di Kali deriva
- Per installare #docker su una distro Kali Linux con package manger `apt` occorre modificare il file `docker.list` inserendo come nome della release `bookworm` o comunque la release `Debian` da cui quella distribuzione di Kali deriva
- **07:46** [[quick capture]]: [Show HN: Sqinn-Go is a Golang library for accessing SQLite databases in pure Go](https://news.ycombinator.com/item?id=37769633) #sqlite #Golang #Probo
- **18:52** [[quick capture]]: [Bitmagnet: A self-hosted BitTorrent indexer, DHT crawler, and torrent search](https://news.ycombinator.com/item?id=37777347) #htpc #torrent

View file

@ -8,7 +8,6 @@
- Il parametro `id` identifica in maniera univoca il test da svolgere
- Si potrebbe pensare di scrivere il db sqlite all'interno di un file locale e di trasferire tutto il file sul backend in modo da ricrearlo in remoto.
- **10:36** [[quick capture]]: [FAQ - Docker Mailserver](https://docker-mailserver.github.io/docker-mailserver/latest/faq/) #docker #mailserver
- **10:39** [[quick capture]]: [VPS Hosting » Server virtuali | Da 1 €/mese | IONOS](https://www.ionos.it/server/vps) #vpn #vps #selfhosting
- **10:43** [[quick capture]]: [Configuring NGINX as a Mail Proxy Server | NGINX Documentation](https://docs.nginx.com/nginx/admin-guide/mail-proxy/mail-proxy/) #nginx #selfhosting
- Conversazione con #GPT-4 su configurazione #openvpn #wireguard
- guard e deve servire solo per raggiungere i servizi della mia infrastruttura homelab sulla rete 10.6.0.0/24 e il DNS server all'indirizzo 10.2.0.100. L'altra VPN è basata sul servizio ExpressVPN e funziona attraverso OpenVPN. Per quest'ultima possiedo il file di configurazione ovpn. La VPN basata su ExpressVPN mi serve per "uscire" su internet. Di conseguenza, l'IP pubblico associato alla mia macchina dev'essere quello fornito da Express VPN. Mostrami la configurazione necessaria e rilevante per configurare la mia distribuzione Arch Linux in modo da gestire contemporaneamente le due VPN.
@ -99,7 +98,7 @@
3: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/none
```
- **10:36** [[quick capture]]: [FAQ - Docker Mailserver](https://docker-mailserver.github.io/docker-mailserver/latest/faq/) #docker #mailserver
- **10:36*
- **10:39** [[quick capture]]: [VPS Hosting » Server virtuali | Da 1 €/mese | IONOS](https://www.ionos.it/server/vps) #vpn #vps #selfhosting
- **10:43** [[quick capture]]: [Configuring NGINX as a Mail Proxy Server | NGINX Documentation](https://docs.nginx.com/nginx/admin-guide/mail-proxy/mail-proxy/) #nginx #selfhosting
- **13:56** [[quick capture]]: [FAQ - Docker Mailserver](https://docker-mailserver.github.io/docker-mailserver/latest/faq/)

View file

@ -1,4 +1,4 @@
- Per aggiungere un nuovo utente in #HedgeDoc utilizzando #Docker da #linuxcommandline
- Per aggiungere un nuovo utente in #HedgeDoc utilizzando #docker da #linuxcommandline
- ```bash
docker exec -it -e NODE_ENV=production hedgedoc-app-1 bin/manage_users --add posta@andreafazzi.eu --pass Phae3kie
```

View file

@ -1,5 +1,5 @@
- Servizi #homelab #mittelab
- L'infrastruttura è basata su macchine virtuali su cui girano container #Docker
- L'infrastruttura è basata su macchine virtuali su cui girano container #docker
- Nodo compute
- Nodo storage
- [Go Pass](https://github.com/gopasspw/gopass) (come pass)

View file

@ -2,5 +2,4 @@
- ```lisp
(set-face-attribute 'default nil :height 100)
```
=======
- **15:16** [[quick capture]]: [A Bunch of Programming Advice I'd Give to Myself 15 Years Ago](https://news.ycombinator.com/item?id=40829607) #programming

View file

@ -1,3 +1,5 @@
- Documentazione per l'installazione di #synapse, un'implementazione libera di #matrix
- https://github.com/element-hq/synapse
- **12:16** [[quick capture]]: [SSH forwarding with reverse proxy (Traefik) - Traefik / Traefik v3 (latest) - Traefik Labs Community Forum](https://community.traefik.io/t/ssh-forwarding-with-reverse-proxy-traefik/24246) #traefik #ssh #homelab
- **13:35** [[quick capture]]: [Traefik Docker Documentation - Traefik](https://doc.traefik.io/traefik/providers/docker/)
- **15:32** [[quick capture]]: [synapse/contrib/docker/docker-compose.yml at develop · matrix-org/synapse](https://github.com/matrix-org/synapse/blob/develop/contrib/docker/docker-compose.yml) #synapse #traefik

1
journals/2024_10_02.md Normal file
View file

@ -0,0 +1 @@
- Tunneling #wireguard con #traefik

30
journals/2024_10_03.md Normal file
View file

@ -0,0 +1,30 @@
- Colloquio con Apollonio
- La metà degli intervenuti che rappresenti la metà
- Fare l'assemblea prima che scada l'anno
- Bilancio consuntivo
- Chiedere all'amministratore revoca e nomna nuovo amministratore
- Non abbiamo l'anagrafe del condominio
- Nomina dell'amministratore
- Chiedere un certificato di anagrafe
- Nominare d'ufficio un nuovo amministratore tramite tribunale
- Bilancio consuntivo
- studio@aesse
- g.apollonio@inwind.it
- La delega dev'essere scritta , lei può avere la delega
- Mi faccia vedere la delega
- Vediamo quando scade il mandato
- Pulizie
- Colloquio con tirocinante #teaching
- 24+24+12 in classe
- 12 ore programmazione delle lezioni
- 6 ore per inclusione
- Progetto musica e fisica, musica e matematica
- Esperienza a scuola solo alle medie
- Occorre matematica e fisica
- Martedì, mercoledì 8, 9 non può
- 3403025458
- s260605@ds.units.
- Inviare l'orario
- 10 ore a settimana
- Inizio tirocinio 21.10
- Inviare l'orario

View file

@ -1,2 +1,21 @@
- **15:55** [[quick capture]]: [i-am-shodan/USBArmyKnife: USB Army Knife the ultimate close access tool for penetration testers and red teamers.](https://github.com/i-am-shodan/USBArmyKnife)
- **20:07** [[quick capture]]: [nginx - Adding Traefik StripPrefix middleware to docker-compose labels results in 504 - Stack Overflow](https://stackoverflow.com/questions/58492175/adding-traefik-stripprefix-middleware-to-docker-compose-labels-results-in-504#71377580) #traefik #homelab
- Autorizzazioni alle uscite 2 C LIN #scuola #teaching
- Mancano Ceci e Lanzilotti
- Patto di corresponsabilità
- Karim
- Bernardi
- Ceci
- Fabris
- Grazio
- Hong
- Wang
- Ma
- Pavesi
- Redic
- Sbrizzai
- Zavattin
- Zhou1
- Verri assenza del 01.10 è un ritardo. Lo studente entra alle 09.00.
- Bernardi assenza del 04.10 è un ritardo. Lo studente entra alle 09.50.
- Riunione con Oliva #meti

View file

@ -1 +1,5 @@
- **22:01** [[quick capture]]: [HealthyPi Move | Crowd Supply](https://www.crowdsupply.com/protocentral/healthypi-move)
- Per troncare/rimuovere tutti i log da un sistema #docker #podman
- ```bash
truncate -s 0 /var/lib/docker/containers/**/*-json.log
```

9
journals/2024_10_06.md Normal file
View file

@ -0,0 +1,9 @@
- Importazione #Karmen a. s. 2024/2025
- ~~Inserire i nomi dei docenti "Senza nome"~~
- Inserire coordinatori e verbalizzanti
- ~~Inserire attività di sostegno~~
- Inserire attività del musicale
- Inserire operatori sostegno
- Inserire attività di Scienze motorie "condivise"
- Eliminare docenti non in servizio
- ~~Esportare elenco degli studenti~~

4
journals/2024_10_07.md Normal file
View file

@ -0,0 +1,4 @@
- Se si è attivata per sbaglio l'opzione `force_ssl` in una configurazione #LimeSurvey nel caso in cui l'host non supporti SSL, occorre operare direttamente sul database per disattivarla
- ```mysql
UPDATE settings_global SET stg_value='off' where stg_name='force_ssl';
```

View file

@ -1,2 +1,5 @@
- **19:17** [[quick capture]]: [all-in-one/reverse-proxy.md at main · nextcloud/all-in-one](https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md)
- Tergeste amministrazione
- Configurare #nextcloud dietro a #traefik
- https://www.smarthomebeginner.com/traefik-docker-nextcloud/
id:: 670547eb-adc4-41b7-9aeb-b16db4e06a93

View file

@ -1,2 +1,4 @@
- **14:44** [[quick capture]]: [The Static Site Paradox | Loris Cro's Blog](https://kristoff.it/blog/static-site-paradox/)
- **15:28** [[quick capture]]: [PsyChip/machina: OpenCV+YOLO+LLAVA powered video surveillance system](https://github.com/PsyChip/machina)
- Configurazione di #nginx per #nextcloud
- https://docs.nextcloud.com/server/30/admin_manual/installation/nginx.html

View file

@ -1 +1,10 @@
- **08:05** [[quick capture]]: [linux - How to switch to system wide dark theme in i3 or sway? - Unix & Linux Stack Exchange](https://unix.stackexchange.com/questions/655790/how-to-switch-to-system-wide-dark-theme-in-i3-or-sway) #sway
- Per eseguire un upgrade completo di una distribuzione #ubuntu server
- ```bash
sudo apt install ubuntu-release-upgrader-core
sudo do-release-upgrade -d
```
- Abstract per intervento al #linux day di Ferrara il 26.10.2024
- «The cloud is someone else's computer», si dice. Esiste una strada percorribile verso l'autosufficienza digitale? E' possibile riprendere possesso di una propria dimensione personale nella rete? E se sì, a che prezzo? Internet nasce come strumento libero per lo scambio di informazioni e la ricerca. Sussistono ancora i presupposti per uno spazio realmente democratico in essa? Si proverà a dare qualche risposta (parziale) a queste domande presentando una possibile infrastruttura per un #homelab.
- Un'applicazione web per creare mascotte #golang #Probo
- https://gopherize.me/

3
journals/2024_10_12.md Normal file
View file

@ -0,0 +1,3 @@
- Messaggio di cui tenere conto durante aggiornamento del ThinkCentre #homelab
- ![image.png](../assets/image_1728737830339_0.png)
-

View file

@ -1,2 +1,3 @@
- **20:11** [[quick capture]]: [Exploring Typst, a new typesetting system similar to LaTeX](https://news.ycombinator.com/item?id=41821361)
-
- Presentazione di se stessi per il #linux day del 26.10.2024 a Ferrara
- Sono un docente di Matematica e Fisica nella scuola pubblica italiana e programmatore full-stack, fissato con il retrogaming e con il ritorno ad uno sviluppo web "senza fronzoli". Quando ho scritto la mia prima accozzaglia di istruzioni BASIC avevo sei anni e pigiavo la tastiera di gomma del giocattolo di Sir Clive Sinclair. Quando poso il gesso, mi occupo di sviluppare piattaforme web per le istituzioni scolastiche italiane. Infrattando un vecchio ThinkCentre nell'armadio della cameretta dei bimbi, ho iniziato il percorso esistenziale che mi porterà all'autosufficienza digitale, alla faccia degli oligopoli GAFAM dai quali vorrei rendere indipendenti tutti coloro i quali sono disposti ad accettare che nulla di ciò che conta è facile da ottenere.

2
journals/2024_10_15.md Normal file
View file

@ -0,0 +1,2 @@
-
-

View file

@ -1 +1,7 @@
- Myanonamause.net
- Sostituto di `waybar` per #sway
- https://github.com/enkore/i3pystatus/
- Per collegarsi ad un processo lanciato su #linuxcommandline e che sta impiegando molto tempo per terminare la sua esecuzione si può utilizzare il comando `strace` passando come argomento il PID del processo.
- ```bash
sudo strace -pPID
```

9
journals/2024_10_17.md Normal file
View file

@ -0,0 +1,9 @@
- Uso del comando `podman unshare` per mappare i UID e GID all'interno di un container #podman
id:: 6712155b-8c8b-4b6e-b956-efc3e8254474
- https://www.redhat.com/en/blog/rootless-podman-makes-sense
- Per ottenere l'ID di un gruppo in #linuxcommandline
- ```bash
getent group GROUPNAME
```
- Una discussione sui permessi delle cartelle da montare con #nextcloud
- https://help.nextcloud.com/t/next-cloud-docker-cannot-create-or-write-into-the-data-directory-eurror/176432/

View file

@ -1,2 +1,28 @@
- **07:44** [[quick capture]]: [FAQ - HedgeDoc 2 Docs](https://docs.hedgedoc.dev/faq/) #mermaid
- **07:46** [[quick capture]]: [podman-auto-update — Podman documentation](https://docs.podman.io/en/latest/markdown/podman-auto-update.1.html) #podman #homelab
- Problema di autenticazione #HedgeDoc
- https://community.hedgedoc.org/t/cant-login-by-email-with-using-a-reverse-proxy/1991/3
- Fare auto-update di container #podman con #systemd
- https://www.redhat.com/en/blog/podman-auto-updates-rollbacks
- Articolo interessante su come configurare #traefik con #podman utilizzando #systemd
- https://gerov.eu/posts/traefik-for-podman/
- Studenti che non hanno consegnato il Patto Educativo di Corresponsabilità 2 C LIN #teaching
- ABDELMAGYD
- BERNARDI
- FABRIS
- HONG
- WANG
- REDIC
- SBRIZZAI
- Per configurare correttamente il container #wireguard con #podman occorre sistemare dei permessi sul `docker-compose.yml`
- https://github.com/containers/podman/issues/8784#issuecomment-749167726
- ```yaml
wireguard:
depends_on: [unbound, pihole]
image: linuxserver/wireguard
container_name: wireguard
cap_add:
- NET_ADMIN
- NET_RAW # <-- podman needs that!
- SYS_MODULE
```

View file

@ -1,2 +1,3 @@
- **13:36** [[quick capture]]: [Using nginx as a reverse proxy - Support - HedgeDoc Community](https://community.hedgedoc.org/t/using-nginx-as-a-reverse-proxy/244)
- **13:42** [[quick capture]]: [How to Self-Host a HedgeDoc Instance Using Docker: Installation, HTTPS, Backups, Updates, User Management - David Augustat](https://davidaugustat.com/web/hedgedoc-on-docker-compose)
- https://www.eigenmagic.com/2021/09/21/connecting-nginx-reverse-stream-proxy-to-docker-with-traefik/ #nginx #traefik

9
journals/2024_10_20.md Normal file
View file

@ -0,0 +1,9 @@
- Considerazioni di Enzo sulla casa in montagna
- Mancanza di manodopera
- Gestione del riscaldamento
- Impianti elettrici
- Separazione delle linee
- Salvavita
- Impianto di riscaldamento
- Minimo € 40000 per renderle vivibili
- Tetto dev'essere perfetto

View file

@ -1 +1,21 @@
- **14:13** [[quick capture]]: [Replace Docker Compose with Quadlet for Servers](https://matduggan.com/replace-compose-with-quadlet/)
- Rivedere n. 448 dopo equazioni #teaching
- Utilizzo di #traefik con #podman e `quadlets`
- https://github.com/eriksjolund/podman-traefik-socket-activation/blob/main/examples/example1/mytraefik.container
- Blog post sui `quadlet`, una tecnologia di #podman per una migliore integrazione con #systemd
- https://mo8it.com/blog/quadlet/
- Aggiornare un'istanza #nextcloud da #linuxcommandline con #podman
- ```bash
podman exec -it -u www-data nextcloud-app-1 php occ maintenance:mode --off
podman exec -it -u www-data nextcloud-app-1 php occ upgrade
```
- Riferimento
- https://help.nextcloud.com/t/how-to-easily-fix-this-nextcloud-instance-is-currently-in-maintenance-mode/181001
- Telefonata con agenzia Alpe Adria SAS
- Telefono 0433 197 0127
- Casa costruita negli anni '60
- Non c'è impianto di riscaldamento (solo stufe)
- Impianto elettrico risalente all'epoca di costruzione della casa
- Condizioni del tetto buone (è stata fatta sempre la manutenzione)
- Infissi risalenti agli anni '60 mai sostituiti
- Non si effettuano visite di sabato ma il venerdì si può fare una visita anche in tardo pomeriggio (da quello che ho capito dalle stringate parole del tipo)

View file

@ -1,4 +1,45 @@
- **13:59** [[quick capture]]: [Replace Docker Compose with Quadlet for Servers](https://matduggan.com/replace-compose-with-quadlet/)
- **15:13** [[quick capture]]: [stormrider](https://billwear.github.io/art-of-attention.html) #mindfulness
-
- Shampoo con PH acido
- Tutorial su #quadlets
- https://linuxconfig.org/how-to-run-podman-containers-under-systemd-with-quadlet
- Passi base per utilizzare #quadlets di #podman con #systemd
- Creare la cartella
- ```bash
mkdir -p ~/.config/containers/systemd
```
- Creare un file di configurazione `proxy.network`per una rete
- ```toml
[Unit]
Description=Proxy
```
- Creare un file di configurazione per un container #traefik `traefik.container`
- ```toml
[Unit]
Description=Traefik container
[Container]
Image=traefik:latest
Network=proxy.network
PublishPort=80:80
PublishPort=443:443
Volume=%h/srv/volumes/traefik/traefik.yml:/traefik.yml
Volume=/run/user/1000/podman/podman.sock:/var/run/docker.sock
[Install]
WantedBy=multi-user.target
```
- Generare i servizi #systemd
- ```bash
systemctl --user daemon-reload
```
- Verificare che i servizi siano stati generati
- ```bash
systemctl --user cat proxy-network.service
systemctl --user cat traefik.service
```
- Avviare i servizi #systemd
- ```bash
systemctl --user start proxy-network.service
systemctl --user start traefik.service
```

2
journals/2024_10_24.md Normal file
View file

@ -0,0 +1,2 @@
- Software per la somministrazione di test
- https://stack-assessment.org/

3
journals/2024_10_25.md Normal file
View file

@ -0,0 +1,3 @@
- Verifiche orali
- Ussai
- 9

View file

@ -2,3 +2,9 @@
- **17:31** [[quick capture]]: [Forgejo Runner installation guide | Forgejo Beyond coding. We forge.](https://forgejo.org/docs/latest/admin/runner-installation/)
- **17:56** [[quick capture]]: [Routing SSH traffic with Traefik v2 - Traefik / Traefik v2 - Traefik Labs Community Forum](https://community.traefik.io/t/routing-ssh-traffic-with-traefik-v2/717)
- **20:25** [[quick capture]]: https://news.ycombinator.com/item?id=41971118
- Attenzione, se si utilizza una versione di #podman inferiore alla 5 e se il container va configurato utilizzando la chiave `Entrypoint`, occorre sostituire con `PodmanArgs` nei file di configurazione dei #quadlets
- ```toml
[Container]
# Entrypoint=/cron.sh │3f61e6fe providerName=docker serviceName=paperless
PodmanArgs=--entrypoint=/cron.sh
```

18
journals/2024_10_30.md Normal file
View file

@ -0,0 +1,18 @@
- Token #Gogs per #forgejo
- 68623ddb94edf3d93b31ac280acc03762e5bd631
- Presenze corso "Il meraviglioso mondo delle TIC"
- Rosalba LUSSI
- Paola APICELLA
- Luca MARTORELLI
- Barbara FERRO
- Manuela BANDEL
- Raffaele ZAGARIA
- Manuela ABRAM
- Carmela MAIOLO
- Marisa INTEMPERANTE
- Chiara GALATI RANDO
- Stefano FAZIO
- Giada DI CHIARA
- Antonino DE LUCA
- Carmela TESTA
- Michele MARASSI

View file

@ -762,7 +762,7 @@
sudo apt-get -y install podman
```
- Consultare la [documentazione](https://podman.io/getting-started/) per familiarizzare con i comandi principali
- Creare un `alias` per #Docker
- Creare un `alias` per #docker
- ```bash
alias docker='podman'
```

View file

@ -0,0 +1,53 @@
## Introduzione al corso
- Prerequisiti
- Modalità di fruizione
- Strumenti utilizzati
- ## Obiettivi del corso
- Conoscere i principi alla base delle TIC
- Acquisire gli strumenti per un utilizzo consapevole degli strumenti di lavoro
- Proporre strategie per lavorare meglio in meno tempo
- ## Hardware
- Processore (CPU)
- Memoria di sistema (RAM)
- Memoria di archiviazione (Dischi)
- Periferiche di Input/Output
- Schede di rete
- Permette alle macchine di connettersi ad una rete di computer
- Connessione Wireless (WiFi)
- Connessione via cavo (Ethernet)
- ## Software
- Il Sistema Operativo (SO)
- Windows
- Linux
- Android -> Linux
- E' il software più importante installato all'interno della macchina utilizzata
- Il browser web
- Firefox
- Chrome
- Edge
- Safari (Apple)
- Le applicazioni predefinite di sistema
- Aprire i file PDF
- Esplorare file e cartelle
- Leggere e inviare posta elettronica
- Le applicazioni per ufficio
- Suite per ufficio più utilizzata è MS OFFICE
- Word
- Excel
- PowerPoint
- ...
- ## La rete
- Le reti di computer
- I protocolli di rete
- https://www.google.it/
- HTTPS <- secure => sicuro
- Form
- Internet
- ARPANET intorno agli anni '60
- World Wide Web (WWW) negli anni '90
- L'idea di cloud
- Nuvola -> Cloud
- Locale VS Cloud
- Il cloud è il computer di qualcun altro!
-
-

66
pages/Linux Day 2024.md Normal file
View file

@ -0,0 +1,66 @@
## #selfhosting : la via per l'indipendenza digitale
- ### Chi sono
- Andrea Fazzi
- Docente di Matematica e Fisica
- Programmatore full-stack
- Utente GNU/Linux da circa 30 anni :)
- ### Il problema
- Vorrei avere uno spazio di archiviazione remoto per ma...
- non voglio utilizzare [Amazon S3](https://aws.amazon.com/it/s3/) perché non **voglio sorprese sulla fattura**
- le foto digitali dei miei figli devono rimanere nell'**armadio della loro cameretta**
- Vorrei provare #grocy, un ERP per gestire la mia dispensa ma...
- non voglio che le informazioni sulle mie abitudini alimentari siano memorizzate su uno storage **che non controllo**
- affitto un piccolo #vps spendendo ~5 € al mese, ha poca RAM e non ho intenzione di passare ad un **piano tariffario superiore** per provare un software che forse non continuerò ad usare
- Vorrei poter scansionare dei documenti tramite applicazione mobile e archiviarli su uno spazio condiviso però...
- le diagnosi cliniche della mia famiglia **devono rimanere tra le mura domestiche**
- Vorrei un calendario condiviso, compatibile con `caldav` ma...
- non vorrei che le IA di #Google o qualche dipendente affetto da manie di grandezze (`god mode`) sappiano quand'è la mia prossima pulizia dentale
- Vorrei che i miei contatti venissero sincronizzati con il mio smartphone tramite `carddav` ma non vorrei che #Google venga a conoscere
- la data di nascita di mia zia
- il numero di cellulare di mia moglie
- Vorrei un server #git su cui mettere in revisione i miei progetti ma non voglio
- pagare #Github per uno o più repository privati
- dare il mio codice in pasto alle IA
- Vorrei gestire un **mio nodo VPN** che a monte funga anche da *ad-blocker*.
- Vorrei un DNS locale che risolva i nomi delle macchine all'interno della VPN
- Vorrei che alcuni servizi fossero raggiungibili da rete pubblica e altri fossero confinati all'interno di una #vpn
- In definitiva
- I miei dati sono miei!
- Il cloud è il computer di qualcun altro (molti altri)
- Vorrei una possibilità di storage (quasi) senza limiti a costi accessibili
- Oggi tutto si affitta e nulla si possiede!
- ### La soluzione
- Un #vps da quattro soldi (5 €) su #hetzner
- Un #thinkcentre nell'armadio dei bimbi
- Un tunnel #vpn
- Due reverse-proxy #traefik che si parlano da un capo all'altro
- Una manciata di servizi
- Uno storage remoto con calendario e contatti #nextcloud
- Un servizio per l'achiviazione di documenti #paperless
- Un server #git con interfaccia web #gogs
- Un servizio per gestire la dispensa #grocy
- Una #vpn integrata con #pihole per l'*ad-blocking*
- ### L'infrastruttura
- #### Hardware
- Una linea xDSL a 100/50 Mbit/s
- Un #vps #hetzner
- ![image.png](../assets/image_1729780747017_0.png)
- Un #thinkcentre di qualche anno fa (~100 € sul mercato dell'usato)
- ![image.png](../assets/image_1729780942325_0.png)
- Due harddisk esterni Western Digital Elements a 5 TB ciascuno (!!!)
- ![image.png](../assets/image_1729782020246_0.png)
- #### Software
- #ubuntu server 24.04
- #podman
- #restic + #cron per i #backup
- #### Pagina wiki
- https://hedgedoc.andreafazzi.eu/s/HYQca5cyY#
- ### Sviluppi futuri
- Migrare da #docker `compose` ai #quadlets
- Migrare da #ubuntu a una distro #redhat compatibile tipo [Rocky Linux](https://rockylinux.org/it) per via del supporto "nativo" di #podman
- Disaccoppiare i servizi attualmente riuniti in `wirehole` (#wireguard e #pihole )
- Migrare a #kubernetes...?
- ### Grazie!
- posta@andreafazzi.eu
-
-

View file

@ -1,8 +1,8 @@
- Da fine febbraio 2023 alla metà di marzo 2023 ho effettuato la migrazione del sito #wordpress della Rete dei Licei Economici Sociali italiani
- Il passaggio è avvenuto da un server dedicato configurato con container LXC verso un #vps Hetzner modello CX21 configurato con #ubuntu 22 e #Docker
- Il passaggio è avvenuto da un server dedicato configurato con container LXC verso un #vps Hetzner modello CX21 configurato con #ubuntu 22 e #docker
- ## Tentativo di migrazione preservando #wordpress
- Le criticità affrontate ~~e risolte~~ durante la migrazione hanno riguardato principalmente la risoluzione di problemi di versione tra #wordpress #php
- L'immagine #Docker ufficiale di #wordpress prevede di montare la cartella wp-content da host a container. Insieme alla migrazione del database ~~consente~~ consentirebbe di effettuare un passaggio pulito
- L'immagine #docker ufficiale di #wordpress prevede di montare la cartella wp-content da host a container. Insieme alla migrazione del database ~~consente~~ consentirebbe di effettuare un passaggio pulito
- Per modificare la password di admin occorre modificare il database e calcolare una stringa mediante #Hashing
- Il tema attuale del portale non era più disponibile per il download e quindi non era più aggiornabile. Questo avrebbe esposto il sito a **gravi problemi di sicurezza** poiché si sarebbe rimasti vincolati a determinate versioni di #wordpress e #php . Utilizzando la [Wayback Machine](https://web.archive.org) dell'Internet Archive si è riusciti a recuperare un [riferimento](https://web.archive.org/web/20160319160922/http://themnific.com/theme/decoblog-theme/) al tema non più mantenuto avendo conferma della sua vetustità e non aggiornabilità.
- ### Immagine ufficiale #wordpress

3
pages/docker.md Normal file
View file

@ -0,0 +1,3 @@
- `docker` è un gestore di container
title:: docker
- nel mio #homelab è stato sostituito da #podman

5
pages/emacs.md Normal file
View file

@ -0,0 +1,5 @@
- E' un editor di testi e ambiente di sviluppo creato da Richard Matthew Stallman
- ## Installare la versione TUI su macchine #ubuntu server
- ```bash
sudo apt install emacs-nox
```

View file

@ -0,0 +1,9 @@
excalidraw-plugin:: true
- #+BEGIN_IMPORTANT
This file is used to store excalidraw information, Please do not manually edit this file.
#+END_IMPORTANT
- {{renderer excalidraw-menu, excalidraw-2024-10-24-13-15-45}}
- ```json
{"elements":[{"id":"-jCE-1F6f9qP_9znmynzd","type":"freedraw","x":879,"y":213,"width":107,"height":150,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":null,"seed":1260146870,"version":38,"versionNonce":363753642,"isDeleted":false,"boundElements":null,"updated":1729768554121,"link":null,"locked":false,"points":[[0,0],[-1,2],[-5,7],[-13,18],[-18,32],[-23,50],[-24,67],[-23,80],[-20,92],[-17,101],[-12,111],[-5,120],[4,129],[14,138],[24,144],[32,148],[39,150],[53,150],[62,147],[71,142],[77,136],[81,128],[83,121],[83,118],[83,114],[76,107],[66,104],[58,103],[52,104],[47,108],[43,112],[39,120],[38,121],[38,122],[37,122],[37,123],[37,123]],"pressures":[],"simulatePressure":true,"lastCommittedPoint":[37,123]}],"files":{},"appState":{"gridSize":null,"viewBackgroundColor":"#ffffff","zoom":{"value":1},"offsetTop":20,"offsetLeft":0,"scrollX":0,"scrollY":0,"viewModeEnabled":false,"zenModeEnabled":false}}
```

View file

@ -0,0 +1,8 @@
excalidraw-plugin-library:: true
- #+BEGIN_IMPORTANT
This file is used to store excalidraw information, Please do not manually edit this file.
#+END_IMPORTANT
- ```json
[]
```

View file

@ -1,7 +1,7 @@
- E' un sistema di revisione basato su #git
- E' presente tra i servizi del mio #homelab
- Si integra con #podman e #traefik
- Consente un #CDCI alla #Github
- Consente un #CDCI alla #Github actions
- Configurazione #homelab
- `docker-compose.yml` implementato per poter funzionare con #traefik
- ```yaml

68
pages/grocy.md Normal file
View file

@ -0,0 +1,68 @@
- Grocy è un'applicazione web per gestire la dispensa della propria casa
- ## Backup
- Il database è all'interno di un file #sqlite, ancora non esiste una funzione per fare import/export del db.
- https://github.com/grocy/grocy/issues/129
- Il database si trova all'interno di `/app/www/data/`
- ## Installazione e configurazione nell' #homelab
- Se si vuole installare Grocy sul VPS dietro ad un reverse proxy #traefik si può utilizzare il seguente file di configurazione
- ```yaml
services:
grocy:
image: lscr.io/linuxserver/grocy:latest
container_name: grocy
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Rome
volumes:
- ./data/:/config/data/
restart: unless-stopped
labels:
- traefik.http.routers.grocy.entrypoints=websecure
- traefik.http.routers.grocy.tls=true
- traefik.http.routers.grocy.rule=Host(`grocy.hackersgarage.dev`)
- traefik.http.routers.grocy.tls.certresolver=letsencrypt
- com.centurylinklabs.watchtower.enable=true
networks:
- proxy
- default
```
- Se si vuole installare Grocy dietro ad una #vpn #wireguard e usare il VPS come nodo di accesso pubblico
- ```yaml
networks:
proxy:
external: true
services:
wireguard:
image: lscr.io/linuxserver/wireguard
privileged: true
restart: unless-stopped
cap_add:
- NET_ADMIN
- SYS_MODULE
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Rome
volumes:
- ./wg0.conf:/config/wg0.conf
- /lib/modules:/lib/modules
networks:
- proxy
- default
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
grocy:
container_name: grocy
build: ./web
restart: unless-stopped
network_mode: "service:wireguard"
labels:
- traefik.http.routers.grocy.entrypoints=websecure
- traefik.http.routers.grocy.tls=true
- traefik.http.routers.grocy.rule=Host(`grocy.hackersgarage.dev`)
- traefik.http.routers.grocy.tls.certresolver=letsencrypt
- traefik.http.services.grocy.loadbalancer.server.port=80
- com.centurylinklabs.watchtower.enable=true
```

205
pages/homelab.md Normal file
View file

@ -0,0 +1,205 @@
- Nel corso degli anni ho implementato un'infrastruttura di servizi informatici personale, ospitata per quanto possibile su macchine in mio completo controllo.
- I servizi attualmente installati sono
- #traefik Un reverse proxy
- #grocy Un'applicazione web per la gestione della propria dispensa
- #serverarr Una suite di applicazione web per lo streaming audio e video
- #invidious Un proxy per lo streaming di contenuti #youtube
- #LimeSurvey Un sistema di sondaggi
- L'architettura hardware presenta una parte pubblica costituita attualmente da un #vps #hetzner e da una parte privata dislocata nella mia abitazione.
- Sul #vps è installato un servizio #wireguard + #pihole che funge da punto di entrata pubblico. Il traffico viene incanalato mediante un reverse-proxy #traefik verso i container #docker in esecuzione sul #vps che a loro volta eseguono un tunneling verso la sezione privata dell'infrastruttura mediante un proxy #nginx opportunamente configurato utilizzando la direttiva `proxy_pass`. I certificati SSL vengono gestiti automaticamente da #traefik.
- Sul lato privato dell'infrastruttura girano i servizi veri e propri (cloud storage, git server, CI/CD pipeline, servarr, ecc.). Questi servizi non sono direttamente esposti alla rete pubblica ma dialogano attraverso il tunnel #vpn #wireguard.
- Esempio di configurazione #traefik su #vps
- ```yaml
## docker-compose.yml
services:
traefik:
image: traefik:latest
container_name: traefik
ports:
- "80:80"
- "443:443"
volumes:
- ./config/traefik.yml:/traefik.yml
- ./certificates/acme.json:/acme.json
- /var/run/docker.sock:/var/run/docker.sock
networks:
- proxy
networks:
proxy:
external: true
```
- ```yaml
## traefik.yml
log:
level: INFO
api:
dashboard: true
insecure: true
entryPoints:
web:
address: ":80"
websecure:
address: ":443"
providers:
docker:
network: proxy
certificatesResolvers:
letsencrypt:
acme:
email: postmaster@andreafazzi.eu
storage: acme.json
httpChallenge:
entryPoint: web
```
- Esempio di configurazione di un punto di accesso pubblico sul #vps con tunneling verso la sezione private dall'infrastruttura.
- ```yaml
## docker-compose.yml
networks:
proxy:
external: true
services:
wireguard:
image: lscr.io/linuxserver/wireguard
privileged: true
restart: unless-stopped
cap_add:
- NET_ADMIN
- SYS_MODULE
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Rome
volumes:
- ./wg0.conf:/config/wg0.conf
- /lib/modules:/lib/modules
networks:
- proxy
- default
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
limesurvey:
build: ./web
restart: unless-stopped
network_mode: "service:wireguard"
labels:
- traefik.http.routers.limesurvey.entrypoints=websecure
- traefik.http.routers.limesurvey.tls=true
- traefik.http.routers.limesurvey.rule=Host(`sondaggi.hackersgarage.dev`)
- traefik.http.routers.limesurvey.tls.certresolver=letsencrypt
- traefik.http.services.limesurvey.loadbalancer.server.port=80
```
- ```nginx
## nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
server {
listen 80;
location / {
# The domain is registerd in the pihole's local DNS
proxy_pass http://limesurvey.homeserver.vpn/;
}
}
}
```
- Esempio di servizio attivo sulla #vpn e raggiungibile mediante tunneling
- Configurazione di #traefik sul lato privato
- ```yaml
## docker-compose.yml
services:
traefik:
image: traefik:latest
container_name: traefik
ports:
- "80:80"
volumes:
- ./config/traefik.yml:/traefik.yml
- /var/run/docker.sock:/var/run/docker.sock
networks:
- proxy
networks:
proxy:
external: true
```
- ```yaml
## traefik.yml
log:
level: INFO
api:
dashboard: true
insecure: true
entryPoints:
web:
address: ":80"
providers:
docker:
network: proxy
```
- Esempio di servizio su lato privato raggiungibile da IP pubblico tramite tunneling #wireguard #LimeSurvey
- ```yaml
## docker-compose.yml
networks:
proxy:
external: true
services:
limesurvey:
image: acspri/limesurvey
restart: unless-stopped
environment:
- LIMESURVEY_DB_HOST=db
- LIMESURVEY_DB_USER=limesurvey
- LIMESURVEY_DB_PASSWORD=PASSWORD
- LIMESURVEY_ADMIN_USER=admin
- LIMESURVEY_ADMIN_PASSWORD=PASSWORD
- LIMESURVEY_ADMIN_NAME=Lime Administrator
- LIMESURVEY_ADMIN_EMAIL=email@foo.org
volumes:
- ./plugins:/var/www/html/plugins
- ./upload:/var/www/html/upload
- ./config:/var/www/html/application/config
networks:
- default
- proxy
labels:
- traefik.http.routers.limesurvey.entrypoints=web
- traefik.http.routers.limesurvey.rule=Host(`limesurvey.homeserver.vpn`)
- com.centurylinklabs.watchtower.enable=true
db:
image: mariadb
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
restart: unless-stopped
volumes:
- db:/var/lib/mysql
env_file:
- db.env
volumes:
db:
```

1
pages/mailserver.md Normal file
View file

@ -0,0 +1 @@
- All'interno del mio #homelab è configurato un server di posta basato su [docker-mailserver](https://docker-mailserver.github.io/docker-mailserver/latest/).

113
pages/nextcloud.md Normal file
View file

@ -0,0 +1,113 @@
- E' una delle componenti fondamentali dell'#homelab. Si tratta di un'applicazione web che integra al suo interno diversi servizi tra cui
- Calendario compatibile con CalDAV
- Contatti compatibile con CardDAV
- File storage
- Mail client
- Kanban
- Organizzatore di contenuti multimediali
- ...
- Permette di gestire gran parte dei propri dati in maniera efficace, sicura e privata.
- Nell'#homelab il servizio `nextcloud` è effettivamente attivo sul lato privato dell'infrastruttura
- Esso consiste principalmente in un `docker-compose.yml` con il seguente contenuto
- ```yaml
## docker-compose.yml
networks:
cherry:
driver: bridge
driver_opts:
com.docker.network.driver.mtu: 1400
ipam:
driver: default
config:
- subnet: 172.20.4.0/24
gateway: 172.20.4.1
services:
db:
image: mariadb:10.5
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
restart: always
volumes:
- ./db:/var/lib/mysql
networks:
- cherry
redis:
image: redis:alpine
restart: always
networks:
- cherry
app:
image: nextcloud:fpm-alpine
restart: always
ports:
- 9100:9000
volumes:
- ${ROOT}:/var/www/html
- /media/penta/backup/nextcloud:/backup
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Rome
- MYSQL_HOST=db
- REDIS_HOST=redis
- OVERWRITEHOST=housecloud.andreafazzi.eu
- OVERWRITEPROTOCOL=https
- DEFAULT_LANGUAGE=it
depends_on:
- db
- redis
labels:
- "com.centurylinklabs.watchtower.enable=true"
networks:
- cherry
web:
build: ./web
restart: always
volumes:
- ${ROOT}:/var/www/html:ro
ports:
- 8080:80
depends_on:
- app
networks:
- cherry
cron:
image: nextcloud:fpm-alpine
restart: always
volumes:
- ${ROOT}:/var/www/html
entrypoint: /cron.sh
depends_on:
- db
- redis
networks:
- cherry
```
- Per il configurare il servizio è necessario anche compilare un file `.env`
- ```
# Your timezone, https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
TZ=Europe/Rome
# UNIX PUID and PGID, find with: id $USER
PUID=1000
PGID=1000
# The directory where data and configuration will be stored.
ROOT=/media/penta/nextcloud
# DB params
MYSQL_ROOT_PASSWORD=nextcloud
MYSQL_PASSWORD=nextcloud
MYSQL_DATABASE=nextcloud
MYSQL_USER=nextcloud
```
- Durante un eventuale processo di migrazione da #docker a #podman è necessario modificare i permessi della volume con *bind* su `/var/www/html`.
- ```bash
sudo chown -R 100081:100081 /media/penta/nextcloud/
```
- ((6712155b-8c8b-4b6e-b956-efc3e8254474))

3
pages/paperless.md Normal file
View file

@ -0,0 +1,3 @@
- E' un software per l'achiviazione e la gestione di documenti
- https://docs.paperless-ngx.com/
- Fa parte del mio #homelab

View file

@ -1,6 +1,35 @@
## Introduzione
- Podman è un gestore di container come docker che funziona in modalità serverless
- ## Installazione su un sistema #archlinux
- `podman` è un gestore di container come #docker che funziona anche in modalità serverless
- Nel mese di ottobre 2024 ho iniziato a migrare i servizi del mio #homelab su #podman
- Rimozione di una precedente installazione di #docker preliminare all'installazione di #podman
- ```bash
sudo apt-get purge -y docker-engine docker docker.io docker-ce docker-ce-cli docker-compose-plugin
sudo apt-get autoremove -y --purge docker-engine docker docker.io docker-ce docker-compose-plugin
```
- Qualora si vogliano rimuovere anche i file e le cartelle relativi alla precedente installazione di #docker
- ```bash
sudo rm -rf /var/lib/docker /etc/docker
sudo rm /etc/apparmor.d/docker
sudo groupdel docker
sudo rm -rf /var/run/docker.sock
sudo rm -rf /var/lib/containerd
sudo rm -r ~/.docker
```
- Rimuovere eventuali interfacce di rete `bridge` create da `docker` (script creato con l'ausilio del #llm `phind` )
- ```bash
#!/bin/bash
# Check if we're running with root privileges
if [ "$(id -u)" != "0" ]; then
echo "This script must be run with sudo"
exit 1
fi
# Find all interfaces starting with 'br-' and delete them
for interface in $(ip link show | grep -oP '^(.*br-\S+)' | cut -d':' -f2- | sed 's/.$//'); do
ip link delete $interface
done
```
- Installazione su un sistema #archlinux
id:: 66f12589-34d7-4a14-b226-d59679c70d28
- Per installare `podman` su un sistema Arch Linux in modo che funzioni come `docker`
- ```bash
@ -21,23 +50,61 @@
ln -s /run/user/$(id -u)/podman/podman.sock docker.sock
docker ps # test the aliasing
```
- ## Installazione su un sistema #debian
- Installazione su un sistema #debian
- Per installare `podman` su un sistema Debian/Ubuntu in modo che funzioni come `docker`
- ```bash
sudo apt remove
sudo apt install podman podman-docker
```
- Migrazione da #docker a #podman
- Assicurarsi di avere a disposizione i dati all'interno dei volumi docker, eventualmente esportando e reimportando i database
- Nel caso di #mariadb
- ```bash
docker exec -i gogs-db-1 mariadb-dump -ugogs -pgogs gogs > sql/gogs-14_10_2024.sql
docker exec -i gogs-db-1 mariadb -ugogs -pgogs gogs < sql/gogs-14_10_2024.sql
```
- Nel caso di #postgres
- ```bash
# Esportazione
docker exec -t your-db-container pg_dumpall -c -U postgres > dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql
# Importazione
cat sql/mastodon_14_10_2024.sql | docker exec -i mastodon-db-1 psql -U mastodon
```
- Rimuovere #docker dal sistema
- ```bash
sudo apt-get purge -y docker-engine docker docker.io docker-ce docker-ce-cli docker-compose-plugin
sudo apt-get autoremove -y --purge docker-engine docker docker.io docker-ce docker-compose-plugin
```
- Per emulare le funzionalità di `docker compose`
- ```bash
systemctl enable podman.socket
systemctl start podman.socket
## Installare i pacchetti podman-compose e docker-compose
## es: sudo pacman -S podman-docker && sudo pacman -S docker-compose
## rootful mode
sudo systemctl enable podman.socket
sudo systemctl start podman.socket
## rootless mode
systemctl --user enable --now podman.socket
wget https://github.com/docker/compose/releases/download/v2.29.7/docker-compose-linux-x86_64
## rootful mode
chmod +x ...
mv docker-compose /usr/bin/
```
- **Attenzione** per un bug di podman su Ubuntu 24.04 è necessario utilizzare un repository sperimentale
- Per disabilitare il messaggio di avviso di utilizzo di un provider esterno per compose
- https://docs.podman.io/en/latest/markdown/podman-compose.1.html
- ~~**Attenzione** per un bug di podman su Ubuntu 24.04 è necessario utilizzare un repository sperimentale~~ (potrebbe non essere più necessario alla data del 16.10.2024)
- ```bash
sudo add-apt-repository ppa:brightbox/experimental
sudo apt update
sudo apt upgrade
```
- Riferimento: https://www.monotux.tech/posts/2024/09/ubuntu-2404-podman/
- Gestire i container #podman con #systemd
- Creare la cartella `~./config/systemd`
- ```bash
mkdir ~/.config/systemd
```

7
pages/quadlets.md Normal file
View file

@ -0,0 +1,7 @@
- Si tratta di file di configurazione che permettono di gestire container nel contesto di #systemd
- Per i #quadlets si utilizzi l'API di #systemd
- Di fatto sostituiscono i file `docker-compose.yml` #docker
- Per monitorare i log di un servizio configurato tramite #quadlets
- ```bash
journalctl --user -fxeu traefik
```

View file

@ -1,13 +1,15 @@
- Traefik è un reverse proxy utilizzato nella mia infrastruttura #homelab
- ## Configurazione mediante #Docker
- [Traefik](https://doc.traefik.io/traefik/) è un *reverse proxy* utilizzato nella mia infrastruttura #homelab
- La documentazione *quick start* relativa è raggiungibile qui
- https://doc.traefik.io/traefik/getting-started/quick-start/
- Esiste sotto forma di servizio #docker tramite cui è possibile attivare con pochi passaggi un'instanza su un server
- Creare le cartelle necessarie (configurazione e certificati SSL gestiti da #letsencrypt)
- ```bash
mkdir -p traefik/config traefik/certificates
touch traefik/certificates/acme.json
```
- Creare il `docker-compose.yml`
- ```yaml
# docker-compose.yml
services:
traefik:
image: traefik:latest
@ -21,15 +23,15 @@
- /var/run/docker.sock:/var/run/docker.sock
networks:
- proxy
networks:
proxy:
external: true
```
- Ricordarsi poi di creare la rete
- Creare la rete che sarà condivisa tra i servizi che vorranno usufruire del *reverse proxy*.
- ```bash
docker network create proxy
```
<<<<<<< HEAD
- ```yaml
# traefik.yml
@ -60,3 +62,39 @@
```
-
-
=======
- Creare un file di configurazione
- ```yaml
# traefik.yml
log:
level: INFO
api:
dashboard: true
insecure: true
entryPoints:
web:
address: ":80"
websecure:
address: ":443"
providers:
docker:
network: proxy
certificatesResolvers:
letsencrypt:
acme:
email: postmaster@andreafazzi.eu
storage: acme.json
httpChallenge:
entryPoint: web
```
- Se si sta utilizzando #traefik con #podman rootless occorre modificare il file `/etc/sysctl.conf` in modo da consentire l'apertura di una porta con numero minore di 1024 e ricaricare la configurazione
- ```conf
### /etc/sysctl.conf
## Append to the end of the file
net.ipv4.ip_unprivileged_port_start=80
```
- ```bash
sudo sysctl --system
```
>>>>>>> d03938438b1166bd25533239648dc47b2ece4a05