While guided and checked, AI is responsible for half of the coding. Development is also 100% for own personal use, no promises.
Open for sort of CHANGELOGS?
V1.03 - Releases and sorting
Added the option to backup releases (meaning all files in an release). Options are None, latest release, last 5 releases or all releases
Added simplistic search in the repositories tab
Added sorting in repositories tab
V1.02 - cap-drop=all
Added the option to make use of --cap-drop=ALL as long as you specify an user in an parameter ( --user xx:xx)
V1.01 - UI
UI Overhaul
Fix the counter for backups done today
#############################################
A comprehensive web-based solution for backing up GitHub repositories with scheduling, multiple backup formats, and user management.
- Web UI with Authentication: Secure login system with automatic admin user creation
- Password Reset System: Forgot password functionality with server-logged reset codes
- Repository Management: Add, edit, delete, and manually trigger backups for GitHub repositories
- Multiple Backup Formats: Support for folder structure, ZIP, and TAR.GZ archives
- Flexible Scheduling:
- Manual backup triggering
- Predefined schedules: Hourly, Daily (2 AM), Weekly (Sunday 2 AM), Monthly (1st, 2 AM)
- Custom schedules: Every X days/weeks/months at specified time
- Retention Policies: Configurable backup retention (1-50 versions) with automatic cleanup
- Private Repository Support: Works with GitHub Personal Access Tokens
- Dashboard Overview: Statistics cards showing repository count, active repos, completed and failed jobs
- Job Monitoring:
- Real-time backup job status tracking (running, completed, failed)
- Detailed backup job history with timestamps
- Recent jobs display on dashboard
- Seamless Backup Experience:
- Non-blocking backups without page refreshes
- Stay in place while operations run in the background
- Quick repository bulk import via "Add by Username" feature
- User Settings: Change username and password functionality
- Docker Ready: Fully containerized with health checks and proper user permissions
- Clone the repository:
git clone https://github.com/GitTimeraider/GithubBackup.git
cd GithubBackup- Copy and modify the environment file:
cp .env.example .env
# Edit .env with your preferred settings- Start the service:
docker-compose up -d-
Access the web interface at
http://localhost:8080 -
Login with default credentials (created automatically):
- Username:
admin - Password:
changeme ⚠️ Important: Change the default password immediately after first login via Settings
- Username:
docker run -d \
--name github-backup \
-p 8080:8080 \
-v ./data:/app/data \
-v ./backups:/app/backups \
-v ./logs:/app/logs \
-e SECRET_KEY=your-secret-key \
ghcr.io/gittimeraider/githubbackup:latest| Variable | Description | Default |
|---|---|---|
SECRET_KEY |
Flask secret key for sessions | dev-secret-key-change-in-production |
DATABASE_URL |
SQLite database file path | sqlite:////app/data/github_backup.db |
PUID |
User ID for file permissions | 1000 |
PGID |
Group ID for file permissions | 1000 |
For private repositories, you'll need a GitHub Personal Access Token:
- Go to GitHub Settings → Developer settings → Personal access tokens
- Generate a new token with
reposcope for private repositories - Add the token when configuring repositories in the web UI
- Folder Structure: Preserves the original repository structure
- ZIP Archive: Compressed archive with good compression ratio
- TAR.GZ Archive: Unix-style compressed archive with excellent compression
- Manual: Backup only when triggered manually via the web interface
- Hourly: Every hour at minute 0
- Daily: Every day at 2:00 AM
- Weekly: Every Sunday at 2:00 AM
- Monthly: 1st of every month at 2:00 AM
- Custom: Every X days/weeks/months at a specified time
- Days: 1-365 day intervals
- Weeks: 1-52 week intervals
- Months: 1-12 month intervals
- Custom time selection (24-hour format)
The application provides a modern, responsive web interface with:
- Repository statistics (total, active, completed backups, failed jobs)
- Recent repositories overview with status indicators
- Recent backup jobs with real-time status
- Quick access to add new repositories
- Add repositories with GitHub URL
- Configure backup format (Folder, ZIP, TAR.GZ)
- Set up scheduling (predefined or custom intervals)
- Configure retention policies (1-50 backup versions)
- Edit repository settings
- Manual backup triggering
- Repository activation/deactivation
- Real-time job status monitoring
- Complete backup history with timestamps
- Job status indicators (running, completed, failed)
- Auto-refresh for running jobs
- Secure login system
- Password reset functionality (codes logged to server)
- User settings (change username/password)
- Automatic admin user creation on first run
GET /health- Health check endpoint for monitoringGET /favicon.ico- Application favicon- Web interface available at
/(requires authentication)
- Install dependencies:
pip install -r requirements.txt- Initialize database:
python init_db.py- Run the application:
python app.pydocker build -t github-backup .- Change default credentials: The application creates a default admin user (
admin/changeme) - change this immediately - Change the SECRET_KEY: Use a strong, unique secret key in production
- Use strong passwords: Enforce strong passwords for all user accounts
- GitHub tokens: Personal Access Tokens are stored in the database for private repository access
- Container security: The application runs as non-root user in Docker with configurable PUID/PGID
- Regular updates: Keep the application and dependencies updated for security patches
- Password reset: Reset codes are logged to server logs for manual distribution
Backups are organized as follows:
/app/backups/
├── user_1/
│ ├── repository1/
│ │ ├── repository1_20241214_020000.zip
│ │ └── repository1_20241213_020000.zip
│ └── repository2/
│ └── repository2_20241214_020000/
└── user_2/
└── ...
- Web Interface: Real-time backup job status and repository management
- Dashboard: Visual overview of repository count, active repos, and job statistics
- Job History: Complete backup job history with timestamps and status
- Container Health:
docker healthcheck github-backup - Application Logs:
docker logs github-backup - Persistent Logs: Available in
/app/logs/directory inside container - Health Endpoint:
GET /healthreturns JSON status for external monitoring
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.


