Docs: doctl compute floating-ip
Droplet and Floating IP list
doctl -t =do_api_key= compute droplet list
doctl -t =do_api_key= compute floating-ip list
Create Floating IP (assign to old)
doctl -t =do_api_key= compute floating-ip create --droplet-id =old_droplet=
establish connection to new server and from new to old
ssh -o StrictHostKeyChecking=accept-new =new_ip=
ssh -o StrictHostKeyChecking=accept-new =old_ip=
exit
get data from old server
cd /var/discourse
rsync -rav --numeric-ids =old_ip=:/var/discourse/containers/ /var/discourse/containers/
rsync -rav --numeric-ids =old_ip=:/var/discourse/shared/ /var/discourse/shared/ --exclude log --exclude postgres_* --exclude redis_data --exclude log --exclude tmp --exclude state
build containers
[ -f containers/data.yml ] && ./launcher rebuild data
[ -f containers/web_only.yml ] && ./launcher rebuild web_only
[ -f containers/app.yml ] && ./launcher rebuild app
[ -f containers/mail-receiver.yml ] && ./launcher rebuild mail-receiver
make old server read-only and make backup
Connect to old server
ssh =old_ip=
Get into rails
docker exec -it $(docker ps --filter "publish=443" --format "{{.Names}}") bash -c 'rails c'
make readonly, backup, announce server move
Discourse.enable_readonly_mode(Discourse::STAFF_WRITES_ONLY_MODE_KEY);
BackupRestore::Backuper.new(Discourse.system_user.id, with_uploads: false).run;
SiteSetting.global_notice='Move to new server is happening now. Thanks for your patience.'
exit # from rails
exit # from ssh
Enable restore on new computer
docker exec -it $(docker ps --filter "publish=443" --format "{{.Names}}") bash -c "discourse enable_restore"
Get data (again)
rsync -rav --numeric-ids =old_ip=:/var/discourse/shared/ /var/discourse/shared/ --exclude log --exclude postgres_* --exclude redis_data --exclude letsencrypt --exclude ssl --exclude log --exclude tmp --exclude state
Restore latest backup
docker exec -it $(docker ps --filter "publish=443" --format "{{.Names}}") bash
$(discourse restore|grep gz|head -1)
Assign existing Floating IP to existing (new) Droplet
doctl -t =do_api_key= compute floating-ip-action assign =floating_ip= =new_droplet= # update
Stop old droplet
doctl -t =do_api_key= compute droplet-action shutdown =old_droplet= # Test
Delete old droplet
doctl -t =do_api_key= compute droplet delete =old_droplet=
Rename droplets
doctl -t =do_api_key= compute droplet-action rename --droplet-name =old_droplet_name= =old_droplet=
doctl -t =do_api_key= compute droplet-action rename --droplet-name =new_droplet_name= =new_droplet=
Change hostname
hostnamectl set-hostname =short_hostname=
Resize
doctl -t =do_api_key= compute droplet-action resize =old_droplet= --size =droplet_size= --resize-disk=true # resize
Size list
doctl -t =do_api_key= compute size list|less
Staff Writes only
Discourse.enable_readonly_mode(Discourse::STAFF_WRITES_ONLY_MODE_KEY)
Discourse.disable_readonly_mode(Discourse::STAFF_WRITES_ONLY_MODE_KEY)