Use case: I have some Tiki instances on ClearOS and I want automatic backups of different Tiki instances to various local computers for safekeeping. These are high level instructions as to how to combine TRIM and Syncthing to do so.
At a high level:
- TRIM (installed on the same server) will make automated backups of each site to a distinct folder
- Syncthing will copy each folder to one or many devices. These Tikis are for distinct projects/customers so you want flexibility on what to send where.
Benefits / Features
- Automated (unattended): put TRIM backups on a cron job
- Incremental: TRIM has a retention cycle (keep last 7 days, last 4 weeks and once per month forever)
- Remote backup to any number of devices: Syncthing is designed for peer-to-backups
- Managed via a web interface (Syncthing)
- Web interface can be protected by 2-factor authentication (in addition to password)
- Data is encrypted in transport by Syncthing
- Cross-platform: Syncthing supports GNU/Linux, Windows, OSX, Android, *BSD, Solaris
- Devices can be behind the firewall, and with without a fixed IP address. Ex.: Syncthing on your laptop
- Throttling: Can set Incoming and Outgoing Rate Limit (KiB/s)
- Backup Tiki, the database and even files that are outside the web room (TRIM checks the Tiki database to know which directories to fetch (if any)
- Designed to cope with a Ransomware attack (see recipe below)
ClearOS as web server
Install each Tiki as a distinct website using sub-domains: How to set up websites on ClearOS
Good:
example.org
example.com
projecta.example.org
projectb.example.org
Bad:
example.org/projecta/
example.org/projectb/
Setup TRIM
Install TRIM in /var/local/trim as per https://doc.tiki.org/TRIM#How_to_download_and_use
Use TRIM to make instances, or adopt them
https://doc.tiki.org/TRIM#make_backup
The TRIM archive folders have the following pattern:
- /var/local/trim/backup/archive/1-example.org/
- /var/local/trim/backup/archive/2-example.com/
- etc.
Check that your backup is OK, and move on to the next step
Set up automatic backups
TRIM will make the backups and also has a retention cycle (keep last 7 days, last 4 weeks and once per month forever)
Of all the instances
https://doc.tiki.org/TRIM#To_setup_automated_backups
For just one of the instances
[+]
We will use the PIPE from the Linux bash in order to inject the desired number. In this case, it is the number 3.
[root@trimclient trim]# echo 3 | make backup
bash scripts/backup.sh php -d memory_limit=256M
php
which: no cpulimit in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
dont use cpulimit
Default editor used (nano). You can change the EDITOR environment variable.
Default diff used (diff). You can change the DIFF environment variable.
Note: Backups are only available on SSH instances.
Which instances do you want to backup?
[2] vv.wikisuite.org m@example.org
[3] ii.wikisuite.org your@example.org
Performing backup for ii.wikisuite.org
Downloading files locally.
RSYNC Return var: 0
Obtaining database dump.
Creating archive.
Return var: 0
As you see, no human interaction was needed.
You may want to install this in a cronjob, to do it every day at noon, do the following.
echo '0 0 * * * pushd /root/trim/ && echo 3 | make backup && popd' > /etc/cron.d/trim-ii.wikisuite.org-backup
Install Syncthing
On the server
On your laptop
Setup Syncthing
Make sure Syncthing automatically restarts when you reboot so that you have unattended automatic backups. Just reboot to see if it's OK. If not, you need to look up the documentation for your Operating System.
Configuring Syncthing for your Tiki archive folder
You archives will be in something like /var/local/trim/backup/archive/1-example.org/: so sync that folder with your local computer.
Setting up Syncthing for backups
Syncthing by default is set to sync multiple folders so they get to the exact same set of files and folders. So if you delete a file in one folder, the deletion is propagated. In the contexts of backups, this could cause issues. Examples:
- Ransomware on any device: Then, all the devices would receive the corrupted data which replaces the valid data.
- One the devices runs out of space, and its user decides to clear out old backups.
The solution is:
- On the device sending the backups, set Folder Type to "Send Only"
- On the device(s) receiving the backups: set https://docs.syncthing.net/users/versioning.htmlFile Versioning. Recommended setting is "Staggered"
Because the master server is set to "Send Only", there is no point in setting to "Staggered" (It doesn't receive any data, and thus doesn't need versioning).