From 25e77d9a732e33a7890726df4780e2cc69b5c73f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1rcio=20Fernandes?= Date: Sun, 11 Jun 2023 08:36:00 +0100 Subject: [PATCH] feat: duplicati backup influxdb trace --- .gitignore | 14 +- README.md | 105 +++++++-------- doc/administration/README.md | 25 ---- .../images/git-homessistant-dashboard.png | Bin 10363 -> 0 bytes docker-compose.yaml | 126 +++++++++--------- 5 files changed, 119 insertions(+), 151 deletions(-) delete mode 100644 doc/administration/README.md delete mode 100644 doc/administration/images/git-homessistant-dashboard.png diff --git a/.gitignore b/.gitignore index 2015afa..9bd7321 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ -**.env -_volumes -_volumes -.vscode -*.env -*.env.d/* -localSettings/ +**.env +_volumes +_volumes +.vscode +*.env +*.env.d/* +localSettings/ diff --git a/README.md b/README.md index 1916d4b..9104232 100644 --- a/README.md +++ b/README.md @@ -1,58 +1,47 @@ -# git.limbosolutions.com - -Welcome to public repository of my [Git Server](https://git.limbosolutions.com) - -Using [gitea](https://git.limbosolutions.com/kb/gitea) and [duplicati](https://git.limbosolutions.com/kb/duplicati) for backups. - -[Check](doc/administration/README.md) for more information about admistration. - -## Requirements - -- Docker -_Currently hosted on an ubuntu lxc container with docker and portainer [+ information](https://git.limbosolutions.com/kb/lxc)._ - -- [Duplicati Image with mySql client](https://git.limbosolutions.com/kb/duplicati/src/branch/main/docker/mysqlclient/README.md) - -## Setup - -[Docker Compose File](docker-compose.yaml) - -## Backup & Restore - -Using [duplicati](https://git.limbosolutions.com/kb/duplicati) to daily backups of files and databases. - -- Backup Name: git -- Destination Server: backupsrv01.dev.lan -- Destination Path: /git.limbosolutions.com/duplicati/git -- Source Data : /git (check [Docker Compose File](docker-compose.yaml) for folder structure on /git) -- Schedule: every day at 1 am -- run-script-before-required:/duplicati-mysqlclient/scripts/backupdb.sh - -### Settings - -#### Default Options - -```bash - ---send-mail-any-operation=true ---send-mail-body=%RESULT% ---send-mail-level=all ---send-mail-subject=Duplicati %OPERATIONNAME% report for wiki.limbosolutions.com -> %backup-name% ---send-mail-to=to@email ---send-http-result-output-format=Duplicati ---send-mail-url= smtp://serveraddress:25 ---send-mail-password=username ---send-mail-username=pass - -``` - -### Restore Database - -```bash -#select a file to import -ls /db-dumps -#select a file to import -DB_FILE= "file name to import" -mysql --host db -uroot -p ${MYSQL_DATABASE} < /db-dumps/$DB_FILE -#root password (root password is the enviromnent variable ${MYSQL_ROOT_PASSWORD}) -``` +# git.limbosolutions.com + +Welcome to public repository of my [Git Server](https://git.limbosolutions.com) + +Using [gitea](https://git.limbosolutions.com/kb/gitea) and [duplicati](https://git.limbosolutions.com/kb/duplicati) for backups. + + +## Requirements + +- Docker +- Docker Compose +- Portainer (optional) +- [Duplicati Image with mySql client](https://git.limbosolutions.com/kb/duplicati/src/branch/main/docker/mysqlclient/README.md) + + +## Setup + +[Docker Compose File](docker-compose.yaml) + +## Backup and Restore + +Using [custom duplicati image](https://git.limbosolutions.com/kb/duplicati) to daily backups files and databases. Every action (backup/restore) creates an measurement in influxdb for reporting and alerts. + + +### Duplicati - Default Options + +Notify Influxdb. + +--run-script-after=duplicati-influxdb-notify + +### Duplicati - git job Options + +Create db dump. + +run-script-before-required:duplicati-mysql-backup + +### Restore Database + +```bash +#select a file to import +ls /db-dumps +#select a file to import +DB_FILE= "file name to import" +mysql --host db -uroot -p ${MYSQL_DATABASE} < /db-dumps/$DB_FILE +#root password (root password is the enviromnent variable ${MYSQL_ROOT_PASSWORD}) +``` + diff --git a/doc/administration/README.md b/doc/administration/README.md deleted file mode 100644 index aa62bea..0000000 --- a/doc/administration/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# Administration - -## HomeAssistant DashBoard - -![Home Assistant Dashboard](images/git-homessistant-dashboard.png "Home Assistant Dashboard") - -```yaml -type: vertical-stack -cards: - - type: entities - entities: - - type: weblink - name: Homepage - url: http://git.limbosolutions.com - - type: weblink - name: Backups - url: http://wansrv01.dev.lan:8200/ - - type: weblink - name: Hosting - url: wansrv01 - - type: weblink - name: Git - url: https://git.limbosolutions.com/limbosolutions.com/git.limbosolutions.com - title: git.limbosolutions.com -``` diff --git a/doc/administration/images/git-homessistant-dashboard.png b/doc/administration/images/git-homessistant-dashboard.png deleted file mode 100644 index 490571bcfb90cf8ca705ff8317409ba1789f93a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10363 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 diff --git a/docker-compose.yaml b/docker-compose.yaml index 96d8b64..779143d 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,61 +1,65 @@ -version: "3" -services: - app: - image: gitea/gitea:1.18 - environment: - - GITEA__database__DB_TYPE=mysql - - GITEA__database__HOST=db:3306 - - GITEA__database__NAME=${DB_NAME} - - GITEA__database__USER=${DB_USER} - - GITEA__database__PASSWD=${DB_PASSWORD} - - DISABLE_SSH=true - restart: unless-stopped - volumes: - - data:/data - - /etc/timezone:/etc/timezone:ro - - /etc/localtime:/etc/localtime:ro - ports: - - ${GITEA_PORT}:80 - networks: - - gitea - db: - image: mysql:8 - networks: - - gitea - restart: unless-stopped - environment: - - MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD} - - MYSQL_USER=${DB_USER} - - MYSQL_PASSWORD=${DB_PASSWORD} - - MYSQL_DATABASE=${DB_NAME} - volumes: - - db:/var/lib/mysql - - /etc/timezone:/etc/timezone:ro - - /etc/localtime:/etc/localtime:ro - - db-dumps:/db-dumps:ro - duplicati: - image: duplicati-mysqlclient #https://git.limbosolutions.com/kb/duplicati/src/branch/main/docker/mysqlclient - networks: - - gitea - environment: - - MYSQL_HOST=db - - MYSQL_DATABASE=${DB_NAME} - - MYSQL_USER=${DB_USER} - - MYSQL_PASSWORD=${DB_PASSWORD} - - DESTINATION=/git/db-dumps - volumes: - - duplicati-data:/data - - duplicati-data:/git/duplicati-data:ro - - data:/git/data:ro - - db:/git/db:ro - - db-dumps:/git/db-dumps - ports: - - ${DUPLICATI_PORT}:8200 - restart: unless-stopped -volumes: - duplicati-data: - data: - db: - db-dumps: -networks: - gitea: +version: "3" +services: + app: + image: gitea/gitea:1.18 + environment: + - GITEA__database__DB_TYPE=mysql + - GITEA__database__HOST=db:3306 + - GITEA__database__NAME=${DB_NAME} + - GITEA__database__USER=${DB_USER} + - GITEA__database__PASSWD=${DB_PASSWORD} + - DISABLE_SSH=true + restart: unless-stopped + volumes: + - data:/data + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + ports: + - ${GITEA_PORT}:80 + networks: + - gitea + db: + image: mysql:8 + networks: + - gitea + restart: unless-stopped + environment: + - MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD} + - MYSQL_USER=${DB_USER} + - MYSQL_PASSWORD=${DB_PASSWORD} + - MYSQL_DATABASE=${DB_NAME} + volumes: + - db:/var/lib/mysql + - /etc/timezone:/etc/timezone:ro + - db-dumps:/db-dumps:ro + duplicati: + image: duplicati-mysqlclient #https://git.limbosolutions.com/kb/duplicati/src/branch/main/docker/mysqlclient + networks: + - gitea + environment: + - MYSQL_HOST=db + - MYSQL_DATABASE=${DB_NAME} + - MYSQL_USER=${DB_USER} + - MYSQL_PASSWORD=${DB_PASSWORD} + - MYSQL_BACKUP_FOLDER=/bck/db-dumps + - INFLUXDB_SERVER=${INFLUXDB_SERVER} + - INFLUXDB_BUCKET=${INFLUXDB_BUCKET} + - INFLUXDB_ORG=${INFLUXDB_ORG} + - INFLUXDB_TOKEN=${INFLUXDB_TOKEN} + - INFLUXDB_CLIENT_HOSTNAME=${INFLUXDB_CLIENT_HOSTNAME} + volumes: + - duplicati-data:/data + - duplicati-data:/bck/duplicati-data:ro + - data:/bck/data:ro + - db:/bck/db:ro + - db-dumps:/bck/db-dumps + ports: + - ${DUPLICATI_PORT}:8200 + restart: unless-stopped +volumes: + duplicati-data: + data: + db: + db-dumps: +networks: + gitea: