Aggiunto snikket.md e corretto delle sviste nel file docker.md e formatfs.md

This commit is contained in:
piccihud 2023-12-24 18:14:45 +01:00
parent 8e24c7bbc8
commit 7f1257e9e4
3 changed files with 268 additions and 4 deletions

View File

@ -24,7 +24,7 @@ I container hanno molti vantaggi:
Se è vero che Docker crea container, non è altrettanto vero che i container sono Docker.
Docker non è l'unico strumento di containerizzazione sul mercato, è soltanto il più conosciuto. Un altro motore di containerizzazione che amo si chiama Podman, sviluppato da Red Hat
Docker non è l'unico strumento di containerizzazione sul mercato, è soltanto il più conosciuto. Un altro motore di containerizzazione si chiama Podman, sviluppato da Red Hat
## Cosè Docker

264
container/snikket.md Normal file
View File

@ -0,0 +1,264 @@
# Snikket
Si tratta di un progetto che, tramite l'utilizzo di container Docker, permette di installare un servizio su un server fisico o virtuale per configurarlo in modo da riuscire a gestire autonomamente la messaggistica tramite il protocollo XMPP.
## DNS
```bash
# Domain TTL Class Type Target
chat.example.com. 300 IN A 203.0.113.123
groups.chat.example.com 300 IN CNAME chat.example.com.
share.chat.example.com 300 IN CNAME chat.example.com.
```
## Docker
```bash
apt update && apt upgrade
```
Per Debian, seguire le istruzioni alla pagina [ufficiale](https://docs.docker.com/install/linux/docker-ce/debian/). In particolare:
```bash
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
# To install the latest version, run:
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Verify that the installation is successful by running the hello-world image:
sudo docker run hello-world
```
## Installazione di Snikket
```bash
mkdir /etc/snikket
cd /etc/snikket
# And then download our docker-compose.yml file:
curl -o docker-compose.yml https://snikket.org/service/resources/docker-compose
```
Quindi creare il file di configurazione di Snikket:
```bash
vim /etc/snikket
# The primary domain of your Snikket instance
SNIKKET_DOMAIN=chat.example.com
# An email address where the admin can be contacted
# (also used to register your Let's Encrypt account to obtain certificates)
SNIKKET_ADMIN_EMAIL=you@example.com
```
### Firewall
```bash
ufw default allow outgoing && ufw default deny incoming
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 5222/tcp
ufw allow 5269/tcp
ufw allow 5000/tcp
ufw allow 3478
ufw allow 3479
ufw allow 5349
ufw allow 5350
ufw allow 49152:65535/udp
```
Questo il risultato:
```bash
> ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] 22/tcp ALLOW IN Anywhere
[ 2] 80/tcp ALLOW IN Anywhere
[ 3] 443/tcp ALLOW IN Anywhere
[ 4] 5222/tcp ALLOW IN Anywhere
[ 5] 5269/tcp ALLOW IN Anywhere
[ 6] 5000/tcp ALLOW IN Anywhere
[ 7] 3478 ALLOW IN Anywhere
[ 8] 3479 ALLOW IN Anywhere
[ 9] 5349 ALLOW IN Anywhere
[10] 5350 ALLOW IN Anywhere
[11] 49152:65535/udp ALLOW IN Anywhere
[12] 1222/tcp (v6) ALLOW IN Anywhere (v6)
[13] 80/tcp (v6) ALLOW IN Anywhere (v6)
[14] 443/tcp (v6) ALLOW IN Anywhere (v6)
[15] 5222/tcp (v6) ALLOW IN Anywhere (v6)
[16] 5269/tcp (v6) ALLOW IN Anywhere (v6)
[17] 5000/tcp (v6) ALLOW IN Anywhere (v6)
[18] 3478 (v6) ALLOW IN Anywhere (v6)
[19] 3479 (v6) ALLOW IN Anywhere (v6)
[20] 5349 (v6) ALLOW IN Anywhere (v6)
[21] 5350 (v6) ALLOW IN Anywhere (v6)
[22] 49152:65535/udp (v6) ALLOW IN Anywhere (v6)
```
In particolare:
**TCP only**
|||
|--------|---------------------------------------------------------------------|
| 80/443 | Web Interface And Group File Sharing Service (HTTP(S)) |
| 5222 | Client App Connections (Client to Server) (XMPP-c2s) |
| 5269 | Federation With Other Snikket Servers (Server to Server) (XMPP-s2s) |
| 5000 | File Transfer Proxy (proxy65) |
**TCP and UDP**
|||
|-----------|------------------------------------------------------------------------------------|
| 3478/3479 | Audio/Video Data Proxy Negotiation and IP discovery (STUN/TURN) |
| 5349/5350 | Audio/Video Data Proxy Negotiations and IP Discovery over TLS (STUN/TURN over TLS) |
**UDP only**
|||
|-------------|-----------------------------------------------|
| 49152-65535 | Audio/Video Data Proxy (Turn Data, see below) |
Avviare il servizio col comando:
```bash
docker compose up -d
```
### Creazione utente admin
```bash
docker exec snikket create-invite --admin --group default
Viene generato un link utilizzabile una sola volta. Tutti gli altri utenti possono essere creati dal pannello di controllo una volta eseguito laccesso.
```
## Troubleshooting
[https://snikket.org/service/help/setup/troubleshooting/](https://snikket.org/service/help/setup/troubleshooting/)
```bash
# Checking for errors
cd /etc/snikket
docker-compose exec snikket_certs cat /var/log/letsencrypt/errors.log
# Force the renewal of certificates
cd /etc/snikket
docker-compose exec snikket_certs su letsencrypt -- -c "certbot renew --config-dir /snikket/letsencrypt --cert-path /etc/ssl/certbot --force-renew"
```
## Analisi docker-compose.yml
```bash
> cat /etc/snikket/docker-compose.yml
version: "3.3"
services:
# nome del servizio
snikket_proxy:
container_name: snikket-proxy
image: snikket/snikket-web-proxy:beta
# file con le variabili
env_file: snikket.conf
# Se si usa la modalità di rete host per un container, lo stack di rete del container non è isolato dall'host e al container non viene assegnato un proprio indirizzo IP. Per esempio, se si esegue un container che si lega alla porta 80 e si usa la rete host, l'applicazione del container è disponibile sulla porta 80 dell'indirizzo IP dell'host.
network_mode: host
# I volumi memorizzano e gestiscono i dati persistenti generati dai container effimeri. Consentono la persistenza dei dati anche dopo la rimozione o laggiornamento di un container.
volumes:
# Il volume snikket_data viene montato nella directory /snikket del container snikket_proxy
- snikket_data:/snikket
- acme_challenges:/var/www/html/.well-known/acme-challenge
# La clausola restart: "unless-stopped" indica il comportamento di riavvio del servizio in caso di interruzione o arresto.
# Nel caso di restart: "unless-stopped", Docker riavvierà automaticamente il container a meno che non venga esplicitamente arrestato dall'utente. Questa opzione è utile per garantire che il servizio torni in esecuzione automaticamente dopo eventuali problemi o riavvii del sistema. Tuttavia, se l'utente decide di arrestare manualmente il container, questa istruzione impedisce il riavvio automatico.
restart: "unless-stopped"
snikket_certs:
container_name: snikket-certs
image: snikket/snikket-cert-manager:beta
env_file: snikket.conf
volumes:
- snikket_data:/snikket
- acme_challenges:/var/www/.well-known/acme-challenge
restart: "unless-stopped"
snikket_portal:
container_name: snikket-portal
image: snikket/snikket-web-portal:beta
network_mode: host
env_file: snikket.conf
restart: "unless-stopped"
snikket_server:
container_name: snikket
image: snikket/snikket-server:beta
network_mode: host
volumes:
- snikket_data:/snikket
env_file: snikket.conf
restart: "unless-stopped"
volumes:
acme_challenges:
snikket_data:
```
### cli dei volumi
```bash
> docker volume help
Usage: docker volume COMMAND
Manage volumes
Commands:
create Create a volume
inspect Display detailed information on one or more volumes
ls List volumes
prune Remove all unused local volumes
rm Remove one or more volumes
```
## Comandi docker compose (in riferimento ai volumi)
Docker Compose fornisce diversi comandi che aiutano a gestire in modo efficace lapplicazione e le sue risorse. Nel dettaglio questi comandi e il loro rapporto con i volumi:
- `docker compose up`: crea e avvia lapplicazione, compresi i servizi, le reti e i volumi. Se si definisce un volume denominato nel file docker-compose.yml prima che esista, questo comando lo creerà automaticamente.
- `docker compose down`: arresta e rimuove i servizi e le reti dellapplicazione. Per impostazione predefinita, non rimuove i volumi denominati. Per rimuovere i volumi denominati, usare il flag `--volumes` o `-v`.
- `docker compose ps`: elenca i container e il loro stato attuale, comprese le informazioni relative ai volumi.
- `docker compose config`: convalida e visualizza la configurazione effettiva generata dal file docker-compose.yml, comprese le definizioni dei volumi.
## Update Snikket
```bash
cd /etc/snikket
docker compose down
docker compose pull
docker compose up -d
```
Per maggiori dettagli: [https://snikket.org/service/help/setup/upgrading/](https://snikket.org/service/help/setup/upgrading/)
## Collegamenti
- [https://clarintuxmail.eu.org/articles/server3.html](https://clarintuxmail.eu.org/articles/server3.html)
- [https://snikket.org/service/quickstart/](https://snikket.org/service/quickstart/)
- [https://docs.lugbz.org/install-snikket.html](https://docs.lugbz.org/install-snikket.html)
- [https://wiki.xmpp-it.net/index.php/Installazione_di_un_server_Snikket](https://wiki.xmpp-it.net/index.php/Installazione_di_un_server_Snikket)
- [https://snikket.org/service/help/advanced/firewall/](https://snikket.org/service/help/advanced/firewall/)
- [https://snikket.org/](https://snikket.org/)

View File

@ -129,18 +129,18 @@ sudo umount /dev/sda
Smontata la chiavetta dal sistema, digitare:
```bash
mkfs.ntfs /dev/sda -v
mkfs.ntfs /dev/sdaX -v
```
### EXT4
```bash
mkfs.ext4 /dev/sda -v
mkfs.ext4 /dev/sdaX -v
```
Un esempio:
```bash
sudo mkfs.ext4 -L "DAVIDE4GB" /dev/sda -v
sudo mkfs.ext4 -L "DAVIDE4GB" /dev/sdaX -v
mke2fs 1.46.6 (1-Feb-2023)
fs_types for mke2fs.conf resolution: 'ext4'