netmaker
Netmaker makes networks with WireGuard. Netmaker automates fast, secure, and distributed virtual networks.
Top Related Projects
The easiest, most secure way to use WireGuard and 2FA.
A Smart Ethernet Switch for Earth
A scalable overlay networking tool with a focus on performance, simplicity and security
Connect your devices into a secure WireGuard®-based overlay network with SSO, MFA and granular access controls.
Connect your devices into a secure WireGuard®-based overlay network with SSO, MFA and granular access controls.
A private network system that uses WireGuard under the hood.
Quick Overview
Netmaker is an open-source platform for creating and managing virtual networks. It allows users to build secure, high-performance networks across multiple cloud providers, data centers, and edge locations using WireGuard. Netmaker simplifies the process of setting up and maintaining complex network infrastructures.
Pros
- Easy deployment and management of WireGuard-based networks
- Supports multiple cloud providers and on-premises infrastructure
- Offers a user-friendly web UI for network administration
- Provides automatic key rotation and peer management
Cons
- Requires some networking knowledge for optimal configuration
- Limited documentation for advanced use cases
- May have a steeper learning curve for users new to WireGuard or virtual networking
- Potential performance overhead in large-scale deployments
Getting Started
To get started with Netmaker, follow these steps:
- Install Docker and Docker Compose on your system.
- Clone the Netmaker repository:
git clone https://github.com/gravitl/netmaker.git
- Navigate to the cloned directory and start Netmaker:
cd netmaker docker-compose up -d
- Access the Netmaker UI at
http://localhost:8080
and follow the setup wizard to create your first network. - Install Netmaker agents on your nodes:
curl -sL 'https://raw.githubusercontent.com/gravitl/netmaker/master/scripts/nm-quick.sh' | sudo bash
- Use the Netmaker UI or API to manage your network, add nodes, and configure settings.
For more detailed instructions and advanced configurations, refer to the official Netmaker documentation.
Competitor Comparisons
The easiest, most secure way to use WireGuard and 2FA.
Pros of Tailscale
- More mature and widely adopted project with a larger user base
- Offers a managed service option for easier setup and maintenance
- Provides robust client applications for various platforms
Cons of Tailscale
- Closed-source core components limit customization options
- Requires a central coordination server, which may introduce privacy concerns
- Free tier has limitations on number of devices and users
Code Comparison
Tailscale (Go):
func (c *Conn) Close() error {
c.mu.Lock()
defer c.mu.Unlock()
if c.closed {
return nil
}
c.closed = true
return c.pconn.Close()
}
Netmaker (Go):
func (node *Node) SetLastCheckIn() {
node.LastCheckIn = time.Now().Unix()
}
Both projects use Go as their primary language. Tailscale's code snippet shows a connection closing method with mutex locking, while Netmaker's example demonstrates a simple node check-in time update. Tailscale's codebase tends to be more complex due to its broader feature set and maturity.
Netmaker focuses on self-hosted, open-source networking solutions, offering more flexibility for customization and control. It may be preferred by users who prioritize complete ownership of their network infrastructure and data. Tailscale, on the other hand, provides a more polished and user-friendly experience, especially for those who don't mind relying on a managed service.
A Smart Ethernet Switch for Earth
Pros of ZeroTierOne
- More mature and established project with a larger user base
- Offers a centralized management interface for easier network administration
- Supports a wider range of platforms and devices
Cons of ZeroTierOne
- Closed-source core components limit customization options
- Relies on centralized infrastructure, which may raise privacy concerns
- Free tier has limitations on network size and features
Code Comparison
ZeroTierOne (C++):
void Node::processVirtualNetworkFrame(const SharedPtr<Network> &network,const MAC &fromMac,const MAC &toMac,unsigned int etherType,const void *data,unsigned int len)
{
// Implementation details
}
Netmaker (Go):
func (network *Network) ProcessPacket(packet []byte) error {
// Implementation details
}
Both projects implement packet processing functions, but ZeroTierOne uses C++ with more detailed parameter passing, while Netmaker uses Go with a simpler function signature. ZeroTierOne's implementation suggests a more complex network model, while Netmaker's approach appears more straightforward.
A scalable overlay networking tool with a focus on performance, simplicity and security
Pros of Nebula
- Simpler setup and configuration process
- Lightweight and efficient, with lower resource usage
- Better suited for smaller networks and individual users
Cons of Nebula
- Limited centralized management capabilities
- Fewer advanced features and customization options
- Less scalable for large enterprise networks
Code Comparison
Nebula configuration example:
pki:
ca: /etc/nebula/ca.crt
cert: /etc/nebula/host.crt
key: /etc/nebula/host.key
static_host_map:
"10.0.0.1": ["192.168.1.10:4242"]
lighthouse:
am_lighthouse: false
interval: 60
listen:
host: 0.0.0.0
port: 4242
Netmaker configuration example:
server:
host: "0.0.0.0"
port: 8081
restbackend: "on"
agentbackend: "on"
masterkey: "secretkey"
database:
type: "sqlite"
conn: "/root/netmaker/netmaker.db"
api:
port: 8081
Both projects aim to create secure overlay networks, but Nebula focuses on simplicity and efficiency, while Netmaker offers more advanced features and centralized management. Nebula is better suited for smaller networks and individual users, while Netmaker excels in large-scale enterprise deployments. The code examples highlight the difference in configuration complexity, with Nebula having a more straightforward setup compared to Netmaker's more detailed configuration options.
Connect your devices into a secure WireGuard®-based overlay network with SSO, MFA and granular access controls.
Pros of Netbird
- User-friendly web UI for easier network management
- Built-in DNS resolution for simplified peer discovery
- Supports multiple authentication methods (SSO, OIDC)
Cons of Netbird
- Less flexible networking options compared to Netmaker
- Limited support for custom network topologies
- Fewer advanced features for complex enterprise setups
Code Comparison
Netmaker configuration example:
server:
apiport: "8081"
masterkey: "secretkey"
sqlconn: "host=localhost port=5432 user=postgres dbname=netmaker password=password sslmode=disable"
Netbird configuration example:
server:
grpc_address: ":443"
http_address: ":80"
store:
type: "sqlite"
sqlite:
connection_string: "/var/lib/netbird/netbird.db"
Both projects use YAML for configuration, but Netmaker's config focuses on API and database settings, while Netbird's config emphasizes server addresses and storage options. Netmaker's approach may offer more flexibility for advanced setups, while Netbird's configuration appears simpler and more focused on core functionality.
Connect your devices into a secure WireGuard®-based overlay network with SSO, MFA and granular access controls.
Pros of Netbird
- User-friendly web UI for easier network management
- Built-in DNS resolution for simplified peer discovery
- Supports multiple authentication methods (SSO, OIDC)
Cons of Netbird
- Less flexible networking options compared to Netmaker
- Limited support for custom network topologies
- Fewer advanced features for complex enterprise setups
Code Comparison
Netmaker configuration example:
server:
apiport: "8081"
masterkey: "secretkey"
sqlconn: "host=localhost port=5432 user=postgres dbname=netmaker password=password sslmode=disable"
Netbird configuration example:
server:
grpc_address: ":443"
http_address: ":80"
store:
type: "sqlite"
sqlite:
connection_string: "/var/lib/netbird/netbird.db"
Both projects use YAML for configuration, but Netmaker's config focuses on API and database settings, while Netbird's config emphasizes server addresses and storage options. Netmaker's approach may offer more flexibility for advanced setups, while Netbird's configuration appears simpler and more focused on core functionality.
A private network system that uses WireGuard under the hood.
Pros of innernet
- Written in Rust, offering better performance and memory safety
- Simpler setup process with fewer dependencies
- More focused on privacy and security with end-to-end encryption
Cons of innernet
- Less feature-rich compared to Netmaker's extensive functionality
- Smaller community and fewer integrations available
- Limited cross-platform support (primarily Linux-focused)
Code Comparison
innernet (Rust):
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let config = Config::from_env()?;
let server = Server::new(config).await?;
server.run().await
}
Netmaker (Go):
func main() {
config.InitializeConfig()
controller.Initialize()
servercfg := config.GetServerConfig()
controller.SetupGRPC(servercfg.GRPCConnectPort)
}
Both projects aim to simplify network management, but innernet focuses on simplicity and security, while Netmaker offers more features and flexibility. innernet's Rust implementation may provide better performance, while Netmaker's Go codebase offers wider platform compatibility. The choice between them depends on specific use cases and requirements.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
WireGuard® automation from homelab to enterprise
Create | Manage | Automate |
---|---|---|
:heavy_check_mark: WireGuard Networks | :heavy_check_mark: Admin UI | :heavy_check_mark: Linux |
:heavy_check_mark: Remote Access Gateways | :heavy_check_mark: OAuth | :heavy_check_mark: Docker |
:heavy_check_mark: Mesh VPNs | :heavy_check_mark: Private DNS | :heavy_check_mark: Mac |
:heavy_check_mark: Site-to-Site | :heavy_check_mark: Access Control Lists | :heavy_check_mark: Windows |
Try Netmaker SaaS
If you're looking for a managed service, you can get started with just few clicks, visit netmaker.io to create your netmaker server.
Self-Hosted Quick Start
These are the instructions for deploying a Netmaker server on your own cloud VM as quickly as possible. For more detailed instructions, visit the Install Docs.
- Get a cloud VM with Ubuntu 22.04 and a public IP.
- Open ports 443, 80, 3479, 8089 and 51821-51830/udp on the VM firewall and in cloud security settings.
- (recommended) Prepare DNS - Set a wildcard subdomain in your DNS settings for Netmaker, e.g. *.netmaker.example.com, which points to your VM's public IP.
- Run the script:
sudo wget -qO /root/nm-quick.sh https://raw.githubusercontent.com/gravitl/netmaker/master/scripts/nm-quick.sh && sudo chmod +x /root/nm-quick.sh && sudo /root/nm-quick.sh
This script by default installs PRO version with 14-day trial, check out these instructions for post trial period https://docs.netmaker.io/install.html#after-trial-period-ends. It also gives you the option to use your own domain (recommended) or an auto-generated domain.
After installing Netmaker, check out the Walkthrough and Getting Started guides to learn more about configuring networks. Or, check out some of our other Tutorials for different use cases, including Kubernetes.
Get Support
Why Netmaker + WireGuard?
-
Netmaker automates virtual networks between data centers, clouds, and edge devices, so you don't have to.
-
Kernel WireGuard offers maximum speed, performance, and security.
-
Netmaker is built to scale from the small business to the enterprise.
-
Netmaker with WireGuard can be highly customized for peer-to-peer, site-to-site, Kubernetes, and more.
Community Projects
Disclaimer
WireGuard is a registered trademark of Jason A. Donenfeld.
License
Netmaker's source code and all artifacts in this repository are freely available. All content that resides under the "pro/" directory of this repository, if that directory exists, is licensed under the license defined in "pro/LICENSE". All third party components incorporated into the Netmaker Software are licensed under the original license provided by the owner of the applicable component. Content outside of the above mentioned directories or restrictions above is available under the "Apache Version 2.0" license as defined below. All details for the licenses used can be found here: LICENSE.md.
Top Related Projects
The easiest, most secure way to use WireGuard and 2FA.
A Smart Ethernet Switch for Earth
A scalable overlay networking tool with a focus on performance, simplicity and security
Connect your devices into a secure WireGuard®-based overlay network with SSO, MFA and granular access controls.
Connect your devices into a secure WireGuard®-based overlay network with SSO, MFA and granular access controls.
A private network system that uses WireGuard under the hood.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot