π·πΊ Π ΡΡΡΠΊΠ°Ρ Π²Π΅ΡΡΠΈΡ
Modern web interface for viewing and downloading backups from restic repository. Built with FastAPI backend and React frontend.
- π User authentication via JWT tokens
- πΈ View snapshots list with pagination
- π Advanced filtering by hosts and tags
- β¬οΈ Download files from snapshots via browser
- π Interactive file browser for snapshots
- βΉοΈ Detailed snapshot information and statistics
- π± Responsive React-based web interface
- π Modern SPA architecture
- π Real-time snapshot size loading
- π¨ Clean and intuitive UI/UX
- Backend: FastAPI (Python 3.10+) with modular structure
- Frontend: React 18 + TypeScript + Vite
- Testing: pytest (backend) + Vitest + React Testing Library (frontend)
- Code Quality: Black, isort, flake8, mypy, ESLint
- CI/CD: GitHub Actions with automated testing and releases
- Containerization: Multi-stage Docker builds
- Docker & Docker Compose
- Access to S3 storage with restic repository
- Modern web browser with JavaScript enabled
-
Create
.envfile with settings:cp .env.example .env
Edit
.env:RESTIC_REPOSITORY=s3:https://s3.example.com/your-backup-bucket RESTIC_PASSWORD=your_restic_password AWS_ACCESS_KEY_ID=your_access_key AWS_SECRET_ACCESS_KEY=your_secret_key SECRET_KEY=random_string_for_jwt ADMIN_USERNAME=admin ADMIN_PASSWORD=your_admin_password -
Run container: From GitHub Container Registry
docker run -d -p 8000:8000 --env-file .env ghcr.io/pazter1101/restic-manager:latest
Or from Docker Hub
docker run -d -p 8000:8000 --env-file .env pazter1101/restic-manager:latest
-
Open http://localhost:8000 in browser
-
Copy
.env.exampleto.envand configure variables:cp .env.example .env
-
Run application:
docker compose up -d
- Login using credentials from
.env - Browse snapshots list
- Filter by hosts and tags
- Click on file to download
pip install -r requirements-test.txt
cd app && python -m pytest ../tests/ -vcd frontend
npm ci
npm test -- --run# Python
black --check .
isort --check-only .
flake8 .
mypy --ignore-missing-imports app/
# TypeScript
cd frontend
npm run lint
npx tsc --noEmitGET /- serve React SPAPOST /api/login- user authenticationGET /api/snapshots- get snapshots list with pagination and filteringGET /api/snapshot/{snapshot_id}/size- get snapshot sizeGET /api/snapshots/{snapshot_id}/files- get files in snapshotPOST /api/upload- upload files and create backupGET /api/download/{snapshot_id}- download files from snapshot
Read CONTRIBUTING.md for information on how to contribute to the project.
This project is licensed under MIT License - see LICENSE file for details.
- Restic - for excellent backup tool
- FastAPI - for modern web framework
- All contributors who help improve the project
test