So you want to move all uploads and backups to DigitalOcean Block Storage?
Before you do this, though, you might instead consider Configure an S3 compatible object storage provider for uploads. It is no more complicated to set up and provides some other advantages.
Setup a Discourse instance on DigitalOcean
Setup a Discourse instance on DigitalOcean using our official guide.
Add a Volume to your droplet
Add a block storage volume to your droplet. Note down the name of the volume. In my case the name of the volume was volume-nyc1-05
.
Make sure the volume is formatted and mounted at /mnt/volume_nyc1_05
.
Move /var/discourse/shared
to the volume
For best performance we will keep postgres_data
on our main drive and will move rest of the data to the newly attached volume.
Logged in as root, run these commands from your server:
mv /var/discourse/shared/standalone/postgres_data /var/postgres_data_discourse
mv /var/discourse/shared /mnt/volume_nyc1_05
Make sure to replace volume_nyc1_05
with the name of your volume.
Edit app.yml
to reflect the changes
Open the /var/discourse/containers/app.yml
file in your preferred editor and look for this block:
## The Docker container is stateless; all data is stored in /shared
volumes:
- volume:
host: /var/discourse/shared/standalone
guest: /shared
- volume:
host: /var/discourse/shared/standalone/log/var-log
guest: /var/log
Replace the above block with:
## The Docker container is stateless; all data is stored in /shared
volumes:
- volume:
host: /mnt/volume_nyc1_05/shared/standalone
guest: /shared
- volume:
host: /mnt/volume_nyc1_05/shared/standalone/log/var-log
guest: /var/log
- volume:
host: /var/postgres_data_discourse
guest: /shared/postgres_data
Make sure to replace volume_nyc1_05
with the name of your volume.
Save the app.yml
file and rebuild the container.
/var/discourse/launcher rebuild app
Voila!
That’s it all your uploads and backups are now moved to DigitalOcean Block Storage.