updating docs

This commit is contained in:
afeiszli 2021-08-10 23:27:13 -04:00
parent 1bba3d270b
commit 39e4d5377c
38 changed files with 978 additions and 1144 deletions

View file

@ -31,7 +31,7 @@ services:
SERVER_HOST: "SERVER_PUBLIC_IP"
DNS_MODE: "off"
SERVER_API_CONN_STRING: "api.NETMAKER_BASE_DOMAIN:443"
SERVER_GRPC_CONN_STRING: "grpc.NETMAKER_BASE_DOMAIN:1443"
SERVER_GRPC_CONN_STRING: "grpc.NETMAKER_BASE_DOMAIN:443"
GRPC_SSL: "on"
SERVER_HTTP_HOST: "api.NETMAKER_BASE_DOMAIN"
SERVER_GRPC_HOST: "grpc.NETMAKER_BASE_DOMAIN"

View file

@ -29,7 +29,7 @@ services:
environment:
SERVER_HOST: "SERVER_PUBLIC_IP"
SERVER_API_CONN_STRING: "api.NETMAKER_BASE_DOMAIN:443"
SERVER_GRPC_CONN_STRING: "grpc.NETMAKER_BASE_DOMAIN:1443"
SERVER_GRPC_CONN_STRING: "grpc.NETMAKER_BASE_DOMAIN:443"
COREDNS_ADDR: "SERVER_PUBLIC_IP"
GRPC_SSL: "on"
SERVER_HTTP_HOST: "api.NETMAKER_BASE_DOMAIN"

View file

@ -1,23 +1,17 @@
version: "3.4"
services:
mongodb: # The MongoDB Instance that backs up Netmaker
image: mongo:4.2
ports:
- "27017:27017" # Port Mapping for MongoDB. Can be modified, but be sure to change the MONGO_PORT env var in netmaker
container_name: mongodb
volumes:
- mongovol:/data/db
rqlite:
container_name: rqlite
image: rqlite/rqlite
network_mode: host
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: mongoadmin # Default username. Recommend changing for production installs. You will need to set MONGO_ADMIN netmaker env var.
MONGO_INITDB_ROOT_PASSWORD: mongopass # Default password. Recommend changing for production installs. You will need to set MONGO_PASS netmaker env var.
volumes:
- sqldata:/rqlite/file/data
netmaker: # The Primary Server for running Netmaker
privileged: true # Necessary to run sudo/root level commands on host system. Take out if not running with CLIENT_MODE=on
container_name: netmaker
depends_on:
- mongodb
image: gravitl/netmaker:v0.5
- rqlite
image: gravitl/netmaker:v0.7
volumes: # Volume mounts necessary for CLIENT_MODE to control netclient, wireguard, and networking on host (except dnsconfig, which is where dns config files are stored for use by CoreDNS)
- ./:/local
- /etc/netclient:/etc/netclient
@ -42,36 +36,23 @@ services:
CORS_ALLOWED_ORIGIN: "*" # The "allowed origin" for API requests. Change to restrict where API requests can come from.
REST_BACKEND: "on" # Enables the REST backend (API running on API_PORT at SERVER_HTTP_HOST). Change to "off" to turn off.
AGENT_BACKEND: "on" # Enables the AGENT backend (GRPC running on GRPC_PORT at SERVER_GRPC_HOST). Change to "off" to turn off.
CLIENT_MODE: "on" # Enables Client Mode, meaning netclient will be deployed on server and will be manageable from UI. Change to "off" to turn off.
DNS_MODE: "on" # Enables DNS Mode, meaning config files will be generated for CoreDNS. Note, turning "off" does not remove CoreDNS. You still need to remove CoreDNS from compose file.
DISABLE_REMOTE_IP_CHECK: "off" # If turned "on", Server will not set Host based on remote IP check. This is already overridden if SERVER_HOST is set. Turned "off" by default.
MONGO_ADMIN: "mongoadmin" # Admin user for MongoDB. Change to match above MongoDB instance
MONGO_PASS: "mongopass" # Admin password for MongoDB. Change to match above MongoDB instance
MONGO_HOST: "127.0.0.1" # Address of MongoDB. Change if necessary.
MONGO_PORT: "27017" # Port of MongoDB. Change if necessary.
MONGO_OPTS: "/?authSource=admin" # Opts to enable admin login for Mongo.
SERVER_GRPC_WIREGUARD: "on" # Whether to run GRPC over a WireGuard network. On by default. Secures server comms. Switch to "off" to turn off.
SERVER_GRPC_WG_INTERFACE: "nm-grpc-wg" # Interface to use for GRPC WireGuard network if enabled
SERVER_GRPC_WG_ADDRESS: "10.101.0.1" # Private Address to use for GRPC WireGuard network if enabled
SERVER_GRPC_WG_ADDRESS_RANGE: "10.101.0.0/16" # Private Address range to use for GRPC WireGard clients if enabled
SERVER_GRPC_WG_PORT: "50555" # Port to use for GRPC WireGuard if enabled
SERVER_GRPC_WG_PUBKEY: "SERVER_GRPC_WG_PUBKEY" # PublicKey for GRPC WireGuard interface. Generated if blank.
SERVER_GRPC_WG_PRIVKEY: "SERVER_GRPC_WG_PRIVKEY" # PrivateKey for GRPC WireGuard interface. Generated if blank.
GRPC_SSL: "off" # Tells clients to use SSL to connect to GRPC. Switch to on to turn on.
COREDNS_ADDR: "" # Address of the CoreDNS server. Defaults to SERVER_HOST
SERVER_API_CONN_STRING: "" # Changes the api connection string. IP:PORT format. By default is empty and uses SERVER_HOST:API_PORT
SERVER_GRPC_CONN_STRING: "" # Changes the grpc connection string. IP:PORT format. By default is empty and uses SERVER_HOST:GRPC_PORT
netmaker-ui: # The Netmaker UI Component
container_name: netmaker-ui
depends_on:
- netmaker
image: gravitl/netmaker-ui:v0.5
image: gravitl/netmaker-ui:v0.7
links:
- "netmaker:api"
ports:
- "80:80"
- "8082:80"
environment:
BACKEND_URL: "http://HOST_IP:8081" # URL where UI will send API requests. Change based on SERVER_HOST, SERVER_HTTP_HOST, and API_PORT
MASTER_KEY: "secretkey" # Master Key for API calls. Will be removed in v0.3.5
coredns: # The DNS Server. Remove this section if DNS_MODE="off"
depends_on:
- netmaker
@ -84,5 +65,5 @@ services:
volumes:
- dnsconfig:/root/dnsconfig
volumes:
mongovol: {}
dnsconfig: {}
sqldata: {}
dnsconfig: {}

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -1,4 +1,4 @@
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: b4f54218c96970315e0631746ba1b7fb
config: ea2669ddaa1c21d925350f2fad6e510c
tags: 645f666f9bcd5a90fca523b33c5a78b7

View file

@ -43,27 +43,19 @@ Install Docker
---------------
Begin by installing the community version of Docker and docker-compose (there are issues with the snap version). You can follow the official `Docker instructions here <https://docs.docker.com/engine/install/>`_. Or, you can use the below series of commands which should work on Ubuntu 20.04.
``sudo apt-get remove docker docker-engine docker.io containerd runc``
``sudo apt-get update``
``sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release``
.. code-block::
``curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg``
``echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null``
``sudo apt-get update``
``sudo apt-get install docker-ce docker-ce-cli containerd.io``
``sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose``
``sudo chmod +x /usr/local/bin/docker-compose``
``docker --version``
``docker-compose --version``
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker --version
docker-compose --version
At this point Docker should be installed.
@ -108,11 +100,13 @@ Prepare Firewall
Make sure firewall settings are appropriate for Netmaker. You need ports 53 and 443. On the server you can run:
``sudo ufw allow proto tcp from any to any port 443 && sudo ufw allow dns && ``
.. code-block::
sudo ufw allow proto tcp from any to any port 443 && sudo ufw allow dns
**Based on your cloud provider, you may also need to set inbound security rules for your server. This will be dependent on your cloud provider. Be sure to check before moving on:**
- allow 443/tcp from all
- allow 1443/tcp from all
- allow 53/udp from all
Prepare for DNS
@ -120,12 +114,15 @@ Prepare for DNS
On Ubuntu 20.04, by default there is a service consuming port 53 related to DNS resolution. We need port 53 open in order to run our own DNS server. The below steps will disable systemd-resolved, and insert a generic DNS nameserver for local resolution.
1. ``sudo systemctl stop systemd-resolved``
2. ``sudo systemctl disable systemd-resolved``
3. ``sudo vim /etc/systemd/resolved.conf``
* uncomment DNS and add 8.8.8.8 or whatever reachable nameserver is your preference
* uncomment DNSStubListener and set to "no"
4. ``sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf``
.. code-block::
systemctl stop systemd-resolved
systemctl disable systemd-resolved
vim /etc/systemd/resolved.conf
* uncomment DNS and add 8.8.8.8 or whatever reachable nameserver is your preference *
* uncomment DNSStubListener and set to "no" *
ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
Prepare Nginx
-----------------
@ -138,14 +135,12 @@ Get the nginx configuration file:
Insert your domain in the configuration file and add to nginx:
``sed -i 's/NETMAKER_BASE_DOMAIN/<your base domain>/g' netmaker-nginx-template.conf``
``sudo cp netmaker-nginx-template.conf /etc/nginx/conf.d/<your base domain>.conf``
``nginx -t && nginx -s reload``
``systemctl restart nginx``
.. code-block::
sed -i 's/NETMAKER_BASE_DOMAIN/<your base domain>/g' netmaker-nginx-template.conf
sudo cp netmaker-nginx-template.conf /etc/nginx/conf.d/<your base domain>.conf
nginx -t && nginx -s reload
systemctl restart nginx
4. Install Netmaker
====================
@ -153,17 +148,18 @@ Insert your domain in the configuration file and add to nginx:
Prepare Templates
------------------
``wget https://raw.githubusercontent.com/gravitl/netmaker/develop/compose/docker-compose.quickstart.yml``
.. code-block::
``sed -i 's/NETMAKER_BASE_DOMAIN/<your base domain>/g' docker-compose.quickstart.yml``
``sed -i 's/SERVER_PUBLIC_IP/<your server ip>/g' docker-compose.quickstart.yml``
wget https://raw.githubusercontent.com/gravitl/netmaker/develop/compose/docker-compose.quickstart.yml
sed -i 's/NETMAKER_BASE_DOMAIN/<your base domain>/g' docker-compose.quickstart.yml
sed -i 's/SERVER_PUBLIC_IP/<your server ip>/g' docker-compose.quickstart.yml
Generate a unique master key and insert it:
``tr -dc A-Za-z0-9 </dev/urandom | head -c 30 ; echo ''``
.. code-block::
``sed -i 's/REPLACE_MASTER_KEY/<your generated key>/g' docker-compose.quickstart.yml``
tr -dc A-Za-z0-9 </dev/urandom | head -c 30 ; echo ''
sed -i 's/REPLACE_MASTER_KEY/<your generated key>/g' docker-compose.quickstart.yml
Start Netmaker
----------------

View file

@ -15,111 +15,11 @@ The quick install guide is recommended for first-time installs.
The following documents are meant for special cases like Kubernetes and LXC, or for more advanced setups.
DNS Mode Prereqisite Setup
====================================
If you plan on running the server in DNS Mode, know that a `CoreDNS Server <https://coredns.io/manual/toc/>`_ will be installed. CoreDNS is a light-weight, fast, and easy-to-configure DNS server. It is recommended to bind CoreDNS to port 53 of the host system, and it will do so by default. The clients will expect the nameserver to be on port 53, and many systems have issues resolving a different port.
Server Configuration Reference
==========================================
However, on your host system (for Netmaker), this may conflict with an existing process. On linux systems running systemd-resolved, there is likely a service consuming port 53. The below steps will disable systemd-resolved, and replace it with a generic (e.g. Google) nameserver. Be warned that this may have consequences for any existing private DNS configuration. The following was tested on Ubuntu 20.04 and should be run prior to deploying the docker containers.
1. ``systemctl stop systemd-resolved``
2. ``systemctl disable systemd-resolved``
3. ``vim /etc/systemd/resolved.conf``
* uncomment DNS and add 8.8.8.8 or whatever reachable nameserver is your preference
* uncomment DNSStubListener and set to "no"
4. ``ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf``
Port 53 should now be available for CoreDNS to use.
Docker Compose Install
=======================
The most simple (and recommended) way of installing Netmaker is to use one of the provided `Docker Compose files <https://github.com/gravitl/netmaker/tree/master/compose>`_. Below are instructions for several different options to install Netmaker via Docker Compose, followed by an annotated reference Docker Compose in case your use case requires additional customization.
Test Install - No DNS, No Secure GRPC
--------------------------------------------------------
This install will run Netmaker on a server without HTTPS using an IP address. This is not secure and not recommended, but can be helpful for testing.
It also does not run the CoreDNS server, to simplify the deployment
**Prerequisites:**
* server ports 80, 8081, and 50051 are not blocked by firewall
**Notes:**
* You can change the port mappings in the Docker Compose if the listed ports are already in use.
Assuming you have Docker and Docker Compose installed, you can just run the following, replacing **< Insert your-host IP Address Here >** with your host IP (or domain):
#. ``wget -O docker-compose.yml https://raw.githubusercontent.com/gravitl/netmaker/master/scripts/docker-compose.test.yml``
#. ``sed -i s/HOST_IP/< Insert your-host IP Address Here >/g docker-compose.yml``
#. ``docker-compose up -d``
No DNS - CoreDNS Disabled
----------------------------------------------
DNS Mode is currently limited to clients that can run resolvectl (systemd-resolved, see :doc:`Architecture docs <./architecture>` for more info). You may wish to disable DNS mode for various reasons. This installation option gives you the full feature set minus CoreDNS.
To run without DNS, follow the Quick Install guide, omitting the steps for DNS setup. In addition, when the guide has you pull (wget) the Netmaker docker-compose template, use the following link instead:
#. ``wget -O docker-compose.yml https://raw.githubusercontent.com/gravitl/netmaker/master/scripts/docker-compose.nodns.yml``
This template is equivalent but omits CoreDNS.
Reference Compose File - Annotated
--------------------------------------
All environment variables and options are enabled in this file. It is the equivalent to running the "full install" from the above section. However, all environment variables are included, and are set to the default values provided by Netmaker (if the environment variable was left unset, it would not change the installation). Comments are added to each option to show how you might use it to modify your installation.
.. literalinclude:: ../compose/docker-compose.reference.yml
:language: YAML
Linux Install without Docker
=============================
Most systems support Docker, but some, such as LXC, do not. In such environments, there are many options for installing Netmaker. Netmaker is available as a binary file, and there is a zip file of the Netmaker UI static HTML on GitHub. Beyond the UI and Server, you need to install MongoDB and CoreDNS (optional).
Below is a guided set of instructions for installing without Docker on Ubuntu 20.04. Depending on your system, the steps may vary.
rqlite Setup
----------------
1. Install rqlite on your server: https://github.com/rqlite/rqlite
2. Run rqlite: rqlited -node-id 1 ~/node.1
Server Setup
-------------
1. **Run the install script:** ``sudo curl -sfL https://raw.githubusercontent.com/gravitl/netmaker/v0.3.5/scripts/netmaker-server.sh | sh -``
2. Check status: ``sudo journalctl -u netmaker``
3. If any settings are incorrect such as host or mongo credentials, change them under /etc/netmaker/config/environments/< your env >.yaml and then run ``sudo systemctl restart netmaker``
UI Setup
-----------
The following uses NGinx as an http server. You may alternatively use Apache or any other web server that serves static web files.
1. **Download UI asset files:** ``sudo wget -O /usr/share/nginx/html/netmaker-ui.zip https://github.com/gravitl/netmaker-ui/releases/download/latest/netmaker-ui.zip``
2. **Unzip:** ``sudo unzip /usr/share/nginx/html/netmaker-ui.zip -d /usr/share/nginx/html``
3. **Copy Config to Nginx:** ``sudo cp /usr/share/nginx/html/nginx.conf /etc/nginx/conf.d/default.conf``
4. **Modify Default Config Path:** ``sudo sed -i 's/root \/var\/www\/html/root \/usr\/share\/nginx\/html/g' /etc/nginx/sites-available/default``
5. **Change Backend URL:** ``sudo sh -c 'BACKEND_URL=http://<YOUR BACKEND API URL>:PORT /usr/share/nginx/html/generate_config_js.sh >/usr/share/nginx/html/config.js'``
6. **Start Nginx:** ``sudo systemctl start nginx``
CoreDNS Setup
----------------
Kubernetes Install
=======================
**This configuration is coming soon.** It will allow you to deploy Netmaker on a Kubernetes cluster.
Configuration Reference
=========================
The "Reference Compose File" (above) explains many of these options. However, it is important to understand fundamentally how Netmaker sets its configuration:
Netmaker sets its configuration in the following order of precendence:
1. Defaults
2. Config File
@ -127,23 +27,43 @@ The "Reference Compose File" (above) explains many of these options. However, it
Variable Description
----------------------
VERBOSITY:
**Default:** 0
SERVER_HOST:
**Description:** Specify level of logging you would like on the server. Goes up to 3 for debugging.
GRPC_SSL:
**Default:** "off"
**Description:** Specifies if GRPC is going over secure GRPC or SSL. This is a setting for the clients and is passed through the access token. Can be set to "on" and "off". Set to on if SSL is configured for GRPC.
SERVER_API_CONN_STRING
**Default:** ""
**Description:** Allows specification of the string used to connect to the server api. Format: IP:PORT or DOMAIN:PORT. Defaults to SERVER_HOST if not specified.
SERVER_GRPC_CONN_STRING
**Default:** ""
**Description:** Allows specification of the string used to connect to grpc. Format: IP:PORT or DOMAIN:PORT. Defaults to SERVER_HOST if not specified.
SERVER_HOST: *(depreciated, use SERVER_API_CONN_STRING and SERVER_GRPC_CONN_STRING)*
**Default:** Server will perform an IP check and set automatically unless explicitly set, or DISABLE_REMOTE_IP_CHECK is set to true, in which case it defaults to 127.0.0.1
**Description:** Sets the SERVER_HTTP_HOST and SERVER_GRPC_HOST variables if they are unset. The address where traffic comes in.
SERVER_HTTP_HOST:
SERVER_HTTP_HOST: *(depreciated, use SERVER_API_CONN_STRING and SERVER_GRPC_CONN_STRING)*
**Default:** Equals SERVER_HOST if set, "127.0.0.1" if SERVER_HOST is unset.
**Description:** Set to make the HTTP and GRPC functions available via different interfaces/networks.
SERVER_GRPC_HOST:
SERVER_GRPC_HOST: *(depreciated, use SERVER_API_CONN_STRING and SERVER_GRPC_CONN_STRING)*
**Default:** Equals SERVER_HOST if set, "127.0.0.1" if SERVER_HOST is unset.
**Description:** Set to make the HTTP and GRPC functions available via different interfaces/networks.
API_PORT:
API_PORT:
**Default:** 8081
**Description:** The HTTP API port for Netmaker. Used for API calls / communication from front end.
@ -173,108 +93,172 @@ AGENT_BACKEND:
**Description:** Enables the AGENT backend (GRPC running on GRPC_PORT at SERVER_GRPC_HOST). Change to "off" to turn off.
CLIENT_MODE:
**Default:** "on"
**Description:** Enables Client Mode, meaning netclient will be deployed on server and will be manageable from UI. Change to "off" to turn off.
DNS_MODE:
**Default:** "on"
**Default:** "off"
**Description:** Enables DNS Mode, meaning config files will be generated for CoreDNS.
DISABLE_REMOTE_IP_CHECK:
**Default:** "off"
**Description:** If turned "on", Server will not set Host based on remote IP check. This is already overridden if SERVER_HOST is set. Turned "off" by default.
MONGO_ADMIN:
**Default:** "mongoadmin"
**Description:** Admin user for MongoDB.
MONGO_PASS:
**Default:** "mongopass"
**Description:** Admin password for MongoDB.
MONGO_HOST:
**Default:** "127.0.0.1"
**Description:** Address of MongoDB.
MONGO_PORT:
**Default:** "27017"
**Description:** Port of MongoDB.
MONGO_OPTS:
**Default:** "/?authSource=admin"
**Description:** Opts to enable admin login for Mongo.
SERVER_GRPC_WIREGUARD:
**Default:** "on"
**Description:** Whether to run GRPC over a WireGuard network. On by default. Secures the server comms. Switch to "off" to turn off. If off and running in production, make sure to have certificates installed to secure GRPC communications.
SERVER_GRPC_WG_INTERFACE:
**Default:** "nm-grpc-wg"
**Description:** Interface to use for GRPC WireGuard network if enabled
SERVER_GRPC_WG_ADDRESS:
**Default:** "10.101.0.1"
**Description:** Private Address to use for GRPC WireGuard network if enabled
SERVER_GRPC_WG_ADDRESS_RANGE:
**Default:** "10.101.0.0/16"
**Description:** Private Address range to use for GRPC WireGard clients if enabled. Gives 65,534 total addresses for all of netmaker. If running a larger network, will need to configure addresses differently, for instance using ipv6, or use certificates instead.
SERVER_GRPC_WG_PORT:
**Default:** 50555
**Description:** Port to use for GRPC WireGuard if enabled
SERVER_GRPC_WG_PUBKEY:
**Default:** < generated at startup >
**Description:** PublicKey for GRPC WireGuard interface. Generated if left blank.
SERVER_GRPC_WG_PRIVKEY:
**Default:** < generated at startup >
**Description:** PrivateKey for GRPC WireGuard interface. Generated if left blank.
SERVER_GRPC_WG_KEYREQUIRED
**Default:** ""
**Description:** Determines if an Access Key is required to join the Comms network. Blank (meaning 'no') by default. Set to "yes" to turn on.
GRPC_SSL
**Default:** ""
**Description:** Specifies if GRPC is going over secure GRPC or SSL. This is a setting for the clients and is passed through the access token. Can be set to "on" and "off". Set to on if SSL is configured for GRPC.
SERVER_API_CONN_STRING
**Default:** ""
**Description:** Allows specification of the string used to connect to the server api. Format: IP:PORT or DOMAIN:PORT. Defaults to SERVER_HOST if not specified.
SERVER_GRPC_CONN_STRING
**Default:** ""
**Description:** Allows specification of the string used to connect to grpc. Format: IP:PORT or DOMAIN:PORT. Defaults to SERVER_HOST if not specified.
Config File Reference
----------------------
A config file may be placed under config/environments/<env-name>.yml. To read this file at runtime, provide the environment variable ENV at runtime. For instance, dev.yml paired with ENV=dev. Netmaker will load the specified Config file. This allows you to store and manage configurations for different environments. Below is a reference Config File you may use.
A config file may be placed under config/environments/<env-name>.yml. To read this file at runtime, provide the environment variable NETMAKER_ENV at runtime. For instance, dev.yml paired with ENV=dev. Netmaker will load the specified Config file. This allows you to store and manage configurations for different environments. Below is a reference Config File you may use.
.. literalinclude:: ../config/environments/dev.yaml
:language: YAML
Compose File - Annotated
--------------------------------------
All environment variables and options are enabled in this file. It is the equivalent to running the "full install" from the above section. However, all environment variables are included, and are set to the default values provided by Netmaker (if the environment variable was left unset, it would not change the installation). Comments are added to each option to show how you might use it to modify your installation.
.. literalinclude:: ../compose/docker-compose.reference.yml
:language: YAML
DNS Mode Setup
====================================
If you plan on running the server in DNS Mode, know that a `CoreDNS Server <https://coredns.io/manual/toc/>`_ will be installed. CoreDNS is a light-weight, fast, and easy-to-configure DNS server. It is recommended to bind CoreDNS to port 53 of the host system, and it will do so by default. The clients will expect the nameserver to be on port 53, and many systems have issues resolving a different port.
However, on your host system (for Netmaker), this may conflict with an existing process. On linux systems running systemd-resolved, there is likely a service consuming port 53. The below steps will disable systemd-resolved, and replace it with a generic (e.g. Google) nameserver. Be warned that this may have consequences for any existing private DNS configuration. The following was tested on Ubuntu 20.04 and should be run prior to deploying the docker containers.
.. code-block::
systemctl stop systemd-resolved
systemctl disable systemd-resolved
vim /etc/systemd/resolved.conf
* uncomment DNS and add 8.8.8.8 or whatever reachable nameserver is your preference *
* uncomment DNSStubListener and set to "no" *
ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
Port 53 should now be available for CoreDNS to use.
Docker Compose Install
=======================
The most simple (and recommended) way of installing Netmaker is to use one of the provided `Docker Compose files <https://github.com/gravitl/netmaker/tree/master/compose>`_. Below are instructions for several different options to install Netmaker via Docker Compose, followed by an annotated reference Docker Compose in case your use case requires additional customization.
Test Install - No DNS, No Secure GRPC
--------------------------------------------------------
This install will run Netmaker on a server without HTTPS using an IP address. This is not secure and not recommended, but can be helpful for testing.
It also does not run the CoreDNS server, to simplify the deployment
**Prerequisites:**
* server ports 80, 8081, and 50051 are not blocked by firewall
**Notes:**
* You can change the port mappings in the Docker Compose if the listed ports are already in use.
Assuming you have Docker and Docker Compose installed, you can just run the following, replacing **< Insert your-host IP Address Here >** with your host IP (or domain):
.. code-block::
wget -O docker-compose.yml https://raw.githubusercontent.com/gravitl/netmaker/master/scripts/docker-compose.test.yml
sed -i s/HOST_IP/< Insert your-host IP Address Here >/g docker-compose.yml
docker-compose up -d`
No DNS - CoreDNS Disabled
----------------------------------------------
DNS Mode is currently limited to clients that can run resolvectl (systemd-resolved, see :doc:`Architecture docs <./architecture>` for more info). You may wish to disable DNS mode for various reasons. This installation option gives you the full feature set minus CoreDNS.
To run without DNS, follow the :doc:`Quick Install <./quick-start>` guide, omitting the steps for DNS setup. In addition, when the guide has you pull (wget) the Netmaker docker-compose template, use the following link instead:
#. ``wget -O docker-compose.yml https://raw.githubusercontent.com/gravitl/netmaker/master/scripts/docker-compose.nodns.yml``
This template is equivalent but omits CoreDNS.
Linux Install without Docker
=============================
Most systems support Docker, but some, such as LXC, do not. In such environments, there are many options for installing Netmaker. Netmaker is available as a binary file, and there is a zip file of the Netmaker UI static HTML on GitHub. Beyond the UI and Server, you need to install MongoDB and CoreDNS (optional).
To start, we recommend following the Nginx instructions in the :doc:`Quick Install <./quick-start>` guide to enable SSL for your environment.
Once this is enabled and configured for a domain, you can continue with the below. The recommended server runs Ubuntu 20.04.
rqlite Setup
----------------
1. Install rqlite on your server: https://github.com/rqlite/rqlite
2. Run rqlite: rqlited -node-id 1 ~/node.1
Server Setup
-------------
1. **Run the install script:**
``sudo curl -sfL https://raw.githubusercontent.com/gravitl/netmaker/develop/scripts/netmaker-server.sh | sh -``
2. Check status: ``sudo journalctl -u netmaker``
3. If any settings are incorrect such as host or mongo credentials, change them under /etc/netmaker/config/environments/< your env >.yaml and then run ``sudo systemctl restart netmaker``
UI Setup
-----------
The following uses Nginx as an http server. You may alternatively use Apache or any other web server that serves static web files.
1. Download and Unzip UI asset files
2. Copy Config to Nginx
3. Modify Default Config Path
4. Change Backend URL
5. Start Nginx
.. code-block::
sudo wget -O /usr/share/nginx/html/netmaker-ui.zip https://github.com/gravitl/netmaker-ui/releases/download/latest/netmaker-ui.zip
sudo unzip /usr/share/nginx/html/netmaker-ui.zip -d /usr/share/nginx/html
sudo cp /usr/share/nginx/html/nginx.conf /etc/nginx/conf.d/default.conf
sudo sed -i 's/root \/var\/www\/html/root \/usr\/share\/nginx\/html/g' /etc/nginx/sites-available/default
sudo sh -c 'BACKEND_URL=http://<YOUR BACKEND API URL>:PORT /usr/share/nginx/html/generate_config_js.sh >/usr/share/nginx/html/config.js'
sudo systemctl start nginx
CoreDNS Setup
----------------
Kubernetes Install
=======================
Server Install
--------------------------
This template assumes your cluster uses Nginx for ingress with valid wildcard certificates. If using an ingress controller other than Nginx (ex: Traefik), you will need to manually modify the Ingress entries in this template to match your environment.
This template also requires RWX storage. Please change references to storageClassName in this template to your cluster's Storage Class.
``wget https://raw.githubusercontent.com/gravitl/netmaker/develop/kube/netmaker-template.yaml``
Replace the NETMAKER_BASE_DOMAIN references to the base domain you would like for your Netmaker services (ui,api,grpc). Typically this will be something like **netmaker.yourwildcard.com**.
``sed -i s/NETMAKER_BASE_DOMAIN/<your base domain>/g netmaker-template.yaml``
Now, assuming Ingress and Storage match correctly with your cluster configuration, you can install Netmaker.
.. code-block::
kubectl create ns nm
kubectl config set-context --current --namespace=nm
kubectl apply -f netmaker-template.yaml -n nm
In about 3 minutes, everything should be up and running:
``kubectl get ingress nm-ui-ingress-nginx``
Netclient Daemonset
--------------------------
The following instructions assume you have Netmaker running and a network you would like to add your cluster into. The Netmaker server does not need to be running inside of a cluster for this.
.. code-block::
wget https://raw.githubusercontent.com/gravitl/netmaker/develop/kube/netclient-template.yaml
sed -i s/ACCESS_TOKEN_VALUE/< your access token value>/g netclient-template.yaml
kubectl apply -f netclient-template.yaml
For a more detailed guide on integrating Netmaker with MicroK8s, `check out this guide <https://itnext.io/how-to-deploy-a-cross-cloud-kubernetes-cluster-with-built-in-disaster-recovery-bbce27fcc9d7>`_.
Nginx Reverse Proxy Setup with https
====================================

