mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2026-01-12 00:05:50 +08:00
Drastically shortened main readme and linked out to build notes instead. Clarified licensing info to just match license.txt.
88 lines
3.9 KiB
Markdown
88 lines
3.9 KiB
Markdown
# ZeroTier Build and Project Information
|
|
|
|
## Build and Platform Notes
|
|
|
|
### Basic Build Instructions
|
|
|
|
To build on Mac and Linux just type `make`. On FreeBSD and OpenBSD `gmake` (GNU make) is required and can be installed from packages or ports. For Windows there is a Visual Studio solution in `windows/`.
|
|
|
|
### Platform Requirements
|
|
|
|
#### Mac
|
|
- Xcode command line tools for macOS 10.13 or newer are required.
|
|
- Rust for x86_64 and ARM64 targets *if SSO is enabled in the build*.
|
|
|
|
#### Linux
|
|
- The minimum compiler versions required are GCC/G++ 8.x or CLANG/CLANG++ 5.x.
|
|
- Linux makefiles automatically detect and prefer clang/clang++ if present as it produces smaller and slightly faster binaries in most cases. You can override by supplying CC and CXX variables on the make command line.
|
|
- Rust for x86_64 and ARM64 targets *if SSO is enabled in the build*.
|
|
|
|
#### Windows
|
|
- Visual Studio 2022 on Windows 10 or newer.
|
|
- Rust for x86_64 and ARM64 targets *if SSO is enabled in the build*.
|
|
|
|
#### FreeBSD
|
|
- GNU make is required. Type `gmake` to build.
|
|
- `binutils` is required. Type `pkg install binutils` to install.
|
|
- Rust for x86_64 and ARM64 targets *if SSO is enabled in the build*.
|
|
|
|
#### OpenBSD
|
|
- There is a limit of four network memberships on OpenBSD as there are only four tap devices (`/dev/tap0` through `/dev/tap3`).
|
|
- GNU make is required. Type `gmake` to build.
|
|
- Rust for x86_64 and ARM64 targets *if SSO is enabled in the build*.
|
|
|
|
### Testing
|
|
|
|
Typing `make selftest` will build a *zerotier-selftest* binary which unit tests various internals and reports on a few aspects of the build environment. It's a good idea to try this on novel platforms or architectures.
|
|
|
|
## Running ZeroTier
|
|
|
|
Running *zerotier-one* with `-h` option will show help.
|
|
|
|
On Linux and BSD, if you built from source, you can start the service with:
|
|
|
|
sudo ./zerotier-one -d
|
|
|
|
On most distributions, macOS, and Windows, the installer will start the service and set it up to start on boot.
|
|
|
|
A home folder for your system will automatically be created.
|
|
|
|
The service is controlled via the JSON API, which by default is available at `127.0.0.1:9993`. It also listens on `0.0.0.0:9993` which is only usable if `allowManagementFrom` is properly configured in `local.conf`. We include a *zerotier-cli* command line utility to make API calls for standard things like joining and leaving networks. The *authtoken.secret* file in the home folder contains the secret token for accessing this API. See [service/README.md](service/README.md) for API documentation.
|
|
|
|
## Directory Structure
|
|
|
|
### Home Folder Locations
|
|
|
|
ZeroTier stores its configuration and state files in platform-specific locations:
|
|
|
|
* **Linux**: `/var/lib/zerotier-one`
|
|
* **FreeBSD** / **OpenBSD**: `/var/db/zerotier-one`
|
|
* **Mac**: `/Library/Application Support/ZeroTier/One`
|
|
* **Windows**: `\ProgramData\ZeroTier\One` (That's the default. The base 'shared app data' folder might be different if Windows is installed with a non-standard drive letter assignment or layout.)
|
|
|
|
### Project Structure
|
|
|
|
The repository is organized as follows:
|
|
|
|
- **node/** - Core ZeroTier networking code
|
|
- **osdep/** - Operating system dependent code
|
|
- **service/** - Service implementation and API
|
|
- **controller/** - Network controller implementation
|
|
- **ext/** - External code included for build convenience (retains original licenses)
|
|
- **nonfree/** - Source available (non-free) portions
|
|
- **windows/** - Windows-specific Visual Studio solution files
|
|
|
|
### Build System
|
|
|
|
The project supports various build targets and platforms:
|
|
- Standard build: `make`
|
|
- Self-test build: `make selftest`
|
|
- Platform-specific requirements:
|
|
- FreeBSD/OpenBSD: Use `gmake` (GNU make)
|
|
- Windows: Visual Studio solution in `windows/`
|
|
|
|
### License Structure
|
|
|
|
- **node/**, **osdep/**, **service/**: Licensed under MPL-2.0 (see LICENSE-MPL.txt)
|
|
- **nonfree/**: Non-free "source available" code (see nonfree/LICENSE.md)
|
|
- **ext/**: External code with original licenses retained |