Difference between revisions of "Passbolt CE Backup and Restoration"
From Notes_Wiki
|  (Created page with "Home > Ubuntu > Ubuntu 22.04 > Ubuntu 22.04 Passbolt setup > Passbolt CE Backup and Restoration") | |||
| Line 1: | Line 1: | ||
| [[Main Page|Home]] > [[Ubuntu]] > [[Ubuntu 22.04]] > [[Ubuntu 22.04 Passbolt setup]] > [[Passbolt CE Backup and Restoration]] | |||
| = Passbolt CE Backup and Restoration = | |||
| To back up and restore a Passbolt Community Edition (CE) instance, follow these steps: | |||
| == 1. Backup Script Creation == | |||
| Create the backup script file: | |||
| <pre> | |||
| vim passbolt_backup.sh | |||
| </pre> | |||
| Add the following content: | |||
| <pre> | |||
| #!/bin/bash | |||
| webserver_user=www-data | |||
| if ! command -v mysqldump &> /dev/null | |||
| then | |||
|     echo "+------------------------------------------------------------------------------------------+" | |||
|     echo "| mysqldump is required to run this script                                                |" | |||
|     echo "| Try installing either mysql-server or mariadb-server to correct this                    |" | |||
|     echo "+------------------------------------------------------------------------------------------+" | |||
|     exit | |||
| fi | |||
| backup_dir="/tmp" | |||
| backup_dir_date=$backup_dir/backup-$(date +"%Y-%m-%d--%H-%M-%S") | |||
| backup_file=$backup_dir_date.tar.gz | |||
| if [ -f /.dockerenv ] | |||
| then | |||
|     echo "+------------------------------------------------------------------------------------------+" | |||
|     echo "Docker detected" | |||
|     echo "+------------------------------------------------------------------------------------------+" | |||
|     su -s /bin/bash -c "mkdir $backup_dir_date" www-data | |||
|     echo "Taking database backup and storing in $backup_dir_date" | |||
|     su -s /bin/bash -c "./bin/cake passbolt mysql_export --dir $backup_dir_date" www-data | |||
|     echo "Copying /etc/environment to $backup_dir_date" | |||
|     cp /etc/environment $backup_dir_date/. | |||
| else | |||
|     if [ -z ${webserver_user} ] | |||
|     then | |||
|         echo "+------------------------------------------------------------------------------------------+" | |||
|         echo "| Webserver user not set in the script                                                    |" | |||
|         echo "| Please correct this and re-run the script                                               |" | |||
|         echo "+------------------------------------------------------------------------------------------+" | |||
|         exit | |||
|     fi | |||
|     echo "+------------------------------------------------------------------------------------------+" | |||
|     echo "Docker not detected" | |||
|     echo "+------------------------------------------------------------------------------------------+" | |||
|     su -s /bin/bash -c "mkdir $backup_dir_date" $webserver_user | |||
|     echo "Taking database backup and storing in $backup_dir_date" | |||
|     su -s /bin/bash -c "/usr/share/php/passbolt/bin/cake passbolt mysql_export --dir $backup_dir_date" $webserver_user | |||
|     echo "Copying /etc/passbolt/passbolt.php to $backup_dir_date" | |||
|     cp /etc/passbolt/passbolt.php $backup_dir_date/. | |||
| fi | |||
| echo "Copying GPG keys to $backup_dir_date" | |||
| cp /etc/passbolt/gpg/serverkey_private.asc $backup_dir_date/. | |||
| cp /etc/passbolt/gpg/serverkey.asc $backup_dir_date/. | |||
| echo "Creating archive of $backup_dir_date" | |||
| tar -czvf $backup_file -C $backup_dir_date . | |||
| echo "Cleaning up temporary files" | |||
| rm $backup_dir_date/* | |||
| rmdir $backup_dir_date | |||
| echo "Backup completed. File saved as $backup_file" | |||
| </pre> | |||
| Make the script executable: | |||
| <pre> | |||
| chmod +x passbolt_backup.sh | |||
| </pre> | |||
| Run the script: | |||
| <pre> | |||
| ./passbolt_backup.sh | |||
| </pre> | |||
| == 2. Restoration Process == | |||
| === 2.1 Extract the Backup Archive === | |||
| <pre> | |||
| tar -xzvf /tmp/backup-YYYY-MM-DD--HH-MM-SS.tar.gz -C /tmp/ | |||
| </pre> | |||
| === 2.2 Restore Passbolt Configuration File === | |||
| <pre> | |||
| cd /tmp | |||
| sudo mv /tmp/passbolt.php /etc/passbolt/passbolt.php | |||
| sudo chown www-data:www-data /etc/passbolt/passbolt.php | |||
| sudo chmod 640 /etc/passbolt/passbolt.php | |||
| </pre> | |||
| === 2.3 Restore GPG Keys === | |||
| <pre> | |||
| sudo cp /tmp/serverkey.asc /etc/passbolt/gpg/serverkey.asc | |||
| sudo cp /tmp/serverkey_private.asc /etc/passbolt/gpg/serverkey_private.asc | |||
| sudo chown www-data:www-data /etc/passbolt/gpg/serverkey.asc | |||
| sudo chown www-data:www-data /etc/passbolt/gpg/serverkey_private.asc | |||
| sudo chmod 440 /etc/passbolt/gpg/serverkey.asc | |||
| sudo chmod 440 /etc/passbolt/gpg/serverkey_private.asc | |||
| </pre> | |||
| === 2.4 Restore the Database === | |||
| <pre> | |||
| mysql -u passbolt_user -p passbolt_database < /path/to/backup.sql | |||
| </pre> | |||
| Example: | |||
| <pre> | |||
| mysql -u passboltadmin -p passboltdb < /tmp/backup_1740825565.sql | |||
| </pre> | |||
| === 2.5 Verify the Restoration === | |||
| Run the Passbolt health check: | |||
| <pre> | |||
| sudo -H -u www-data bash -c "/usr/share/php/passbolt/bin/cake passbolt healthcheck" | |||
| </pre> | |||
| Make sure: | |||
| * The login page is accessible. | |||
| * Users can log in successfully. | |||
| ---- | |||
| Let me know if you want this exported to a `.mediawiki` or `.txt` file for upload, or if you'd like to include cron job automation for scheduled backups. | |||
| [[Main Page|Home]] > [[Ubuntu]] > [[Ubuntu 22.04]] > [[Ubuntu 22.04 Passbolt setup]] > [[Passbolt CE Backup and Restoration]] | [[Main Page|Home]] > [[Ubuntu]] > [[Ubuntu 22.04]] > [[Ubuntu 22.04 Passbolt setup]] > [[Passbolt CE Backup and Restoration]] | ||
Revision as of 07:34, 30 May 2025
Home > Ubuntu > Ubuntu 22.04 > Ubuntu 22.04 Passbolt setup > Passbolt CE Backup and Restoration
Passbolt CE Backup and Restoration
To back up and restore a Passbolt Community Edition (CE) instance, follow these steps:
1. Backup Script Creation
Create the backup script file:
vim passbolt_backup.sh
Add the following content:
#!/bin/bash
webserver_user=www-data
if ! command -v mysqldump &> /dev/null
then
    echo "+------------------------------------------------------------------------------------------+"
    echo "| mysqldump is required to run this script                                                |"
    echo "| Try installing either mysql-server or mariadb-server to correct this                    |"
    echo "+------------------------------------------------------------------------------------------+"
    exit
fi
backup_dir="/tmp"
backup_dir_date=$backup_dir/backup-$(date +"%Y-%m-%d--%H-%M-%S")
backup_file=$backup_dir_date.tar.gz
if [ -f /.dockerenv ]
then
    echo "+------------------------------------------------------------------------------------------+"
    echo "Docker detected"
    echo "+------------------------------------------------------------------------------------------+"
    su -s /bin/bash -c "mkdir $backup_dir_date" www-data
    echo "Taking database backup and storing in $backup_dir_date"
    su -s /bin/bash -c "./bin/cake passbolt mysql_export --dir $backup_dir_date" www-data
    echo "Copying /etc/environment to $backup_dir_date"
    cp /etc/environment $backup_dir_date/.
else
    if [ -z ${webserver_user} ]
    then
        echo "+------------------------------------------------------------------------------------------+"
        echo "| Webserver user not set in the script                                                    |"
        echo "| Please correct this and re-run the script                                               |"
        echo "+------------------------------------------------------------------------------------------+"
        exit
    fi
    echo "+------------------------------------------------------------------------------------------+"
    echo "Docker not detected"
    echo "+------------------------------------------------------------------------------------------+"
    su -s /bin/bash -c "mkdir $backup_dir_date" $webserver_user
    echo "Taking database backup and storing in $backup_dir_date"
    su -s /bin/bash -c "/usr/share/php/passbolt/bin/cake passbolt mysql_export --dir $backup_dir_date" $webserver_user
    echo "Copying /etc/passbolt/passbolt.php to $backup_dir_date"
    cp /etc/passbolt/passbolt.php $backup_dir_date/.
fi
echo "Copying GPG keys to $backup_dir_date"
cp /etc/passbolt/gpg/serverkey_private.asc $backup_dir_date/.
cp /etc/passbolt/gpg/serverkey.asc $backup_dir_date/.
echo "Creating archive of $backup_dir_date"
tar -czvf $backup_file -C $backup_dir_date .
echo "Cleaning up temporary files"
rm $backup_dir_date/*
rmdir $backup_dir_date
echo "Backup completed. File saved as $backup_file"
Make the script executable:
chmod +x passbolt_backup.sh
Run the script:
./passbolt_backup.sh
2. Restoration Process
2.1 Extract the Backup Archive
tar -xzvf /tmp/backup-YYYY-MM-DD--HH-MM-SS.tar.gz -C /tmp/
2.2 Restore Passbolt Configuration File
cd /tmp sudo mv /tmp/passbolt.php /etc/passbolt/passbolt.php sudo chown www-data:www-data /etc/passbolt/passbolt.php sudo chmod 640 /etc/passbolt/passbolt.php
2.3 Restore GPG Keys
sudo cp /tmp/serverkey.asc /etc/passbolt/gpg/serverkey.asc sudo cp /tmp/serverkey_private.asc /etc/passbolt/gpg/serverkey_private.asc sudo chown www-data:www-data /etc/passbolt/gpg/serverkey.asc sudo chown www-data:www-data /etc/passbolt/gpg/serverkey_private.asc sudo chmod 440 /etc/passbolt/gpg/serverkey.asc sudo chmod 440 /etc/passbolt/gpg/serverkey_private.asc
2.4 Restore the Database
mysql -u passbolt_user -p passbolt_database < /path/to/backup.sql
Example:
mysql -u passboltadmin -p passboltdb < /tmp/backup_1740825565.sql
2.5 Verify the Restoration
Run the Passbolt health check:
sudo -H -u www-data bash -c "/usr/share/php/passbolt/bin/cake passbolt healthcheck"
Make sure:
- The login page is accessible.
- Users can log in successfully.
Let me know if you want this exported to a `.mediawiki` or `.txt` file for upload, or if you'd like to include cron job automation for scheduled backups.
Home > Ubuntu > Ubuntu 22.04 > Ubuntu 22.04 Passbolt setup > Passbolt CE Backup and Restoration

