This commit is contained in:
Dennis Eichhorn 2023-07-09 02:32:01 +00:00
parent 91eb552f00
commit 77fd720d3e
4 changed files with 185 additions and 41 deletions

13
Backup/cron.sh Normal file
View File

@ -0,0 +1,13 @@
#!/bin/bash
MAIL_PASSWORD=""
MAIN_PATH="/var/www/html/Karaka/"
# 0 4 * * * /var/www/html/Karaka/Build/Backup/cron.sh
# Create backup
${MAIN_PATH}Build/Backup/backup.sh > /tmp/backup.log
# Mail log files
${MAIN_PATH}Build/Backup/mail.sh ${MAIL_PASSWORD} /tmp/backup.log
${MAIN_PATH}Build/Backup/mail.sh ${MAIL_PASSWORD} ${MAIN_PATH}Logs/$(date '+%Y-%m-%d').log

87
Backup/local.sh Normal file
View File

@ -0,0 +1,87 @@
#!/bin/bash
info() { printf "\n%s %s\n\n" "$( date )" "$*" >&2; }
trap 'echo $( date ) Backup interrupted >&2; exit 2' INT TERM
# Create log directories
BASH_BACKUP_PATH="/var/www/html/backup/bash"
mkdir -p ${BASH_BACKUP_PATH}
# Create database backup
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
DB_USER="jingga"
DB_PASSWORD="password"
DB_BACKUP_PATH="/var/www/html/backup/sql"
info "Starting mysql backup"
mkdir -p ${DB_BACKUP_PATH}
mysqldump -u ${DB_USER} -p${DB_PASSWORD} oms > oms_${TIMESTAMP}.sql
sql_exit=$?
# Create file backup
BACKUP_PATH="/home/spl1nes/backup"
TO_BACKUP="/var/www/html"
REMOTE_USER="user"
REMOTE_SERVER="192.168.178.38"
## Create repository
# borg init -v --encryption=repokey ${BACKUP_PATH}
# borg key export ${BACKUP_PATH} repokey
## Start backup
info "Starting file backup"
borg create \
--verbose \
--filter AME \
--list \
--stats \
--show-rc \
--compression lz4 \
--exclude-caches \
--exclude 'home/*/.cache/*' \
--exclude 'var/tmp/*' \
\
::'{hostname}-{utcnow}' \
${TO_BACKUP}
backup_exit=$?
## Only keep 7 daily, 4 weekly and 6 monthly backups
info "Pruning repository"
borg prune \
--list \
--glob-archives '{hostname}-*' \
--show-rc \
--keep-daily 7 \
--keep-weekly 4 \
--keep-monthly 6 \
--keep-yearly 10
prune_exit=$?
## Reduce disk space by compacting
info "Compacting repository"
borg compact ${BACKUP_PATH}
compact_exit=$?
# Handle global exit code
global_exit=$(( sql_exit > backup_exit ? sql_exit : backup_exit ))
global_exit=$(( prune_exit > global_exit ? prune_exit : global_exit ))
global_exit=$(( compact_exit > global_exit ? compact_exit : global_exit ))
if [ ${global_exit} -eq 0 ]; then
info "Backup finished successfully"
elif [ ${global_exit} -eq 1 ]; then
info "Backup, Prune, and/or Compact finished with warnings"
else
info "Backup, Prune, and/or Compact finished with errors"
fi
exit ${global_exit}

29
Backup/mail.sh Normal file
View File

@ -0,0 +1,29 @@
#!/bin/bash
MAIL_ACCESS='info@jingga.app'
MAIL_SECRET="$1"
MAIL_FROMNAME="JINGGA SERVER"
MAIL_FROMADDRESS="info@jingga.app"
MAIL_TONAME="Jingga Admin"
MAIL_TOADDRESS="info@jingga.app"
MAIL_SUBJECT="Log reports"
MAIL_SMTP="mail.privateemail.com"
MAIL_PORT="587"
MAIL_MESSAGE=$'This email contains automatically generated content.'
MAIL_FILE="$2"
MAIL_MIMETYPE=`file --mime-type "$MAIL_FILE" | sed 's/.*: //'`
curl \
-v \
--url smtps://$MAIL_SMTP:$MAIL_PORT \
--ssl-reqd \
--mail-from $MAIL_FROMADDRESS \
--mail-rcpt $MAIL_TOADDRESS \
--user $MAIL_ACCESS:$MAIL_SECRET \
-F '=(;type=multipart/mixed' \
-F "=$MAIL_MESSAGE;type=text/plain" \
-F "file=@$MAIL_FILE;type=$MAIL_MIMETYPE;encoder=base64" \
-F '=)' \
-H "Subject: $MAIL_SUBJECT" \
-H "From: $MAIL_FROMNAME <$MAIL_FROMADDRESS>" \
-H "To: $MAIL_TONAME <$MAIL_TOADDRESS>"

View File

