This application is a simple backup/restore library which creates offline/cold backups and pushes them to S3. Backups can be restored automatically but the bucket data directory needs to be emptied first as stellar-core-backup doesn't overwrite existing data. This clean out can be done manually or by using the --clean option with --restore.
All options are configurable in a config file passed in with the --config argument.
At present stellar-core-backup makes a few assumptions about the environment and it expects stellar-core to be installed using the official Debian binary packages available at https://github.com/stellar/packages. In the event that your own environment differs from this, stellar-core-backup will likely break.
AWS credentials can be exported as environment variables or permissions can be granted by an IAM instance role.
To ensure archive consistency and integrity stellar-core-backup can use GPG signing and verification. This is enabled by default but can be disabled using the --no-verify argument.
The GPG key needs to be installed first which can be done using the --getkey command.
We are using SKS Keyservers for public key distribution available at hkp://pool.sks-keyservers.net.
| config param | description |
|---|---|
| working_dir | Path to working directory which will hold temporary files, needs sufficient space to store and untar 1 backup |
| core_config | Path to stellar-core configuration file of the node we are backing up, retrieves database credentials, etc. |
| backup_dir | Path to directory which will hold the final backup |
| s3_region | S3 region |
| s3_bucket | S3 bucket to store/retrieve buckets to/from |
| s3_path | S3 Path prefix, can be used for backing up multiple core nodes to the same bucket |
| gpg_key | GPG key ID used for signing and verification of the stellar-core backups. The provided ID is the Stellar public key |
| pushgateway_url | Optional prometheus pushgateway URL to publish metrics to |
stellar-core-backup --config /etc/stellar/stellar-core-backup.conf --getkey
stellar-core-backup --config /etc/stellar/stellar-core-backup.conf --backup
stellar-core-backup --config /etc/stellar/stellar-core-backup.conf --restore --clean
stellar-core-backup --config /etc/stellar/stellar-core-backup.conf --list [num]
stellar-core-backup --config /etc/stellar/stellar-core-backup.conf --restore --clean --select [bucket-prefix/core-backup-name]
require 'stellar-core-backup'
if options[:backup] then
scb = StellarCoreBackup::Job.new(
:config => '/etc/stellar/stellar-core-backup.conf',
:type => 'backup'
)
scb.run()
elsif options[:restore]
scb = StellarCoreBackup::Job.new(
:config => '/etc/stellar/stellar-core-backup.conf',
:type => 'restore'
)
scb.run()
end- Fork it ( https://github.com/[my-github-username]/stellar-core-backup/fork )
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create a new Pull Request