diff --git a/Backup/cron.sh b/Backup/cron.sh new file mode 100644 index 0000000..c793444 --- /dev/null +++ b/Backup/cron.sh @@ -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 \ No newline at end of file diff --git a/Backup/local.sh b/Backup/local.sh new file mode 100644 index 0000000..0b16cea --- /dev/null +++ b/Backup/local.sh @@ -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} diff --git a/Backup/mail.sh b/Backup/mail.sh new file mode 100644 index 0000000..ad6b1fd --- /dev/null +++ b/Backup/mail.sh @@ -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>" diff --git a/Helper/install.sh b/Helper/install.sh index c504b87..90e84d8 100755 --- a/Helper/install.sh +++ b/Helper/install.sh @@ -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