Keeping your Timeful instance updated and your data backed up are the two most important ongoing operations for any self-hosted deployment. This page covers both workflows for Docker Compose deployments — using either pre-built images from GHCR or a source build.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/ptshen/timeful-plus/llms.txt
Use this file to discover all available pages before exploring further.
Updating Timeful
Option 1: Update with Pre-built Images (Recommended)
Pre-built images are published to GitHub Container Registry on every push to themain branch. Pulling and restarting takes under a minute with no build step required.
- Makefile
- Docker Compose
docker compose -f docker-compose.ghcr.yml pull followed by docker compose -f docker-compose.ghcr.yml up -d and prints a confirmation message when done.| Tag | Meaning |
|---|---|
latest | Latest stable build from the main branch |
main | Alias for latest |
<version> | Specific version tags published at releases |
<branch>-<sha> | Builds from a specific commit |
Option 2: Update from Source
If you customise the Timeful source code or prefer building locally:- Makefile
- Manual
git pull, then rebuilds all images with --no-cache, and brings the stack back up.Database Backup
Backups are stored on the host at./backups/backup-YYYYMMDD-HHMMSS/. Each backup is a mongodump snapshot of the schej-it database.
Creating a Backup
- Makefile
- Manual
- Creates the
./backups/directory if it does not exist. - Runs
mongodump --db=schej-it --out=/data/backupinside thetimeful-mongodbcontainer. - Copies the result to
./backups/backup-YYYYMMDD-HHMMSS/on the host. - Prints
✅ Backup created in ./backups/.
Backup Storage Layout
Recommended Backup Schedule
| Frequency | Retention | Use case |
|---|---|---|
| Daily | 7 days | Typical self-hosted team |
| Before every update | Keep until next update | Pre-update safety net |
| Weekly | 4 weeks | Low-traffic personal instance |
Database Restore
Restoring from the Latest Backup
- Makefile
- Manual
./backups/, copies it into the container, and runs mongorestore --drop to replace the existing data.Restoring from a Specific Backup
Ifmake restore picks the wrong backup, use the manual steps above and substitute the directory name of the backup you want:
Verifying a Backup
After creating a backup, spot-check the dump files to confirm they are non-empty:.bson and .metadata.json files for each collection (events, users, responses, etc.) with non-zero sizes.
Related Pages
Docker Deployment
Full Docker Compose setup guide including initial configuration.
Security Hardening
Container security best practices for production deployments.