This guide has been updated to use the much easier method introduced in version 0.116, if you are running an older version of Home Assistant than this you can check the edit history of this post for the old instructions.
Note: this guide assumes you have copied the snapshot off your home assistant server before the problem occurred. So snapshot regularly and copy the snapshot eleswhere regularly. There are addons to do this automatically for you, here are a few:
To Goggle Drive: Add-on: Home Assistant Google Drive Backup
If you have not done this, all is not lost. You may be able to recover the snapshot but it is beyond the scope of this guide.
1) Fix the issue that caused the crash.
There is little point restoring if it is just going to happen again.
For hardware this may be easy, e.g. replace a pi power supply or SD card.
For configuration issues, if you know what caused the crash you can make a copy of your snapshot and extract the relevant file using winrar, 7zip or some other compression software that allows decompressing .tar files. Edit the file and return it to the correct place in the snapshot. If you’ve done something incorrectly you still have the original snapshot to try again. Never edit this, only edit a copy. Alternatively, restore a snapshot that is older than when the issue was introduced.
2) Flash a fresh copy of home assistant to an SD card, or install using your preferred method
If it has been a while since you have done this the install instructions are here: https://www.home-assistant.io/hassio/installation/ alternative installation instructions are available in this community guide category.
3) Boot up home assistant, browse for your snapshot from the login page and restore
After a bit of time and a restart you should now have home assittant looking exactly like it did when the snapshot was taken.
The home assistant database or MariaDB database sometimes does not restore correctly. You can chose to repair this (search the forum for instructions) or delete it and start fresh. Home Assistant now has the ability to archive the database and create a new one on start up for the default database if corruption is detected but it does not always work as intended.
If you password protect your snapshot there is no easy way to recover individual files from it without first restoring the whole thing.