19 releases (5 breaking)
Uses new Rust 2024
| new 0.5.0 | Dec 2, 2025 |
|---|---|
| 0.4.4 | Nov 12, 2025 |
| 0.3.4 | Nov 3, 2025 |
| 0.0.1 | Jul 9, 2025 |
#9 in #cdn
135KB
3.5K
SLoC
Makiatto
Makiatto builds a global CDN that routes users to their nearest server for fast content delivery. Deploy one binary per Linux server and they self-organise into a mesh network with geographic DNS routing, automatic SSL certificates, and content synchronisation. Scale out by adding nodes without needing external load balancers, orchestration, or management infrastructure.
Features
- Vertically integrated in Rust: Single binary with embedded DNS server, WireGuard mesh, and distributed database with no external infrastructure required
- Self-organising nodes: Deploy with one command. Nodes auto-discover peers, detect their coordinates, and coordinate GeoDNS routing
- Fault tolerance: Unhealthy nodes are automatically excluded from routing with failover to healthy nodes
- Shared-nothing architecture: Each node operates independently with no central coordination required
- Dynamic image processing: On-the-fly image resizing, format conversion, and optimisation with query parameters
- WebAssembly functions: Deploy edge functions as HTTP handlers and file transformers that run on all CDN nodes
Quick Start
-
Install the CLI
cargo install makiatto-cli # installs as `maki`Or download pre-built binaries from GitHub Releases.
-
Create your CDN nodes
Set up nodes in different geographic regions. Each node will automatically join the mesh network and sync content. We recommend using at least 3 nodes as you'll need a minimum of 3 nameservers for proper DNS redundancy.
maki machine init <name> <user>@<ip address> maki machine init vector root@203.0.113.1 maki machine init klukai ubuntu@2001:db8::1 -
Configure your project
Create a
makiatto.tomlfile in your project to define your domain and content paths.[[domain]] name = "zuccherocat.cafe" path = "./dist" -
Deploy your content
Sync your static files and domain config to all nodes in the mesh.
maki sync -
Configure your domain nameservers
Set up your domain to use Makiatto's custom nameservers for GeoDNS routing. Follow the guide to add glue records and configure your domain registrar.
maki dns nameserver-setup
Your content should now be distributed globally with automatic geolocation DNS routing! For more detailed instructions, see the documentation.
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Dependencies
~32–55MB
~1M SLoC