Blog server provisioning
- DigitalOcean: Docker One-Click image
- Install docker-compose
- Follow [this tutorial] to get ghost up and running http://nknu.net/how-to-deploy-your-ghost-blog-using-docker-machine-and-docker-compose/
mkdir ghost
# install docker-compose binary
# Follow the turorial. Relevant scripts:
$ wget https://ghost.org/zip/ghost-latest.zip
$ unzip ghost-latest.zip "content/*"
$ rm -f ghost-latest.zip
nano docker-compose.yml
# paste the following
blog:
image: ghost
command: npm start
volumes:
- content:/var/lib/ghost
ports:
- 9999:2368
- Insetall nginx
apt-get install nginx
cd /etc/nginx/sites-available
nano ghost
# Paste this script
server {
listen 0.0.0.0:80;
server_name fundamentallyhuman.com;
access_log /var/log/nginx/*your-domain-name*.log;
client_max_body_size 100m;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header HOST $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:9999;
proxy_redirect off;
}
}
# End of pasting
cd ../sites/enabled
rm default
ln -s ../sites-available/ghost
service nginx restart
- Backup
apt-get install sqlite3
cd /ghost
# https://github.com/andreafabrizi/Dropbox-Uploader
curl "https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh" -o dropbox_uploader.sh
# set up
$chmod +x dropbox_uploader.sh
$./dropbox_uploader.sh
nano backup.sh
# paste
#!/bin/sh
rsync -av --progress content/ backup/ --exclude data/
rm -f backup/ghost-dev.db.bak
sqlite3 content/data/ghost-dev.db ".backup backup/ghost-dev.db.bak"
name=$(date '+%y-%m-%d')
tar -zcvf --overwrite "$name.tar.gz" backup/
./dropbox_uploader.sh upload "$name.tar.gz" "$name.tar.gz"
# done
# set up cron job
# http://stackoverflow.com/questions/14710257/running-a-cron-job-at-230-am-every-day
# back up every day at night
crontab -e
# add
30 2 * * * /root/ghost/backup.sh
- Start after reboot
# ghost/start.sh
#!/bin/sh
docker-compose up -d
# end
crontab -e
# add
@reboot /root/ghost/start.sh
Related