Skip to content
This repository was archived by the owner on May 16, 2019. It is now read-only.

Commit 185b41b

Browse files
danhunsakerGargron
authored andcommitted
[nanobox] Add Automated Backups (mastodon#4023)
This PR adds automatic backups to Nanobox instances. The database, Redis, and user files are backed up every day at 03:00 (server time) to the data warehouse component which comes with every Nanobox app. Old backups are automatically cleared out, but the number of backups that are left untouched can be configured by setting the `BACKUP_COUNT` environment variable to any integer value greater than 0 (the default is 1). Also updated `.env.nanobox` to reflect the current `.env.production.sample`.
1 parent 2083000 commit 185b41b

File tree

2 files changed

+52
-1
lines changed

2 files changed

+52
-1
lines changed

.env.nanobox

+1-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ SMTP_FROM_ADDRESS=notifications@${APP_NAME}.nanoapp.io
6969
# PAPERCLIP_ROOT_URL=/system
7070

7171
# Optional asset host for multi-server setups
72-
# CDN_HOST=assets.example.com
72+
# CDN_HOST=https://assets.example.com
7373

7474
# S3 (optional)
7575
# S3_ENABLED=true

boxfile.yml

+51
Original file line numberDiff line numberDiff line change
@@ -153,8 +153,59 @@ worker.sidekiq:
153153
data.db:
154154
image: nanobox/postgresql:9.5
155155

156+
cron:
157+
- id: backup
158+
schedule: '0 3 * * *'
159+
command: |
160+
PGPASSWORD=${DATA_POSTGRES_PASS} pg_dump -U ${DATA_POSTGRES_USER} -w -Fc -O gonano |
161+
gzip |
162+
curl -k -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/backup-${HOSTNAME}-$(date -u +%Y-%m-%d.%H-%M-%S).sql.gz --data-binary @- &&
163+
curl -k -s -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/ |
164+
json_pp |
165+
grep ${HOSTNAME} |
166+
sort |
167+
head -n-${BACKUP_COUNT:-1} |
168+
sed 's/.*: "\(.*\)".*/\1/' |
169+
while read file
170+
do
171+
curl -k -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/${file} -X DELETE
172+
done
173+
156174
data.redis:
157175
image: nanobox/redis:3.0
158176

177+
cron:
178+
- id: backup
179+
schedule: '0 3 * * *'
180+
command: |
181+
curl -k -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/backup-${HOSTNAME}-$(date -u +%Y-%m-%d.%H-%M-%S).rdb --data-binary @/data/var/db/redis/dump.rdb &&
182+
curl -k -s -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/ |
183+
json_pp |
184+
grep ${HOSTNAME} |
185+
sort |
186+
head -n-${BACKUP_COUNT:-1} |
187+
sed 's/.*: "\(.*\)".*/\1/' |
188+
while read file
189+
do
190+
curl -k -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/${file} -X DELETE
191+
done
192+
159193
data.storage:
160194
image: nanobox/unfs:0.9
195+
196+
cron:
197+
- id: backup
198+
schedule: '0 3 * * *'
199+
command: |
200+
tar cz -C /data/var/db/unfs/ |
201+
curl -k -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/backup-${HOSTNAME}-$(date -u +%Y-%m-%d.%H-%M-%S).tgz --data-binary @- &&
202+
curl -k -s -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/ |
203+
json_pp |
204+
grep ${HOSTNAME} |
205+
sort |
206+
head -n-${BACKUP_COUNT:-1} |
207+
sed 's/.*: "\(.*\)".*/\1/' |
208+
while read file
209+
do
210+
curl -k -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/${file} -X DELETE
211+
done

0 commit comments

Comments
 (0)