View file

@ -1,6 +1,6 @@
var DOCUMENTATION_OPTIONS = {
URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
VERSION: '0.5',
VERSION: '0.7',
LANGUAGE: 'None',
COLLAPSE_INDEX: false,
BUILDER: 'html',

View file

@ -46,7 +46,7 @@
<title>About &#8212; Netmaker 0.5 documentation</title>
<title>About &#8212; Netmaker 0.7 documentation</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/material.css" type="text/css" />
<script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
@ -81,7 +81,7 @@
<nav class="md-header-nav md-grid">
<div class="md-flex navheader">
<div class="md-flex__cell md-flex__cell--shrink">
<a href="index.html" title="Netmaker 0.5 documentation"
<a href="index.html" title="Netmaker 0.7 documentation"
class="md-header-nav__button md-logo">
<i class="md-icon">&#xe869</i>
@ -167,7 +167,7 @@
<nav class="md-tabs" data-md-component="tabs">
<div class="md-tabs__inner md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item"><a href="index.html" class="md-tabs__link">Netmaker 0.5 documentation</a></li>
<li class="md-tabs__item"><a href="index.html" class="md-tabs__link">Netmaker 0.7 documentation</a></li>
</ul>
</div>
</nav>
@ -179,13 +179,13 @@
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title md-nav__title--site" for="__drawer">
<a href="index.html" title="Netmaker 0.5 documentation" class="md-nav__button md-logo">
<a href="index.html" title="Netmaker 0.7 documentation" class="md-nav__button md-logo">
<i class="md-icon">&#xe869</i>
</a>
<a href="index.html"
title="Netmaker 0.5 documentation">Netmaker Docs</a>
title="Netmaker 0.7 documentation">Netmaker Docs</a>
</label>
<div class="md-nav__source">
<a href="https://github.com/gravitl/netmaker/" title="Go to repository" class="md-source" data-md-source="github">
@ -299,40 +299,40 @@
<li class="md-nav__item">
<a href="quick-start.html" class="md-nav__link">Quick Start</a>
<a href="quick-start.html" class="md-nav__link">Quick Install</a>
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="quick-start.html#introduction" class="md-nav__link">Introduction</a>
<a href="quick-start.html#introduction" class="md-nav__link">0. Introduction</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#prerequisites" class="md-nav__link">0. Prerequisites</a>
<a href="quick-start.html#prerequisites" class="md-nav__link">1. Prerequisites</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#install-dependencies" class="md-nav__link">1. Install Dependencies</a>
<a href="quick-start.html#install-dependencies" class="md-nav__link">2. Install Dependencies</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#prepare-vm" class="md-nav__link">2. Prepare VM</a>
<a href="quick-start.html#prepare-vm" class="md-nav__link">3. Prepare VM</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#install-netmaker" class="md-nav__link">Install Netmaker</a>
<a href="quick-start.html#install-netmaker" class="md-nav__link">4. Install Netmaker</a>
</li></ul>
@ -341,40 +341,40 @@
<li class="md-nav__item">
<a href="quick-start.html#id8" class="md-nav__link">Quick Start</a>
<a href="getting-started.html" class="md-nav__link">Getting Started</a>
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="quick-start.html#setup" class="md-nav__link">Setup</a>
<a href="getting-started.html#setup" class="md-nav__link">Setup</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#deploy-nodes" class="md-nav__link">Deploy Nodes</a>
<a href="getting-started.html#deploy-nodes" class="md-nav__link">Deploy Nodes</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#manage-nodes" class="md-nav__link">Manage Nodes</a>
<a href="getting-started.html#manage-nodes" class="md-nav__link">Manage Nodes</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#uninstalling-the-netclient" class="md-nav__link">Uninstalling the netclient</a>
<a href="getting-started.html#uninstalling-the-netclient" class="md-nav__link">Uninstalling the netclient</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#uninstalling-netmaker" class="md-nav__link">Uninstalling Netmaker</a>
<a href="getting-started.html#uninstalling-netmaker" class="md-nav__link">Uninstalling Netmaker</a>
</li></ul>
@ -383,18 +383,11 @@
<li class="md-nav__item">
<a href="server-installation.html" class="md-nav__link">Server Installation</a>
<a href="server-installation.html" class="md-nav__link">Advanced Server Installation</a>
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="server-installation.html#notes-on-optional-features" class="md-nav__link">Notes on Optional Features</a>
</li>
<li class="md-nav__item">
<a href="server-installation.html#system-compatibility" class="md-nav__link">System Compatibility</a>

View file

@ -46,7 +46,7 @@
<title>API Reference &#8212; Netmaker 0.5 documentation</title>
<title>API Reference &#8212; Netmaker 0.7 documentation</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/material.css" type="text/css" />
<script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
@ -81,7 +81,7 @@
<nav class="md-header-nav md-grid">
<div class="md-flex navheader">
<div class="md-flex__cell md-flex__cell--shrink">
<a href="index.html" title="Netmaker 0.5 documentation"
<a href="index.html" title="Netmaker 0.7 documentation"
class="md-header-nav__button md-logo">
<i class="md-icon">&#xe869</i>
@ -167,7 +167,7 @@
<nav class="md-tabs" data-md-component="tabs">
<div class="md-tabs__inner md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item"><a href="index.html" class="md-tabs__link">Netmaker 0.5 documentation</a></li>
<li class="md-tabs__item"><a href="index.html" class="md-tabs__link">Netmaker 0.7 documentation</a></li>
</ul>
</div>
</nav>
@ -179,13 +179,13 @@
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title md-nav__title--site" for="__drawer">
<a href="index.html" title="Netmaker 0.5 documentation" class="md-nav__button md-logo">
<a href="index.html" title="Netmaker 0.7 documentation" class="md-nav__button md-logo">
<i class="md-icon">&#xe869</i>
</a>
<a href="index.html"
title="Netmaker 0.5 documentation">Netmaker Docs</a>
title="Netmaker 0.7 documentation">Netmaker Docs</a>
</label>
<div class="md-nav__source">
<a href="https://github.com/gravitl/netmaker/" title="Go to repository" class="md-source" data-md-source="github">
@ -279,40 +279,40 @@
<li class="md-nav__item">
<a href="quick-start.html" class="md-nav__link">Quick Start</a>
<a href="quick-start.html" class="md-nav__link">Quick Install</a>
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="quick-start.html#introduction" class="md-nav__link">Introduction</a>
<a href="quick-start.html#introduction" class="md-nav__link">0. Introduction</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#prerequisites" class="md-nav__link">0. Prerequisites</a>
<a href="quick-start.html#prerequisites" class="md-nav__link">1. Prerequisites</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#install-dependencies" class="md-nav__link">1. Install Dependencies</a>
<a href="quick-start.html#install-dependencies" class="md-nav__link">2. Install Dependencies</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#prepare-vm" class="md-nav__link">2. Prepare VM</a>
<a href="quick-start.html#prepare-vm" class="md-nav__link">3. Prepare VM</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#install-netmaker" class="md-nav__link">Install Netmaker</a>
<a href="quick-start.html#install-netmaker" class="md-nav__link">4. Install Netmaker</a>
</li></ul>
@ -321,40 +321,40 @@
<li class="md-nav__item">
<a href="quick-start.html#id8" class="md-nav__link">Quick Start</a>
<a href="getting-started.html" class="md-nav__link">Getting Started</a>
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="quick-start.html#setup" class="md-nav__link">Setup</a>
<a href="getting-started.html#setup" class="md-nav__link">Setup</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#deploy-nodes" class="md-nav__link">Deploy Nodes</a>
<a href="getting-started.html#deploy-nodes" class="md-nav__link">Deploy Nodes</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#manage-nodes" class="md-nav__link">Manage Nodes</a>
<a href="getting-started.html#manage-nodes" class="md-nav__link">Manage Nodes</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#uninstalling-the-netclient" class="md-nav__link">Uninstalling the netclient</a>
<a href="getting-started.html#uninstalling-the-netclient" class="md-nav__link">Uninstalling the netclient</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#uninstalling-netmaker" class="md-nav__link">Uninstalling Netmaker</a>
<a href="getting-started.html#uninstalling-netmaker" class="md-nav__link">Uninstalling Netmaker</a>
</li></ul>
@ -363,18 +363,11 @@
<li class="md-nav__item">
<a href="server-installation.html" class="md-nav__link">Server Installation</a>
<a href="server-installation.html" class="md-nav__link">Advanced Server Installation</a>
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="server-installation.html#notes-on-optional-features" class="md-nav__link">Notes on Optional Features</a>
</li>
<li class="md-nav__item">
<a href="server-installation.html#system-compatibility" class="md-nav__link">System Compatibility</a>

View file

@ -46,7 +46,7 @@
<title>Architecture &#8212; Netmaker 0.5 documentation</title>
<title>Architecture &#8212; Netmaker 0.7 documentation</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/material.css" type="text/css" />
<script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
@ -56,7 +56,7 @@
<link rel="author" title="About these documents" href="about.html" />
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="Quick Start" href="quick-start.html" />
<link rel="next" title="Quick Install" href="quick-start.html" />
<link rel="prev" title="About" href="about.html" />
@ -81,7 +81,7 @@
<nav class="md-header-nav md-grid">
<div class="md-flex navheader">
<div class="md-flex__cell md-flex__cell--shrink">
<a href="index.html" title="Netmaker 0.5 documentation"
<a href="index.html" title="Netmaker 0.7 documentation"
class="md-header-nav__button md-logo">
<i class="md-icon">&#xe869</i>
@ -167,7 +167,7 @@
<nav class="md-tabs" data-md-component="tabs">
<div class="md-tabs__inner md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item"><a href="index.html" class="md-tabs__link">Netmaker 0.5 documentation</a></li>
<li class="md-tabs__item"><a href="index.html" class="md-tabs__link">Netmaker 0.7 documentation</a></li>
</ul>
</div>
</nav>
@ -179,13 +179,13 @@
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title md-nav__title--site" for="__drawer">
<a href="index.html" title="Netmaker 0.5 documentation" class="md-nav__button md-logo">
<a href="index.html" title="Netmaker 0.7 documentation" class="md-nav__button md-logo">
<i class="md-icon">&#xe869</i>
</a>
<a href="index.html"
title="Netmaker 0.5 documentation">Netmaker Docs</a>
title="Netmaker 0.7 documentation">Netmaker Docs</a>
</label>
<div class="md-nav__source">
<a href="https://github.com/gravitl/netmaker/" title="Go to repository" class="md-source" data-md-source="github">
@ -329,40 +329,40 @@
<li class="md-nav__item">
<a href="quick-start.html" class="md-nav__link">Quick Start</a>
<a href="quick-start.html" class="md-nav__link">Quick Install</a>
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="quick-start.html#introduction" class="md-nav__link">Introduction</a>
<a href="quick-start.html#introduction" class="md-nav__link">0. Introduction</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#prerequisites" class="md-nav__link">0. Prerequisites</a>
<a href="quick-start.html#prerequisites" class="md-nav__link">1. Prerequisites</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#install-dependencies" class="md-nav__link">1. Install Dependencies</a>
<a href="quick-start.html#install-dependencies" class="md-nav__link">2. Install Dependencies</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#prepare-vm" class="md-nav__link">2. Prepare VM</a>
<a href="quick-start.html#prepare-vm" class="md-nav__link">3. Prepare VM</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#install-netmaker" class="md-nav__link">Install Netmaker</a>
<a href="quick-start.html#install-netmaker" class="md-nav__link">4. Install Netmaker</a>
</li></ul>
@ -371,40 +371,40 @@
<li class="md-nav__item">
<a href="quick-start.html#id8" class="md-nav__link">Quick Start</a>
<a href="getting-started.html" class="md-nav__link">Getting Started</a>
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="quick-start.html#setup" class="md-nav__link">Setup</a>
<a href="getting-started.html#setup" class="md-nav__link">Setup</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#deploy-nodes" class="md-nav__link">Deploy Nodes</a>
<a href="getting-started.html#deploy-nodes" class="md-nav__link">Deploy Nodes</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#manage-nodes" class="md-nav__link">Manage Nodes</a>
<a href="getting-started.html#manage-nodes" class="md-nav__link">Manage Nodes</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#uninstalling-the-netclient" class="md-nav__link">Uninstalling the netclient</a>
<a href="getting-started.html#uninstalling-the-netclient" class="md-nav__link">Uninstalling the netclient</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#uninstalling-netmaker" class="md-nav__link">Uninstalling Netmaker</a>
<a href="getting-started.html#uninstalling-netmaker" class="md-nav__link">Uninstalling Netmaker</a>
</li></ul>
@ -413,18 +413,11 @@
<li class="md-nav__item">
<a href="server-installation.html" class="md-nav__link">Server Installation</a>
<a href="server-installation.html" class="md-nav__link">Advanced Server Installation</a>
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="server-installation.html#notes-on-optional-features" class="md-nav__link">Notes on Optional Features</a>
</li>
<li class="md-nav__item">
<a href="server-installation.html#system-compatibility" class="md-nav__link">System Compatibility</a>
@ -1012,12 +1005,12 @@
</a>
<a href="quick-start.html" title="Quick Start"
<a href="quick-start.html" title="Quick Install"
class="md-flex md-footer-nav__link md-footer-nav__link--next"
rel="next">
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span
class="md-flex__ellipsis"> <span
class="md-footer-nav__direction"> Next </span> Quick Start </span>
class="md-footer-nav__direction"> Next </span> Quick Install </span>
</div>
<div class="md-flex__cell md-flex__cell--shrink"><i
class="md-icon md-icon--arrow-forward md-footer-nav__button"></i>

View file

@ -46,7 +46,7 @@
<title>Client Installation &#8212; Netmaker 0.5 documentation</title>
<title>Client Installation &#8212; Netmaker 0.7 documentation</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/material.css" type="text/css" />
<script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
@ -57,7 +57,7 @@
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="External Clients" href="external-clients.html" />
<link rel="prev" title="Server Installation" href="server-installation.html" />
<link rel="prev" title="Advanced Server Installation" href="server-installation.html" />
@ -81,7 +81,7 @@
<nav class="md-header-nav md-grid">
<div class="md-flex navheader">
<div class="md-flex__cell md-flex__cell--shrink">
<a href="index.html" title="Netmaker 0.5 documentation"
<a href="index.html" title="Netmaker 0.7 documentation"
class="md-header-nav__button md-logo">
<i class="md-icon">&#xe869</i>
@ -167,7 +167,7 @@
<nav class="md-tabs" data-md-component="tabs">
<div class="md-tabs__inner md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item"><a href="index.html" class="md-tabs__link">Netmaker 0.5 documentation</a></li>
<li class="md-tabs__item"><a href="index.html" class="md-tabs__link">Netmaker 0.7 documentation</a></li>
</ul>
</div>
</nav>
@ -179,13 +179,13 @@
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title md-nav__title--site" for="__drawer">
<a href="index.html" title="Netmaker 0.5 documentation" class="md-nav__button md-logo">
<a href="index.html" title="Netmaker 0.7 documentation" class="md-nav__button md-logo">
<i class="md-icon">&#xe869</i>
</a>
<a href="index.html"
title="Netmaker 0.5 documentation">Netmaker Docs</a>
title="Netmaker 0.7 documentation">Netmaker Docs</a>
</label>
<div class="md-nav__source">
<a href="https://github.com/gravitl/netmaker/" title="Go to repository" class="md-source" data-md-source="github">
@ -279,40 +279,40 @@
<li class="md-nav__item">
<a href="quick-start.html" class="md-nav__link">Quick Start</a>
<a href="quick-start.html" class="md-nav__link">Quick Install</a>
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="quick-start.html#introduction" class="md-nav__link">Introduction</a>
<a href="quick-start.html#introduction" class="md-nav__link">0. Introduction</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#prerequisites" class="md-nav__link">0. Prerequisites</a>
<a href="quick-start.html#prerequisites" class="md-nav__link">1. Prerequisites</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#install-dependencies" class="md-nav__link">1. Install Dependencies</a>
<a href="quick-start.html#install-dependencies" class="md-nav__link">2. Install Dependencies</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#prepare-vm" class="md-nav__link">2. Prepare VM</a>
<a href="quick-start.html#prepare-vm" class="md-nav__link">3. Prepare VM</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#install-netmaker" class="md-nav__link">Install Netmaker</a>
<a href="quick-start.html#install-netmaker" class="md-nav__link">4. Install Netmaker</a>
</li></ul>
@ -321,40 +321,40 @@
<li class="md-nav__item">
<a href="quick-start.html#id8" class="md-nav__link">Quick Start</a>
<a href="getting-started.html" class="md-nav__link">Getting Started</a>
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="quick-start.html#setup" class="md-nav__link">Setup</a>
<a href="getting-started.html#setup" class="md-nav__link">Setup</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#deploy-nodes" class="md-nav__link">Deploy Nodes</a>
<a href="getting-started.html#deploy-nodes" class="md-nav__link">Deploy Nodes</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#manage-nodes" class="md-nav__link">Manage Nodes</a>
<a href="getting-started.html#manage-nodes" class="md-nav__link">Manage Nodes</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#uninstalling-the-netclient" class="md-nav__link">Uninstalling the netclient</a>
<a href="getting-started.html#uninstalling-the-netclient" class="md-nav__link">Uninstalling the netclient</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#uninstalling-netmaker" class="md-nav__link">Uninstalling Netmaker</a>
<a href="getting-started.html#uninstalling-netmaker" class="md-nav__link">Uninstalling Netmaker</a>
</li></ul>
@ -363,18 +363,11 @@
<li class="md-nav__item">
<a href="server-installation.html" class="md-nav__link">Server Installation</a>
<a href="server-installation.html" class="md-nav__link">Advanced Server Installation</a>
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="server-installation.html#notes-on-optional-features" class="md-nav__link">Notes on Optional Features</a>
</li>
<li class="md-nav__item">
<a href="server-installation.html#system-compatibility" class="md-nav__link">System Compatibility</a>
@ -1040,7 +1033,7 @@
<div class="md-footer-nav">
<nav class="md-footer-nav__inner md-grid">
<a href="server-installation.html" title="Server Installation"
<a href="server-installation.html" title="Advanced Server Installation"
class="md-flex md-footer-nav__link md-footer-nav__link--prev"
rel="prev">
<div class="md-flex__cell md-flex__cell--shrink">
@ -1049,7 +1042,7 @@
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
<span class="md-flex__ellipsis">
<span
class="md-footer-nav__direction"> Previous </span> Server Installation </span>
class="md-footer-nav__direction"> Previous </span> Advanced Server Installation </span>
</div>
</a>

View file

@ -46,7 +46,7 @@
<title>Code of Conduct &#8212; Netmaker 0.5 documentation</title>
<title>Code of Conduct &#8212; Netmaker 0.7 documentation</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/material.css" type="text/css" />
<script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
@ -81,7 +81,7 @@
<nav class="md-header-nav md-grid">
<div class="md-flex navheader">
<div class="md-flex__cell md-flex__cell--shrink">
<a href="index.html" title="Netmaker 0.5 documentation"
<a href="index.html" title="Netmaker 0.7 documentation"
class="md-header-nav__button md-logo">
<i class="md-icon">&#xe869</i>
@ -167,7 +167,7 @@
<nav class="md-tabs" data-md-component="tabs">
<div class="md-tabs__inner md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item"><a href="index.html" class="md-tabs__link">Netmaker 0.5 documentation</a></li>
<li class="md-tabs__item"><a href="index.html" class="md-tabs__link">Netmaker 0.7 documentation</a></li>
</ul>
</div>
</nav>
@ -179,13 +179,13 @@
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title md-nav__title--site" for="__drawer">
<a href="index.html" title="Netmaker 0.5 documentation" class="md-nav__button md-logo">
<a href="index.html" title="Netmaker 0.7 documentation" class="md-nav__button md-logo">
<i class="md-icon">&#xe869</i>
</a>
<a href="index.html"
title="Netmaker 0.5 documentation">Netmaker Docs</a>
title="Netmaker 0.7 documentation">Netmaker Docs</a>
</label>
<div class="md-nav__source">
<a href="https://github.com/gravitl/netmaker/" title="Go to repository" class="md-source" data-md-source="github">
@ -279,40 +279,40 @@
<li class="md-nav__item">
<a href="quick-start.html" class="md-nav__link">Quick Start</a>
<a href="quick-start.html" class="md-nav__link">Quick Install</a>
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="quick-start.html#introduction" class="md-nav__link">Introduction</a>
<a href="quick-start.html#introduction" class="md-nav__link">0. Introduction</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#prerequisites" class="md-nav__link">0. Prerequisites</a>
<a href="quick-start.html#prerequisites" class="md-nav__link">1. Prerequisites</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#install-dependencies" class="md-nav__link">1. Install Dependencies</a>
<a href="quick-start.html#install-dependencies" class="md-nav__link">2. Install Dependencies</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#prepare-vm" class="md-nav__link">2. Prepare VM</a>
<a href="quick-start.html#prepare-vm" class="md-nav__link">3. Prepare VM</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#install-netmaker" class="md-nav__link">Install Netmaker</a>
<a href="quick-start.html#install-netmaker" class="md-nav__link">4. Install Netmaker</a>
</li></ul>
@ -321,40 +321,40 @@
<li class="md-nav__item">
<a href="quick-start.html#id8" class="md-nav__link">Quick Start</a>
<a href="getting-started.html" class="md-nav__link">Getting Started</a>
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="quick-start.html#setup" class="md-nav__link">Setup</a>
<a href="getting-started.html#setup" class="md-nav__link">Setup</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#deploy-nodes" class="md-nav__link">Deploy Nodes</a>
<a href="getting-started.html#deploy-nodes" class="md-nav__link">Deploy Nodes</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#manage-nodes" class="md-nav__link">Manage Nodes</a>
<a href="getting-started.html#manage-nodes" class="md-nav__link">Manage Nodes</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#uninstalling-the-netclient" class="md-nav__link">Uninstalling the netclient</a>
<a href="getting-started.html#uninstalling-the-netclient" class="md-nav__link">Uninstalling the netclient</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#uninstalling-netmaker" class="md-nav__link">Uninstalling Netmaker</a>
<a href="getting-started.html#uninstalling-netmaker" class="md-nav__link">Uninstalling Netmaker</a>
</li></ul>
@ -363,18 +363,11 @@
<li class="md-nav__item">
<a href="server-installation.html" class="md-nav__link">Server Installation</a>
<a href="server-installation.html" class="md-nav__link">Advanced Server Installation</a>
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="server-installation.html#notes-on-optional-features" class="md-nav__link">Notes on Optional Features</a>
</li>
<li class="md-nav__item">
<a href="server-installation.html#system-compatibility" class="md-nav__link">System Compatibility</a>

View file

@ -46,7 +46,7 @@
<title>Contribute &#8212; Netmaker 0.5 documentation</title>
<title>Contribute &#8212; Netmaker 0.7 documentation</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/material.css" type="text/css" />
<script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
@ -81,7 +81,7 @@
<nav class="md-header-nav md-grid">
<div class="md-flex navheader">
<div class="md-flex__cell md-flex__cell--shrink">
<a href="index.html" title="Netmaker 0.5 documentation"
<a href="index.html" title="Netmaker 0.7 documentation"
class="md-header-nav__button md-logo">
<i class="md-icon">&#xe869</i>
@ -167,7 +167,7 @@
<nav class="md-tabs" data-md-component="tabs">
<div class="md-tabs__inner md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item"><a href="index.html" class="md-tabs__link">Netmaker 0.5 documentation</a></li>
<li class="md-tabs__item"><a href="index.html" class="md-tabs__link">Netmaker 0.7 documentation</a></li>
</ul>
</div>
</nav>
@ -179,13 +179,13 @@
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title md-nav__title--site" for="__drawer">
<a href="index.html" title="Netmaker 0.5 documentation" class="md-nav__button md-logo">
<a href="index.html" title="Netmaker 0.7 documentation" class="md-nav__button md-logo">
<i class="md-icon">&#xe869</i>
</a>
<a href="index.html"
title="Netmaker 0.5 documentation">Netmaker Docs</a>
title="Netmaker 0.7 documentation">Netmaker Docs</a>
</label>
<div class="md-nav__source">
<a href="https://github.com/gravitl/netmaker/" title="Go to repository" class="md-source" data-md-source="github">
@ -279,40 +279,40 @@
<li class="md-nav__item">
<a href="quick-start.html" class="md-nav__link">Quick Start</a>
<a href="quick-start.html" class="md-nav__link">Quick Install</a>
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="quick-start.html#introduction" class="md-nav__link">Introduction</a>
<a href="quick-start.html#introduction" class="md-nav__link">0. Introduction</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#prerequisites" class="md-nav__link">0. Prerequisites</a>
<a href="quick-start.html#prerequisites" class="md-nav__link">1. Prerequisites</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#install-dependencies" class="md-nav__link">1. Install Dependencies</a>
<a href="quick-start.html#install-dependencies" class="md-nav__link">2. Install Dependencies</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#prepare-vm" class="md-nav__link">2. Prepare VM</a>
<a href="quick-start.html#prepare-vm" class="md-nav__link">3. Prepare VM</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#install-netmaker" class="md-nav__link">Install Netmaker</a>
<a href="quick-start.html#install-netmaker" class="md-nav__link">4. Install Netmaker</a>
</li></ul>
@ -321,40 +321,40 @@
<li class="md-nav__item">
<a href="quick-start.html#id8" class="md-nav__link">Quick Start</a>
<a href="getting-started.html" class="md-nav__link">Getting Started</a>
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="quick-start.html#setup" class="md-nav__link">Setup</a>
<a href="getting-started.html#setup" class="md-nav__link">Setup</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#deploy-nodes" class="md-nav__link">Deploy Nodes</a>
<a href="getting-started.html#deploy-nodes" class="md-nav__link">Deploy Nodes</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#manage-nodes" class="md-nav__link">Manage Nodes</a>
<a href="getting-started.html#manage-nodes" class="md-nav__link">Manage Nodes</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#uninstalling-the-netclient" class="md-nav__link">Uninstalling the netclient</a>
<a href="getting-started.html#uninstalling-the-netclient" class="md-nav__link">Uninstalling the netclient</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#uninstalling-netmaker" class="md-nav__link">Uninstalling Netmaker</a>
<a href="getting-started.html#uninstalling-netmaker" class="md-nav__link">Uninstalling Netmaker</a>
</li></ul>
@ -363,18 +363,11 @@
<li class="md-nav__item">
<a href="server-installation.html" class="md-nav__link">Server Installation</a>
<a href="server-installation.html" class="md-nav__link">Advanced Server Installation</a>
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="server-installation.html#notes-on-optional-features" class="md-nav__link">Notes on Optional Features</a>
</li>
<li class="md-nav__item">
<a href="server-installation.html#system-compatibility" class="md-nav__link">System Compatibility</a>

View file

@ -46,7 +46,7 @@
<title>External Clients &#8212; Netmaker 0.5 documentation</title>
<title>External Clients &#8212; Netmaker 0.7 documentation</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/material.css" type="text/css" />
<script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
@ -81,7 +81,7 @@
<nav class="md-header-nav md-grid">
<div class="md-flex navheader">
<div class="md-flex__cell md-flex__cell--shrink">
<a href="index.html" title="Netmaker 0.5 documentation"
<a href="index.html" title="Netmaker 0.7 documentation"
class="md-header-nav__button md-logo">
<i class="md-icon">&#xe869</i>
@ -167,7 +167,7 @@
<nav class="md-tabs" data-md-component="tabs">
<div class="md-tabs__inner md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item"><a href="index.html" class="md-tabs__link">Netmaker 0.5 documentation</a></li>
<li class="md-tabs__item"><a href="index.html" class="md-tabs__link">Netmaker 0.7 documentation</a></li>
</ul>
</div>
</nav>
@ -179,13 +179,13 @@
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title md-nav__title--site" for="__drawer">
<a href="index.html" title="Netmaker 0.5 documentation" class="md-nav__button md-logo">
<a href="index.html" title="Netmaker 0.7 documentation" class="md-nav__button md-logo">
<i class="md-icon">&#xe869</i>
</a>
<a href="index.html"
title="Netmaker 0.5 documentation">Netmaker Docs</a>
title="Netmaker 0.7 documentation">Netmaker Docs</a>
</label>
<div class="md-nav__source">
<a href="https://github.com/gravitl/netmaker/" title="Go to repository" class="md-source" data-md-source="github">
@ -279,40 +279,40 @@
<li class="md-nav__item">
<a href="quick-start.html" class="md-nav__link">Quick Start</a>
<a href="quick-start.html" class="md-nav__link">Quick Install</a>
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="quick-start.html#introduction" class="md-nav__link">Introduction</a>
<a href="quick-start.html#introduction" class="md-nav__link">0. Introduction</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#prerequisites" class="md-nav__link">0. Prerequisites</a>
<a href="quick-start.html#prerequisites" class="md-nav__link">1. Prerequisites</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#install-dependencies" class="md-nav__link">1. Install Dependencies</a>
<a href="quick-start.html#install-dependencies" class="md-nav__link">2. Install Dependencies</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#prepare-vm" class="md-nav__link">2. Prepare VM</a>
<a href="quick-start.html#prepare-vm" class="md-nav__link">3. Prepare VM</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#install-netmaker" class="md-nav__link">Install Netmaker</a>
<a href="quick-start.html#install-netmaker" class="md-nav__link">4. Install Netmaker</a>
</li></ul>
@ -321,40 +321,40 @@
<li class="md-nav__item">
<a href="quick-start.html#id8" class="md-nav__link">Quick Start</a>
<a href="getting-started.html" class="md-nav__link">Getting Started</a>
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="quick-start.html#setup" class="md-nav__link">Setup</a>
<a href="getting-started.html#setup" class="md-nav__link">Setup</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#deploy-nodes" class="md-nav__link">Deploy Nodes</a>
<a href="getting-started.html#deploy-nodes" class="md-nav__link">Deploy Nodes</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#manage-nodes" class="md-nav__link">Manage Nodes</a>
<a href="getting-started.html#manage-nodes" class="md-nav__link">Manage Nodes</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#uninstalling-the-netclient" class="md-nav__link">Uninstalling the netclient</a>
<a href="getting-started.html#uninstalling-the-netclient" class="md-nav__link">Uninstalling the netclient</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#uninstalling-netmaker" class="md-nav__link">Uninstalling Netmaker</a>
<a href="getting-started.html#uninstalling-netmaker" class="md-nav__link">Uninstalling Netmaker</a>
</li></ul>
@ -363,18 +363,11 @@
<li class="md-nav__item">
<a href="server-installation.html" class="md-nav__link">Server Installation</a>
<a href="server-installation.html" class="md-nav__link">Advanced Server Installation</a>
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="server-installation.html#notes-on-optional-features" class="md-nav__link">Notes on Optional Features</a>
</li>
<li class="md-nav__item">
<a href="server-installation.html#system-compatibility" class="md-nav__link">System Compatibility</a>

View file

@ -46,7 +46,7 @@
<title>Index &#8212; Netmaker 0.5 documentation</title>
<title>Index &#8212; Netmaker 0.7 documentation</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/material.css" type="text/css" />
<script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
@ -79,7 +79,7 @@
<nav class="md-header-nav md-grid">
<div class="md-flex navheader">
<div class="md-flex__cell md-flex__cell--shrink">
<a href="index.html" title="Netmaker 0.5 documentation"
<a href="index.html" title="Netmaker 0.7 documentation"
class="md-header-nav__button md-logo">
<i class="md-icon">&#xe869</i>
@ -165,7 +165,7 @@
<nav class="md-tabs" data-md-component="tabs">
<div class="md-tabs__inner md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item"><a href="index.html" class="md-tabs__link">Netmaker 0.5 documentation</a></li>
<li class="md-tabs__item"><a href="index.html" class="md-tabs__link">Netmaker 0.7 documentation</a></li>
</ul>
</div>
</nav>
@ -177,13 +177,13 @@
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title md-nav__title--site" for="__drawer">
<a href="index.html" title="Netmaker 0.5 documentation" class="md-nav__button md-logo">
<a href="index.html" title="Netmaker 0.7 documentation" class="md-nav__button md-logo">
<i class="md-icon">&#xe869</i>
</a>
<a href="index.html"
title="Netmaker 0.5 documentation">Netmaker Docs</a>
title="Netmaker 0.7 documentation">Netmaker Docs</a>
</label>
<div class="md-nav__source">
<a href="https://github.com/gravitl/netmaker/" title="Go to repository" class="md-source" data-md-source="github">
@ -373,7 +373,14 @@
<li class="md-nav__item">
<a href="server-installation.html#dns-mode-prereqisite-setup" class="md-nav__link">DNS Mode Prereqisite Setup</a>
<a href="server-installation.html#server-configuration-reference" class="md-nav__link">Server Configuration Reference</a>
</li>
<li class="md-nav__item">
<a href="server-installation.html#dns-mode-setup" class="md-nav__link">DNS Mode Setup</a>
</li>
@ -397,13 +404,6 @@
<a href="server-installation.html#kubernetes-install" class="md-nav__link">Kubernetes Install</a>
</li>
<li class="md-nav__item">
<a href="server-installation.html#configuration-reference" class="md-nav__link">Configuration Reference</a>
</li>
<li class="md-nav__item">

View file

@ -46,7 +46,7 @@
<title>Getting Started &#8212; Netmaker 0.5 documentation</title>
<title>Getting Started &#8212; Netmaker 0.7 documentation</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/material.css" type="text/css" />
<script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
@ -81,7 +81,7 @@
<nav class="md-header-nav md-grid">
<div class="md-flex navheader">
<div class="md-flex__cell md-flex__cell--shrink">
<a href="index.html" title="Netmaker 0.5 documentation"
<a href="index.html" title="Netmaker 0.7 documentation"
class="md-header-nav__button md-logo">
<i class="md-icon">&#xe869</i>
@ -167,7 +167,7 @@
<nav class="md-tabs" data-md-component="tabs">
<div class="md-tabs__inner md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item"><a href="index.html" class="md-tabs__link">Netmaker 0.5 documentation</a></li>
<li class="md-tabs__item"><a href="index.html" class="md-tabs__link">Netmaker 0.7 documentation</a></li>
</ul>
</div>
</nav>
@ -179,13 +179,13 @@
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title md-nav__title--site" for="__drawer">
<a href="index.html" title="Netmaker 0.5 documentation" class="md-nav__button md-logo">
<a href="index.html" title="Netmaker 0.7 documentation" class="md-nav__button md-logo">
<i class="md-icon">&#xe869</i>
</a>
<a href="index.html"
title="Netmaker 0.5 documentation">Netmaker Docs</a>
title="Netmaker 0.7 documentation">Netmaker Docs</a>
</label>
<div class="md-nav__source">
<a href="https://github.com/gravitl/netmaker/" title="Go to repository" class="md-source" data-md-source="github">

View file

@ -46,7 +46,7 @@
<title>Welcome to the Netmaker Documentation &#8212; Netmaker 0.5 documentation</title>
<title>Welcome to the Netmaker Documentation &#8212; Netmaker 0.7 documentation</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/material.css" type="text/css" />
<script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
@ -80,7 +80,7 @@
<nav class="md-header-nav md-grid">
<div class="md-flex navheader">
<div class="md-flex__cell md-flex__cell--shrink">
<a href="#" title="Netmaker 0.5 documentation"
<a href="#" title="Netmaker 0.7 documentation"
class="md-header-nav__button md-logo">
<i class="md-icon">&#xe869</i>
@ -166,7 +166,7 @@
<nav class="md-tabs" data-md-component="tabs">
<div class="md-tabs__inner md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item"><a href="#" class="md-tabs__link">Netmaker 0.5 documentation</a></li>
<li class="md-tabs__item"><a href="#" class="md-tabs__link">Netmaker 0.7 documentation</a></li>
</ul>
</div>
</nav>
@ -178,13 +178,13 @@
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title md-nav__title--site" for="__drawer">
<a href="#" title="Netmaker 0.5 documentation" class="md-nav__button md-logo">
<a href="#" title="Netmaker 0.7 documentation" class="md-nav__button md-logo">
<i class="md-icon">&#xe869</i>
</a>
<a href="#"
title="Netmaker 0.5 documentation">Netmaker Docs</a>
title="Netmaker 0.7 documentation">Netmaker Docs</a>
</label>
<div class="md-nav__source">
<a href="https://github.com/gravitl/netmaker/" title="Go to repository" class="md-source" data-md-source="github">
@ -374,7 +374,14 @@
<li class="md-nav__item">
<a href="server-installation.html#dns-mode-prereqisite-setup" class="md-nav__link">DNS Mode Prereqisite Setup</a>
<a href="server-installation.html#server-configuration-reference" class="md-nav__link">Server Configuration Reference</a>
</li>
<li class="md-nav__item">
<a href="server-installation.html#dns-mode-setup" class="md-nav__link">DNS Mode Setup</a>
</li>
@ -398,13 +405,6 @@
<a href="server-installation.html#kubernetes-install" class="md-nav__link">Kubernetes Install</a>
</li>
<li class="md-nav__item">
<a href="server-installation.html#configuration-reference" class="md-nav__link">Configuration Reference</a>
</li>
<li class="md-nav__item">
@ -854,11 +854,11 @@
<ul>
<li class="toctree-l1"><a class="reference internal" href="server-installation.html">Advanced Server Installation</a><ul>
<li class="toctree-l2"><a class="reference internal" href="server-installation.html#system-compatibility">System Compatibility</a></li>
<li class="toctree-l2"><a class="reference internal" href="server-installation.html#dns-mode-prereqisite-setup">DNS Mode Prereqisite Setup</a></li>
<li class="toctree-l2"><a class="reference internal" href="server-installation.html#server-configuration-reference">Server Configuration Reference</a></li>
<li class="toctree-l2"><a class="reference internal" href="server-installation.html#dns-mode-setup">DNS Mode Setup</a></li>
<li class="toctree-l2"><a class="reference internal" href="server-installation.html#docker-compose-install">Docker Compose Install</a></li>
<li class="toctree-l2"><a class="reference internal" href="server-installation.html#linux-install-without-docker">Linux Install without Docker</a></li>
<li class="toctree-l2"><a class="reference internal" href="server-installation.html#kubernetes-install">Kubernetes Install</a></li>
<li class="toctree-l2"><a class="reference internal" href="server-installation.html#configuration-reference">Configuration Reference</a></li>
<li class="toctree-l2"><a class="reference internal" href="server-installation.html#nginx-reverse-proxy-setup-with-https">Nginx Reverse Proxy Setup with https</a></li>
</ul>
</li>

View file

@ -46,7 +46,7 @@
<title>License &#8212; Netmaker 0.5 documentation</title>
<title>License &#8212; Netmaker 0.7 documentation</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/material.css" type="text/css" />
<script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
@ -80,7 +80,7 @@
<nav class="md-header-nav md-grid">
<div class="md-flex navheader">
<div class="md-flex__cell md-flex__cell--shrink">
<a href="index.html" title="Netmaker 0.5 documentation"
<a href="index.html" title="Netmaker 0.7 documentation"
class="md-header-nav__button md-logo">
<i class="md-icon">&#xe869</i>
@ -166,7 +166,7 @@
<nav class="md-tabs" data-md-component="tabs">
<div class="md-tabs__inner md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item"><a href="index.html" class="md-tabs__link">Netmaker 0.5 documentation</a></li>
<li class="md-tabs__item"><a href="index.html" class="md-tabs__link">Netmaker 0.7 documentation</a></li>
</ul>
</div>
</nav>
@ -178,13 +178,13 @@
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title md-nav__title--site" for="__drawer">
<a href="index.html" title="Netmaker 0.5 documentation" class="md-nav__button md-logo">
<a href="index.html" title="Netmaker 0.7 documentation" class="md-nav__button md-logo">
<i class="md-icon">&#xe869</i>
</a>
<a href="index.html"
title="Netmaker 0.5 documentation">Netmaker Docs</a>
title="Netmaker 0.7 documentation">Netmaker Docs</a>
</label>
<div class="md-nav__source">
<a href="https://github.com/gravitl/netmaker/" title="Go to repository" class="md-source" data-md-source="github">
@ -278,40 +278,40 @@
<li class="md-nav__item">
<a href="quick-start.html" class="md-nav__link">Quick Start</a>
<a href="quick-start.html" class="md-nav__link">Quick Install</a>
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="quick-start.html#introduction" class="md-nav__link">Introduction</a>
<a href="quick-start.html#introduction" class="md-nav__link">0. Introduction</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#prerequisites" class="md-nav__link">0. Prerequisites</a>
<a href="quick-start.html#prerequisites" class="md-nav__link">1. Prerequisites</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#install-dependencies" class="md-nav__link">1. Install Dependencies</a>
<a href="quick-start.html#install-dependencies" class="md-nav__link">2. Install Dependencies</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#prepare-vm" class="md-nav__link">2. Prepare VM</a>
<a href="quick-start.html#prepare-vm" class="md-nav__link">3. Prepare VM</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#install-netmaker" class="md-nav__link">Install Netmaker</a>
<a href="quick-start.html#install-netmaker" class="md-nav__link">4. Install Netmaker</a>
</li></ul>
@ -320,40 +320,40 @@
<li class="md-nav__item">
<a href="quick-start.html#id8" class="md-nav__link">Quick Start</a>
<a href="getting-started.html" class="md-nav__link">Getting Started</a>
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="quick-start.html#setup" class="md-nav__link">Setup</a>
<a href="getting-started.html#setup" class="md-nav__link">Setup</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#deploy-nodes" class="md-nav__link">Deploy Nodes</a>
<a href="getting-started.html#deploy-nodes" class="md-nav__link">Deploy Nodes</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#manage-nodes" class="md-nav__link">Manage Nodes</a>
<a href="getting-started.html#manage-nodes" class="md-nav__link">Manage Nodes</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#uninstalling-the-netclient" class="md-nav__link">Uninstalling the netclient</a>
<a href="getting-started.html#uninstalling-the-netclient" class="md-nav__link">Uninstalling the netclient</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#uninstalling-netmaker" class="md-nav__link">Uninstalling Netmaker</a>
<a href="getting-started.html#uninstalling-netmaker" class="md-nav__link">Uninstalling Netmaker</a>
</li></ul>
@ -362,18 +362,11 @@
<li class="md-nav__item">
<a href="server-installation.html" class="md-nav__link">Server Installation</a>
<a href="server-installation.html" class="md-nav__link">Advanced Server Installation</a>
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="server-installation.html#notes-on-optional-features" class="md-nav__link">Notes on Optional Features</a>
</li>
<li class="md-nav__item">
<a href="server-installation.html#system-compatibility" class="md-nav__link">System Compatibility</a>

View file

@ -46,7 +46,7 @@
<title>Quick Install &#8212; Netmaker 0.5 documentation</title>
<title>Quick Install &#8212; Netmaker 0.7 documentation</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/material.css" type="text/css" />
<script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
@ -81,7 +81,7 @@
<nav class="md-header-nav md-grid">
<div class="md-flex navheader">
<div class="md-flex__cell md-flex__cell--shrink">
<a href="index.html" title="Netmaker 0.5 documentation"
<a href="index.html" title="Netmaker 0.7 documentation"
class="md-header-nav__button md-logo">
<i class="md-icon">&#xe869</i>
@ -167,7 +167,7 @@
<nav class="md-tabs" data-md-component="tabs">
<div class="md-tabs__inner md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item"><a href="index.html" class="md-tabs__link">Netmaker 0.5 documentation</a></li>
<li class="md-tabs__item"><a href="index.html" class="md-tabs__link">Netmaker 0.7 documentation</a></li>
</ul>
</div>
</nav>
@ -179,13 +179,13 @@
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title md-nav__title--site" for="__drawer">
<a href="index.html" title="Netmaker 0.5 documentation" class="md-nav__button md-logo">
<a href="index.html" title="Netmaker 0.7 documentation" class="md-nav__button md-logo">
<i class="md-icon">&#xe869</i>
</a>
<a href="index.html"
title="Netmaker 0.5 documentation">Netmaker Docs</a>
title="Netmaker 0.7 documentation">Netmaker Docs</a>
</label>
<div class="md-nav__source">
<a href="https://github.com/gravitl/netmaker/" title="Go to repository" class="md-source" data-md-source="github">
@ -414,13 +414,6 @@
<li class="md-nav__item">
<a href="server-installation.html#notes-on-optional-features" class="md-nav__link">Notes on Optional Features</a>
</li>
<li class="md-nav__item">
<a href="server-installation.html#system-compatibility" class="md-nav__link">System Compatibility</a>
@ -428,7 +421,14 @@
<li class="md-nav__item">
<a href="server-installation.html#dns-mode-prereqisite-setup" class="md-nav__link">DNS Mode Prereqisite Setup</a>
<a href="server-installation.html#server-configuration-reference" class="md-nav__link">Server Configuration Reference</a>
</li>
<li class="md-nav__item">
<a href="server-installation.html#dns-mode-setup" class="md-nav__link">DNS Mode Setup</a>
</li>
@ -452,13 +452,6 @@
<a href="server-installation.html#kubernetes-install" class="md-nav__link">Kubernetes Install</a>
</li>
<li class="md-nav__item">
<a href="server-installation.html#configuration-reference" class="md-nav__link">Configuration Reference</a>
</li>
<li class="md-nav__item">
@ -880,17 +873,19 @@
<h3 id="install-docker">Install Docker<a class="headerlink" href="#install-docker" title="Permalink to this headline"></a></h3>
<p>Begin by installing the community version of Docker and docker-compose (there are issues with the snap version). You can follow the official <a class="reference external" href="https://docs.docker.com/engine/install/">Docker instructions here</a>. Or, you can use the below series of commands which should work on Ubuntu 20.04.</p>
<p><code class="docutils literal notranslate"><span class="pre">sudo</span> <span class="pre">apt-get</span> <span class="pre">remove</span> <span class="pre">docker</span> <span class="pre">docker-engine</span> <span class="pre">docker.io</span> <span class="pre">containerd</span> <span class="pre">runc</span></code></p>
<p><code class="docutils literal notranslate"><span class="pre">sudo</span> <span class="pre">apt-get</span> <span class="pre">update</span></code></p>
<p><code class="docutils literal notranslate"><span class="pre">sudo</span> <span class="pre">apt-get</span> <span class="pre">install</span> <span class="pre">apt-transport-https</span> <span class="pre">ca-certificates</span> <span class="pre">curl</span> <span class="pre">gnupg</span> <span class="pre">lsb-release</span></code></p>
<p><code class="docutils literal notranslate"><span class="pre">curl</span> <span class="pre">-fsSL</span> <span class="pre">https://download.docker.com/linux/ubuntu/gpg</span> <span class="pre">|</span> <span class="pre">sudo</span> <span class="pre">gpg</span> <span class="pre">--dearmor</span> <span class="pre">-o</span> <span class="pre">/usr/share/keyrings/docker-archive-keyring.gpg</span></code></p>
<p><code class="docutils literal notranslate"><span class="pre">echo</span> <span class="pre">"deb</span> <span class="pre">[arch=amd64</span> <span class="pre">signed-by=/usr/share/keyrings/docker-archive-keyring.gpg]</span> <span class="pre">https://download.docker.com/linux/ubuntu</span> <span class="pre">$(lsb_release</span> <span class="pre">-cs)</span> <span class="pre">stable"</span> <span class="pre">|</span> <span class="pre">sudo</span> <span class="pre">tee</span> <span class="pre">/etc/apt/sources.list.d/docker.list</span> <span class="pre">&gt;</span> <span class="pre">/dev/null</span></code></p>
<p><code class="docutils literal notranslate"><span class="pre">sudo</span> <span class="pre">apt-get</span> <span class="pre">update</span></code></p>
<p><code class="docutils literal notranslate"><span class="pre">sudo</span> <span class="pre">apt-get</span> <span class="pre">install</span> <span class="pre">docker-ce</span> <span class="pre">docker-ce-cli</span> <span class="pre">containerd.io</span></code></p>
<p><code class="docutils literal notranslate"><span class="pre">sudo</span> <span class="pre">curl</span> <span class="pre">-L</span> <span class="pre">"https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname</span> <span class="pre">-s)-$(uname</span> <span class="pre">-m)"</span> <span class="pre">-o</span> <span class="pre">/usr/local/bin/docker-compose</span></code></p>
<p><code class="docutils literal notranslate"><span class="pre">sudo</span> <span class="pre">chmod</span> <span class="pre">+x</span> <span class="pre">/usr/local/bin/docker-compose</span></code></p>
<p><code class="docutils literal notranslate"><span class="pre">docker</span> <span class="pre">--version</span></code></p>
<p><code class="docutils literal notranslate"><span class="pre">docker-compose</span> <span class="pre">--version</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">apt</span><span class="o">-</span><span class="n">get</span> <span class="n">remove</span> <span class="n">docker</span> <span class="n">docker</span><span class="o">-</span><span class="n">engine</span> <span class="n">docker</span><span class="o">.</span><span class="n">io</span> <span class="n">containerd</span> <span class="n">runc</span>
<span class="n">sudo</span> <span class="n">apt</span><span class="o">-</span><span class="n">get</span> <span class="n">update</span>
<span class="n">sudo</span> <span class="n">apt</span><span class="o">-</span><span class="n">get</span> <span class="n">install</span> <span class="n">apt</span><span class="o">-</span><span class="n">transport</span><span class="o">-</span><span class="n">https</span> <span class="n">ca</span><span class="o">-</span><span class="n">certificates</span> <span class="n">curl</span> <span class="n">gnupg</span> <span class="n">lsb</span><span class="o">-</span><span class="n">release</span>
<span class="n">curl</span> <span class="o">-</span><span class="n">fsSL</span> <span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">download</span><span class="o">.</span><span class="n">docker</span><span class="o">.</span><span class="n">com</span><span class="o">/</span><span class="n">linux</span><span class="o">/</span><span class="n">ubuntu</span><span class="o">/</span><span class="n">gpg</span> <span class="o">|</span> <span class="n">sudo</span> <span class="n">gpg</span> <span class="o">--</span><span class="n">dearmor</span> <span class="o">-</span><span class="n">o</span> <span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">share</span><span class="o">/</span><span class="n">keyrings</span><span class="o">/</span><span class="n">docker</span><span class="o">-</span><span class="n">archive</span><span class="o">-</span><span class="n">keyring</span><span class="o">.</span><span class="n">gpg</span>
<span class="n">echo</span> <span class="s2">"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"</span> <span class="o">|</span> <span class="n">sudo</span> <span class="n">tee</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">apt</span><span class="o">/</span><span class="n">sources</span><span class="o">.</span><span class="n">list</span><span class="o">.</span><span class="n">d</span><span class="o">/</span><span class="n">docker</span><span class="o">.</span><span class="n">list</span> <span class="o">&gt;</span> <span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">null</span>
<span class="n">sudo</span> <span class="n">apt</span><span class="o">-</span><span class="n">get</span> <span class="n">update</span>
<span class="n">sudo</span> <span class="n">apt</span><span class="o">-</span><span class="n">get</span> <span class="n">install</span> <span class="n">docker</span><span class="o">-</span><span class="n">ce</span> <span class="n">docker</span><span class="o">-</span><span class="n">ce</span><span class="o">-</span><span class="n">cli</span> <span class="n">containerd</span><span class="o">.</span><span class="n">io</span>
<span class="n">sudo</span> <span class="n">curl</span> <span class="o">-</span><span class="n">L</span> <span class="s2">"https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)"</span> <span class="o">-</span><span class="n">o</span> <span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">local</span><span class="o">/</span><span class="nb">bin</span><span class="o">/</span><span class="n">docker</span><span class="o">-</span><span class="n">compose</span>
<span class="n">sudo</span> <span class="n">chmod</span> <span class="o">+</span><span class="n">x</span> <span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">local</span><span class="o">/</span><span class="nb">bin</span><span class="o">/</span><span class="n">docker</span><span class="o">-</span><span class="n">compose</span>
<span class="n">docker</span> <span class="o">--</span><span class="n">version</span>
<span class="n">docker</span><span class="o">-</span><span class="n">compose</span> <span class="o">--</span><span class="n">version</span>
</pre></div>
</div>
<p>At this point Docker should be installed.</p>
@ -929,11 +924,12 @@
<h3 id="prepare-firewall">Prepare Firewall<a class="headerlink" href="#prepare-firewall" title="Permalink to this headline"></a></h3>
<p>Make sure firewall settings are appropriate for Netmaker. You need ports 53 and 443. On the server you can run:</p>
<p><a href="#id6"><span class="problematic" id="id7">``</span></a>sudo ufw allow proto tcp from any to any port 443 &amp;&amp; sudo ufw allow dns &amp;&amp; ``</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">ufw</span> <span class="n">allow</span> <span class="n">proto</span> <span class="n">tcp</span> <span class="kn">from</span> <span class="nn">any</span> <span class="n">to</span> <span class="nb">any</span> <span class="n">port</span> <span class="mi">443</span> <span class="o">&amp;&amp;</span> <span class="n">sudo</span> <span class="n">ufw</span> <span class="n">allow</span> <span class="n">dns</span>
</pre></div>
</div>
<dl class="simple">
<dt><strong>Based on your cloud provider, you may also need to set inbound security rules for your server. This will be dependent on your cloud provider. Be sure to check before moving on:</strong></dt><dd><ul class="simple">
<li><p>allow 443/tcp from all</p></li>
<li><p>allow 1443/tcp from all</p></li>
<li><p>allow 53/udp from all</p></li>
</ul>
</dd>
@ -942,19 +938,14 @@
<h3 id="prepare-for-dns">Prepare for DNS<a class="headerlink" href="#prepare-for-dns" title="Permalink to this headline"></a></h3>
<p>On Ubuntu 20.04, by default there is a service consuming port 53 related to DNS resolution. We need port 53 open in order to run our own DNS server. The below steps will disable systemd-resolved, and insert a generic DNS nameserver for local resolution.</p>
<ol class="arabic simple">
<li><p><code class="docutils literal notranslate"><span class="pre">sudo</span> <span class="pre">systemctl</span> <span class="pre">stop</span> <span class="pre">systemd-resolved</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">sudo</span> <span class="pre">systemctl</span> <span class="pre">disable</span> <span class="pre">systemd-resolved</span></code></p></li>
<li><dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">sudo</span> <span class="pre">vim</span> <span class="pre">/etc/systemd/resolved.conf</span></code></dt><dd><ul class="simple">
<li><p>uncomment DNS and add 8.8.8.8 or whatever reachable nameserver is your preference</p></li>
<li><p>uncomment DNSStubListener and set to “no”</p></li>
</ul>
</dd>
</dl>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">sudo</span> <span class="pre">ln</span> <span class="pre">-sf</span> <span class="pre">/run/systemd/resolve/resolv.conf</span> <span class="pre">/etc/resolv.conf</span></code></p></li>
</ol>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">systemctl</span> <span class="n">stop</span> <span class="n">systemd</span><span class="o">-</span><span class="n">resolved</span>
<span class="n">systemctl</span> <span class="n">disable</span> <span class="n">systemd</span><span class="o">-</span><span class="n">resolved</span>
<span class="n">vim</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">systemd</span><span class="o">/</span><span class="n">resolved</span><span class="o">.</span><span class="n">conf</span>
<span class="o">*</span> <span class="n">uncomment</span> <span class="n">DNS</span> <span class="ow">and</span> <span class="n">add</span> <span class="mf">8.8.8.8</span> <span class="ow">or</span> <span class="n">whatever</span> <span class="n">reachable</span> <span class="n">nameserver</span> <span class="ow">is</span> <span class="n">your</span> <span class="n">preference</span> <span class="o">*</span>
<span class="o">*</span> <span class="n">uncomment</span> <span class="n">DNSStubListener</span> <span class="ow">and</span> <span class="nb">set</span> <span class="n">to</span> <span class="s2">"no"</span> <span class="o">*</span>
<span class="n">ln</span> <span class="o">-</span><span class="n">sf</span> <span class="o">/</span><span class="n">run</span><span class="o">/</span><span class="n">systemd</span><span class="o">/</span><span class="n">resolve</span><span class="o">/</span><span class="n">resolv</span><span class="o">.</span><span class="n">conf</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">resolv</span><span class="o">.</span><span class="n">conf</span>
</pre></div>
</div>
<h3 id="prepare-nginx">Prepare Nginx<a class="headerlink" href="#prepare-nginx" title="Permalink to this headline"></a></h3>
@ -962,22 +953,28 @@
<p>Get the nginx configuration file:</p>
<p><code class="docutils literal notranslate"><span class="pre">wget</span> <span class="pre">https://raw.githubusercontent.com/gravitl/netmaker/develop/nginx/netmaker-nginx-template.conf</span></code></p>
<p>Insert your domain in the configuration file and add to nginx:</p>
<p><code class="docutils literal notranslate"><span class="pre">sed</span> <span class="pre">-i</span> <span class="pre">'s/NETMAKER_BASE_DOMAIN/&lt;your</span> <span class="pre">base</span> <span class="pre">domain&gt;/g'</span> <span class="pre">netmaker-nginx-template.conf</span></code></p>
<p><code class="docutils literal notranslate"><span class="pre">sudo</span> <span class="pre">cp</span> <span class="pre">netmaker-nginx-template.conf</span> <span class="pre">/etc/nginx/conf.d/&lt;your</span> <span class="pre">base</span> <span class="pre">domain&gt;.conf</span></code></p>
<p><code class="docutils literal notranslate"><span class="pre">nginx</span> <span class="pre">-t</span> <span class="pre">&amp;&amp;</span> <span class="pre">nginx</span> <span class="pre">-s</span> <span class="pre">reload</span></code></p>
<p><code class="docutils literal notranslate"><span class="pre">systemctl</span> <span class="pre">restart</span> <span class="pre">nginx</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sed</span> <span class="o">-</span><span class="n">i</span> <span class="s1">'s/NETMAKER_BASE_DOMAIN/&lt;your base domain&gt;/g'</span> <span class="n">netmaker</span><span class="o">-</span><span class="n">nginx</span><span class="o">-</span><span class="n">template</span><span class="o">.</span><span class="n">conf</span>
<span class="n">sudo</span> <span class="n">cp</span> <span class="n">netmaker</span><span class="o">-</span><span class="n">nginx</span><span class="o">-</span><span class="n">template</span><span class="o">.</span><span class="n">conf</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">nginx</span><span class="o">/</span><span class="n">conf</span><span class="o">.</span><span class="n">d</span><span class="o">/&lt;</span><span class="n">your</span> <span class="n">base</span> <span class="n">domain</span><span class="o">&gt;.</span><span class="n">conf</span>
<span class="n">nginx</span> <span class="o">-</span><span class="n">t</span> <span class="o">&amp;&amp;</span> <span class="n">nginx</span> <span class="o">-</span><span class="n">s</span> <span class="n">reload</span>
<span class="n">systemctl</span> <span class="n">restart</span> <span class="n">nginx</span>
</pre></div>
</div>
<h2 id="install-netmaker">4. Install Netmaker<a class="headerlink" href="#install-netmaker" title="Permalink to this headline"></a></h2>
<h3 id="prepare-templates">Prepare Templates<a class="headerlink" href="#prepare-templates" title="Permalink to this headline"></a></h3>
<p><code class="docutils literal notranslate"><span class="pre">wget</span> <span class="pre">https://raw.githubusercontent.com/gravitl/netmaker/develop/compose/docker-compose.quickstart.yml</span></code></p>
<p><code class="docutils literal notranslate"><span class="pre">sed</span> <span class="pre">-i</span> <span class="pre">'s/NETMAKER_BASE_DOMAIN/&lt;your</span> <span class="pre">base</span> <span class="pre">domain&gt;/g'</span> <span class="pre">docker-compose.quickstart.yml</span></code></p>
<p><code class="docutils literal notranslate"><span class="pre">sed</span> <span class="pre">-i</span> <span class="pre">'s/SERVER_PUBLIC_IP/&lt;your</span> <span class="pre">server</span> <span class="pre">ip&gt;/g'</span> <span class="pre">docker-compose.quickstart.yml</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">wget</span> <span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">raw</span><span class="o">.</span><span class="n">githubusercontent</span><span class="o">.</span><span class="n">com</span><span class="o">/</span><span class="n">gravitl</span><span class="o">/</span><span class="n">netmaker</span><span class="o">/</span><span class="n">develop</span><span class="o">/</span><span class="n">compose</span><span class="o">/</span><span class="n">docker</span><span class="o">-</span><span class="n">compose</span><span class="o">.</span><span class="n">quickstart</span><span class="o">.</span><span class="n">yml</span>
<span class="n">sed</span> <span class="o">-</span><span class="n">i</span> <span class="s1">'s/NETMAKER_BASE_DOMAIN/&lt;your base domain&gt;/g'</span> <span class="n">docker</span><span class="o">-</span><span class="n">compose</span><span class="o">.</span><span class="n">quickstart</span><span class="o">.</span><span class="n">yml</span>
<span class="n">sed</span> <span class="o">-</span><span class="n">i</span> <span class="s1">'s/SERVER_PUBLIC_IP/&lt;your server ip&gt;/g'</span> <span class="n">docker</span><span class="o">-</span><span class="n">compose</span><span class="o">.</span><span class="n">quickstart</span><span class="o">.</span><span class="n">yml</span>
</pre></div>
</div>
<p>Generate a unique master key and insert it:</p>
<p><code class="docutils literal notranslate"><span class="pre">tr</span> <span class="pre">-dc</span> <span class="pre">A-Za-z0-9</span> <span class="pre">&lt;/dev/urandom</span> <span class="pre">|</span> <span class="pre">head</span> <span class="pre">-c</span> <span class="pre">30</span> <span class="pre">;</span> <span class="pre">echo</span> <span class="pre">''</span></code></p>
<p><code class="docutils literal notranslate"><span class="pre">sed</span> <span class="pre">-i</span> <span class="pre">'s/REPLACE_MASTER_KEY/&lt;your</span> <span class="pre">generated</span> <span class="pre">key&gt;/g'</span> <span class="pre">docker-compose.quickstart.yml</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">tr</span> <span class="o">-</span><span class="n">dc</span> <span class="n">A</span><span class="o">-</span><span class="n">Za</span><span class="o">-</span><span class="n">z0</span><span class="o">-</span><span class="mi">9</span> <span class="o">&lt;/</span><span class="n">dev</span><span class="o">/</span><span class="n">urandom</span> <span class="o">|</span> <span class="n">head</span> <span class="o">-</span><span class="n">c</span> <span class="mi">30</span> <span class="p">;</span> <span class="n">echo</span> <span class="s1">''</span>
<span class="n">sed</span> <span class="o">-</span><span class="n">i</span> <span class="s1">'s/REPLACE_MASTER_KEY/&lt;your generated key&gt;/g'</span> <span class="n">docker</span><span class="o">-</span><span class="n">compose</span><span class="o">.</span><span class="n">quickstart</span><span class="o">.</span><span class="n">yml</span>
</pre></div>
</div>
<h3 id="start-netmaker">Start Netmaker<a class="headerlink" href="#start-netmaker" title="Permalink to this headline"></a></h3>

View file

@ -46,7 +46,7 @@
<title>Search &#8212; Netmaker 0.5 documentation</title>
<title>Search &#8212; Netmaker 0.7 documentation</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/material.css" type="text/css" />
@ -85,7 +85,7 @@
<nav class="md-header-nav md-grid">
<div class="md-flex navheader">
<div class="md-flex__cell md-flex__cell--shrink">
<a href="index.html" title="Netmaker 0.5 documentation"
<a href="index.html" title="Netmaker 0.7 documentation"
class="md-header-nav__button md-logo">
<i class="md-icon">&#xe869</i>
@ -171,7 +171,7 @@
<nav class="md-tabs" data-md-component="tabs">
<div class="md-tabs__inner md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item"><a href="index.html" class="md-tabs__link">Netmaker 0.5 documentation</a></li>
<li class="md-tabs__item"><a href="index.html" class="md-tabs__link">Netmaker 0.7 documentation</a></li>
</ul>
</div>
</nav>
@ -183,13 +183,13 @@
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title md-nav__title--site" for="__drawer">
<a href="index.html" title="Netmaker 0.5 documentation" class="md-nav__button md-logo">
<a href="index.html" title="Netmaker 0.7 documentation" class="md-nav__button md-logo">
<i class="md-icon">&#xe869</i>
</a>
<a href="index.html"
title="Netmaker 0.5 documentation">Netmaker Docs</a>
title="Netmaker 0.7 documentation">Netmaker Docs</a>
</label>
<div class="md-nav__source">
<a href="https://github.com/gravitl/netmaker/" title="Go to repository" class="md-source" data-md-source="github">
@ -379,7 +379,14 @@
<li class="md-nav__item">
<a href="server-installation.html#dns-mode-prereqisite-setup" class="md-nav__link">DNS Mode Prereqisite Setup</a>
<a href="server-installation.html#server-configuration-reference" class="md-nav__link">Server Configuration Reference</a>
</li>
<li class="md-nav__item">
<a href="server-installation.html#dns-mode-setup" class="md-nav__link">DNS Mode Setup</a>
</li>
@ -403,13 +410,6 @@
<a href="server-installation.html#kubernetes-install" class="md-nav__link">Kubernetes Install</a>
</li>
<li class="md-nav__item">
<a href="server-installation.html#configuration-reference" class="md-nav__link">Configuration Reference</a>
</li>
<li class="md-nav__item">

File diff suppressed because one or more lines are too long

View file

@ -46,7 +46,7 @@
<title>Advanced Server Installation &#8212; Netmaker 0.5 documentation</title>
<title>Advanced Server Installation &#8212; Netmaker 0.7 documentation</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/material.css" type="text/css" />
<script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
@ -81,7 +81,7 @@
<nav class="md-header-nav md-grid">
<div class="md-flex navheader">
<div class="md-flex__cell md-flex__cell--shrink">
<a href="index.html" title="Netmaker 0.5 documentation"
<a href="index.html" title="Netmaker 0.7 documentation"
class="md-header-nav__button md-logo">
<i class="md-icon">&#xe869</i>
@ -167,7 +167,7 @@
<nav class="md-tabs" data-md-component="tabs">
<div class="md-tabs__inner md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item"><a href="index.html" class="md-tabs__link">Netmaker 0.5 documentation</a></li>
<li class="md-tabs__item"><a href="index.html" class="md-tabs__link">Netmaker 0.7 documentation</a></li>
</ul>
</div>
</nav>
@ -179,13 +179,13 @@
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title md-nav__title--site" for="__drawer">
<a href="index.html" title="Netmaker 0.5 documentation" class="md-nav__button md-logo">
<a href="index.html" title="Netmaker 0.7 documentation" class="md-nav__button md-logo">
<i class="md-icon">&#xe869</i>
</a>
<a href="index.html"
title="Netmaker 0.5 documentation">Netmaker Docs</a>
title="Netmaker 0.7 documentation">Netmaker Docs</a>
</label>
<div class="md-nav__source">
<a href="https://github.com/gravitl/netmaker/" title="Go to repository" class="md-source" data-md-source="github">
@ -376,15 +376,23 @@
<ul class="md-nav__list">
<li class="md-nav__item"><a href="#system-compatibility" class="md-nav__link">System Compatibility</a>
</li>
<li class="md-nav__item"><a href="#dns-mode-prereqisite-setup" class="md-nav__link">DNS Mode Prereqisite Setup</a>
<li class="md-nav__item"><a href="#server-configuration-reference" class="md-nav__link">Server Configuration Reference</a><nav class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item"><a href="#variable-description" class="md-nav__link">Variable Description</a>
</li>
<li class="md-nav__item"><a href="#config-file-reference" class="md-nav__link">Config File Reference</a>
</li>
<li class="md-nav__item"><a href="#compose-file-annotated" class="md-nav__link">Compose File - Annotated</a>
</li></ul>
</nav>
</li>
<li class="md-nav__item"><a href="#dns-mode-setup" class="md-nav__link">DNS Mode Setup</a>
</li>
<li class="md-nav__item"><a href="#docker-compose-install" class="md-nav__link">Docker Compose Install</a><nav class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item"><a href="#test-install-no-dns-no-secure-grpc" class="md-nav__link">Test Install - No DNS, No Secure GRPC</a>
</li>
<li class="md-nav__item"><a href="#no-dns-coredns-disabled" class="md-nav__link">No DNS - CoreDNS Disabled</a>
</li>
<li class="md-nav__item"><a href="#reference-compose-file-annotated" class="md-nav__link">Reference Compose File - Annotated</a>
</li></ul>
</nav>
</li>
@ -400,13 +408,11 @@
</li></ul>
</nav>
</li>
<li class="md-nav__item"><a href="#kubernetes-install" class="md-nav__link">Kubernetes Install</a>
</li>
<li class="md-nav__item"><a href="#configuration-reference" class="md-nav__link">Configuration Reference</a><nav class="md-nav">
<li class="md-nav__item"><a href="#kubernetes-install" class="md-nav__link">Kubernetes Install</a><nav class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item"><a href="#variable-description" class="md-nav__link">Variable Description</a>
<li class="md-nav__item"><a href="#server-install" class="md-nav__link">Server Install</a>
</li>
<li class="md-nav__item"><a href="#config-file-reference" class="md-nav__link">Config File Reference</a>
<li class="md-nav__item"><a href="#netclient-daemonset" class="md-nav__link">Netclient Daemonset</a>
</li></ul>
</nav>
</li>
@ -427,7 +433,14 @@
<li class="md-nav__item">
<a href="#dns-mode-prereqisite-setup" class="md-nav__link">DNS Mode Prereqisite Setup</a>
<a href="#server-configuration-reference" class="md-nav__link">Server Configuration Reference</a>
</li>
<li class="md-nav__item">
<a href="#dns-mode-setup" class="md-nav__link">DNS Mode Setup</a>
</li>
@ -451,13 +464,6 @@
<a href="#kubernetes-install" class="md-nav__link">Kubernetes Install</a>
</li>
<li class="md-nav__item">
<a href="#configuration-reference" class="md-nav__link">Configuration Reference</a>
</li>
<li class="md-nav__item">
@ -801,15 +807,23 @@
<ul class="md-nav__list">
<li class="md-nav__item"><a href="#system-compatibility" class="md-nav__link">System Compatibility</a>
</li>
<li class="md-nav__item"><a href="#dns-mode-prereqisite-setup" class="md-nav__link">DNS Mode Prereqisite Setup</a>
<li class="md-nav__item"><a href="#server-configuration-reference" class="md-nav__link">Server Configuration Reference</a><nav class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item"><a href="#variable-description" class="md-nav__link">Variable Description</a>
</li>
<li class="md-nav__item"><a href="#config-file-reference" class="md-nav__link">Config File Reference</a>
</li>
<li class="md-nav__item"><a href="#compose-file-annotated" class="md-nav__link">Compose File - Annotated</a>
</li></ul>
</nav>
</li>
<li class="md-nav__item"><a href="#dns-mode-setup" class="md-nav__link">DNS Mode Setup</a>
</li>
<li class="md-nav__item"><a href="#docker-compose-install" class="md-nav__link">Docker Compose Install</a><nav class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item"><a href="#test-install-no-dns-no-secure-grpc" class="md-nav__link">Test Install - No DNS, No Secure GRPC</a>
</li>
<li class="md-nav__item"><a href="#no-dns-coredns-disabled" class="md-nav__link">No DNS - CoreDNS Disabled</a>
</li>
<li class="md-nav__item"><a href="#reference-compose-file-annotated" class="md-nav__link">Reference Compose File - Annotated</a>
</li></ul>
</nav>
</li>
@ -825,13 +839,11 @@
</li></ul>
</nav>
</li>
<li class="md-nav__item"><a href="#kubernetes-install" class="md-nav__link">Kubernetes Install</a>
</li>
<li class="md-nav__item"><a href="#configuration-reference" class="md-nav__link">Configuration Reference</a><nav class="md-nav">
<li class="md-nav__item"><a href="#kubernetes-install" class="md-nav__link">Kubernetes Install</a><nav class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item"><a href="#variable-description" class="md-nav__link">Variable Description</a>
<li class="md-nav__item"><a href="#server-install" class="md-nav__link">Server Install</a>
</li>
<li class="md-nav__item"><a href="#config-file-reference" class="md-nav__link">Config File Reference</a>
<li class="md-nav__item"><a href="#netclient-daemonset" class="md-nav__link">Netclient Daemonset</a>
</li></ul>
</nav>
</li>
@ -859,80 +871,95 @@
<p>The following documents are meant for special cases like Kubernetes and LXC, or for more advanced setups.</p>
<h2 id="dns-mode-prereqisite-setup">DNS Mode Prereqisite Setup<a class="headerlink" href="#dns-mode-prereqisite-setup" title="Permalink to this headline"></a></h2>
<p>If you plan on running the server in DNS Mode, know that a <a class="reference external" href="https://coredns.io/manual/toc/">CoreDNS Server</a> will be installed. CoreDNS is a light-weight, fast, and easy-to-configure DNS server. It is recommended to bind CoreDNS to port 53 of the host system, and it will do so by default. The clients will expect the nameserver to be on port 53, and many systems have issues resolving a different port.</p>
<p>However, on your host system (for Netmaker), this may conflict with an existing process. On linux systems running systemd-resolved, there is likely a service consuming port 53. The below steps will disable systemd-resolved, and replace it with a generic (e.g. Google) nameserver. Be warned that this may have consequences for any existing private DNS configuration. The following was tested on Ubuntu 20.04 and should be run prior to deploying the docker containers.</p>
<h2 id="server-configuration-reference">Server Configuration Reference<a class="headerlink" href="#server-configuration-reference" title="Permalink to this headline"></a></h2>
<p>Netmaker sets its configuration in the following order of precendence:</p>
<ol class="arabic simple">
<li><p><code class="docutils literal notranslate"><span class="pre">systemctl</span> <span class="pre">stop</span> <span class="pre">systemd-resolved</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">systemctl</span> <span class="pre">disable</span> <span class="pre">systemd-resolved</span></code></p></li>
<li><dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">vim</span> <span class="pre">/etc/systemd/resolved.conf</span></code></dt><dd><ul class="simple">
<li><p>uncomment DNS and add 8.8.8.8 or whatever reachable nameserver is your preference</p></li>
<li><p>uncomment DNSStubListener and set to “no”</p></li>
</ul>
<li><p>Defaults</p></li>
<li><p>Config File</p></li>
<li><p>Environment Variables</p></li>
</ol>
<h3 id="variable-description">Variable Description<a class="headerlink" href="#variable-description" title="Permalink to this headline"></a></h3>
<dl>
<dt>VERBOSITY:</dt><dd><p><strong>Default:</strong> 0</p>
<p><strong>Description:</strong> Specify level of logging you would like on the server. Goes up to 3 for debugging.</p>
</dd>
<dt>GRPC_SSL:</dt><dd><p><strong>Default:</strong> “off”</p>
<p><strong>Description:</strong> Specifies if GRPC is going over secure GRPC or SSL. This is a setting for the clients and is passed through the access token. Can be set to “on” and “off”. Set to on if SSL is configured for GRPC.</p>
</dd>
<dt>SERVER_API_CONN_STRING</dt><dd><p><strong>Default:</strong> “”</p>
<p><strong>Description:</strong> Allows specification of the string used to connect to the server api. Format: IP:PORT or DOMAIN:PORT. Defaults to SERVER_HOST if not specified.</p>
</dd>
<dt>SERVER_GRPC_CONN_STRING</dt><dd><p><strong>Default:</strong> “”</p>
<p><strong>Description:</strong> Allows specification of the string used to connect to grpc. Format: IP:PORT or DOMAIN:PORT. Defaults to SERVER_HOST if not specified.</p>
</dd>
<dt>SERVER_HOST: <em>(depreciated, use SERVER_API_CONN_STRING and SERVER_GRPC_CONN_STRING)</em></dt><dd><p><strong>Default:</strong> Server will perform an IP check and set automatically unless explicitly set, or DISABLE_REMOTE_IP_CHECK is set to true, in which case it defaults to 127.0.0.1</p>
<p><strong>Description:</strong> Sets the SERVER_HTTP_HOST and SERVER_GRPC_HOST variables if they are unset. The address where traffic comes in.</p>
</dd>
<dt>SERVER_HTTP_HOST: <em>(depreciated, use SERVER_API_CONN_STRING and SERVER_GRPC_CONN_STRING)</em></dt><dd><p><strong>Default:</strong> Equals SERVER_HOST if set, “127.0.0.1” if SERVER_HOST is unset.</p>
<p><strong>Description:</strong> Set to make the HTTP and GRPC functions available via different interfaces/networks.</p>
</dd>
<dt>SERVER_GRPC_HOST: <em>(depreciated, use SERVER_API_CONN_STRING and SERVER_GRPC_CONN_STRING)</em></dt><dd><p><strong>Default:</strong> Equals SERVER_HOST if set, “127.0.0.1” if SERVER_HOST is unset.</p>
<p><strong>Description:</strong> Set to make the HTTP and GRPC functions available via different interfaces/networks.</p>
</dd>
<dt>API_PORT:</dt><dd><p><strong>Default:</strong> 8081</p>
<p><strong>Description:</strong> The HTTP API port for Netmaker. Used for API calls / communication from front end.</p>
</dd>
<dt>GRPC_PORT:</dt><dd><p><strong>Default:</strong> 50051</p>
<p><strong>Description:</strong> The GRPC port for Netmaker. Used for communications from nodes.</p>
</dd>
<dt>MASTER_KEY:</dt><dd><p><strong>Default:</strong> “secretkey”</p>
<p><strong>Description:</strong> The admin master key for accessing the API. Change this in any production installation.</p>
</dd>
<dt>CORS_ALLOWED_ORIGIN:</dt><dd><p><strong>Default:</strong> “*”</p>
<p><strong>Description:</strong> The “allowed origin” for API requests. Change to restrict where API requests can come from.</p>
</dd>
<dt>REST_BACKEND:</dt><dd><p><strong>Default:</strong> “on”</p>
<p><strong>Description:</strong> Enables the REST backend (API running on API_PORT at SERVER_HTTP_HOST). Change to “off” to turn off.</p>
</dd>
<dt>AGENT_BACKEND:</dt><dd><p><strong>Default:</strong> “on”</p>
<p><strong>Description:</strong> Enables the AGENT backend (GRPC running on GRPC_PORT at SERVER_GRPC_HOST). Change to “off” to turn off.</p>
</dd>
<dt>DNS_MODE:</dt><dd><p><strong>Default:</strong> “off”</p>
<p><strong>Description:</strong> Enables DNS Mode, meaning config files will be generated for CoreDNS.</p>
</dd>
</dl>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">ln</span> <span class="pre">-sf</span> <span class="pre">/run/systemd/resolve/resolv.conf</span> <span class="pre">/etc/resolv.conf</span></code></p></li>
</ol>
<p>Port 53 should now be available for CoreDNS to use.</p>
<h2 id="docker-compose-install">Docker Compose Install<a class="headerlink" href="#docker-compose-install" title="Permalink to this headline"></a></h2>
<p>The most simple (and recommended) way of installing Netmaker is to use one of the provided <a class="reference external" href="https://github.com/gravitl/netmaker/tree/master/compose">Docker Compose files</a>. Below are instructions for several different options to install Netmaker via Docker Compose, followed by an annotated reference Docker Compose in case your use case requires additional customization.</p>
<h3 id="test-install-no-dns-no-secure-grpc">Test Install - No DNS, No Secure GRPC<a class="headerlink" href="#test-install-no-dns-no-secure-grpc" title="Permalink to this headline"></a></h3>
<p>This install will run Netmaker on a server without HTTPS using an IP address. This is not secure and not recommended, but can be helpful for testing.</p>
<p>It also does not run the CoreDNS server, to simplify the deployment</p>
<dl class="simple">
<dt><strong>Prerequisites:</strong></dt><dd><ul class="simple">
<li><p>server ports 80, 8081, and 50051 are not blocked by firewall</p></li>
</ul>
</dd>
<dt><strong>Notes:</strong></dt><dd><ul class="simple">
<li><p>You can change the port mappings in the Docker Compose if the listed ports are already in use.</p></li>
</ul>
</dd>
</dl>
<p>Assuming you have Docker and Docker Compose installed, you can just run the following, replacing <strong>&lt; Insert your-host IP Address Here &gt;</strong> with your host IP (or domain):</p>
<ol class="arabic simple">
<li><p><code class="docutils literal notranslate"><span class="pre">wget</span> <span class="pre">-O</span> <span class="pre">docker-compose.yml</span> <span class="pre">https://raw.githubusercontent.com/gravitl/netmaker/master/scripts/docker-compose.test.yml</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">sed</span> <span class="pre">-i</span> <span class="pre">s/HOST_IP/&lt;</span> <span class="pre">Insert</span> <span class="pre">your-host</span> <span class="pre">IP</span> <span class="pre">Address</span> <span class="pre">Here</span> <span class="pre">&gt;/g</span> <span class="pre">docker-compose.yml</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">docker-compose</span> <span class="pre">up</span> <span class="pre">-d</span></code></p></li>
</ol>
<h3 id="config-file-reference">Config File Reference<a class="headerlink" href="#config-file-reference" title="Permalink to this headline"></a></h3>
<p>A config file may be placed under config/environments/&lt;env-name&gt;.yml. To read this file at runtime, provide the environment variable NETMAKER_ENV at runtime. For instance, dev.yml paired with ENV=dev. Netmaker will load the specified Config file. This allows you to store and manage configurations for different environments. Below is a reference Config File you may use.</p>
<div class="highlight-YAML notranslate"><div class="highlight"><pre><span></span><span class="nt">server</span><span class="p">:</span>
<span class="nt">apihost</span><span class="p">:</span> <span class="s">""</span> <span class="c1"># defaults to 127.0.0.1 or remote ip (SERVER_HOST) if DisableRemoteIPCheck is not set to true. SERVER_API_HOST if set</span>
<span class="nt">apiport</span><span class="p">:</span> <span class="s">""</span> <span class="c1"># defaults to 8081 or HTTP_PORT (if set)</span>
<span class="nt">grpchost</span><span class="p">:</span> <span class="s">""</span> <span class="c1"># defaults to 127.0.0.1 or remote ip (SERVER_HOST) if DisableRemoteIPCheck is not set to true. SERVER_GRPC_HOST if set.</span>
<span class="nt">grpcport</span><span class="p">:</span> <span class="s">""</span> <span class="c1"># defaults to 50051 or GRPC_PORT (if set)</span>
<span class="nt">masterkey</span><span class="p">:</span> <span class="s">""</span> <span class="c1"># defaults to 'secretkey' or MASTER_KEY (if set)</span>
<span class="nt">allowedorigin</span><span class="p">:</span> <span class="s">""</span> <span class="c1"># defaults to '*' or CORS_ALLOWED_ORIGIN (if set)</span>
<span class="nt">restbackend</span><span class="p">:</span> <span class="s">""</span> <span class="c1"># defaults to "on" or REST_BACKEND (if set)</span>
<span class="nt">agentbackend</span><span class="p">:</span> <span class="s">""</span> <span class="c1"># defaults to "on" or AGENT_BACKEND (if set)</span>
<span class="nt">clientmode</span><span class="p">:</span> <span class="s">""</span> <span class="c1"># defaults to "on" or CLIENT_MODE (if set)</span>
<span class="nt">dnsmode</span><span class="p">:</span> <span class="s">""</span> <span class="c1"># defaults to "on" or DNS_MODE (if set)</span>
<span class="nt">disableremoteipcheck</span><span class="p">:</span> <span class="s">""</span> <span class="c1"># defaults to "false" or DISABLE_REMOTE_IP_CHECK (if set)</span>
</pre></div>
</div>
<h3 id="no-dns-coredns-disabled">No DNS - CoreDNS Disabled<a class="headerlink" href="#no-dns-coredns-disabled" title="Permalink to this headline"></a></h3>
<p>DNS Mode is currently limited to clients that can run resolvectl (systemd-resolved, see <a class="reference internal" href="architecture.html"><span class="doc">Architecture docs</span></a> for more info). You may wish to disable DNS mode for various reasons. This installation option gives you the full feature set minus CoreDNS.</p>
<p>To run without DNS, follow the Quick Install guide, omitting the steps for DNS setup. In addition, when the guide has you pull (wget) the Netmaker docker-compose template, use the following link instead:</p>
<ol class="arabic simple">
<li><p><code class="docutils literal notranslate"><span class="pre">wget</span> <span class="pre">-O</span> <span class="pre">docker-compose.yml</span> <span class="pre">https://raw.githubusercontent.com/gravitl/netmaker/master/scripts/docker-compose.nodns.yml</span></code></p></li>
</ol>
<p>This template is equivalent but omits CoreDNS.</p>
<h3 id="reference-compose-file-annotated">Reference Compose File - Annotated<a class="headerlink" href="#reference-compose-file-annotated" title="Permalink to this headline"></a></h3>
<h3 id="compose-file-annotated">Compose File - Annotated<a class="headerlink" href="#compose-file-annotated" title="Permalink to this headline"></a></h3>
<p>All environment variables and options are enabled in this file. It is the equivalent to running the “full install” from the above section. However, all environment variables are included, and are set to the default values provided by Netmaker (if the environment variable was left unset, it would not change the installation). Comments are added to each option to show how you might use it to modify your installation.</p>
<div class="highlight-YAML notranslate"><div class="highlight"><pre><span></span><span class="nt">version</span><span class="p">:</span> <span class="s">"3.4"</span>
<span class="nt">services</span><span class="p">:</span>
<span class="nt">mongodb</span><span class="p">:</span> <span class="c1"># The MongoDB Instance that backs up Netmaker</span>
<span class="nt">image</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">mongo:4.2</span>
<span class="nt">ports</span><span class="p">:</span>
<span class="p p-Indicator">-</span> <span class="s">"27017:27017"</span> <span class="c1"># Port Mapping for MongoDB. Can be modified, but be sure to change the MONGO_PORT env var in netmaker</span>
<span class="nt">container_name</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">mongodb</span>
<span class="nt">volumes</span><span class="p">:</span>
<span class="p p-Indicator">-</span> <span class="l l-Scalar l-Scalar-Plain">mongovol:/data/db</span>
<div class="highlight-YAML notranslate"><div class="highlight"><pre><span></span><span class="nt">services</span><span class="p">:</span>
<span class="nt">rqlite</span><span class="p">:</span>
<span class="nt">container_name</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">rqlite</span>
<span class="nt">image</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">rqlite/rqlite</span>
<span class="nt">network_mode</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">host</span>
<span class="nt">restart</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">always</span>
<span class="nt">environment</span><span class="p">:</span>
<span class="nt">MONGO_INITDB_ROOT_USERNAME</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">mongoadmin</span> <span class="c1"># Default username. Recommend changing for production installs. You will need to set MONGO_ADMIN netmaker env var.</span>
<span class="nt">MONGO_INITDB_ROOT_PASSWORD</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">mongopass</span> <span class="c1"># Default password. Recommend changing for production installs. You will need to set MONGO_PASS netmaker env var.</span>
<span class="nt">volumes</span><span class="p">:</span>
<span class="p p-Indicator">-</span> <span class="l l-Scalar l-Scalar-Plain">sqldata:/rqlite/file/data</span>
<span class="nt">netmaker</span><span class="p">:</span> <span class="c1"># The Primary Server for running Netmaker</span>
<span class="nt">privileged</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">true</span> <span class="c1"># Necessary to run sudo/root level commands on host system. Take out if not running with CLIENT_MODE=on</span>
<span class="nt">container_name</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">netmaker</span>
<span class="nt">depends_on</span><span class="p">:</span>
<span class="p p-Indicator">-</span> <span class="l l-Scalar l-Scalar-Plain">mongodb</span>
<span class="nt">image</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">gravitl/netmaker:v0.5</span>
<span class="p p-Indicator">-</span> <span class="l l-Scalar l-Scalar-Plain">rqlite</span>
<span class="nt">image</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">gravitl/netmaker:v0.7</span>
<span class="nt">volumes</span><span class="p">:</span> <span class="c1"># Volume mounts necessary for CLIENT_MODE to control netclient, wireguard, and networking on host (except dnsconfig, which is where dns config files are stored for use by CoreDNS)</span>
<span class="p p-Indicator">-</span> <span class="l l-Scalar l-Scalar-Plain">./:/local</span>
<span class="p p-Indicator">-</span> <span class="l l-Scalar l-Scalar-Plain">/etc/netclient:/etc/netclient</span>
@ -957,36 +984,23 @@
<span class="nt">CORS_ALLOWED_ORIGIN</span><span class="p">:</span> <span class="s">"*"</span> <span class="c1"># The "allowed origin" for API requests. Change to restrict where API requests can come from.</span>
<span class="nt">REST_BACKEND</span><span class="p">:</span> <span class="s">"on"</span> <span class="c1"># Enables the REST backend (API running on API_PORT at SERVER_HTTP_HOST). Change to "off" to turn off.</span>
<span class="nt">AGENT_BACKEND</span><span class="p">:</span> <span class="s">"on"</span> <span class="c1"># Enables the AGENT backend (GRPC running on GRPC_PORT at SERVER_GRPC_HOST). Change to "off" to turn off.</span>
<span class="nt">CLIENT_MODE</span><span class="p">:</span> <span class="s">"on"</span> <span class="c1"># Enables Client Mode, meaning netclient will be deployed on server and will be manageable from UI. Change to "off" to turn off.</span>
<span class="nt">DNS_MODE</span><span class="p">:</span> <span class="s">"on"</span> <span class="c1"># Enables DNS Mode, meaning config files will be generated for CoreDNS. Note, turning "off" does not remove CoreDNS. You still need to remove CoreDNS from compose file.</span>
<span class="nt">DISABLE_REMOTE_IP_CHECK</span><span class="p">:</span> <span class="s">"off"</span> <span class="c1"># If turned "on", Server will not set Host based on remote IP check. This is already overridden if SERVER_HOST is set. Turned "off" by default.</span>
<span class="nt">MONGO_ADMIN</span><span class="p">:</span> <span class="s">"mongoadmin"</span> <span class="c1"># Admin user for MongoDB. Change to match above MongoDB instance</span>
<span class="nt">MONGO_PASS</span><span class="p">:</span> <span class="s">"mongopass"</span> <span class="c1"># Admin password for MongoDB. Change to match above MongoDB instance</span>
<span class="nt">MONGO_HOST</span><span class="p">:</span> <span class="s">"127.0.0.1"</span> <span class="c1"># Address of MongoDB. Change if necessary.</span>
<span class="nt">MONGO_PORT</span><span class="p">:</span> <span class="s">"27017"</span> <span class="c1"># Port of MongoDB. Change if necessary.</span>
<span class="nt">MONGO_OPTS</span><span class="p">:</span> <span class="s">"/?authSource=admin"</span> <span class="c1"># Opts to enable admin login for Mongo.</span>
<span class="nt">SERVER_GRPC_WIREGUARD</span><span class="p">:</span> <span class="s">"on"</span> <span class="c1"># Whether to run GRPC over a WireGuard network. On by default. Secures server comms. Switch to "off" to turn off.</span>
<span class="nt">SERVER_GRPC_WG_INTERFACE</span><span class="p">:</span> <span class="s">"nm-grpc-wg"</span> <span class="c1"># Interface to use for GRPC WireGuard network if enabled</span>
<span class="nt">SERVER_GRPC_WG_ADDRESS</span><span class="p">:</span> <span class="s">"10.101.0.1"</span> <span class="c1"># Private Address to use for GRPC WireGuard network if enabled</span>
<span class="nt">SERVER_GRPC_WG_ADDRESS_RANGE</span><span class="p">:</span> <span class="s">"10.101.0.0/16"</span> <span class="c1"># Private Address range to use for GRPC WireGard clients if enabled</span>
<span class="nt">SERVER_GRPC_WG_PORT</span><span class="p">:</span> <span class="s">"50555"</span> <span class="c1"># Port to use for GRPC WireGuard if enabled</span>
<span class="nt">SERVER_GRPC_WG_PUBKEY</span><span class="p">:</span> <span class="s">"SERVER_GRPC_WG_PUBKEY"</span> <span class="c1"># PublicKey for GRPC WireGuard interface. Generated if blank.</span>
<span class="nt">SERVER_GRPC_WG_PRIVKEY</span><span class="p">:</span> <span class="s">"SERVER_GRPC_WG_PRIVKEY"</span> <span class="c1"># PrivateKey for GRPC WireGuard interface. Generated if blank.</span>
<span class="nt">GRPC_SSL</span><span class="p">:</span> <span class="s">"off"</span> <span class="c1"># Tells clients to use SSL to connect to GRPC. Switch to on to turn on.</span>
<span class="nt">COREDNS_ADDR</span><span class="p">:</span> <span class="s">""</span> <span class="c1"># Address of the CoreDNS server. Defaults to SERVER_HOST</span>
<span class="nt">SERVER_API_CONN_STRING</span><span class="p">:</span> <span class="s">""</span> <span class="c1"># Changes the api connection string. IP:PORT format. By default is empty and uses SERVER_HOST:API_PORT</span>
<span class="nt">SERVER_GRPC_CONN_STRING</span><span class="p">:</span> <span class="s">""</span> <span class="c1"># Changes the grpc connection string. IP:PORT format. By default is empty and uses SERVER_HOST:GRPC_PORT</span>
<span class="nt">netmaker-ui</span><span class="p">:</span> <span class="c1"># The Netmaker UI Component</span>
<span class="nt">container_name</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">netmaker-ui</span>
<span class="nt">depends_on</span><span class="p">:</span>
<span class="p p-Indicator">-</span> <span class="l l-Scalar l-Scalar-Plain">netmaker</span>
<span class="nt">image</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">gravitl/netmaker-ui:v0.5</span>
<span class="nt">image</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">gravitl/netmaker-ui:v0.7</span>
<span class="nt">links</span><span class="p">:</span>
<span class="p p-Indicator">-</span> <span class="s">"netmaker:api"</span>
<span class="nt">ports</span><span class="p">:</span>
<span class="p p-Indicator">-</span> <span class="s">"80:80"</span>
<span class="p p-Indicator">-</span> <span class="s">"8082:80"</span>
<span class="nt">environment</span><span class="p">:</span>
<span class="nt">BACKEND_URL</span><span class="p">:</span> <span class="s">"http://HOST_IP:8081"</span> <span class="c1"># URL where UI will send API requests. Change based on SERVER_HOST, SERVER_HTTP_HOST, and API_PORT</span>
<span class="nt">MASTER_KEY</span><span class="p">:</span> <span class="s">"secretkey"</span> <span class="c1"># Master Key for API calls. Will be removed in v0.3.5</span>
<span class="nt">coredns</span><span class="p">:</span> <span class="c1"># The DNS Server. Remove this section if DNS_MODE="off"</span>
<span class="nt">depends_on</span><span class="p">:</span>
<span class="p p-Indicator">-</span> <span class="l l-Scalar l-Scalar-Plain">netmaker</span>
@ -999,16 +1013,65 @@
<span class="nt">volumes</span><span class="p">:</span>
<span class="p p-Indicator">-</span> <span class="l l-Scalar l-Scalar-Plain">dnsconfig:/root/dnsconfig</span>
<span class="nt">volumes</span><span class="p">:</span>
<span class="nt">mongovol</span><span class="p">:</span> <span class="p p-Indicator">{}</span>
<span class="nt">sqldata</span><span class="p">:</span> <span class="p p-Indicator">{}</span>
<span class="nt">dnsconfig</span><span class="p">:</span> <span class="p p-Indicator">{}</span>
</pre></div>
</div>
<h2 id="dns-mode-setup">DNS Mode Setup<a class="headerlink" href="#dns-mode-setup" title="Permalink to this headline"></a></h2>
<p>If you plan on running the server in DNS Mode, know that a <a class="reference external" href="https://coredns.io/manual/toc/">CoreDNS Server</a> will be installed. CoreDNS is a light-weight, fast, and easy-to-configure DNS server. It is recommended to bind CoreDNS to port 53 of the host system, and it will do so by default. The clients will expect the nameserver to be on port 53, and many systems have issues resolving a different port.</p>
<p>However, on your host system (for Netmaker), this may conflict with an existing process. On linux systems running systemd-resolved, there is likely a service consuming port 53. The below steps will disable systemd-resolved, and replace it with a generic (e.g. Google) nameserver. Be warned that this may have consequences for any existing private DNS configuration. The following was tested on Ubuntu 20.04 and should be run prior to deploying the docker containers.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">systemctl</span> <span class="n">stop</span> <span class="n">systemd</span><span class="o">-</span><span class="n">resolved</span>
<span class="n">systemctl</span> <span class="n">disable</span> <span class="n">systemd</span><span class="o">-</span><span class="n">resolved</span>
<span class="n">vim</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">systemd</span><span class="o">/</span><span class="n">resolved</span><span class="o">.</span><span class="n">conf</span>
<span class="o">*</span> <span class="n">uncomment</span> <span class="n">DNS</span> <span class="ow">and</span> <span class="n">add</span> <span class="mf">8.8.8.8</span> <span class="ow">or</span> <span class="n">whatever</span> <span class="n">reachable</span> <span class="n">nameserver</span> <span class="ow">is</span> <span class="n">your</span> <span class="n">preference</span> <span class="o">*</span>
<span class="o">*</span> <span class="n">uncomment</span> <span class="n">DNSStubListener</span> <span class="ow">and</span> <span class="nb">set</span> <span class="n">to</span> <span class="s2">"no"</span> <span class="o">*</span>
<span class="n">ln</span> <span class="o">-</span><span class="n">sf</span> <span class="o">/</span><span class="n">run</span><span class="o">/</span><span class="n">systemd</span><span class="o">/</span><span class="n">resolve</span><span class="o">/</span><span class="n">resolv</span><span class="o">.</span><span class="n">conf</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">resolv</span><span class="o">.</span><span class="n">conf</span>
</pre></div>
</div>
<p>Port 53 should now be available for CoreDNS to use.</p>
<h2 id="docker-compose-install">Docker Compose Install<a class="headerlink" href="#docker-compose-install" title="Permalink to this headline"></a></h2>
<p>The most simple (and recommended) way of installing Netmaker is to use one of the provided <a class="reference external" href="https://github.com/gravitl/netmaker/tree/master/compose">Docker Compose files</a>. Below are instructions for several different options to install Netmaker via Docker Compose, followed by an annotated reference Docker Compose in case your use case requires additional customization.</p>
<h3 id="test-install-no-dns-no-secure-grpc">Test Install - No DNS, No Secure GRPC<a class="headerlink" href="#test-install-no-dns-no-secure-grpc" title="Permalink to this headline"></a></h3>
<p>This install will run Netmaker on a server without HTTPS using an IP address. This is not secure and not recommended, but can be helpful for testing.</p>
<p>It also does not run the CoreDNS server, to simplify the deployment</p>
<dl class="simple">
<dt><strong>Prerequisites:</strong></dt><dd><ul class="simple">
<li><p>server ports 80, 8081, and 50051 are not blocked by firewall</p></li>
</ul>
</dd>
<dt><strong>Notes:</strong></dt><dd><ul class="simple">
<li><p>You can change the port mappings in the Docker Compose if the listed ports are already in use.</p></li>
</ul>
</dd>
</dl>
<p>Assuming you have Docker and Docker Compose installed, you can just run the following, replacing <strong>&lt; Insert your-host IP Address Here &gt;</strong> with your host IP (or domain):</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>wget -O docker-compose.yml https://raw.githubusercontent.com/gravitl/netmaker/master/scripts/docker-compose.test.yml
sed -i s/HOST_IP/&lt; Insert your-host IP Address Here &gt;/g docker-compose.yml
docker-compose up -d`
</pre></div>
</div>
<h3 id="no-dns-coredns-disabled">No DNS - CoreDNS Disabled<a class="headerlink" href="#no-dns-coredns-disabled" title="Permalink to this headline"></a></h3>
<p>DNS Mode is currently limited to clients that can run resolvectl (systemd-resolved, see <a class="reference internal" href="architecture.html"><span class="doc">Architecture docs</span></a> for more info). You may wish to disable DNS mode for various reasons. This installation option gives you the full feature set minus CoreDNS.</p>
<p>To run without DNS, follow the <a class="reference internal" href="quick-start.html"><span class="doc">Quick Install</span></a> guide, omitting the steps for DNS setup. In addition, when the guide has you pull (wget) the Netmaker docker-compose template, use the following link instead:</p>
<ol class="arabic simple">
<li><p><code class="docutils literal notranslate"><span class="pre">wget</span> <span class="pre">-O</span> <span class="pre">docker-compose.yml</span> <span class="pre">https://raw.githubusercontent.com/gravitl/netmaker/master/scripts/docker-compose.nodns.yml</span></code></p></li>
</ol>
<p>This template is equivalent but omits CoreDNS.</p>
<h2 id="linux-install-without-docker">Linux Install without Docker<a class="headerlink" href="#linux-install-without-docker" title="Permalink to this headline"></a></h2>
<p>Most systems support Docker, but some, such as LXC, do not. In such environments, there are many options for installing Netmaker. Netmaker is available as a binary file, and there is a zip file of the Netmaker UI static HTML on GitHub. Beyond the UI and Server, you need to install MongoDB and CoreDNS (optional).</p>
<p>Below is a guided set of instructions for installing without Docker on Ubuntu 20.04. Depending on your system, the steps may vary.</p>
<p>To start, we recommend following the Nginx instructions in the <a class="reference internal" href="quick-start.html"><span class="doc">Quick Install</span></a> guide to enable SSL for your environment.</p>
<p>Once this is enabled and configured for a domain, you can continue with the below. The recommended server runs Ubuntu 20.04.</p>
<h3 id="rqlite-setup">rqlite Setup<a class="headerlink" href="#rqlite-setup" title="Permalink to this headline"></a></h3>
<ol class="arabic simple">
@ -1019,22 +1082,32 @@
<h3 id="server-setup">Server Setup<a class="headerlink" href="#server-setup" title="Permalink to this headline"></a></h3>
<ol class="arabic simple">
<li><p><strong>Run the install script:</strong> <code class="docutils literal notranslate"><span class="pre">sudo</span> <span class="pre">curl</span> <span class="pre">-sfL</span> <span class="pre">https://raw.githubusercontent.com/gravitl/netmaker/v0.3.5/scripts/netmaker-server.sh</span> <span class="pre">|</span> <span class="pre">sh</span> <span class="pre">-</span></code></p></li>
<li><p><strong>Run the install script:</strong></p></li>
</ol>
<p><code class="docutils literal notranslate"><span class="pre">sudo</span> <span class="pre">curl</span> <span class="pre">-sfL</span> <span class="pre">https://raw.githubusercontent.com/gravitl/netmaker/develop/scripts/netmaker-server.sh</span> <span class="pre">|</span> <span class="pre">sh</span> <span class="pre">-</span></code></p>
<ol class="arabic simple" start="2">
<li><p>Check status: <code class="docutils literal notranslate"><span class="pre">sudo</span> <span class="pre">journalctl</span> <span class="pre">-u</span> <span class="pre">netmaker</span></code></p></li>
<li><p>If any settings are incorrect such as host or mongo credentials, change them under /etc/netmaker/config/environments/&lt; your env &gt;.yaml and then run <code class="docutils literal notranslate"><span class="pre">sudo</span> <span class="pre">systemctl</span> <span class="pre">restart</span> <span class="pre">netmaker</span></code></p></li>
</ol>
<h3 id="ui-setup">UI Setup<a class="headerlink" href="#ui-setup" title="Permalink to this headline"></a></h3>
<p>The following uses NGinx as an http server. You may alternatively use Apache or any other web server that serves static web files.</p>
<p>The following uses Nginx as an http server. You may alternatively use Apache or any other web server that serves static web files.</p>
<ol class="arabic simple">
<li><p><strong>Download UI asset files:</strong> <code class="docutils literal notranslate"><span class="pre">sudo</span> <span class="pre">wget</span> <span class="pre">-O</span> <span class="pre">/usr/share/nginx/html/netmaker-ui.zip</span> <span class="pre">https://github.com/gravitl/netmaker-ui/releases/download/latest/netmaker-ui.zip</span></code></p></li>
<li><p><strong>Unzip:</strong> <code class="docutils literal notranslate"><span class="pre">sudo</span> <span class="pre">unzip</span> <span class="pre">/usr/share/nginx/html/netmaker-ui.zip</span> <span class="pre">-d</span> <span class="pre">/usr/share/nginx/html</span></code></p></li>
<li><p><strong>Copy Config to Nginx:</strong> <code class="docutils literal notranslate"><span class="pre">sudo</span> <span class="pre">cp</span> <span class="pre">/usr/share/nginx/html/nginx.conf</span> <span class="pre">/etc/nginx/conf.d/default.conf</span></code></p></li>
<li><p><strong>Modify Default Config Path:</strong> <code class="docutils literal notranslate"><span class="pre">sudo</span> <span class="pre">sed</span> <span class="pre">-i</span> <span class="pre">'s/root</span> <span class="pre">\/var\/www\/html/root</span> <span class="pre">\/usr\/share\/nginx\/html/g'</span> <span class="pre">/etc/nginx/sites-available/default</span></code></p></li>
<li><p><strong>Change Backend URL:</strong> <code class="docutils literal notranslate"><span class="pre">sudo</span> <span class="pre">sh</span> <span class="pre">-c</span> <span class="pre">'BACKEND_URL=http://&lt;YOUR</span> <span class="pre">BACKEND</span> <span class="pre">API</span> <span class="pre">URL&gt;:PORT</span> <span class="pre">/usr/share/nginx/html/generate_config_js.sh</span> <span class="pre">&gt;/usr/share/nginx/html/config.js'</span></code></p></li>
<li><p><strong>Start Nginx:</strong> <code class="docutils literal notranslate"><span class="pre">sudo</span> <span class="pre">systemctl</span> <span class="pre">start</span> <span class="pre">nginx</span></code></p></li>
<li><p>Download and Unzip UI asset files</p></li>
<li><p>Copy Config to Nginx</p></li>
<li><p>Modify Default Config Path</p></li>
<li><p>Change Backend URL</p></li>
<li><p>Start Nginx</p></li>
</ol>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">wget</span> <span class="o">-</span><span class="n">O</span> <span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">share</span><span class="o">/</span><span class="n">nginx</span><span class="o">/</span><span class="n">html</span><span class="o">/</span><span class="n">netmaker</span><span class="o">-</span><span class="n">ui</span><span class="o">.</span><span class="n">zip</span> <span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">github</span><span class="o">.</span><span class="n">com</span><span class="o">/</span><span class="n">gravitl</span><span class="o">/</span><span class="n">netmaker</span><span class="o">-</span><span class="n">ui</span><span class="o">/</span><span class="n">releases</span><span class="o">/</span><span class="n">download</span><span class="o">/</span><span class="n">latest</span><span class="o">/</span><span class="n">netmaker</span><span class="o">-</span><span class="n">ui</span><span class="o">.</span><span class="n">zip</span>
<span class="n">sudo</span> <span class="n">unzip</span> <span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">share</span><span class="o">/</span><span class="n">nginx</span><span class="o">/</span><span class="n">html</span><span class="o">/</span><span class="n">netmaker</span><span class="o">-</span><span class="n">ui</span><span class="o">.</span><span class="n">zip</span> <span class="o">-</span><span class="n">d</span> <span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">share</span><span class="o">/</span><span class="n">nginx</span><span class="o">/</span><span class="n">html</span>
<span class="n">sudo</span> <span class="n">cp</span> <span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">share</span><span class="o">/</span><span class="n">nginx</span><span class="o">/</span><span class="n">html</span><span class="o">/</span><span class="n">nginx</span><span class="o">.</span><span class="n">conf</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">nginx</span><span class="o">/</span><span class="n">conf</span><span class="o">.</span><span class="n">d</span><span class="o">/</span><span class="n">default</span><span class="o">.</span><span class="n">conf</span>
<span class="n">sudo</span> <span class="n">sed</span> <span class="o">-</span><span class="n">i</span> <span class="s1">'s/root \/var\/www\/html/root \/usr\/share\/nginx\/html/g'</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">nginx</span><span class="o">/</span><span class="n">sites</span><span class="o">-</span><span class="n">available</span><span class="o">/</span><span class="n">default</span>
<span class="n">sudo</span> <span class="n">sh</span> <span class="o">-</span><span class="n">c</span> <span class="s1">'BACKEND_URL=http://&lt;YOUR BACKEND API URL&gt;:PORT /usr/share/nginx/html/generate_config_js.sh &gt;/usr/share/nginx/html/config.js'</span>
<span class="n">sudo</span> <span class="n">systemctl</span> <span class="n">start</span> <span class="n">nginx</span>
</pre></div>
</div>
<h3 id="coredns-setup">CoreDNS Setup<a class="headerlink" href="#coredns-setup" title="Permalink to this headline"></a></h3>
@ -1042,122 +1115,31 @@
<h2 id="kubernetes-install">Kubernetes Install<a class="headerlink" href="#kubernetes-install" title="Permalink to this headline"></a></h2>
<p><strong>This configuration is coming soon.</strong> It will allow you to deploy Netmaker on a Kubernetes cluster.</p>
<h2 id="configuration-reference">Configuration Reference<a class="headerlink" href="#configuration-reference" title="Permalink to this headline"></a></h2>
<p>The “Reference Compose File” (above) explains many of these options. However, it is important to understand fundamentally how Netmaker sets its configuration:</p>
<ol class="arabic simple">
<li><p>Defaults</p></li>
<li><p>Config File</p></li>
<li><p>Environment Variables</p></li>
</ol>
<h3 id="variable-description">Variable Description<a class="headerlink" href="#variable-description" title="Permalink to this headline"></a></h3>
<dl>
<dt>SERVER_HOST:</dt><dd><p><strong>Default:</strong> Server will perform an IP check and set automatically unless explicitly set, or DISABLE_REMOTE_IP_CHECK is set to true, in which case it defaults to 127.0.0.1</p>
<p><strong>Description:</strong> Sets the SERVER_HTTP_HOST and SERVER_GRPC_HOST variables if they are unset. The address where traffic comes in.</p>
</dd>
<dt>SERVER_HTTP_HOST:</dt><dd><p><strong>Default:</strong> Equals SERVER_HOST if set, “127.0.0.1” if SERVER_HOST is unset.</p>
<p><strong>Description:</strong> Set to make the HTTP and GRPC functions available via different interfaces/networks.</p>
</dd>
<dt>SERVER_GRPC_HOST:</dt><dd><p><strong>Default:</strong> Equals SERVER_HOST if set, “127.0.0.1” if SERVER_HOST is unset.</p>
<p><strong>Description:</strong> Set to make the HTTP and GRPC functions available via different interfaces/networks.</p>
</dd>
<dt>API_PORT:</dt><dd><p><strong>Default:</strong> 8081</p>
<p><strong>Description:</strong> The HTTP API port for Netmaker. Used for API calls / communication from front end.</p>
</dd>
<dt>GRPC_PORT:</dt><dd><p><strong>Default:</strong> 50051</p>
<p><strong>Description:</strong> The GRPC port for Netmaker. Used for communications from nodes.</p>
</dd>
<dt>MASTER_KEY:</dt><dd><p><strong>Default:</strong> “secretkey”</p>
<p><strong>Description:</strong> The admin master key for accessing the API. Change this in any production installation.</p>
</dd>
<dt>CORS_ALLOWED_ORIGIN:</dt><dd><p><strong>Default:</strong> “*”</p>
<p><strong>Description:</strong> The “allowed origin” for API requests. Change to restrict where API requests can come from.</p>
</dd>
<dt>REST_BACKEND:</dt><dd><p><strong>Default:</strong> “on”</p>
<p><strong>Description:</strong> Enables the REST backend (API running on API_PORT at SERVER_HTTP_HOST). Change to “off” to turn off.</p>
</dd>
<dt>AGENT_BACKEND:</dt><dd><p><strong>Default:</strong> “on”</p>
<p><strong>Description:</strong> Enables the AGENT backend (GRPC running on GRPC_PORT at SERVER_GRPC_HOST). Change to “off” to turn off.</p>
</dd>
<dt>CLIENT_MODE:</dt><dd><p><strong>Default:</strong> “on”</p>
<p><strong>Description:</strong> Enables Client Mode, meaning netclient will be deployed on server and will be manageable from UI. Change to “off” to turn off.</p>
</dd>
<dt>DNS_MODE:</dt><dd><p><strong>Default:</strong> “on”</p>
<p><strong>Description:</strong> Enables DNS Mode, meaning config files will be generated for CoreDNS.</p>
</dd>
<dt>DISABLE_REMOTE_IP_CHECK:</dt><dd><p><strong>Default:</strong> “off”</p>
<p><strong>Description:</strong> If turned “on”, Server will not set Host based on remote IP check. This is already overridden if SERVER_HOST is set. Turned “off” by default.</p>
</dd>
<dt>MONGO_ADMIN:</dt><dd><p><strong>Default:</strong> “mongoadmin”</p>
<p><strong>Description:</strong> Admin user for MongoDB.</p>
</dd>
<dt>MONGO_PASS:</dt><dd><p><strong>Default:</strong> “mongopass”</p>
<p><strong>Description:</strong> Admin password for MongoDB.</p>
</dd>
<dt>MONGO_HOST:</dt><dd><p><strong>Default:</strong> “127.0.0.1”</p>
<p><strong>Description:</strong> Address of MongoDB.</p>
</dd>
<dt>MONGO_PORT:</dt><dd><p><strong>Default:</strong> “27017”</p>
<p><strong>Description:</strong> Port of MongoDB.</p>
</dd>
<dt>MONGO_OPTS:</dt><dd><p><strong>Default:</strong> “/?authSource=admin”</p>
<p><strong>Description:</strong> Opts to enable admin login for Mongo.</p>
</dd>
<dt>SERVER_GRPC_WIREGUARD:</dt><dd><p><strong>Default:</strong> “on”</p>
<p><strong>Description:</strong> Whether to run GRPC over a WireGuard network. On by default. Secures the server comms. Switch to “off” to turn off. If off and running in production, make sure to have certificates installed to secure GRPC communications.</p>
</dd>
<dt>SERVER_GRPC_WG_INTERFACE:</dt><dd><p><strong>Default:</strong> “nm-grpc-wg”</p>
<p><strong>Description:</strong> Interface to use for GRPC WireGuard network if enabled</p>
</dd>
<dt>SERVER_GRPC_WG_ADDRESS:</dt><dd><p><strong>Default:</strong> “10.101.0.1”</p>
<p><strong>Description:</strong> Private Address to use for GRPC WireGuard network if enabled</p>
</dd>
<dt>SERVER_GRPC_WG_ADDRESS_RANGE:</dt><dd><p><strong>Default:</strong> “10.101.0.0/16”</p>
<p><strong>Description:</strong> Private Address range to use for GRPC WireGard clients if enabled. Gives 65,534 total addresses for all of netmaker. If running a larger network, will need to configure addresses differently, for instance using ipv6, or use certificates instead.</p>
</dd>
<dt>SERVER_GRPC_WG_PORT:</dt><dd><p><strong>Default:</strong> 50555</p>
<p><strong>Description:</strong> Port to use for GRPC WireGuard if enabled</p>
</dd>
<dt>SERVER_GRPC_WG_PUBKEY:</dt><dd><p><strong>Default:</strong> &lt; generated at startup &gt;</p>
<p><strong>Description:</strong> PublicKey for GRPC WireGuard interface. Generated if left blank.</p>
</dd>
<dt>SERVER_GRPC_WG_PRIVKEY:</dt><dd><p><strong>Default:</strong> &lt; generated at startup &gt;</p>
<p><strong>Description:</strong> PrivateKey for GRPC WireGuard interface. Generated if left blank.</p>
</dd>
<dt>SERVER_GRPC_WG_KEYREQUIRED</dt><dd><p><strong>Default:</strong> “”</p>
<p><strong>Description:</strong> Determines if an Access Key is required to join the Comms network. Blank (meaning no) by default. Set to “yes” to turn on.</p>
</dd>
<dt>GRPC_SSL</dt><dd><p><strong>Default:</strong> “”</p>
<p><strong>Description:</strong> Specifies if GRPC is going over secure GRPC or SSL. This is a setting for the clients and is passed through the access token. Can be set to “on” and “off”. Set to on if SSL is configured for GRPC.</p>
</dd>
<dt>SERVER_API_CONN_STRING</dt><dd><p><strong>Default:</strong> “”</p>
<p><strong>Description:</strong> Allows specification of the string used to connect to the server api. Format: IP:PORT or DOMAIN:PORT. Defaults to SERVER_HOST if not specified.</p>
</dd>
<dt>SERVER_GRPC_CONN_STRING</dt><dd><p><strong>Default:</strong> “”</p>
<p><strong>Description:</strong> Allows specification of the string used to connect to grpc. Format: IP:PORT or DOMAIN:PORT. Defaults to SERVER_HOST if not specified.</p>
</dd>
</dl>
<h3 id="config-file-reference">Config File Reference<a class="headerlink" href="#config-file-reference" title="Permalink to this headline"></a></h3>
<p>A config file may be placed under config/environments/&lt;env-name&gt;.yml. To read this file at runtime, provide the environment variable ENV at runtime. For instance, dev.yml paired with ENV=dev. Netmaker will load the specified Config file. This allows you to store and manage configurations for different environments. Below is a reference Config File you may use.</p>
<div class="highlight-YAML notranslate"><div class="highlight"><pre><span></span><span class="nt">server</span><span class="p">:</span>
<span class="nt">apihost</span><span class="p">:</span> <span class="s">""</span> <span class="c1"># defaults to 127.0.0.1 or remote ip (SERVER_HOST) if DisableRemoteIPCheck is not set to true. SERVER_API_HOST if set</span>
<span class="nt">apiport</span><span class="p">:</span> <span class="s">""</span> <span class="c1"># defaults to 8081 or HTTP_PORT (if set)</span>
<span class="nt">grpchost</span><span class="p">:</span> <span class="s">""</span> <span class="c1"># defaults to 127.0.0.1 or remote ip (SERVER_HOST) if DisableRemoteIPCheck is not set to true. SERVER_GRPC_HOST if set.</span>
<span class="nt">grpcport</span><span class="p">:</span> <span class="s">""</span> <span class="c1"># defaults to 50051 or GRPC_PORT (if set)</span>
<span class="nt">masterkey</span><span class="p">:</span> <span class="s">""</span> <span class="c1"># defaults to 'secretkey' or MASTER_KEY (if set)</span>
<span class="nt">allowedorigin</span><span class="p">:</span> <span class="s">""</span> <span class="c1"># defaults to '*' or CORS_ALLOWED_ORIGIN (if set)</span>
<span class="nt">restbackend</span><span class="p">:</span> <span class="s">""</span> <span class="c1"># defaults to "on" or REST_BACKEND (if set)</span>
<span class="nt">agentbackend</span><span class="p">:</span> <span class="s">""</span> <span class="c1"># defaults to "on" or AGENT_BACKEND (if set)</span>
<span class="nt">clientmode</span><span class="p">:</span> <span class="s">""</span> <span class="c1"># defaults to "on" or CLIENT_MODE (if set)</span>
<span class="nt">dnsmode</span><span class="p">:</span> <span class="s">""</span> <span class="c1"># defaults to "on" or DNS_MODE (if set)</span>
<span class="nt">disableremoteipcheck</span><span class="p">:</span> <span class="s">""</span> <span class="c1"># defaults to "false" or DISABLE_REMOTE_IP_CHECK (if set)</span>
<h3 id="server-install">Server Install<a class="headerlink" href="#server-install" title="Permalink to this headline"></a></h3>
<p>This template assumes your cluster uses Nginx for ingress with valid wildcard certificates. If using an ingress controller other than Nginx (ex: Traefik), you will need to manually modify the Ingress entries in this template to match your environment.</p>
<p>This template also requires RWX storage. Please change references to storageClassName in this template to your clusters Storage Class.</p>
<p><code class="docutils literal notranslate"><span class="pre">wget</span> <span class="pre">https://raw.githubusercontent.com/gravitl/netmaker/develop/kube/netmaker-template.yaml</span></code></p>
<p>Replace the NETMAKER_BASE_DOMAIN references to the base domain you would like for your Netmaker services (ui,api,grpc). Typically this will be something like <strong>netmaker.yourwildcard.com</strong>.</p>
<p><code class="docutils literal notranslate"><span class="pre">sed</span> <span class="pre">-i</span> <span class="pre">s/NETMAKER_BASE_DOMAIN/&lt;your</span> <span class="pre">base</span> <span class="pre">domain&gt;/g</span> <span class="pre">netmaker-template.yaml</span></code></p>
<p>Now, assuming Ingress and Storage match correctly with your cluster configuration, you can install Netmaker.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">kubectl</span> <span class="n">create</span> <span class="n">ns</span> <span class="n">nm</span>
<span class="n">kubectl</span> <span class="n">config</span> <span class="nb">set</span><span class="o">-</span><span class="n">context</span> <span class="o">--</span><span class="n">current</span> <span class="o">--</span><span class="n">namespace</span><span class="o">=</span><span class="n">nm</span>
<span class="n">kubectl</span> <span class="n">apply</span> <span class="o">-</span><span class="n">f</span> <span class="n">netmaker</span><span class="o">-</span><span class="n">template</span><span class="o">.</span><span class="n">yaml</span> <span class="o">-</span><span class="n">n</span> <span class="n">nm</span>
</pre></div>
</div>
<p>In about 3 minutes, everything should be up and running:</p>
<p><code class="docutils literal notranslate"><span class="pre">kubectl</span> <span class="pre">get</span> <span class="pre">ingress</span> <span class="pre">nm-ui-ingress-nginx</span></code></p>
<h3 id="netclient-daemonset">Netclient Daemonset<a class="headerlink" href="#netclient-daemonset" title="Permalink to this headline"></a></h3>
<p>The following instructions assume you have Netmaker running and a network you would like to add your cluster into. The Netmaker server does not need to be running inside of a cluster for this.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>wget https://raw.githubusercontent.com/gravitl/netmaker/develop/kube/netclient-template.yaml
sed -i s/ACCESS_TOKEN_VALUE/&lt; your access token value&gt;/g netclient-template.yaml
kubectl apply -f netclient-template.yaml
</pre></div>
</div>
<p>For a more detailed guide on integrating Netmaker with MicroK8s, <a class="reference external" href="https://itnext.io/how-to-deploy-a-cross-cloud-kubernetes-cluster-with-built-in-disaster-recovery-bbce27fcc9d7">check out this guide</a>.</p>

View file

@ -46,7 +46,7 @@
<title>Support &#8212; Netmaker 0.5 documentation</title>
<title>Support &#8212; Netmaker 0.7 documentation</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/material.css" type="text/css" />
<script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
@ -81,7 +81,7 @@
<nav class="md-header-nav md-grid">
<div class="md-flex navheader">
<div class="md-flex__cell md-flex__cell--shrink">
<a href="index.html" title="Netmaker 0.5 documentation"
<a href="index.html" title="Netmaker 0.7 documentation"
class="md-header-nav__button md-logo">
<i class="md-icon">&#xe869</i>
@ -167,7 +167,7 @@
<nav class="md-tabs" data-md-component="tabs">
<div class="md-tabs__inner md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item"><a href="index.html" class="md-tabs__link">Netmaker 0.5 documentation</a></li>
<li class="md-tabs__item"><a href="index.html" class="md-tabs__link">Netmaker 0.7 documentation</a></li>
</ul>
</div>
</nav>
@ -179,13 +179,13 @@
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title md-nav__title--site" for="__drawer">
<a href="index.html" title="Netmaker 0.5 documentation" class="md-nav__button md-logo">
<a href="index.html" title="Netmaker 0.7 documentation" class="md-nav__button md-logo">
<i class="md-icon">&#xe869</i>
</a>
<a href="index.html"
title="Netmaker 0.5 documentation">Netmaker Docs</a>
title="Netmaker 0.7 documentation">Netmaker Docs</a>
</label>
<div class="md-nav__source">
<a href="https://github.com/gravitl/netmaker/" title="Go to repository" class="md-source" data-md-source="github">
@ -279,40 +279,40 @@
<li class="md-nav__item">
<a href="quick-start.html" class="md-nav__link">Quick Start</a>
<a href="quick-start.html" class="md-nav__link">Quick Install</a>
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="quick-start.html#introduction" class="md-nav__link">Introduction</a>
<a href="quick-start.html#introduction" class="md-nav__link">0. Introduction</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#prerequisites" class="md-nav__link">0. Prerequisites</a>
<a href="quick-start.html#prerequisites" class="md-nav__link">1. Prerequisites</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#install-dependencies" class="md-nav__link">1. Install Dependencies</a>
<a href="quick-start.html#install-dependencies" class="md-nav__link">2. Install Dependencies</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#prepare-vm" class="md-nav__link">2. Prepare VM</a>
<a href="quick-start.html#prepare-vm" class="md-nav__link">3. Prepare VM</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#install-netmaker" class="md-nav__link">Install Netmaker</a>
<a href="quick-start.html#install-netmaker" class="md-nav__link">4. Install Netmaker</a>
</li></ul>
@ -321,40 +321,40 @@
<li class="md-nav__item">
<a href="quick-start.html#id8" class="md-nav__link">Quick Start</a>
<a href="getting-started.html" class="md-nav__link">Getting Started</a>
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="quick-start.html#setup" class="md-nav__link">Setup</a>
<a href="getting-started.html#setup" class="md-nav__link">Setup</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#deploy-nodes" class="md-nav__link">Deploy Nodes</a>
<a href="getting-started.html#deploy-nodes" class="md-nav__link">Deploy Nodes</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#manage-nodes" class="md-nav__link">Manage Nodes</a>
<a href="getting-started.html#manage-nodes" class="md-nav__link">Manage Nodes</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#uninstalling-the-netclient" class="md-nav__link">Uninstalling the netclient</a>
<a href="getting-started.html#uninstalling-the-netclient" class="md-nav__link">Uninstalling the netclient</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#uninstalling-netmaker" class="md-nav__link">Uninstalling Netmaker</a>
<a href="getting-started.html#uninstalling-netmaker" class="md-nav__link">Uninstalling Netmaker</a>
</li></ul>
@ -363,18 +363,11 @@
<li class="md-nav__item">
<a href="server-installation.html" class="md-nav__link">Server Installation</a>
<a href="server-installation.html" class="md-nav__link">Advanced Server Installation</a>
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="server-installation.html#notes-on-optional-features" class="md-nav__link">Notes on Optional Features</a>
</li>
<li class="md-nav__item">
<a href="server-installation.html#system-compatibility" class="md-nav__link">System Compatibility</a>

View file

@ -46,7 +46,7 @@
<title>Troubleshooting &#8212; Netmaker 0.5 documentation</title>
<title>Troubleshooting &#8212; Netmaker 0.7 documentation</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/material.css" type="text/css" />
<script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
@ -81,7 +81,7 @@
<nav class="md-header-nav md-grid">
<div class="md-flex navheader">
<div class="md-flex__cell md-flex__cell--shrink">
<a href="index.html" title="Netmaker 0.5 documentation"
<a href="index.html" title="Netmaker 0.7 documentation"
class="md-header-nav__button md-logo">
<i class="md-icon">&#xe869</i>
@ -167,7 +167,7 @@
<nav class="md-tabs" data-md-component="tabs">
<div class="md-tabs__inner md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item"><a href="index.html" class="md-tabs__link">Netmaker 0.5 documentation</a></li>
<li class="md-tabs__item"><a href="index.html" class="md-tabs__link">Netmaker 0.7 documentation</a></li>
</ul>
</div>
</nav>
@ -179,13 +179,13 @@
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title md-nav__title--site" for="__drawer">
<a href="index.html" title="Netmaker 0.5 documentation" class="md-nav__button md-logo">
<a href="index.html" title="Netmaker 0.7 documentation" class="md-nav__button md-logo">
<i class="md-icon">&#xe869</i>
</a>
<a href="index.html"
title="Netmaker 0.5 documentation">Netmaker Docs</a>
title="Netmaker 0.7 documentation">Netmaker Docs</a>
</label>
<div class="md-nav__source">
<a href="https://github.com/gravitl/netmaker/" title="Go to repository" class="md-source" data-md-source="github">
@ -279,40 +279,40 @@
<li class="md-nav__item">
<a href="quick-start.html" class="md-nav__link">Quick Start</a>
<a href="quick-start.html" class="md-nav__link">Quick Install</a>
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="quick-start.html#introduction" class="md-nav__link">Introduction</a>
<a href="quick-start.html#introduction" class="md-nav__link">0. Introduction</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#prerequisites" class="md-nav__link">0. Prerequisites</a>
<a href="quick-start.html#prerequisites" class="md-nav__link">1. Prerequisites</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#install-dependencies" class="md-nav__link">1. Install Dependencies</a>
<a href="quick-start.html#install-dependencies" class="md-nav__link">2. Install Dependencies</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#prepare-vm" class="md-nav__link">2. Prepare VM</a>
<a href="quick-start.html#prepare-vm" class="md-nav__link">3. Prepare VM</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#install-netmaker" class="md-nav__link">Install Netmaker</a>
<a href="quick-start.html#install-netmaker" class="md-nav__link">4. Install Netmaker</a>
</li></ul>
@ -321,40 +321,40 @@
<li class="md-nav__item">
<a href="quick-start.html#id8" class="md-nav__link">Quick Start</a>
<a href="getting-started.html" class="md-nav__link">Getting Started</a>
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="quick-start.html#setup" class="md-nav__link">Setup</a>
<a href="getting-started.html#setup" class="md-nav__link">Setup</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#deploy-nodes" class="md-nav__link">Deploy Nodes</a>
<a href="getting-started.html#deploy-nodes" class="md-nav__link">Deploy Nodes</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#manage-nodes" class="md-nav__link">Manage Nodes</a>
<a href="getting-started.html#manage-nodes" class="md-nav__link">Manage Nodes</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#uninstalling-the-netclient" class="md-nav__link">Uninstalling the netclient</a>
<a href="getting-started.html#uninstalling-the-netclient" class="md-nav__link">Uninstalling the netclient</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#uninstalling-netmaker" class="md-nav__link">Uninstalling Netmaker</a>
<a href="getting-started.html#uninstalling-netmaker" class="md-nav__link">Uninstalling Netmaker</a>
</li></ul>
@ -363,18 +363,11 @@
<li class="md-nav__item">
<a href="server-installation.html" class="md-nav__link">Server Installation</a>
<a href="server-installation.html" class="md-nav__link">Advanced Server Installation</a>
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="server-installation.html#notes-on-optional-features" class="md-nav__link">Notes on Optional Features</a>
</li>
<li class="md-nav__item">
<a href="server-installation.html#system-compatibility" class="md-nav__link">System Compatibility</a>

View file

@ -46,7 +46,7 @@
<title>Using Netmaker &#8212; Netmaker 0.5 documentation</title>
<title>Using Netmaker &#8212; Netmaker 0.7 documentation</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/material.css" type="text/css" />
<script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
@ -81,7 +81,7 @@
<nav class="md-header-nav md-grid">
<div class="md-flex navheader">
<div class="md-flex__cell md-flex__cell--shrink">
<a href="index.html" title="Netmaker 0.5 documentation"
<a href="index.html" title="Netmaker 0.7 documentation"
class="md-header-nav__button md-logo">
<i class="md-icon">&#xe869</i>
@ -167,7 +167,7 @@
<nav class="md-tabs" data-md-component="tabs">
<div class="md-tabs__inner md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item"><a href="index.html" class="md-tabs__link">Netmaker 0.5 documentation</a></li>
<li class="md-tabs__item"><a href="index.html" class="md-tabs__link">Netmaker 0.7 documentation</a></li>
</ul>
</div>
</nav>
@ -179,13 +179,13 @@
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title md-nav__title--site" for="__drawer">
<a href="index.html" title="Netmaker 0.5 documentation" class="md-nav__button md-logo">
<a href="index.html" title="Netmaker 0.7 documentation" class="md-nav__button md-logo">
<i class="md-icon">&#xe869</i>
</a>
<a href="index.html"
title="Netmaker 0.5 documentation">Netmaker Docs</a>
title="Netmaker 0.7 documentation">Netmaker Docs</a>
</label>
<div class="md-nav__source">
<a href="https://github.com/gravitl/netmaker/" title="Go to repository" class="md-source" data-md-source="github">
@ -279,40 +279,40 @@
<li class="md-nav__item">
<a href="quick-start.html" class="md-nav__link">Quick Start</a>
<a href="quick-start.html" class="md-nav__link">Quick Install</a>
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="quick-start.html#introduction" class="md-nav__link">Introduction</a>
<a href="quick-start.html#introduction" class="md-nav__link">0. Introduction</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#prerequisites" class="md-nav__link">0. Prerequisites</a>
<a href="quick-start.html#prerequisites" class="md-nav__link">1. Prerequisites</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#install-dependencies" class="md-nav__link">1. Install Dependencies</a>
<a href="quick-start.html#install-dependencies" class="md-nav__link">2. Install Dependencies</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#prepare-vm" class="md-nav__link">2. Prepare VM</a>
<a href="quick-start.html#prepare-vm" class="md-nav__link">3. Prepare VM</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#install-netmaker" class="md-nav__link">Install Netmaker</a>
<a href="quick-start.html#install-netmaker" class="md-nav__link">4. Install Netmaker</a>
</li></ul>
@ -321,40 +321,40 @@
<li class="md-nav__item">
<a href="quick-start.html#id8" class="md-nav__link">Quick Start</a>
<a href="getting-started.html" class="md-nav__link">Getting Started</a>
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="quick-start.html#setup" class="md-nav__link">Setup</a>
<a href="getting-started.html#setup" class="md-nav__link">Setup</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#deploy-nodes" class="md-nav__link">Deploy Nodes</a>
<a href="getting-started.html#deploy-nodes" class="md-nav__link">Deploy Nodes</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#manage-nodes" class="md-nav__link">Manage Nodes</a>
<a href="getting-started.html#manage-nodes" class="md-nav__link">Manage Nodes</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#uninstalling-the-netclient" class="md-nav__link">Uninstalling the netclient</a>
<a href="getting-started.html#uninstalling-the-netclient" class="md-nav__link">Uninstalling the netclient</a>
</li>
<li class="md-nav__item">
<a href="quick-start.html#uninstalling-netmaker" class="md-nav__link">Uninstalling Netmaker</a>
<a href="getting-started.html#uninstalling-netmaker" class="md-nav__link">Uninstalling Netmaker</a>
</li></ul>
@ -363,18 +363,11 @@
<li class="md-nav__item">
<a href="server-installation.html" class="md-nav__link">Server Installation</a>
<a href="server-installation.html" class="md-nav__link">Advanced Server Installation</a>
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="server-installation.html#notes-on-optional-features" class="md-nav__link">Notes on Optional Features</a>
</li>
<li class="md-nav__item">
<a href="server-installation.html#system-compatibility" class="md-nav__link">System Compatibility</a>

View file

@ -22,7 +22,7 @@ copyright = '2021, Alex Feiszli'
author = 'Alex Feiszli'
# The full version, including alpha/beta/rc tags
release = '0.5'
release = '0.7'
# -- General configuration ---------------------------------------------------

View file

@ -43,27 +43,19 @@ Install Docker
---------------
Begin by installing the community version of Docker and docker-compose (there are issues with the snap version). You can follow the official `Docker instructions here <https://docs.docker.com/engine/install/>`_. Or, you can use the below series of commands which should work on Ubuntu 20.04.
``sudo apt-get remove docker docker-engine docker.io containerd runc``
``sudo apt-get update``
``sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release``
.. code-block::
``curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg``
``echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null``
``sudo apt-get update``
``sudo apt-get install docker-ce docker-ce-cli containerd.io``
``sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose``
``sudo chmod +x /usr/local/bin/docker-compose``
``docker --version``
``docker-compose --version``
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker --version
docker-compose --version
At this point Docker should be installed.
@ -108,11 +100,13 @@ Prepare Firewall
Make sure firewall settings are appropriate for Netmaker. You need ports 53 and 443. On the server you can run:
``sudo ufw allow proto tcp from any to any port 443 && sudo ufw allow dns && ``
.. code-block::
sudo ufw allow proto tcp from any to any port 443 && sudo ufw allow dns
**Based on your cloud provider, you may also need to set inbound security rules for your server. This will be dependent on your cloud provider. Be sure to check before moving on:**
- allow 443/tcp from all
- allow 1443/tcp from all
- allow 53/udp from all
Prepare for DNS
@ -120,12 +114,15 @@ Prepare for DNS
On Ubuntu 20.04, by default there is a service consuming port 53 related to DNS resolution. We need port 53 open in order to run our own DNS server. The below steps will disable systemd-resolved, and insert a generic DNS nameserver for local resolution.
1. ``sudo systemctl stop systemd-resolved``
2. ``sudo systemctl disable systemd-resolved``
3. ``sudo vim /etc/systemd/resolved.conf``
* uncomment DNS and add 8.8.8.8 or whatever reachable nameserver is your preference
* uncomment DNSStubListener and set to "no"
4. ``sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf``
.. code-block::
systemctl stop systemd-resolved
systemctl disable systemd-resolved
vim /etc/systemd/resolved.conf
* uncomment DNS and add 8.8.8.8 or whatever reachable nameserver is your preference *
* uncomment DNSStubListener and set to "no" *
ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
Prepare Nginx
-----------------
@ -138,14 +135,12 @@ Get the nginx configuration file:
Insert your domain in the configuration file and add to nginx:
``sed -i 's/NETMAKER_BASE_DOMAIN/<your base domain>/g' netmaker-nginx-template.conf``
``sudo cp netmaker-nginx-template.conf /etc/nginx/conf.d/<your base domain>.conf``
``nginx -t && nginx -s reload``
``systemctl restart nginx``
.. code-block::
sed -i 's/NETMAKER_BASE_DOMAIN/<your base domain>/g' netmaker-nginx-template.conf
sudo cp netmaker-nginx-template.conf /etc/nginx/conf.d/<your base domain>.conf
nginx -t && nginx -s reload
systemctl restart nginx
4. Install Netmaker
====================
@ -153,17 +148,18 @@ Insert your domain in the configuration file and add to nginx:
Prepare Templates
------------------
``wget https://raw.githubusercontent.com/gravitl/netmaker/develop/compose/docker-compose.quickstart.yml``
.. code-block::
``sed -i 's/NETMAKER_BASE_DOMAIN/<your base domain>/g' docker-compose.quickstart.yml``
``sed -i 's/SERVER_PUBLIC_IP/<your server ip>/g' docker-compose.quickstart.yml``
wget https://raw.githubusercontent.com/gravitl/netmaker/develop/compose/docker-compose.quickstart.yml
sed -i 's/NETMAKER_BASE_DOMAIN/<your base domain>/g' docker-compose.quickstart.yml
sed -i 's/SERVER_PUBLIC_IP/<your server ip>/g' docker-compose.quickstart.yml
Generate a unique master key and insert it:
``tr -dc A-Za-z0-9 </dev/urandom | head -c 30 ; echo ''``
.. code-block::
``sed -i 's/REPLACE_MASTER_KEY/<your generated key>/g' docker-compose.quickstart.yml``
tr -dc A-Za-z0-9 </dev/urandom | head -c 30 ; echo ''
sed -i 's/REPLACE_MASTER_KEY/<your generated key>/g' docker-compose.quickstart.yml
Start Netmaker
----------------

View file

@ -15,111 +15,11 @@ The quick install guide is recommended for first-time installs.
The following documents are meant for special cases like Kubernetes and LXC, or for more advanced setups.
DNS Mode Prereqisite Setup
====================================
If you plan on running the server in DNS Mode, know that a `CoreDNS Server <https://coredns.io/manual/toc/>`_ will be installed. CoreDNS is a light-weight, fast, and easy-to-configure DNS server. It is recommended to bind CoreDNS to port 53 of the host system, and it will do so by default. The clients will expect the nameserver to be on port 53, and many systems have issues resolving a different port.
Server Configuration Reference
==========================================
However, on your host system (for Netmaker), this may conflict with an existing process. On linux systems running systemd-resolved, there is likely a service consuming port 53. The below steps will disable systemd-resolved, and replace it with a generic (e.g. Google) nameserver. Be warned that this may have consequences for any existing private DNS configuration. The following was tested on Ubuntu 20.04 and should be run prior to deploying the docker containers.
1. ``systemctl stop systemd-resolved``
2. ``systemctl disable systemd-resolved``
3. ``vim /etc/systemd/resolved.conf``
* uncomment DNS and add 8.8.8.8 or whatever reachable nameserver is your preference
* uncomment DNSStubListener and set to "no"
4. ``ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf``
Port 53 should now be available for CoreDNS to use.
Docker Compose Install
=======================
The most simple (and recommended) way of installing Netmaker is to use one of the provided `Docker Compose files <https://github.com/gravitl/netmaker/tree/master/compose>`_. Below are instructions for several different options to install Netmaker via Docker Compose, followed by an annotated reference Docker Compose in case your use case requires additional customization.
Test Install - No DNS, No Secure GRPC
--------------------------------------------------------
This install will run Netmaker on a server without HTTPS using an IP address. This is not secure and not recommended, but can be helpful for testing.
It also does not run the CoreDNS server, to simplify the deployment
**Prerequisites:**
* server ports 80, 8081, and 50051 are not blocked by firewall
**Notes:**
* You can change the port mappings in the Docker Compose if the listed ports are already in use.
Assuming you have Docker and Docker Compose installed, you can just run the following, replacing **< Insert your-host IP Address Here >** with your host IP (or domain):
#. ``wget -O docker-compose.yml https://raw.githubusercontent.com/gravitl/netmaker/master/scripts/docker-compose.test.yml``
#. ``sed -i s/HOST_IP/< Insert your-host IP Address Here >/g docker-compose.yml``
#. ``docker-compose up -d``
No DNS - CoreDNS Disabled
----------------------------------------------
DNS Mode is currently limited to clients that can run resolvectl (systemd-resolved, see :doc:`Architecture docs <./architecture>` for more info). You may wish to disable DNS mode for various reasons. This installation option gives you the full feature set minus CoreDNS.
To run without DNS, follow the Quick Install guide, omitting the steps for DNS setup. In addition, when the guide has you pull (wget) the Netmaker docker-compose template, use the following link instead:
#. ``wget -O docker-compose.yml https://raw.githubusercontent.com/gravitl/netmaker/master/scripts/docker-compose.nodns.yml``
This template is equivalent but omits CoreDNS.
Reference Compose File - Annotated
--------------------------------------
All environment variables and options are enabled in this file. It is the equivalent to running the "full install" from the above section. However, all environment variables are included, and are set to the default values provided by Netmaker (if the environment variable was left unset, it would not change the installation). Comments are added to each option to show how you might use it to modify your installation.
.. literalinclude:: ../compose/docker-compose.reference.yml
:language: YAML
Linux Install without Docker
=============================
Most systems support Docker, but some, such as LXC, do not. In such environments, there are many options for installing Netmaker. Netmaker is available as a binary file, and there is a zip file of the Netmaker UI static HTML on GitHub. Beyond the UI and Server, you need to install MongoDB and CoreDNS (optional).
Below is a guided set of instructions for installing without Docker on Ubuntu 20.04. Depending on your system, the steps may vary.
rqlite Setup
----------------
1. Install rqlite on your server: https://github.com/rqlite/rqlite
2. Run rqlite: rqlited -node-id 1 ~/node.1
Server Setup
-------------
1. **Run the install script:** ``sudo curl -sfL https://raw.githubusercontent.com/gravitl/netmaker/v0.3.5/scripts/netmaker-server.sh | sh -``
2. Check status: ``sudo journalctl -u netmaker``
3. If any settings are incorrect such as host or mongo credentials, change them under /etc/netmaker/config/environments/< your env >.yaml and then run ``sudo systemctl restart netmaker``
UI Setup
-----------
The following uses NGinx as an http server. You may alternatively use Apache or any other web server that serves static web files.
1. **Download UI asset files:** ``sudo wget -O /usr/share/nginx/html/netmaker-ui.zip https://github.com/gravitl/netmaker-ui/releases/download/latest/netmaker-ui.zip``
2. **Unzip:** ``sudo unzip /usr/share/nginx/html/netmaker-ui.zip -d /usr/share/nginx/html``
3. **Copy Config to Nginx:** ``sudo cp /usr/share/nginx/html/nginx.conf /etc/nginx/conf.d/default.conf``
4. **Modify Default Config Path:** ``sudo sed -i 's/root \/var\/www\/html/root \/usr\/share\/nginx\/html/g' /etc/nginx/sites-available/default``
5. **Change Backend URL:** ``sudo sh -c 'BACKEND_URL=http://<YOUR BACKEND API URL>:PORT /usr/share/nginx/html/generate_config_js.sh >/usr/share/nginx/html/config.js'``
6. **Start Nginx:** ``sudo systemctl start nginx``
CoreDNS Setup
----------------
Kubernetes Install
=======================
**This configuration is coming soon.** It will allow you to deploy Netmaker on a Kubernetes cluster.
Configuration Reference
=========================
The "Reference Compose File" (above) explains many of these options. However, it is important to understand fundamentally how Netmaker sets its configuration:
Netmaker sets its configuration in the following order of precendence:
1. Defaults
2. Config File
@ -127,23 +27,43 @@ The "Reference Compose File" (above) explains many of these options. However, it
Variable Description
----------------------
VERBOSITY:
**Default:** 0
SERVER_HOST:
**Description:** Specify level of logging you would like on the server. Goes up to 3 for debugging.
GRPC_SSL:
**Default:** "off"
**Description:** Specifies if GRPC is going over secure GRPC or SSL. This is a setting for the clients and is passed through the access token. Can be set to "on" and "off". Set to on if SSL is configured for GRPC.
SERVER_API_CONN_STRING
**Default:** ""
**Description:** Allows specification of the string used to connect to the server api. Format: IP:PORT or DOMAIN:PORT. Defaults to SERVER_HOST if not specified.
SERVER_GRPC_CONN_STRING
**Default:** ""
**Description:** Allows specification of the string used to connect to grpc. Format: IP:PORT or DOMAIN:PORT. Defaults to SERVER_HOST if not specified.
SERVER_HOST: *(depreciated, use SERVER_API_CONN_STRING and SERVER_GRPC_CONN_STRING)*
**Default:** Server will perform an IP check and set automatically unless explicitly set, or DISABLE_REMOTE_IP_CHECK is set to true, in which case it defaults to 127.0.0.1
**Description:** Sets the SERVER_HTTP_HOST and SERVER_GRPC_HOST variables if they are unset. The address where traffic comes in.
SERVER_HTTP_HOST:
SERVER_HTTP_HOST: *(depreciated, use SERVER_API_CONN_STRING and SERVER_GRPC_CONN_STRING)*
**Default:** Equals SERVER_HOST if set, "127.0.0.1" if SERVER_HOST is unset.
**Description:** Set to make the HTTP and GRPC functions available via different interfaces/networks.
SERVER_GRPC_HOST:
SERVER_GRPC_HOST: *(depreciated, use SERVER_API_CONN_STRING and SERVER_GRPC_CONN_STRING)*
**Default:** Equals SERVER_HOST if set, "127.0.0.1" if SERVER_HOST is unset.
**Description:** Set to make the HTTP and GRPC functions available via different interfaces/networks.
API_PORT:
API_PORT:
**Default:** 8081
**Description:** The HTTP API port for Netmaker. Used for API calls / communication from front end.
@ -173,108 +93,172 @@ AGENT_BACKEND:
**Description:** Enables the AGENT backend (GRPC running on GRPC_PORT at SERVER_GRPC_HOST). Change to "off" to turn off.
CLIENT_MODE:
**Default:** "on"
**Description:** Enables Client Mode, meaning netclient will be deployed on server and will be manageable from UI. Change to "off" to turn off.
DNS_MODE:
**Default:** "on"
**Default:** "off"
**Description:** Enables DNS Mode, meaning config files will be generated for CoreDNS.
DISABLE_REMOTE_IP_CHECK:
**Default:** "off"
**Description:** If turned "on", Server will not set Host based on remote IP check. This is already overridden if SERVER_HOST is set. Turned "off" by default.
MONGO_ADMIN:
**Default:** "mongoadmin"
**Description:** Admin user for MongoDB.
MONGO_PASS:
**Default:** "mongopass"
**Description:** Admin password for MongoDB.
MONGO_HOST:
**Default:** "127.0.0.1"
**Description:** Address of MongoDB.
MONGO_PORT:
**Default:** "27017"
**Description:** Port of MongoDB.
MONGO_OPTS:
**Default:** "/?authSource=admin"
**Description:** Opts to enable admin login for Mongo.
SERVER_GRPC_WIREGUARD:
**Default:** "on"
**Description:** Whether to run GRPC over a WireGuard network. On by default. Secures the server comms. Switch to "off" to turn off. If off and running in production, make sure to have certificates installed to secure GRPC communications.
SERVER_GRPC_WG_INTERFACE:
**Default:** "nm-grpc-wg"
**Description:** Interface to use for GRPC WireGuard network if enabled
SERVER_GRPC_WG_ADDRESS:
**Default:** "10.101.0.1"
**Description:** Private Address to use for GRPC WireGuard network if enabled
SERVER_GRPC_WG_ADDRESS_RANGE:
**Default:** "10.101.0.0/16"
**Description:** Private Address range to use for GRPC WireGard clients if enabled. Gives 65,534 total addresses for all of netmaker. If running a larger network, will need to configure addresses differently, for instance using ipv6, or use certificates instead.
SERVER_GRPC_WG_PORT:
**Default:** 50555
**Description:** Port to use for GRPC WireGuard if enabled
SERVER_GRPC_WG_PUBKEY:
**Default:** < generated at startup >
**Description:** PublicKey for GRPC WireGuard interface. Generated if left blank.
SERVER_GRPC_WG_PRIVKEY:
**Default:** < generated at startup >
**Description:** PrivateKey for GRPC WireGuard interface. Generated if left blank.
SERVER_GRPC_WG_KEYREQUIRED
**Default:** ""
**Description:** Determines if an Access Key is required to join the Comms network. Blank (meaning 'no') by default. Set to "yes" to turn on.
GRPC_SSL
**Default:** ""
**Description:** Specifies if GRPC is going over secure GRPC or SSL. This is a setting for the clients and is passed through the access token. Can be set to "on" and "off". Set to on if SSL is configured for GRPC.
SERVER_API_CONN_STRING
**Default:** ""
**Description:** Allows specification of the string used to connect to the server api. Format: IP:PORT or DOMAIN:PORT. Defaults to SERVER_HOST if not specified.
SERVER_GRPC_CONN_STRING
**Default:** ""
**Description:** Allows specification of the string used to connect to grpc. Format: IP:PORT or DOMAIN:PORT. Defaults to SERVER_HOST if not specified.
Config File Reference
----------------------
A config file may be placed under config/environments/<env-name>.yml. To read this file at runtime, provide the environment variable ENV at runtime. For instance, dev.yml paired with ENV=dev. Netmaker will load the specified Config file. This allows you to store and manage configurations for different environments. Below is a reference Config File you may use.
A config file may be placed under config/environments/<env-name>.yml. To read this file at runtime, provide the environment variable NETMAKER_ENV at runtime. For instance, dev.yml paired with ENV=dev. Netmaker will load the specified Config file. This allows you to store and manage configurations for different environments. Below is a reference Config File you may use.
.. literalinclude:: ../config/environments/dev.yaml
:language: YAML
Compose File - Annotated
--------------------------------------
All environment variables and options are enabled in this file. It is the equivalent to running the "full install" from the above section. However, all environment variables are included, and are set to the default values provided by Netmaker (if the environment variable was left unset, it would not change the installation). Comments are added to each option to show how you might use it to modify your installation.
.. literalinclude:: ../compose/docker-compose.reference.yml
:language: YAML
DNS Mode Setup
====================================
If you plan on running the server in DNS Mode, know that a `CoreDNS Server <https://coredns.io/manual/toc/>`_ will be installed. CoreDNS is a light-weight, fast, and easy-to-configure DNS server. It is recommended to bind CoreDNS to port 53 of the host system, and it will do so by default. The clients will expect the nameserver to be on port 53, and many systems have issues resolving a different port.
However, on your host system (for Netmaker), this may conflict with an existing process. On linux systems running systemd-resolved, there is likely a service consuming port 53. The below steps will disable systemd-resolved, and replace it with a generic (e.g. Google) nameserver. Be warned that this may have consequences for any existing private DNS configuration. The following was tested on Ubuntu 20.04 and should be run prior to deploying the docker containers.
.. code-block::
systemctl stop systemd-resolved
systemctl disable systemd-resolved
vim /etc/systemd/resolved.conf
* uncomment DNS and add 8.8.8.8 or whatever reachable nameserver is your preference *
* uncomment DNSStubListener and set to "no" *
ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
Port 53 should now be available for CoreDNS to use.
Docker Compose Install
=======================
The most simple (and recommended) way of installing Netmaker is to use one of the provided `Docker Compose files <https://github.com/gravitl/netmaker/tree/master/compose>`_. Below are instructions for several different options to install Netmaker via Docker Compose, followed by an annotated reference Docker Compose in case your use case requires additional customization.
Test Install - No DNS, No Secure GRPC
--------------------------------------------------------
This install will run Netmaker on a server without HTTPS using an IP address. This is not secure and not recommended, but can be helpful for testing.
It also does not run the CoreDNS server, to simplify the deployment
**Prerequisites:**
* server ports 80, 8081, and 50051 are not blocked by firewall
**Notes:**
* You can change the port mappings in the Docker Compose if the listed ports are already in use.
Assuming you have Docker and Docker Compose installed, you can just run the following, replacing **< Insert your-host IP Address Here >** with your host IP (or domain):
.. code-block::
wget -O docker-compose.yml https://raw.githubusercontent.com/gravitl/netmaker/master/scripts/docker-compose.test.yml
sed -i s/HOST_IP/< Insert your-host IP Address Here >/g docker-compose.yml
docker-compose up -d`
No DNS - CoreDNS Disabled
----------------------------------------------
DNS Mode is currently limited to clients that can run resolvectl (systemd-resolved, see :doc:`Architecture docs <./architecture>` for more info). You may wish to disable DNS mode for various reasons. This installation option gives you the full feature set minus CoreDNS.
To run without DNS, follow the :doc:`Quick Install <./quick-start>` guide, omitting the steps for DNS setup. In addition, when the guide has you pull (wget) the Netmaker docker-compose template, use the following link instead:
#. ``wget -O docker-compose.yml https://raw.githubusercontent.com/gravitl/netmaker/master/scripts/docker-compose.nodns.yml``
This template is equivalent but omits CoreDNS.
Linux Install without Docker
=============================
Most systems support Docker, but some, such as LXC, do not. In such environments, there are many options for installing Netmaker. Netmaker is available as a binary file, and there is a zip file of the Netmaker UI static HTML on GitHub. Beyond the UI and Server, you need to install MongoDB and CoreDNS (optional).
To start, we recommend following the Nginx instructions in the :doc:`Quick Install <./quick-start>` guide to enable SSL for your environment.
Once this is enabled and configured for a domain, you can continue with the below. The recommended server runs Ubuntu 20.04.
rqlite Setup
----------------
1. Install rqlite on your server: https://github.com/rqlite/rqlite
2. Run rqlite: rqlited -node-id 1 ~/node.1
Server Setup
-------------
1. **Run the install script:**
``sudo curl -sfL https://raw.githubusercontent.com/gravitl/netmaker/develop/scripts/netmaker-server.sh | sh -``
2. Check status: ``sudo journalctl -u netmaker``
3. If any settings are incorrect such as host or mongo credentials, change them under /etc/netmaker/config/environments/< your env >.yaml and then run ``sudo systemctl restart netmaker``
UI Setup
-----------
The following uses Nginx as an http server. You may alternatively use Apache or any other web server that serves static web files.
1. Download and Unzip UI asset files
2. Copy Config to Nginx
3. Modify Default Config Path
4. Change Backend URL
5. Start Nginx
.. code-block::
sudo wget -O /usr/share/nginx/html/netmaker-ui.zip https://github.com/gravitl/netmaker-ui/releases/download/latest/netmaker-ui.zip
sudo unzip /usr/share/nginx/html/netmaker-ui.zip -d /usr/share/nginx/html
sudo cp /usr/share/nginx/html/nginx.conf /etc/nginx/conf.d/default.conf
sudo sed -i 's/root \/var\/www\/html/root \/usr\/share\/nginx\/html/g' /etc/nginx/sites-available/default
sudo sh -c 'BACKEND_URL=http://<YOUR BACKEND API URL>:PORT /usr/share/nginx/html/generate_config_js.sh >/usr/share/nginx/html/config.js'
sudo systemctl start nginx
CoreDNS Setup
----------------
Kubernetes Install
=======================
Server Install
--------------------------
This template assumes your cluster uses Nginx for ingress with valid wildcard certificates. If using an ingress controller other than Nginx (ex: Traefik), you will need to manually modify the Ingress entries in this template to match your environment.
This template also requires RWX storage. Please change references to storageClassName in this template to your cluster's Storage Class.
``wget https://raw.githubusercontent.com/gravitl/netmaker/develop/kube/netmaker-template.yaml``
Replace the NETMAKER_BASE_DOMAIN references to the base domain you would like for your Netmaker services (ui,api,grpc). Typically this will be something like **netmaker.yourwildcard.com**.
``sed -i s/NETMAKER_BASE_DOMAIN/<your base domain>/g netmaker-template.yaml``
Now, assuming Ingress and Storage match correctly with your cluster configuration, you can install Netmaker.
.. code-block::
kubectl create ns nm
kubectl config set-context --current --namespace=nm
kubectl apply -f netmaker-template.yaml -n nm
In about 3 minutes, everything should be up and running:
``kubectl get ingress nm-ui-ingress-nginx``
Netclient Daemonset
--------------------------
The following instructions assume you have Netmaker running and a network you would like to add your cluster into. The Netmaker server does not need to be running inside of a cluster for this.
.. code-block::
wget https://raw.githubusercontent.com/gravitl/netmaker/develop/kube/netclient-template.yaml
sed -i s/ACCESS_TOKEN_VALUE/< your access token value>/g netclient-template.yaml
kubectl apply -f netclient-template.yaml
For a more detailed guide on integrating Netmaker with MicroK8s, `check out this guide <https://itnext.io/how-to-deploy-a-cross-cloud-kubernetes-cluster-with-built-in-disaster-recovery-bbce27fcc9d7>`_.
Nginx Reverse Proxy Setup with https
====================================

View file

@ -17,7 +17,7 @@ spec:
hostNetwork: true
containers:
- name: netclient
image: gravitl/netclient:v0.5.5
image: gravitl/netclient:v0.7
command: ['bash', '-c', "netclient checkin -n $NETWORK; sleep $SLEEP"]
env:
- name: ACCESS_TOKEN
@ -35,7 +35,7 @@ spec:
privileged: true
initContainers:
- name: netclient-join
image: gravitl/netclient:v0.5.5
image: gravitl/netclient:v0.7
command: ['bash', '-c', "netclient join -t $ACCESS_TOKEN --daemon off"]
env:
- name: ACCESS_TOKEN

View file

@ -76,7 +76,7 @@ spec:
spec:
containers:
- name: netmaker-backend
image: gravitl/netmaker:v0.5.8
image: gravitl/netmaker:v0.7
ports:
- containerPort: 8081
volumeMounts:
@ -256,7 +256,7 @@ spec:
spec:
containers:
- name: netmaker-ui
image: gravitl/netmaker-ui:v0.5
image: gravitl/netmaker-ui:v0.7
ports:
- containerPort: 80
env:

BIN
netclient/netclient-amd64 Executable file

Binary file not shown.

BIN
netclient/netclient-arm64 Executable file

Binary file not shown.

View file

@ -32,7 +32,7 @@ server {
}
}
server {
listen 1443 ssl http2;
listen 443 ssl http2;
server_name grpc.NETMAKER_BASE_DOMAIN;
ssl_certificate /etc/letsencrypt/live/NETMAKER_BASE_DOMAIN/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/NETMAKER_BASE_DOMAIN/privkey.pem;

View file

@ -5,7 +5,6 @@ mkdir -p /etc/netmaker/config/environments
wget -O /etc/netmaker/netmaker https://github.com/gravitl/netmaker/releases/download/latest/netmaker
chmod +x /etc/netmaker/netmaker
cat >/etc/netmaker/config/environments/dev.yaml<<EOL
server:
host:
@ -15,15 +14,7 @@ server:
allowedorigin: "*"
restbackend: true
agentbackend: true
defaultnetname: "default"
defaultnetrange: "10.10.10.0/24"
createdefault: true
mongoconn:
user: "mongoadmin"
pass: "mongopass"
host: "localhost"
port: "27017"
opts: '/?authSource=admin'
dnsmode: "on"
EOL
cat >/etc/systemd/system/netmaker.service<<EOL