Put lightweight structures (directories/symlinks) under version control. After every change the state should be saved (and possibly pushed). In case of emergency a safe state could be manually restored. Heavy data could be backuped using normal filesystem backup if it is separated from the lightweight structures.
At the moment the software, configuration and data are integrated into one big directory structure. It would be better for overview and deployment to split these. Software could be packaged as python package and deployed like other packages. Configuration and software customization scripts could be saved separately and put under version control. Overview over data is less confused by software directories.