Initial commit: Complete workspace configuration
- MOper/ configurations - home-assistant/ configurations - scripts/ automation scripts - unix/ system configurations - docker/ Docker services (app, devtools, database, infra, maintenance, portainer, supervision, test) Excludes: databases, logs, large files, Git submodules, secrets (via .gitignore)
This commit is contained in:
0
scripts/.gitkeep
Normal file
0
scripts/.gitkeep
Normal file
87
scripts/Docker-duplicati.json
Normal file
87
scripts/Docker-duplicati.json
Normal file
@@ -0,0 +1,87 @@
|
||||
{
|
||||
"CreatedByVersion": "2.1.0.5",
|
||||
"Schedule": {
|
||||
"ID": 2,
|
||||
"Tags": [
|
||||
"ID=2"
|
||||
],
|
||||
"Time": "2025-09-04T02:00:00Z",
|
||||
"Repeat": "1D",
|
||||
"LastRun": "0001-01-01T00:00:00Z",
|
||||
"Rule": "AllowedWeekDays=Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday,Monday",
|
||||
"AllowedDays": [
|
||||
"Tuesday",
|
||||
"Wednesday",
|
||||
"Thursday",
|
||||
"Friday",
|
||||
"Saturday",
|
||||
"Sunday",
|
||||
"Monday"
|
||||
]
|
||||
},
|
||||
"Backup": {
|
||||
"ID": "2",
|
||||
"Name": "Dockers",
|
||||
"Description": "",
|
||||
"Tags": [],
|
||||
"TargetURL": "file:///backups/docker/",
|
||||
"DBPath": "/config/SLHCLSSLIX.sqlite",
|
||||
"Sources": [
|
||||
"/source/docker/"
|
||||
],
|
||||
"Settings": [
|
||||
{
|
||||
"Filter": "",
|
||||
"Name": "encryption-module",
|
||||
"Value": "aes",
|
||||
"Argument": null
|
||||
},
|
||||
{
|
||||
"Filter": "",
|
||||
"Name": "compression-module",
|
||||
"Value": "zip",
|
||||
"Argument": null
|
||||
},
|
||||
{
|
||||
"Filter": "",
|
||||
"Name": "dblock-size",
|
||||
"Value": "50mb",
|
||||
"Argument": null
|
||||
},
|
||||
{
|
||||
"Filter": "",
|
||||
"Name": "passphrase",
|
||||
"Value": "qTDKdabUESnxAg4XfU",
|
||||
"Argument": null
|
||||
},
|
||||
{
|
||||
"Filter": "",
|
||||
"Name": "retention-policy",
|
||||
"Value": "1W:1D,4W:1W,12M:1M",
|
||||
"Argument": null
|
||||
}
|
||||
],
|
||||
"Filters": [
|
||||
{
|
||||
"Order": 0,
|
||||
"Include": false,
|
||||
"Expression": "*logs*/"
|
||||
},
|
||||
{
|
||||
"Order": 1,
|
||||
"Include": false,
|
||||
"Expression": "*.sqlite"
|
||||
},
|
||||
{
|
||||
"Order": 1,
|
||||
"Include": false,
|
||||
"Expression": "*.sql"
|
||||
}
|
||||
],
|
||||
"Metadata": {},
|
||||
"IsTemporary": false
|
||||
},
|
||||
"DisplayNames": {
|
||||
"/source/docker/": "docker"
|
||||
}
|
||||
}
|
||||
94
scripts/Scripts-duplicati.json
Normal file
94
scripts/Scripts-duplicati.json
Normal file
@@ -0,0 +1,94 @@
|
||||
{
|
||||
"CreatedByVersion": "2.1.0.5",
|
||||
"Schedule": {
|
||||
"ID": 1,
|
||||
"Tags": [
|
||||
"ID=1"
|
||||
],
|
||||
"Time": "2025-09-04T02:00:00Z",
|
||||
"Repeat": "1D",
|
||||
"LastRun": "0001-01-01T00:00:00Z",
|
||||
"Rule": "AllowedWeekDays=Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday,Monday",
|
||||
"AllowedDays": [
|
||||
"Tuesday",
|
||||
"Wednesday",
|
||||
"Thursday",
|
||||
"Friday",
|
||||
"Saturday",
|
||||
"Sunday",
|
||||
"Monday"
|
||||
]
|
||||
},
|
||||
"Backup": {
|
||||
"ID": "1",
|
||||
"Name": "Scripts",
|
||||
"Description": "",
|
||||
"Tags": [],
|
||||
"TargetURL": "file:///backups/scripts/",
|
||||
"DBPath": "/config/SLHCLSSLIX.sqlite",
|
||||
"Sources": [
|
||||
"/source/scripts/"
|
||||
],
|
||||
"Settings": [
|
||||
{
|
||||
"Filter": "",
|
||||
"Name": "encryption-module",
|
||||
"Value": "aes",
|
||||
"Argument": null
|
||||
},
|
||||
{
|
||||
"Filter": "",
|
||||
"Name": "compression-module",
|
||||
"Value": "zip",
|
||||
"Argument": null
|
||||
},
|
||||
{
|
||||
"Filter": "",
|
||||
"Name": "dblock-size",
|
||||
"Value": "50mb",
|
||||
"Argument": null
|
||||
},
|
||||
{
|
||||
"Filter": "",
|
||||
"Name": "passphrase",
|
||||
"Value": "qTDKdabUESnxAg4XfU",
|
||||
"Argument": null
|
||||
},
|
||||
{
|
||||
"Filter": "",
|
||||
"Name": "retention-policy",
|
||||
"Value": "1W:1D,4W:1W,12M:1M",
|
||||
"Argument": null
|
||||
}
|
||||
],
|
||||
"Filters": [
|
||||
{
|
||||
"Order": 0,
|
||||
"Include": false,
|
||||
"Expression": "*logs*/"
|
||||
}
|
||||
],
|
||||
"Metadata": {
|
||||
"LastErrorDate": "20250903T191316Z",
|
||||
"LastErrorMessage": "Found 3 files that are missing from the remote storage, please run repair",
|
||||
"LastBackupDate": "20250903T190612Z",
|
||||
"BackupListCount": "1",
|
||||
"TotalQuotaSpace": "61075263488",
|
||||
"FreeQuotaSpace": "34794639360",
|
||||
"AssignedQuotaSpace": "-1",
|
||||
"TargetFilesSize": "8039",
|
||||
"TargetFilesCount": "3",
|
||||
"TargetSizeString": "7.851 KB",
|
||||
"SourceFilesSize": "4238",
|
||||
"SourceFilesCount": "5",
|
||||
"SourceSizeString": "4.139 KB",
|
||||
"LastBackupStarted": "20250903T190746Z",
|
||||
"LastBackupFinished": "20250903T190746Z",
|
||||
"LastBackupDuration": "00:00:00.1009045"
|
||||
},
|
||||
"IsTemporary": false
|
||||
},
|
||||
"DisplayNames": {
|
||||
"/source/scripts/": "scripts"
|
||||
}
|
||||
}
|
||||
38
scripts/backup_mariadb.sh
Normal file
38
scripts/backup_mariadb.sh
Normal file
@@ -0,0 +1,38 @@
|
||||
#!/bin/bash
|
||||
# Répertoire des backups
|
||||
BACKUP_DIR="/mnt/backup_syno/dumps/mariadb/$(date +%F)"
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
|
||||
# Paramètres de connexion (exposés par Docker)
|
||||
MARIADB_HOST="127.0.0.1"
|
||||
MARIADB_PORT="3306"
|
||||
MARIADB_USER="root"
|
||||
MARIADB_PASSWORD="&22dt4H4&owV8DPb"
|
||||
|
||||
# Vérifie si le client mysql est dispo
|
||||
if ! command -v mysql &> /dev/null; then
|
||||
echo "mysql non trouvé. Installation silencieuse du client MariaDB..."
|
||||
sudo apt-get update -qq
|
||||
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y mariadb-client > /dev/null
|
||||
fi
|
||||
|
||||
# Liste des bases (hors systèmes)
|
||||
DATABASES=$(mysql -h $MARIADB_HOST -P $MARIADB_PORT -u$MARIADB_USER -p$MARIADB_PASSWORD \
|
||||
-e "SHOW DATABASES;" 2>/dev/null | grep -Ev "(Database|information_schema|performance_schema|mysql|sys)")
|
||||
|
||||
if [ -z "$DATABASES" ]; then
|
||||
echo "Aucune base MariaDB trouvée ! Vérifie la connexion au conteneur."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Bases MariaDB trouvées :"
|
||||
echo "$DATABASES"
|
||||
|
||||
# Dump de chaque base
|
||||
for DB in $DATABASES; do
|
||||
echo "Dump de la base $DB..."
|
||||
mysqldump -h $MARIADB_HOST -P $MARIADB_PORT -u$MARIADB_USER -p$MARIADB_PASSWORD $DB \
|
||||
| gzip > "$BACKUP_DIR/${DB}_$(date +%F).sql.gz"
|
||||
done
|
||||
|
||||
echo "Backup MariaDB terminé dans $BACKUP_DIR"
|
||||
24
scripts/backup_postgres.sh
Normal file
24
scripts/backup_postgres.sh
Normal file
@@ -0,0 +1,24 @@
|
||||
#!/bin/bash
|
||||
# Répertoire des backups
|
||||
BACKUP_DIR="/mnt/backup_syno/dumps/postgres/$(date +%F)"
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
|
||||
# ---- Paramètres PostgreSQL ----
|
||||
POSTGRES_CONTAINER="postgres"
|
||||
POSTGRES_USER="postgres_user"
|
||||
POSTGRES_PASSWORD="3rL2&dyZMd7%BY"
|
||||
|
||||
export PGPASSWORD=$POSTGRES_PASSWORD
|
||||
|
||||
# Liste les bases (en se connectant à 'postgres')
|
||||
DATABASES=$(docker exec -e PGPASSWORD=$POSTGRES_PASSWORD $POSTGRES_CONTAINER \
|
||||
psql -U $POSTGRES_USER -d postgres -t -c "SELECT datname FROM pg_database WHERE datistemplate = false;")
|
||||
|
||||
for DB in $DATABASES; do
|
||||
DB=$(echo $DB | xargs) # supprime espaces éventuels
|
||||
echo "Dump PostgreSQL: $DB"
|
||||
docker exec -e PGPASSWORD=$POSTGRES_PASSWORD $POSTGRES_CONTAINER \
|
||||
pg_dump -U $POSTGRES_USER -d $DB | gzip > "$BACKUP_DIR/${DB}_postgres_$(date +%F).sql.gz"
|
||||
done
|
||||
|
||||
unset PGPASSWORD
|
||||
15
scripts/cleanup.sh
Normal file
15
scripts/cleanup.sh
Normal file
@@ -0,0 +1,15 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# Dossier contenant les sauvegardes
|
||||
BACKUP_DIR="/opt/backup/logs"
|
||||
|
||||
# Nombre de jours à conserver
|
||||
RETENTION_DAYS=7
|
||||
|
||||
echo "🔄 Nettoyage des sauvegardes de plus de $RETENTION_DAYS jours dans $BACKUP_DIR"
|
||||
|
||||
# Supprime les fichiers plus anciens que RETENTION_DAYS
|
||||
find "$BACKUP_DIR" -type f -mtime +$RETENTION_DAYS -name "*.sql.gz" -exec rm -v {} \;
|
||||
|
||||
echo "✅ Rotation terminée"
|
||||
15
scripts/fix_mariadb.sh
Normal file
15
scripts/fix_mariadb.sh
Normal file
@@ -0,0 +1,15 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
CONTAINER="mariadb" # nom du conteneur
|
||||
DATA_DIR="/srv/docker/database/data/mariadb" # volume host où tc.log est stocké
|
||||
|
||||
if docker logs "$CONTAINER" 2>&1 | grep -q "Bad magic header in tc log"; then
|
||||
echo "⚠️ Problème détecté → suppression de tc.log"
|
||||
docker stop "$CONTAINER"
|
||||
rm -f "$DATA_DIR/tc.log"
|
||||
docker start "$CONTAINER"
|
||||
echo "✅ Correction appliquée"
|
||||
else
|
||||
echo "✅ Rien à corriger"
|
||||
fi
|
||||
Reference in New Issue
Block a user