Deployment
Deployment
Before you start the deployment you have to do preparations.
Deployment Preparations
Since all deployment methods described here depend on Docker and DockerHub, you need to create your own organisation on DockerHub and put its name in the package.json file as your dockerOrganisation
.
Read more details in the main README under Usage.
Deployment Methods
You have the following options for a deployment:
After Deployment
After the first deployment of the new network on your server, the database is initialized with the default administrator:
- E-mail:
admin@example.org
- Password:
1234
ATTENTION: When you are logged in for the first time, please change your (the admin's) e-mail to an existing one and change your password to a secure one !!!
Using the Scripts
To use most of the scripts you have to set the variable CONFIGURATION
in your terminal by entering:
# in deployment folder
# set configuration name to folder name in 'configurations' folder (network name)
$ export CONFIGURATION=<your-configuration-name>
# to check this
$ echo $CONFIGURATION
Secrets Encrypt/Decrypt
To encrypt and decrypt the secrets of your network in your terminal set a correct password in a (new) file configurations/<your-configuration-name>/SECRET
. If done please enter:
# in deployment folder
# encrypt secrets
$ scripts/secrets.encrypt.sh
# decrypt secrets
$ scripts/secrets.decrypt.sh
Maintenance Mode On/Off
Activate or deactivate maintenance mode in your terminal:
# in deployment folder
# activate maintenance mode
$ scripts/cluster.maintenance.sh on
# deactivate maintenance mode
$ scripts/cluster.maintenance.sh off
Backup Scripts
Save backups.
Single Backup
To save a local backup of the database and uploaded images:
# in deployment folder
# save backup
$ scripts/cluster.backup.sh
The backup will be saved into your network folders backup
folder in a new folder with the date and time.
Default Database Name
To execute this script, it may be necessary to set the default database name in Neo4j.
In our deployments there are cases where the database is called neo4j
(used by default) and in other cases graph.db
(accidentally happened when we loaded the database into a new cluster).
In the new deployment with Helm, we set the default database name by the environment variable NEO4J_dbms_default__database
in the Helm values.yaml
. See Docker-specific configuration settings
For more information see Database Management Commands.
Multiple Networks Backup
In order to save several network backups locally, you must define the configuration names of all networks in .env
. The template for this is deployment/.env.dist
:
# in the deployment folders '.env' set as example
BACKUP_CONFIGURATIONS="stage.ocelot.social stage.wir.social"
BACKUP_SAVED_BACKUPS_NUMBER=7
If BACKUP_SAVED_BACKUPS_NUMBER <= 0
then no backups will be deleted.
To actually save all the backups run:
# in deployment folder
# save all backups listed in 'BACKUP_CONFIGURATIONS'
# delete all backups older then the 'BACKUP_SAVED_BACKUPS_NUMBER' newest ones
$ scripts/clusters.backup-multiple-servers.sh
The backups will be saved into your networks folders backup
folder in a new folder with the date and time.
Automated Backups
⚠️ Attention: Please check carefully whether really the oldest backups have been deleted. As shells on different systems behave differently with regard to the commands used in this script.
Install automated backups by a cron job. Be aware of having the bash shell installed to run the script. The environment variables for the automated backups are described above.
Installing a cron job by editing the cron table file:
# edit cron job table
$ crontab -e
In the editor add the line:
# in cron job table file
# set a cron job every night at 04am server time
# min hour day month weekday command
00 04 * * * /root/Ocelot-Social/deployment/scripts/clusters.backup-multiple-servers.sh >> /root/Ocelot-Social/deployment/backup-cron-job.log
This way the terminal output is written into a log file named backup-cron-job.log
located in the deployment folder.
Be aware that the server datetime can differ from your local time. Especially by the change between summer and winter time, because servers usually have UTC. Find out the actual difference by running the command date
on your server.