A self-hosted web archiving tool that captures and explores snapshots of webpages over time—like the Wayback Machine, but as your own personal Time Machine.
- Capture website snapshots — Archive any website with a single command
- Time travel through history — Browse previous versions of archived pages
- Self-hosted & private — Your archives stay on your own infrastructure
- Multiple sites support — Archive multiple domains in a single snapshot
- Recursive scraping — Automatically follow links to capture entire sites
- Overlay navigation — Injected UI shows archive date and quick navigation
# Clone and install
git clone https://github.com/reatlat/webchronicle.git
cd webchronicle
npm install
# Configure your URLs in webchronicle.config.js, then:
npm run scraper # Capture snapshots
npm run start # Start local server at http://localhost:8080Edit webchronicle.config.js to specify which websites to archive:
export default {
urls: [
'https://example.com',
'https://example.org',
],
recursive: true,
maxRecursiveDepth: 3,
urlFilter: (url) => {
return url.startsWith('https://example.com') || url.startsWith('https://example.org');
},
};Full configuration options available in the website-scraper documentation.
- Configure your target URLs in
webchronicle.config.js - Run the scraper to capture snapshots:
npm run scraper
- Commit your archives:
git add ./scraped-websites git commit -m "Add website snapshots" git push - Deploy or run locally:
npm run start # Development npm run build # Production build
Each snapshot is stored with a timestamp and organized by domain:
scraped-websites/
├── 2024-12-01T01-41-35/
│ ├── example.com/
│ └── example.org/
└── ledger.json
Deploy to your preferred platform:
Also compatible with Cloudflare Pages, AWS, Heroku, and Google Cloud.
- Eleventy — Static site generator
- website-scraper — Website downloading
- TailwindCSS — Styling
- esbuild — JavaScript bundling
- Fork this repo
- Clone:
git clone git@github.com:YOUR_USERNAME/webchronicle.git - Create your feature branch:
git checkout -b my-new-feature - Commit your changes:
git commit -am 'Add some feature' - Push to the branch:
git push origin my-new-feature - Create a Pull Request
Found a bug? Open an issue.
Special thanks to James Dancer for the inspiration behind the name.
Logo design by Tatiana Zappa.
This project is open source and available under the MIT License.