From 5b9dae1e6f78ecb2b7eb0ff564222fb761fbcefd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1rcio=20Fernandes?= Date: Sat, 10 Jun 2023 10:51:11 +0100 Subject: [PATCH] feat: Backups notifications (influxdb) --- .gitignore | 2 +- README.md | 109 ++++++++---------- doc/administration/README.md | 30 ----- .../images/git-homessistant-dashboard.png | Bin 16727 -> 0 bytes docker-compose.yaml | 106 +++++++++-------- 5 files changed, 104 insertions(+), 143 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 7538a1e..4a64789 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -.env +.env localSettings/* \ No newline at end of file diff --git a/README.md b/README.md index 7a72fd7..e6c603c 100644 --- a/README.md +++ b/README.md @@ -1,61 +1,48 @@ - - -# wiki.limbosolutions.com - -Welcome to public repository of my [wiki](https://wiki.limbosolutions.com) - -Using [media wiki](https://www.mediawiki.org/wiki/MediaWiki)) - -[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: wiki -- Destination Server: backupsrv01.dev.lan -- Destination Path: /wiki.limbosolutions.com/duplicati/wiki -- Source Data : /wiki (check [Docker Compose File](docker-compose.yaml) for folder structure on /wiki) -- Schedule: every day at 1:15 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}) -``` + + +# wiki.limbosolutions.com + +Welcome to public repository of my [wiki](https://wiki.limbosolutions.com). +Using [media wiki](https://www.mediawiki.org/wiki/MediaWiki). + + +## 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 - wiki 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 2844daf..0000000 --- a/doc/administration/README.md +++ /dev/null @@ -1,30 +0,0 @@ -# Administration - -## HomeAssistant DashBoard - -![Home Assistant Dashboard](images/git-homessistant-dashboard.png "Home Assistant Dashboard") - -```yaml -type: vertical-stack -cards: - - type: entities - entities: - - entity: sensor.limbowiki_info_status - name: Status - secondary_info: last-changed - - entity: sensor.limbowiki_info_version - name: Version - - type: weblink - name: Homepage - url: http://wiki.limbosolutions.com - - type: weblink - name: Duplicati - url: http://wansrv01.dev.lan:8202 - - type: weblink - name: Hosting - url: https://wansrv01.dev.lan:9443 - - type: weblink - name: Git - url: https://git.limbosolutions.com/limbosolutions.com/wiki.limbosolutions.com -title: wiki.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 8052a450766d1c03b93338309ded42ba62c07e43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16727 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 aw4- - sh -c " - chown -R www-data:www-data /mediawiki_data; - rm /var/www/html/LocalSettings.php; - rm /var/www/html/includes/PlatformSettings.php; - rm -r /var/www/html/images; - ln -s /mediawiki_data/config/LocalSettings.php /var/www/html/LocalSettings.php; - ln -s /mediawiki_data/config/PlatformSettings.php /var/www/html/includes/PlatformSettings.php; - ln -s /mediawiki_data/images /var/www/html/images; - apache2-foreground;" - restart: unless-stopped - db: - image: mariadb:10.6.2 - container_name: limbowiki_db - restart: unless-stopped - environment: - MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} - volumes: - - db_data:/var/lib/mysql - duplicati: - image: duplicati-mysqlclient:latest - container_name: limbowiki_duplicati - environment: - - MYSQL_HOST=db - - MYSQL_DATABASE=${MYSQL_DATABASE} - - MYSQL_USER=${MYSQL_USER} - - MYSQL_PASSWORD=${MYSQL_PASSWORD} - - DESTINATION=/wiki/db_dumps - volumes: - - duplicati_data:/data - - db_data:/wiki/db_data:ro - - app_data:/wiki/app_data:ro - - db-dumps:/wiki/db_dumps - ports: - - 8202:8200 - restart: unless-stopped -volumes: - db_data: - app_data: - duplicati_data: +version: '3.0' +services: + app: + image: mediawiki:1.39 + links: + - db + ports: + - ${APP_PORT}:80 + volumes: + - app_data:/mediawiki_data + command: > + sh -c " + rm /var/www/html/LocalSettings.php; + rm /var/www/html/includes/PlatformSettings.php; + rm -r /var/www/html/images; + ln -s /mediawiki_data/config/LocalSettings.php /var/www/html/LocalSettings.php; + ln -s /mediawiki_data/config/PlatformSettings.php /var/www/html/includes/PlatformSettings.php; + ln -s /mediawiki_data/images /var/www/html/images; + chown -R www-data:www-data /mediawiki_data; + chown -R www-data:www-data /var/www/html; + apache2-foreground;" + restart: unless-stopped + db: + image: mariadb:10.6.2 + restart: unless-stopped + environment: + MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} + volumes: + - db_data:/var/lib/mysql + duplicati: + image: duplicati-mysqlclient:latest + environment: + - MYSQL_HOST=db + - MYSQL_DATABASE=${MYSQL_DATABASE} + - MYSQL_USER=${MYSQL_USER} + - MYSQL_PASSWORD=${MYSQL_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 + - db_data:/bck/db_data:ro + - app_data:/bck/app_data:ro + - db-dumps:/bck/db_dumps + - duplicati_data:/bck/duplicati_data:ro + ports: + - 8202:8200 + restart: unless-stopped +volumes: + db_data: + app_data: + duplicati_data: db-dumps: \ No newline at end of file