@ -1,8 +1,11 @@
#!/bin/bash
# create new user
#adduser test
#usermod -aG sudo test
###############################################################
## General
###############################################################
# For every user .bash_profile
export PROMPT_COMMAND='if [ "$(id -u)" -ne 0 ]; then echo "$(date "+%Y-%m-%d.%H:%M:%S") $(pwd) $(history 1)" >> /var/www/html/backup/bash/$(date "+%Y-%m-%d").log; fi'
# Debian
#wget -q https://packages.sury.org/php/apt.gpg -O- | sudo apt-key add -
@ -13,7 +16,10 @@ add-apt-repository ppa:ondrej/php
apt-get update
apt-get install npm git composer cmake php8.1 php8.1-dev php8.1-cli php8.1-common php8.1-mysql php8.1-pgsql php8.1-xdebug php8.1-opcache php8.1-pdo php8.1-sqlite php8.1-mbstring php8.1-curl php8.1-imap php8.1-bcmath php8.1-zip php8.1-dom php8.1-xml php8.1-phar php8.1-gd php-pear apache2 mysql-server postgresql postgresql-contrib pcov wkhtmltopdf
apt-get install php8.1 php8.1-dev php8.1-cli php8.1-common php8.1-mysql php8.1-pgsql php8.1-xdebug php8.1-opcache php8.1-pdo php8.1-sqlite php8.1-mbstring php8.1-curl php8.1-imap php8.1-bcmath php8.1-zip php8.1-dom php8.1-xml php8.1-phar php8.1-gd php-pear apache2 mysql-server wkhtmltopdf tesseract-ocr
a2enmod rewrite
a2enmod headers
# USE mysql;
# mysql < 5.7
@ -29,6 +35,27 @@ apt-get install npm git composer cmake php8.1 php8.1-dev php8.1-cli php8.1-commo
# update mysql.user set plugin='' where user='root';
# flush privileges;
###############################################################
## Jingga Server
###############################################################
apt-get install git borgbackup
### Install borg
borg init -v --encryption=repokey /var/www/html
borg key export /var/www/html repokey
###############################################################
## Developer
###############################################################
apt-get install npm git composer cmake postgresql postgresql-contrib pcov
composer install
composer update
npm install -D jasmine jasmine-node istanbul jasmine-console-reporter supertest jasmine-supertest selenium-webdriver chromedriver geckodriver eslint
### Setup postgresql
# /etc/postgresq/hba_..
# change from md5 to trust
# login to psql and \password define new password
@ -41,8 +68,27 @@ service postgresql start
# https://www.sqlservercentral.com/blogs/reset-sa-password-on-sql-server-on-linux
# systemctl restart mssql-server
a2enmod rewrite
a2enmod headers
#Mssql
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/18.04/mssql-server-2019.list)"
apt-get update
apt-get install -y mssql-server
/opt/mssql/bin/mssql-conf setup
systemctl status mssql-server --no-pager
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
apt-get install libodbc1 unixodbc unixodbc-dev msodbcsql
https://packages.microsoft.com/config/ubuntu/18.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list
sudo apt-get update
sudo apt-get install mssql-tools unixodbc-dev
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/8.1/mods-available/sqlsrv.ini
printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/8.1/mods-available/pdo_sqlsrv.ini
phpenmod -v 8.1 sqlsrv pdo_sqlsrv
service apache2 restart
pecl install ast
@ -67,6 +113,10 @@ pecl install memcached
echo "extension=memcached.so" | tee /etc/php/8.1/mods-available/memcached.ini
phpenmod memcached
# create new user
#adduser test
#usermod -aG sudo test
# Install email server for testing
apt-get install dovecot-imapd dovecot-pop3d
# protocls = pop3 pop3s imap imaps
@ -75,45 +125,10 @@ apt-get install dovecot-imapd dovecot-pop3d
sudo useradd -d /home/test -g mail -u 1001 -s /bin/bash test
# Make sure no ssh is possible for this user
# npm
npm install -D jasmine jasmine-node istanbul jasmine-console-reporter supertest jasmine-supertest selenium-webdriver chromedriver geckodriver eslint
# FTP
apt-get install vsftpd
#OCR
sudo apt-get install tesseract-ocr
#tesseract ../copyright.png -c preserve_interword_spaces=1 stdout
# /etc/vstftpd.conf
# write_enable=YES
# anon_upload_enable=YES
# connect_from_port_20=NO
systemctl restart apache2
# consider:
# "mb_str_functions": true,
# "phpdoc_add_missing_param_annotation": true,
#Mssql
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/18.04/mssql-server-2019.list)"
apt-get update
apt-get install -y mssql-server
/opt/mssql/bin/mssql-conf setup
systemctl status mssql-server --no-pager
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
apt-get install libodbc1 unixodbc unixodbc-dev msodbcsql
https://packages.microsoft.com/config/ubuntu/18.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list
sudo apt-get update
sudo apt-get install mssql-tools unixodbc-dev
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/8.1/mods-available/sqlsrv.ini
printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/8.1/mods-available/pdo_sqlsrv.ini
phpenmod -v 8.1 sqlsrv pdo_sqlsrv
service apache2 restart