Ocelot-Social/deployment/deployment.md
2024-09-18 09:36:39 +02:00

5.0 KiB

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.