https://github.com/pablopunk/bucky
*WIP* Self-hosted all-in-one backups that don't suck.
https://github.com/pablopunk/bucky
Last synced: about 1 year ago
JSON representation
*WIP* Self-hosted all-in-one backups that don't suck.
- Host: GitHub
- URL: https://github.com/pablopunk/bucky
- Owner: pablopunk
- License: apache-2.0
- Created: 2025-03-26T20:39:15.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-04-03T12:58:36.000Z (about 1 year ago)
- Last Synced: 2025-04-23T08:06:38.512Z (about 1 year ago)
- Language: TypeScript
- Homepage:
- Size: 808 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Bucky
> [!WARNING]
> This software is on a very early alpha stage, do NOT use it for critical data
The self-hosted all-in-one backup solution that ~doesn't suck~ actually kinda sucks while it's on Alpha amirite
## Features
* 💅🏼 Nice **modern UI**
* 📁 Scheduled backups of the **folders you choose**
* ☁️ Connect to **Cloud providers** like Storj (_more coming soon-ish_)
* 💯 **Rclone**: 1 to 1 copies on your remote. No chunking/compressing
* 📩 **Email notifications** of successful/failed backups
* 🐳 **Made for docker**. Drop it on your compose file and forget about it
* ♻️ _WIP: Restore from your backups_
## Screenshots
### Dashboard

### Storage

### Browse local and remote files

### Email notifications

## Deploy in docker
```yaml
services:
bucky:
image: ghcr.io/pablopunk/bucky:latest
container_name: bucky
restart: unless-stopped
ports:
- "3000:3000"
volumes:
- bucky-data:/app/data # optional, to persist the database in a volume
- /important/folder1:/folder1 # any folder you want to backup (with any path)
- /important/folder2:/folder2
environment:
- DATABASE_PATH=/app/data/bucky.db # optional, to customize the db location
volumes:
bucky-data:
```
## To do
- [ ] Add more storage providers
- [ ] S3
- [ ] B2
- [ ] SFTP
- [ ] Restore functionality (pull the remote content into the local folder)
- [ ] Async execution of jobs (streaming stdout on execa). Create a job.progress prop that will be constantly updated by the rclone stdout and can be shown on the jobs page
- [ ] Remove logs older than a week. Make it configurable.