diff --git a/README.md b/README.md index 2f1cd733..efd5e487 100644 --- a/README.md +++ b/README.md @@ -49,3 +49,10 @@ Netmaker's source code and all artifacts in this repository are freely available Email: info@gravitl.com Discord: https://discord.gg/zRb9Vfhk8A + +#### Business Support + +https://gravitl.com/plans/business + +### Disclaimer + [WireGuard](https://wireguard.com/) is a registered trademark of Jason A. Donenfeld. \ No newline at end of file diff --git a/compose/docker-compose.localserver.yml b/compose/docker-compose.localserver.yml deleted file mode 100644 index e7f615b8..00000000 --- a/compose/docker-compose.localserver.yml +++ /dev/null @@ -1,26 +0,0 @@ -version: "3.4" - -volumes: - dnsconfig: - driver: local -services: - mongodb: - image: mongo:4.2 - ports: - - "27017:27017" - container_name: mongodb - volumes: - - mongovol:/data/db - restart: always - environment: - MONGO_INITDB_ROOT_USERNAME: mongoadmin - MONGO_INITDB_ROOT_PASSWORD: mongopass - netmaker-ui: - container_name: netmaker-ui - image: gravitl/netmaker-ui:v0.5 - ports: - - "80:80" - environment: - BACKEND_URL: "http://HOST_IP:8081" -volumes: - mongovol: {} diff --git a/compose/docker-compose.noclient.yml b/compose/docker-compose.noclient.yml deleted file mode 100644 index 85e465d8..00000000 --- a/compose/docker-compose.noclient.yml +++ /dev/null @@ -1,55 +0,0 @@ -version: "3.4" - -volumes: - dnsconfig: - driver: local -services: - mongodb: - image: mongo:4.2 - ports: - - "27017:27017" - container_name: mongodb - volumes: - - mongovol:/data/db - restart: always - environment: - MONGO_INITDB_ROOT_USERNAME: mongoadmin - MONGO_INITDB_ROOT_PASSWORD: mongopass - netmaker: - container_name: netmaker - ports: - - "8081:8081" - - "50051:50051" - depends_on: - - mongodb - image: gravitl/netmaker:v0.5 - restart: always - environment: - SERVER_HOST: "HOST_IP" - CLIENT_MODE: "off" - SERVER_GRPC_WIREGUARD: "off" - netmaker-ui: - container_name: netmaker-ui - depends_on: - - netmaker - image: gravitl/netmaker-ui:v0.5 - links: - - "netmaker:api" - ports: - - "80:80" - environment: - BACKEND_URL: "http://HOST_IP:8081" - coredns: - depends_on: - - netmaker - image: coredns/coredns - command: -conf /root/dnsconfig/Corefile - container_name: coredns - restart: always - ports: - - "53:53/udp" - volumes: - - dnsconfig:/root/dnsconfig -volumes: - mongovol: {} - dnsconfig: {} diff --git a/compose/docker-compose.quickstart.yml b/compose/docker-compose.quickstart.yml deleted file mode 100644 index 29b65c5c..00000000 --- a/compose/docker-compose.quickstart.yml +++ /dev/null @@ -1,71 +0,0 @@ -version: "3.4" - -services: - rqlite: - container_name: rqlite - image: rqlite/rqlite - network_mode: host - restart: always - volumes: - - sqldata:/rqlite/file/data - netmaker: - depends_on: - - rqlite - privileged: true - container_name: netmaker - image: gravitl/netmaker:v0.7 - volumes: - - ./:/local - - /etc/netclient:/etc/netclient - - dnsconfig:/root/config/dnsconfig - - /usr/bin/wg:/usr/bin/wg - - /var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket - - /run/systemd/system:/run/systemd/system - - /etc/systemd/system:/etc/systemd/system - - /sys/fs/cgroup:/sys/fs/cgroup - cap_add: - - NET_ADMIN - - SYS_MODULE - restart: always - network_mode: host - environment: - SERVER_HOST: "SERVER_PUBLIC_IP" - SERVER_API_CONN_STRING: "api.NETMAKER_BASE_DOMAIN:443" - SERVER_GRPC_CONN_STRING: "grpc.NETMAKER_BASE_DOMAIN:443" - COREDNS_ADDR: "SERVER_PUBLIC_IP" - GRPC_SSL: "on" - DNS_MODE: "on" - SERVER_HTTP_HOST: "api.NETMAKER_BASE_DOMAIN" - SERVER_GRPC_HOST: "grpc.NETMAKER_BASE_DOMAIN" - API_PORT: "8081" - GRPC_PORT: "50051" - CLIENT_MODE: "on" - MASTER_KEY: "REPLACE_MASTER_KEY" - SERVER_GRPC_WIREGUARD: "off" - CORS_ALLOWED_ORIGIN: "*" - netmaker-ui: - container_name: netmaker-ui - depends_on: - - netmaker - image: gravitl/netmaker-ui:v0.7 - links: - - "netmaker:api" - ports: - - "8082:80" - environment: - BACKEND_URL: "https://api.NETMAKER_BASE_DOMAIN" - restart: always - coredns: - depends_on: - - netmaker - image: coredns/coredns - command: -conf /root/dnsconfig/Corefile - container_name: coredns - restart: always - ports: - - "53:53/udp" - volumes: - - dnsconfig:/root/dnsconfig -volumes: - sqldata: {} - dnsconfig: {} diff --git a/compose/docker-compose.reference copy.yml b/compose/docker-compose.reference copy.yml deleted file mode 100644 index aaea623c..00000000 --- a/compose/docker-compose.reference copy.yml +++ /dev/null @@ -1,133 +0,0 @@ -services: - rqlite: - container_name: rqlite - image: rqlite/rqlite - network_mode: host - restart: always - volumes: - - sqldata:/rqlite/file/data - netmaker: - depends_on: - - rqlite - privileged: true - container_name: netmaker - image: gravitl/netmaker:v0.7 - volumes: - - ./:/local - - /etc/netclient:/etc/netclient - - dnsconfig:/root/config/dnsconfig - - /usr/bin/wg:/usr/bin/wg - - /var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket - - /run/systemd/system:/run/systemd/system - - /etc/systemd/system:/etc/systemd/system - - /sys/fs/cgroup:/sys/fs/cgroup - cap_add: - - NET_ADMIN - - SYS_MODULE - restart: always - network_mode: host - environment: - SERVER_HOST: "SERVER_PUBLIC_IP" - SERVER_API_CONN_STRING: "api.NETMAKER_BASE_DOMAIN:443" - SERVER_GRPC_CONN_STRING: "grpc.NETMAKER_BASE_DOMAIN:443" - COREDNS_ADDR: "SERVER_PUBLIC_IP" - GRPC_SSL: "on" - SERVER_HTTP_HOST: "api.NETMAKER_BASE_DOMAIN" - SERVER_GRPC_HOST: "grpc.NETMAKER_BASE_DOMAIN" - API_PORT: "8081" - GRPC_PORT: "50051" - CLIENT_MODE: "on" - MASTER_KEY: "REPLACE_MASTER_KEY" - SERVER_GRPC_WIREGUARD: "off" - CORS_ALLOWED_ORIGIN: "*" - netmaker-ui: - container_name: netmaker-ui - depends_on: - - netmaker - image: gravitl/netmaker-ui:v0.7 - links: - - "netmaker:api" - ports: - - "8082:80" - environment: - BACKEND_URL: "https://api.NETMAKER_BASE_DOMAIN" - coredns: - depends_on: - - netmaker - image: coredns/coredns - command: -conf /root/dnsconfig/Corefile - container_name: coredns - restart: always - ports: - - "53:53/udp" - volumes: - - dnsconfig:/root/dnsconfig - - -version: "3.4" - -services: - rqlite: # The rqlite instance that backs up Netmaker - container_name: rqlite - image: rqlite/rqlite - network_mode: host - restart: always - 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.7 - volumes: # Volume mounts necessary for Netmaker 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 - - dnsconfig:/root/config/dnsconfig # Netmaker writes Corefile to this location, which gets mounted by CoreDNS for DNS configuration. - - /usr/bin/wg:/usr/bin/wg - - /var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket - - /run/systemd/system:/run/systemd/system - - /etc/systemd/system:/etc/systemd/system - - /sys/fs/cgroup:/sys/fs/cgroup - cap_add: # Necessary for CLIENT_MODE. Should be removed if turned off. - - NET_ADMIN - - SYS_MODULE - restart: always - network_mode: host # Necessary for CLIENT_MODE. Should be removed if turned off, but then need to add port mappings - environment: - GRPC_SSL: "off" # Tells clients to use SSL to connect to GRPC. Switch to on to turn on. - 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 - SERVER_HOST: "" # All the Docker Compose files pre-populate this with HOST_IP, which you replace as part of the install instructions. This will set both HTTP and GRPC host. - API_PORT: 8081 # The HTTP API port for Netmaker. Used for API calls / communication from front end. If changed, need to change port of BACKEND_URL for netmaker-ui. - GRPC_PORT: 50051 # The GRPC port for Netmaker. Used for communications from nodes. - MASTER_KEY: "secretkey" # The admin master key for accessing the API. Change this in any production installation. - 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. - 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. - netmaker-ui: # The Netmaker UI Component - container_name: netmaker-ui - depends_on: - - netmaker - image: gravitl/netmaker-ui:v0.7 - links: - - "netmaker:api" - ports: - - "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 - coredns: # The DNS Server. Remove this section if DNS_MODE="off" - depends_on: - - netmaker - image: coredns/coredns - command: -conf /root/dnsconfig/Corefile # Config location for Corefile. This is the path of file which is also mounted to Netmaker for modification. - container_name: coredns - restart: always - ports: - - "53:53/udp" # Likely needs to run at port 53 for adequate nameserver usage. - volumes: - - dnsconfig:/root/dnsconfig -volumes: - sqldata: {} - dnsconfig: {} \ No newline at end of file diff --git a/compose/docker-compose.server-only.yml b/compose/docker-compose.server-only.yml deleted file mode 100644 index 414ad611..00000000 --- a/compose/docker-compose.server-only.yml +++ /dev/null @@ -1,42 +0,0 @@ -version: "3.4" - -volumes: - dnsconfig: - driver: local -services: - mongodb: - image: mongo:4.2 - ports: - - "27017:27017" - container_name: mongodb - volumes: - - mongovol:/data/db - restart: always - environment: - MONGO_INITDB_ROOT_USERNAME: mongoadmin - MONGO_INITDB_ROOT_PASSWORD: mongopass - netmaker: - container_name: netmaker - depends_on: - - mongodb - image: gravitl/netmaker:v0.5 - ports: - - "8081:8081" - - "50051:50051" - volumes: - - ./:/local - - /etc/netclient:/etc/netclient - - dnsconfig:/root/config/dnsconfig - - /usr/bin/wg:/usr/bin/wg:ro - - /var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket - - /run/systemd/system:/run/systemd/system - - /etc/systemd/system:/etc/systemd/system - - /sys/fs/cgroup:/sys/fs/cgroup - restart: always - environment: - CLIENT_MODE: "off" - DNS_MODE: "off" - SERVER_HOST: "localhost" -volumes: - mongovol: {} - dnsconfig: {} diff --git a/compose/docker-compose.slim.yml b/compose/docker-compose.slim.yml deleted file mode 100644 index 3db9f371..00000000 --- a/compose/docker-compose.slim.yml +++ /dev/null @@ -1,45 +0,0 @@ -version: "3.4" - -volumes: - dnsconfig: - driver: local -services: - mongodb: - image: mongo:4.2 - ports: - - "27017:27017" - container_name: mongodb - volumes: - - mongovol:/data/db - restart: always - environment: - MONGO_INITDB_ROOT_USERNAME: mongoadmin - MONGO_INITDB_ROOT_PASSWORD: mongopass - netmaker: - container_name: netmaker - ports: - - "8081:8081" - - "50051:50051" - depends_on: - - mongodb - image: gravitl/netmaker:v0.5 - restart: always - environment: - SERVER_HOST: "HOST_IP" - DNS_MODE: "off" - CLIENT_MODE: "off" - MONGO_HOST: "mongodb" - SERVER_GRPC_WIREGUARD: "off" - netmaker-ui: - container_name: netmaker-ui - depends_on: - - netmaker - image: gravitl/netmaker-ui:v0.5 - links: - - "netmaker:api" - ports: - - "80:80" - environment: - BACKEND_URL: "http://HOST_IP:8081" -volumes: - mongovol: {} diff --git a/compose/docker-compose.test.yml b/compose/docker-compose.test.yml deleted file mode 100644 index 97fab055..00000000 --- a/compose/docker-compose.test.yml +++ /dev/null @@ -1,48 +0,0 @@ -version: "3.4" - -services: - rqlite: - container_name: rqlite - image: rqlite/rqlite - network_mode: host - restart: always - volumes: - - sqldata:/rqlite/file/data - netmaker: - depends_on: - - rqlite - privileged: true - container_name: netmaker - image: gravitl/netmaker:v0.7 - volumes: - - ./:/local - - /etc/netclient:/etc/netclient - - /usr/bin/wg:/usr/bin/wg - - /var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket - - /run/systemd/system:/run/systemd/system - - /etc/systemd/system:/etc/systemd/system - - /sys/fs/cgroup:/sys/fs/cgroup - cap_add: - - NET_ADMIN - - SYS_MODULE - restart: always - network_mode: host - environment: - GRPC_SSL: "off" - API_PORT: "8081" - GRPC_PORT: "50051" - DNS_MODE: "off" - CORS_ALLOWED_ORIGIN: "*" - netmaker-ui: - container_name: netmaker-ui - depends_on: - - netmaker - image: gravitl/netmaker-ui:v0.7 - links: - - "netmaker:api" - ports: - - "80:80" - environment: - BACKEND_URL: "http://HOST_IP:8081" -volumes: - sqldata: {} \ No newline at end of file diff --git a/compose/docker-compose.yml b/compose/docker-compose.yml index f94775b5..7e21df58 100644 --- a/compose/docker-compose.yml +++ b/compose/docker-compose.yml @@ -1,19 +1,10 @@ version: "3.4" services: - rqlite: - container_name: rqlite - image: rqlite/rqlite - network_mode: host - restart: always - volumes: - - sqldata:/rqlite/file/data netmaker: - depends_on: - - rqlite privileged: true container_name: netmaker - image: gravitl/netmaker:v0.7 + image: gravitl/netmaker:v0.8 volumes: - ./:/local - /etc/netclient:/etc/netclient @@ -23,6 +14,7 @@ services: - /run/systemd/system:/run/systemd/system - /etc/systemd/system:/etc/systemd/system - /sys/fs/cgroup:/sys/fs/cgroup + - sqldata:/root/data cap_add: - NET_ADMIN - SYS_MODULE @@ -30,28 +22,32 @@ services: network_mode: host environment: SERVER_HOST: "SERVER_PUBLIC_IP" - SERVER_API_CONN_STRING: "SERVER_PUBLIC_IP:8081" - SERVER_GRPC_CONN_STRING: "SERVER_PUBLIC_IP:50051" + SERVER_API_CONN_STRING: "api.NETMAKER_BASE_DOMAIN:443" + SERVER_GRPC_CONN_STRING: "grpc.NETMAKER_BASE_DOMAIN:443" COREDNS_ADDR: "SERVER_PUBLIC_IP" - GRPC_SSL: "off" + GRPC_SSL: "on" DNS_MODE: "on" - SERVER_HTTP_HOST: "SERVER_PUBLIC_IP" - SERVER_GRPC_HOST: "SERVER_PUBLIC_IP" + SERVER_HTTP_HOST: "api.NETMAKER_BASE_DOMAIN" + SERVER_GRPC_HOST: "grpc.NETMAKER_BASE_DOMAIN" API_PORT: "8081" GRPC_PORT: "50051" + CLIENT_MODE: "on" MASTER_KEY: "REPLACE_MASTER_KEY" + SERVER_GRPC_WIREGUARD: "off" CORS_ALLOWED_ORIGIN: "*" + DATABASE: "sqlite" netmaker-ui: container_name: netmaker-ui depends_on: - netmaker - image: gravitl/netmaker-ui:v0.7 + image: gravitl/netmaker-ui:v0.8 links: - "netmaker:api" ports: - "8082:80" environment: BACKEND_URL: "https://api.NETMAKER_BASE_DOMAIN" + restart: always coredns: depends_on: - netmaker @@ -60,8 +56,8 @@ services: container_name: coredns restart: always ports: - - "53:53/udp" - - "53:53/tcp" + - "COREDNS_IP:53:53/udp" + - "COREDNS_IP:53:53/tcp" volumes: - dnsconfig:/root/dnsconfig volumes: diff --git a/docs/_build/doctrees/environment.pickle b/docs/_build/doctrees/environment.pickle index 263f5d7d..d2d92305 100644 Binary files a/docs/_build/doctrees/environment.pickle and b/docs/_build/doctrees/environment.pickle differ diff --git a/docs/_build/doctrees/external-clients.doctree b/docs/_build/doctrees/external-clients.doctree index 3d36ea9f..2903c017 100644 Binary files a/docs/_build/doctrees/external-clients.doctree and b/docs/_build/doctrees/external-clients.doctree differ diff --git a/docs/_build/doctrees/quick-start.doctree b/docs/_build/doctrees/quick-start.doctree index d19a5b3d..62075d7f 100644 Binary files a/docs/_build/doctrees/quick-start.doctree and b/docs/_build/doctrees/quick-start.doctree differ diff --git a/docs/_build/html/_sources/external-clients.rst.txt b/docs/_build/html/_sources/external-clients.rst.txt index 66eddcae..bd525061 100644 --- a/docs/_build/html/_sources/external-clients.rst.txt +++ b/docs/_build/html/_sources/external-clients.rst.txt @@ -57,3 +57,16 @@ Example config file: .. literalinclude:: ./examplecode/myclient.conf Your client should now be able to access the network! A client can be invalidated at any time by simply deleting it from the UI. + +Configuring DNS for Ext Clients (OPTIONAL) +============================================ + +If you wish to have a DNS field on your ext clients conf, simply edit the network field as shown below to 1.1.1.1 or 8.8.8.8 for example. +If you do not want DNS on your ext client conf files, simply leave it blank. + +.. image:: images/exclient5.png + :width: 80% + :alt: Gateway + :align: center + +Important to note, your client automatically adds egress gateway ranges (if any on the same network) to it's allowed IPs. diff --git a/docs/_build/html/_sources/quick-start.rst.txt b/docs/_build/html/_sources/quick-start.rst.txt index a54ed32a..c741e01c 100644 --- a/docs/_build/html/_sources/quick-start.rst.txt +++ b/docs/_build/html/_sources/quick-start.rst.txt @@ -7,16 +7,15 @@ This quick start guide is an **opinionated** guide for getting up and running wi 0. Introduction ================== -We assume for this installation that you want all of the Netmaker features enabled, want your server to be secure, and want it to be accessible from anywhere. +We assume for this installation that you want all of the Netmaker features enabled, you want your server to be secure, and you want your server to be accessible from anywhere. -This instance will not be HA. However, it should comfortably handle around one hundred concurrent clients and support most use cases. +This instance will not be HA. However, it should comfortably handle around one hundred concurrent clients and support the most common use cases. -If you are deploying for an enterprise use case, please contact info@gravitl.com for support. +If you are deploying for a business or enterprise use case and this setup will not fit your needs, please contact info@gravitl.com, or check out the business subscription plans at https://gravitl.com/plans/business. By the end of this guide, you will have Netmaker installed on a public VM linked to your custom domain, secured behind an Nginx reverse proxy. -If this configuration does not fit your use case, see the :doc:`Advanced Installation <./server-installation>` docs. - +For information about deploying more advanced configurations, see the :doc:`Advanced Installation <./server-installation>` docs. 1. Prerequisites @@ -24,9 +23,10 @@ If this configuration does not fit your use case, see the :doc:`Advanced Install - **Virtual Machine** - Preferably from a cloud provider (e.x: DigitalOcean, Linode, AWS, GCP, etc.) + - We do not recommend Oracle Cloud, as VM's here have been known to cause network interference. - Public, static IP - - Min 2GB RAM, 1 CPU (4GB RAM, 2CPU preferred) - - 5GB+ of storage + - Min 1GB RAM, 1 CPU (4GB RAM, 2CPU preferred) + - 2GB+ of storage - Ubuntu 20.04 Installed - **Domain** @@ -47,11 +47,11 @@ Begin by installing the community version of Docker and docker-compose (there ar 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 + sudo apt-get -y 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 apt-get -y 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 @@ -64,7 +64,7 @@ Install Dependencies In addition to Docker, this installation requires WireGuard, Nginx, and Certbot. -``sudo apt install wireguard wireguard-tools nginx certbot python3-certbot-nginx net-tools`` +``sudo apt -y install wireguard wireguard-tools nginx certbot python3-certbot-nginx net-tools`` 3. Prepare VM @@ -109,20 +109,9 @@ Make sure firewall settings are appropriate for Netmaker. You need ports 53 and - allow 443/tcp from all - allow 53/udp and 53/tcp from all -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. - -.. 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 +In addition to the above ports, you will need to make sure that your cloud's firewall or security groups are opened for the range of ports that Netmaker's WireGuard interfaces consume. +Netmaker will create one interface per network, starting from 51821. So, if you plan on having 5 networks, you will want to have at least 51821-51825 open (udp). Prepare Nginx ----------------- @@ -148,23 +137,28 @@ Insert your domain in the configuration file and add to nginx: Prepare Templates ------------------ +**Note on COREDNS_IP:** Depending on your cloud provider, the public IP may not be bound directly to the VM on which you are running. In such cases, CoreDNS cannot bind to this IP, and you should use the IP of the default interface on your machine in place of COREDNS_IP. If the public IP **is** bound to the VM, you can simply use the same IP as SERVER_PUBLIC_IP. + .. code-block:: - wget https://raw.githubusercontent.com/gravitl/netmaker/develop/compose/docker-compose.quickstart.yml - sed -i 's/NETMAKER_BASE_DOMAIN//g' docker-compose.quickstart.yml - sed -i 's/SERVER_PUBLIC_IP//g' docker-compose.quickstart.yml + wget https://raw.githubusercontent.com/gravitl/netmaker/develop/compose/docker-compose.yml + sed -i 's/NETMAKER_BASE_DOMAIN//g' docker-compose.yml + sed -i 's/SERVER_PUBLIC_IP//g' docker-compose.yml + sed -i 's/COREDNS_IP//g' docker-compose.yml Generate a unique master key and insert it: .. code-block:: tr -dc A-Za-z0-9 /g' docker-compose.quickstart.yml + sed -i 's/REPLACE_MASTER_KEY//g' docker-compose.yml + +You may want to save this key for future use with the API. Start Netmaker ---------------- -``sudo docker-compose -f docker-compose.quickstart.yml up -d`` +``sudo docker-compose -f docker-compose.yml up -d`` navigate to dashboard. to see your nginx instance. @@ -172,4 +166,4 @@ To troubleshoot issues, start with: ``docker logs netmaker`` -Or check out the :doc:`troubleshoooting docs <./troubleshoot>`. \ No newline at end of file +Or check out the :doc:`troubleshoooting docs <./troubleshoot>`. diff --git a/docs/_build/html/external-clients.html b/docs/_build/html/external-clients.html index da6dcfcb..70d5ee6d 100644 --- a/docs/_build/html/external-clients.html +++ b/docs/_build/html/external-clients.html @@ -484,6 +484,8 @@
  • Configuring an Ingress Gateway
  • Adding Clients to a Gateway +
  • +
  • Configuring DNS for Ext Clients (OPTIONAL)
  • @@ -510,6 +512,13 @@ Adding Clients to a Gateway + +
  • + + + Configuring DNS for Ext Clients (OPTIONAL) + +
  • @@ -702,6 +711,8 @@
  • Configuring an Ingress Gateway
  • Adding Clients to a Gateway +
  • +
  • Configuring DNS for Ext Clients (OPTIONAL)
  • @@ -760,6 +771,13 @@

    Your client should now be able to access the network! A client can be invalidated at any time by simply deleting it from the UI.

    +

    Configuring DNS for Ext Clients (OPTIONAL)

    +

    If you wish to have a DNS field on your ext clients conf, simply edit the network field as shown below to 1.1.1.1 or 8.8.8.8 for example. +If you do not want DNS on your ext client conf files, simply leave it blank.

    +Gateway +

    Important to note, your client automatically adds egress gateway ranges (if any on the same network) to it’s allowed IPs.

    + + diff --git a/docs/_build/html/genindex.html b/docs/_build/html/genindex.html index 1d6c899b..89ab350a 100644 --- a/docs/_build/html/genindex.html +++ b/docs/_build/html/genindex.html @@ -488,6 +488,13 @@ Adding Clients to a Gateway + +
  • + + + Configuring DNS for Ext Clients (OPTIONAL) + +
  • diff --git a/docs/_build/html/index.html b/docs/_build/html/index.html index 6d6dbb9d..88073657 100644 --- a/docs/_build/html/index.html +++ b/docs/_build/html/index.html @@ -489,6 +489,13 @@ Adding Clients to a Gateway + +
  • + + + Configuring DNS for Ext Clients (OPTIONAL) + +
  • @@ -819,6 +826,7 @@
  • Introduction
  • Configuring an Ingress Gateway
  • Adding Clients to a Gateway
  • +
  • Configuring DNS for Ext Clients (OPTIONAL)
  • diff --git a/docs/_build/html/quick-start.html b/docs/_build/html/quick-start.html index 740b4e01..e0a0bf8b 100644 --- a/docs/_build/html/quick-start.html +++ b/docs/_build/html/quick-start.html @@ -308,8 +308,6 @@
  • Prepare Firewall
  • -
  • Prepare for DNS -
  • Prepare Nginx
  • @@ -536,6 +534,13 @@ Adding Clients to a Gateway + +
  • + + + Configuring DNS for Ext Clients (OPTIONAL) + +
  • @@ -741,8 +746,6 @@
  • Prepare Firewall
  • -
  • Prepare for DNS -
  • Prepare Nginx
  • @@ -771,21 +774,27 @@

    This quick start guide is an opinionated guide for getting up and running with Netmaker as quickly as possible.

    0. Introduction

    -

    We assume for this installation that you want all of the Netmaker features enabled, want your server to be secure, and want it to be accessible from anywhere.

    -

    This instance will not be HA. However, it should comfortably handle around one hundred concurrent clients and support most use cases.

    -

    If you are deploying for an enterprise use case, please contact info@gravitl.com for support.

    +

    We assume for this installation that you want all of the Netmaker features enabled, you want your server to be secure, and you want your server to be accessible from anywhere.

    +

    This instance will not be HA. However, it should comfortably handle around one hundred concurrent clients and support the most common use cases.

    +

    If you are deploying for a business or enterprise use case and this setup will not fit your needs, please contact info@gravitl.com, or check out the business subscription plans at https://gravitl.com/plans/business.

    By the end of this guide, you will have Netmaker installed on a public VM linked to your custom domain, secured behind an Nginx reverse proxy.

    -

    If this configuration does not fit your use case, see the Advanced Installation docs.

    +

    For information about deploying more advanced configurations, see the Advanced Installation docs.

    1. Prerequisites

    • Virtual Machine

        -
      • Preferably from a cloud provider (e.x: DigitalOcean, Linode, AWS, GCP, etc.)

      • +
      • +
        Preferably from a cloud provider (e.x: DigitalOcean, Linode, AWS, GCP, etc.)
          +
        • We do not recommend Oracle Cloud, as VM’s here have been known to cause network interference.

        • +
        +
        +
        +
      • Public, static IP

      • -
      • Min 2GB RAM, 1 CPU (4GB RAM, 2CPU preferred)

      • -
      • 5GB+ of storage

      • +
      • Min 1GB RAM, 1 CPU (4GB RAM, 2CPU preferred)

      • +
      • 2GB+ of storage

      • Ubuntu 20.04 Installed

    • @@ -805,11 +814,11 @@

      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. 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
      +sudo apt-get -y 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 apt-get -y 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
      @@ -821,7 +830,7 @@
       
       

      Install Dependencies

      In addition to Docker, this installation requires WireGuard, Nginx, and Certbot.

      -

      sudo apt install wireguard wireguard-tools nginx certbot python3-certbot-nginx net-tools

      +

      sudo apt -y install wireguard wireguard-tools nginx certbot python3-certbot-nginx net-tools

      @@ -864,18 +873,8 @@
    - - -

    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.

    -
    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
    -
    -
    +

    In addition to the above ports, you will need to make sure that your cloud’s firewall or security groups are opened for the range of ports that Netmaker’s WireGuard interfaces consume.

    +

    Netmaker will create one interface per network, starting from 51821. So, if you plan on having 5 networks, you will want to have at least 51821-51825 open (udp).

    Prepare Nginx

    @@ -895,20 +894,23 @@

    4. Install Netmaker

    Prepare Templates

    -
    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
    +

    Note on COREDNS_IP: Depending on your cloud provider, the public IP may not be bound directly to the VM on which you are running. In such cases, CoreDNS cannot bind to this IP, and you should use the IP of the default interface on your machine in place of COREDNS_IP. If the public IP is bound to the VM, you can simply use the same IP as SERVER_PUBLIC_IP.

    +
    wget https://raw.githubusercontent.com/gravitl/netmaker/develop/compose/docker-compose.yml
    +sed -i 's/NETMAKER_BASE_DOMAIN/<your base domain>/g' docker-compose.yml
    +sed -i 's/SERVER_PUBLIC_IP/<your server ip>/g' docker-compose.yml
    +sed -i 's/COREDNS_IP/<your server ip>/g' docker-compose.yml
     

    Generate a unique master key and insert it:

    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
    +sed -i 's/REPLACE_MASTER_KEY/<your generated key>/g' docker-compose.yml
     
    +

    You may want to save this key for future use with the API.

    Start Netmaker

    -

    sudo docker-compose -f docker-compose.quickstart.yml up -d

    +

    sudo docker-compose -f docker-compose.yml up -d

    navigate to dashboard.<your base domain> to see your nginx instance.

    To troubleshoot issues, start with:

    docker logs netmaker

    diff --git a/docs/_build/html/search.html b/docs/_build/html/search.html index a9ff45c0..209239d7 100644 --- a/docs/_build/html/search.html +++ b/docs/_build/html/search.html @@ -494,6 +494,13 @@ Adding Clients to a Gateway + +
  • + + + Configuring DNS for Ext Clients (OPTIONAL) + +
  • diff --git a/docs/_build/html/searchindex.js b/docs/_build/html/searchindex.js index 2c412bf9..ba20d647 100644 --- a/docs/_build/html/searchindex.js +++ b/docs/_build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["about","api","architecture","client-installation","conduct","external-clients","getting-started","index","license","quick-start","server-installation","support","troubleshoot","usage"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.intersphinx":1,sphinx:56},filenames:["about.rst","api.rst","architecture.rst","client-installation.rst","conduct.rst","external-clients.rst","getting-started.rst","index.rst","license.rst","quick-start.rst","server-installation.rst","support.rst","troubleshoot.rst","usage.rst"],objects:{},objnames:{},objtypes:{},terms:{"0afehuytvin":3,"100":[1,6],"101":3,"127":10,"1443":[],"147":3,"168":3,"170":3,"172":1,"182":3,"192":3,"1b3282d4b7aa":[],"1b3282d4b7aa_":[],"200":1,"203":3,"236":5,"247":5,"251":3,"254":6,"27017":[],"2cpu":9,"2gb":9,"30s":10,"443":[9,10],"4gb":9,"500":[],"50051":[2,3,6,10],"50052":[],"50555":[],"51821":3,"51822":5,"534":[],"5gb":9,"5qktbtgsvb45y3qyrmwft":3,"6400":1,"8081":[1,2,3,10],"8082":10,"abstract":2,"break":3,"case":[1,2,3,5,7,9,10,12,13],"class":10,"default":[1,2,3,5,6,9,10],"final":12,"function":[1,3,10,11],"import":[2,5,6],"long":[0,6,11],"new":[2,3,6],"null":9,"public":[2,3,4,5,8,9],"return":[2,9],"short":3,"static":[2,9,10,12],"switch":[10,11],"true":[3,10],"try":11,"var":[1,10],"while":[2,11],AWS:[0,9,11],Adding:[6,7],Being:4,DNS:[2,7,12,13],For:[2,3,5,6,9,10,12],IOS:12,IPs:2,K3s:13,Not:2,That:2,The:[0,1,2,3,4,5,6,9,10,11],Then:[5,6,12],There:[0,1,3,6,11,12],These:[2,3,6],Use:[3,7],Used:[3,10],Useful:10,Using:[0,1,4,6,7],Will:3,With:[2,11],Yes:12,aa3bvg0rnitirxdx:1,abil:[11,12],abl:[1,2,5],abou:6,about:[2,3,6,10,11,12],abov:[2,3,6,9,10,11],absent:3,abus:4,acceler:[],accept:[3,4,5],access:[0,2,3,5,6,7,9,10,11,12,13],access_token_valu:10,accesskei:[1,3],accomplish:11,account:[4,12],achiev:[1,2,11,12],acm:9,across:[0,3],act:[2,4,5],action:[1,3,4],activ:12,actual:2,adapt:[4,10],add:[0,1,2,3,5,6,9,10],added:[2,3,6,10,11],adding:6,addit:[2,3,6,9,10,11],addnetwork:1,addr:3,address:[2,3,4,5,6,10,12],addressipv6:3,addressrang:1,adequ:10,adm:1,admin:[0,1,2,3,6,10,12],adopt:2,advanc:[1,4,6,7,9],afeiszli:[],after:[3,5,6,11],again:9,against:3,age:4,agent:[0,2,3,6,7,10,12],agent_backend:10,agentbackend:10,aggreg:2,agre:9,alex:3,algo:11,align:4,all:[0,1,2,3,4,5,6,7,8,9,10,11,12],allow:[1,2,3,5,6,9,10,12,13],allowedip:[3,5],allowedorigin:10,along:12,alreadi:[2,3,6,10],also:[0,1,2,6,9,10,11,12],altern:[2,10],although:12,alwai:10,amd64:9,android:[2,12],ani:[0,2,3,4,5,6,9,10],anoth:[2,11,12],answer:12,anymor:12,anyth:2,anywai:11,anywher:9,aorijqalrik3ajflaqrdajhkr:1,apach:[2,10],api:[2,3,6,9,10],api_port:10,apiaddress:3,apihost:10,apiport:10,apiserv:3,app:[5,10,11,12],appear:[4,6],appli:[4,10],applic:1,appoint:4,appropri:[2,4,5,9],approv:[1,3,6,11],aprov:12,apt:9,arbitrari:0,arch:[2,9],architectur:10,archiv:9,argument:3,arm:3,around:9,arrai:2,artifact:8,ask:[3,12],asset:10,assum:[2,5,9,10,12],attach:5,attack:4,attempt:2,attent:4,attribut:7,authent:[2,3,6],author:1,authsourc:[],autom:0,automat:[2,3,5,10],avail:[3,4,8,10,11],averag:[],awai:2,await:2,back:[2,5],backend:10,backend_url:10,background:2,backup:11,badpassword:[],balanc:11,ban:4,bare:2,base64:6,base:[2,3,9,10,11],bash:2,basi:[2,11],basic:13,bearer:1,becaus:[0,2],becom:2,been:[2,3],befor:[2,9,12],begin:[2,9],behavior:4,behind:[2,5,9,12],being:[2,10],believ:11,bellow:10,below:[1,2,6,9,10,13],best:[4,11],better:2,between:[0,2],bewar:3,beyond:[10,11],bin:[9,10],bin_t:12,binari:[2,3,6,10,11,12],bind:10,bit:13,biz:9,blank:3,blob:10,block:[10,12],bodi:4,both:[2,4,10,11],bottom:6,bring:[],brows:11,browser:[],bug:[],build:[],built:2,bunch:11,busi:11,button:[],call:[0,2,3,7,10],callabl:3,can:[0,1,2,3,5,6,8,9,10,11,12,13],cang:10,cannot:[3,5],cap_add:10,car:11,carrier:2,cat:12,caus:2,caution:[],center:0,cento:2,certain:2,certbot:9,certif:[9,10],certonli:9,cgnat:[],cgroup:10,challeng:9,chang:[0,1,2,3,5,6,10,12],charact:12,chcon:12,check:[1,2,3,6,9,10,12],checkin:[1,2,3],chmod:9,choic:5,choos:[3,9],chose:11,chosen:[2,3,9],cidr:6,circumst:[3,4],clarifi:4,clear:11,cli:[2,9],click:[2,6,9],client:[0,6,9,10,11,12],client_max_body_s:10,client_mod:10,clientmod:10,close:11,cloud:[0,9,13],cluster:[10,13],code:[2,3,5,8,12],com:[3,4,6,9,10,11],combin:10,come:[2,7,10],comfort:9,comm:3,command:[2,3,6,9,10],comment:[4,10],commit:4,common:[2,7],commun:[2,3,4,7,9,10,11,12,13],compat:[5,7,11],compil:[2,3],complaint:4,complet:[2,12],complex:2,complic:2,compon:[7,10],compos:[6,7,9,12],comput:[0,2,3],concept:7,concern:11,concurr:9,conf:[9,10],confidenti:4,config:[1,2,5],configur:[0,1,2,6,7,9,12],conflict:[2,10],conflift:[],connect:[0,2,3,5,6,10,12,13],consensu:[2,12],consequ:10,consid:[2,4,6],consider:2,consist:2,consol:6,construct:4,consum:[3,9,10],consumpt:[],contact:[4,7,9],contain:[2,6,10],container_nam:10,containerd:9,content:1,context:10,continu:10,contrast:2,contribut:4,contributor:4,control:[2,6,10],copi:[6,10],core:[0,7,11],coredn:[3,7],coredns_addr:10,corednsaddr:3,corefil:10,coreo:2,corpor:11,correct:4,correctli:10,cors_allowed_origin:10,could:[0,4,6,12],cours:9,coven:4,cover:7,cpu:[9,12],creat:[0,1,2,3,4,5,7,9,10,12,13],createadmin:1,creategatewai:1,createus:[],creation:0,credenti:10,critic:4,cron:2,cross:13,cryptocurr:0,curl:[6,9,10],current:[2,3,10,12],custom:[2,7,9,10],customiz:[],cycl:[1,2],daemon:2,dashboard:9,data:[0,2,10],databas:[2,12],date:1,dbadminanydatabas:[],dbu:10,ddflzqn:5,dearmor:9,deb:9,debian:2,debug:10,decis:7,decod:[2,3,6],deem:4,defaultkeepal:[],defin:4,delet:[1,5,6,12],deletegatewai:1,deni:12,depend:[2,3,7],depends_on:10,deploi:[2,7,9,10],deploy:[2,10],depreci:10,derogatori:4,deserv:11,design:[2,3,5,7,11],desktop:[2,3,5],detail:[1,2,3,4,6,7,10],determin:[4,11],dev:[9,10],develop:[6,9,10],devic:[0,2,3,7,11,12],diabl:[],diagram:2,differ:[0,2,4,6,10,11,13],digitalocean:9,directli:[0,1,2,5,10,12],directori:9,disabl:[2,4,9],disable_remote_ip_check:10,disableremoteipcheck:10,disconnect:12,discord:[11,12],discuss:[],displai:[],displaynam:1,distibut:2,distribut:2,distributionshav:2,dns:[2,3,9,10],dns_mode:[10,12],dnsconfig:10,dnsmode:10,dnson:3,dnsstublisten:[9,10],doc:[6,9,10,11],docker:[2,6,7,12],document:[0,2,3,6,10],doe:[2,5,7,9,10,12],doesn:12,doing:0,domain:[10,12],don:[2,3,11,13],done:12,doubl:[],down:[0,6,11,12],download:[5,6,9,10,12],dual:[3,12,13],duplic:3,dure:3,dynam:[0,2,7],each:[0,2,3,6,10,12],easi:[2,10],easier:[2,11],easiest:2,easili:0,echo:9,econom:11,edit:[4,5],effect:6,effici:2,egress:3,either:[2,5,11],ejf6yy51m:5,electron:4,elev:10,elimin:2,els:11,email:[9,11],empathi:4,empti:10,enabl:[2,6,9,10],encod:6,encompass:0,encount:[2,11],encrypt:[0,2,3,12],end:[2,9,10,11,12],endpoint:[1,2,3,5],enforc:7,engin:9,enhanc:[],enough:[],ensur:11,enter:[6,9],enterpris:9,entir:6,entireti:2,entri:[10,12],env:[1,10],environ:[0,1,2,4,10],equal:10,equival:10,error:[],escal:[],especi:[],establish:5,etc:[3,6,9,10,12],eth0:1,ethnic:4,evalu:11,even:[0,2],event:4,eventu:11,everi:[2,3,6,11],everyon:4,everyth:[2,10],evolv:2,examin:[],exampl:[2,3,4,5,7,9,10],except:10,execut:11,exist:[0,2,6,10],expand:11,expect:[4,7,10],experi:4,explain:[2,7],explicit:4,explicitli:10,expos:2,express:4,expressvpn:11,ext:12,extens:2,extern:[3,10,11],face:4,fact:0,fail:[6,9],fair:4,fairli:[2,12],faith:4,fals:[3,10],familiar:[0,2,11,12],faq:7,fast:[2,7,10],faster:[0,2,3],fcontext:12,featur:[9,10,11],fedora:2,feiszli:[],few:[3,11],field:[],figur:13,file:[2,5,9,11],filenam:1,financi:11,find:[2,10,13],fine:0,firewal:[10,12],firmli:11,first:[2,3,6,10,11,12,13],fit:[9,13],flag:3,flat:0,flexibl:0,flow:2,focu:11,focus:4,folder:2,follow:[4,6,9,10,11,12],forc:10,fork:[],form:3,format:10,forum:12,forward:[3,5,9],foster:4,found:[0,2,8,10],free:4,freeli:8,frequent:12,friend:12,from:[0,1,2,3,4,5,6,9,10,11,13],front:[2,10],fssl:9,full:[0,2,10],fulli:[0,2],fundament:[],further:4,futur:[2,6,11],gain:[],gatewai:[1,2,3,7,13],gcp:9,gender:4,gener:[1,2,3,5,9,10,11],generate_config_j:10,get:[1,3,7,9,10,12,13],github:[2,3,7,9,10,11,12],githubusercont:[6,9,10],give:[2,6,7,10,12],given:[0,2,6,12],global:3,gnupg:9,goe:[0,10],going:10,golang:2,good:[4,5,11,12,13],googl:10,gpg:9,grab:3,gracefulli:4,grade:2,gravitl:[3,4,6,9,10,11,12],grpc:[2,3,6,9],grpc_port:10,grpc_ssl:10,grpcaddr:[],grpcaddress:3,grpcaddrrang:[],grpcendpoint:[],grpchost:10,grpcifac:[],grpcport:10,grpcserver:3,grpcwg:[],guid:[0,2,6,9,10,12],guidelin:11,hack:[],hand:7,handl:[0,2,9],harass:4,hard:11,harder:12,harm:4,has:[0,2,3,6,10,11,13],hasadmin:1,have:[0,2,3,4,5,6,9,10,11,12,13],haven:12,head:9,header:[1,10],health:11,heart:3,heavi:2,heaviest:[],heavili:[],help:[1,2,3,6,7,10,11,13],here:[2,4,6,8,9,10,11,13],high:2,highli:3,hit:12,hold:[0,2,3],hole:[3,12],holepunch:3,home:[0,2,3],hook:[2,5],horizont:[],host:[2,3,9,10,11],host_ip:10,hous:1,how:[2,3,7,10,12],howev:[1,2,3,9,10,11,12],html:10,http:[1,3,6,7,9,11],http_port:10,hub:[0,2],hundr:9,idea:11,ident:4,identifi:3,ignor:3,imag:10,imageri:4,immedi:[],impact:[2,11],implement:2,importantli:6,inappropri:4,inbound:9,incid:4,includ:[2,4,5,7,10],inclus:4,incompat:[],incorrect:[3,10],increas:2,inde:[],independ:5,individu:[4,10],industri:2,info:[2,4,9,10,11],inform:[2,3,4,6],ingress:[2,3,7,10],ingressgatewai:12,initi:[3,11],ins:2,insert:[9,10,12],insid:10,instal:[0,2,5,6],instanc:[1,2,3,4,6,9,10],instead:[0,3,5,9,10,12],instruct:[9,10],insult:4,intact:3,integr:10,intend:3,interact:[0,2,3],interest:[4,11,12],interfac:[1,3,5,6,10],interfer:12,intern:10,internet:[0,2,11],intro:13,introduc:2,introduct:[2,7],invalid:[5,6],investig:4,invis:2,iot:[0,2],ipforward:3,iphon:2,ipsec:2,iptabl:3,ipv4:[3,12],ipv6:[3,12,13],isdualstack:3,isingressgatewai:3,isloc:3,isstat:3,issu:[4,7,9,10,11],iter:11,its:[0,2,3,4,5,6,10],itself:[2,3,6],job:2,join:[2,3,6,12],journalctl:[3,10,12],json:1,just:[0,2,3,5,10,11,12],jwt:[1,3],keep:1,keepal:3,kei:[2,3,9,10,12],kernel:[0,2,11],keynam:1,keyr:9,keyrequir:[],keyupd:1,keyvalu:[],kill:12,know:[10,11,12,13],known:2,kube:10,kubectl:10,kubernet:[0,7,13],lack:[],lan:3,languag:4,laptop1:1,laptop:5,larg:2,larger:[],last:1,lastmodifi:1,latenc:2,later:2,latest:[2,3,5,10],layer:0,layout:2,lead:11,leadership:4,learn:[],least:[0,12],leav:[3,6,12],left:[10,12],less:[2,6],let:[0,11,13],letsencrypt:9,level:[2,4,10],light:10,lighter:[],lightweight:2,like:[0,2,3,6,9,10],likewis:[],limit:[7,10,11],line:2,link:[7,9,10],linod:9,linux:[2,3,6,7,9,11],linuxserv:10,list:[0,2,3,9,10],listen:10,listenport:1,littl:[2,11],load:[2,10,11],local:[2,3,6,9,10],localaddress:[1,3],localhost:1,localrang:3,locat:[0,2,3,10],log:[9,10,12],logic:5,login:6,look:11,lookup:2,lot:[2,11],lsb:9,lsb_releas:9,lxc:10,mac:[2,3],macaddress:[1,3],machin:[0,2,3,5,6,9,12],maco:12,made:[0,2,12],mai:[1,2,3,4,6,9,10,11,12],mail:4,main:[],mainfram:[],maintain:[4,11],make:[0,2,4,5,9,10,11,12],man:5,manag:[0,2,5,7,10,13],mandatori:[],mani:[0,2,10,11,13],manual:[2,3,6,9,10,12],map:10,master:[9,10],master_kei:10,masterkei:[1,10],match:[3,10],mean:[2,3,5,10],meant:10,media:4,medium:[],member:[4,13],memori:12,mesh:[0,5,11,12,13],meshclient:1,metal:2,method:[1,2,3,5,6],mgmt:1,microk8:[10,13],middl:5,might:[0,2,10],min:9,mind:[],minimum:12,mint:2,minu:10,minut:[9,10,12],miss:2,mix:3,mode:[2,7],model:[0,2],modif:10,modifi:[1,2,3,6,9,10,11],monet:11,mongo:10,mongo_admin:[],mongo_host:[],mongo_initdb_root_password:[],mongo_initdb_root_usernam:[],mongo_opt:[],mongo_pass:[],mongo_port:[],mongoadmin:[],mongoconn:[],mongodb:10,mongopass:[],mongovol:[],more:[0,1,2,5,6,7,10,11],most:[1,2,3,9,10,12],mostli:[2,3],mount:10,move:[6,9,11],much:[0,2],mullvad:11,mullvadvpn:11,multipl:[0,6,12],must:[1,2,3,5,6,9,10,11,12],mykei:[1,6],mynet:6,myserv:6,mysit:9,name:[1,2,3,5,6,10,12],nameserv:[2,3,9,10],namespac:10,nat:[2,5],nation:4,navig:[9,12],nebula:0,necessari:[2,3,4,10],need:[0,1,2,3,9,10,11,12],neighborhood:0,neither:2,net:[3,9],net_admin:10,netclient:[0,5,7],netclient_accesskei:3,netclient_accesstoken:3,netclient_address:3,netclient_addressipv6:3,netclient_api_serv:3,netclient_daemon:3,netclient_dn:3,netclient_endpoint:3,netclient_grpc_serv:3,netclient_interfac:3,netclient_ipforward:3,netclient_is_dualstack:3,netclient_is_loc:3,netclient_keepal:3,netclient_localaddress:3,netclient_localrang:3,netclient_macaddress:3,netclient_nam:3,netclient_network:3,netclient_o:3,netclient_password:3,netclient_port:3,netclient_postdown:3,netclient_postup:3,netclient_privatekei:3,netclient_publickei:3,netclient_roam:3,netclient_udp_holepunch:3,netconfig:[3,12],netid:1,netmak:[1,3,5,8,10,12],netmaker_base_domain:[9,10],netmaker_env:10,network:[0,5,6,7,10,11,12,13],network_mod:10,next:[3,6],nextcloud:13,nginx:[2,7,12],noclient:[],node:[3,5,7,10,12],nodn:10,non:[2,3,6,10],none:0,noonewillguessthi:1,nordvpn:11,note:[1,3,5,10,12],notifi:2,now:[0,5,6,9,10,11,12],nslookup:9,number:[2,6,11],oblig:4,obtain:[1,3],ode:3,off:[2,3,10,12],offens:4,offic:[0,13],offici:[1,4,9,12],offlin:4,omit:10,onc:[5,6,10],one:[2,3,5,6,9,10,12],onli:[1,2,3,5,6,11,12],onlin:4,onto:[],open:[2,4,9,11],openvpn:2,oper:[2,3,10],operatingsystem:3,opinion:9,opt:[],option:[2,3,7,10,11],order:[9,10,11,12],org:[9,10],orient:4,origin:10,osi:11,other:[0,2,3,4,5,6,10,11],otherwis:[0,3,4,12],our:[7,9,12],out:[0,2,6,9,10,11,13],outlin:[2,10],output:[3,6],outsid:[7,10],over:[0,2,10],overlai:[0,7],overlap:6,overrid:[3,10],overridden:[2,10],overview:[2,7,13],overwhelm:13,own:[2,9,10],pace:[],page:2,pai:11,paid:11,pair:[2,10],pane:6,part:[2,3,10],parti:12,partial:2,particip:4,particular:[2,3],pass:[2,3,10],password:[1,3,6],path:[1,10,11],patient:[],peer:[2,3,5,13],pend:[1,6],peopl:11,per:11,perform:[1,2,3,10],period:2,perman:4,permiss:[4,9,12],permit:6,persistenkeepal:[],persistentkeepal:[3,5],person:4,perspect:[0,2],phase:[],phone:[3,5],physic:4,pick:[2,6],pictur:2,pidof:[],ping:6,pivpn:11,place:[3,10],plaintext:3,plan:10,platform:[2,7],pleas:[3,9,10,11,12],pledg:7,plu:3,point:[2,9],polici:4,polit:4,popul:10,port:[2,3,6,9,10,12],posit:4,possibl:[2,7,9],post:[1,2,3,4],postchang:3,postdown:3,postup:3,practic:2,pre:10,preced:2,precend:10,prefer:[9,10,12],prepar:7,prereqisit:6,prerequisit:[2,6,7,10],present:[],previou:2,primari:10,prior:10,privaci:11,privat:[2,4,6,7,10,11,13],privatekei:[3,5],privileg:10,privkei:3,probabl:[0,11],problem:11,proce:[],process:[3,6,7,10],product:10,profession:4,project:[1,4,10,11],prompt:9,proof:0,properli:[3,12],properti:3,proto:9,protocol:10,provid:[0,2,3,9,10],proxi:[7,9],proxy_pass:10,proxy_pass_request_head:10,proxy_set_head:10,pubkei:3,publickei:[1,3,5],publicli:9,publish:[4,8],pull:[2,3,5,10],punch:[3,12],push:[3,5],put:1,pwd:[],python3:9,q9cog7c9qjnoxygvri:3,quarantin:3,question:12,quick:[6,10,12],quickli:[7,9,12],quickstart:[9,12],race:[4,11],raft:[2,12],ram:9,rang:[3,6],rangestr:1,rapid:[],rapidli:[],raspian:2,raw:[3,6,9,10],reach:[0,2,3,5],reachabl:[2,3,5,9,10],reactj:2,read:10,readwriteanydatabas:[],reallysecret:1,reason:[2,4,10,11],reboot:12,reccommend:[],recent:[2,3,12],reciev:[1,2],recommend:[1,3,5,10,12],reconfigur:[2,3,12],record:[9,12],reduc:[],refactor:2,refer:[2,6,9,12],regard:[2,4],regardless:4,regist:[2,3],registr:3,regular:11,reiter:[],reject:4,rel:2,relai:[2,5,11],relat:9,releas:[2,3,9,10],reli:[0,3],relianc:[],religion:4,reload:9,remot:[0,3,10],remov:[1,2,4,6,9,10,12],removenetwork:1,repeat:6,repercuss:4,replac:[3,9,10],replace_master_kei:9,report:[2,4],repositori:[2,8],repres:4,represent:4,request:[1,2,10],requir:[1,2,3,6,9,10,12],resolut:9,resolv:[2,3,9,10],resolvectl:[3,10],resourc:[5,7],respect:4,respons:[2,7],rest:10,rest_backend:10,restart:[9,10,12],restbackend:10,restorecon:12,restrict:[10,11],result:4,retriev:[0,1,2,3,6,11],revers:[7,9],revert:3,review:4,rhel:2,right:[0,4,11],risk:12,rkxlgk2mg:5,rncjjbsaa3hzuhrk5hpyxm:3,road:11,roam:3,rogu:12,role:[],root:[9,10,12],rout:[0,2],route53:9,router:[2,12],rpumvsbpgq:5,rqlite:12,rule:[3,9],run:[0,1,2,3,5,6,7,9,10,11,12],runc:9,runnin:5,runtim:10,rwx:10,said:[2,11],same:[0,3,6,12],sampl:0,save:6,scalabl:[],scan:5,scenario:6,schema:[],scope:7,screen:6,script:[2,3,6,10,12],second:6,secret:[1,3,6],secretkei:10,section:[3,10],secur:[0,1,2,3,7,9,12,13],securebetween:[],sed:[9,10],see:[1,2,3,6,9,10,12],select:[5,6,12,13],self:11,selinux:12,semanag:12,send:[2,3,10],sens:[2,11],sensibl:[0,2,6],separ:[2,4,13],seper:12,seri:9,serv:[2,9,10],server:[0,3,5,6,8,9,11],server_api_conn_str:10,server_api_host:10,server_grpc_conn_str:10,server_grpc_host:10,server_grpc_wg_address:[],server_grpc_wg_address_rang:[],server_grpc_wg_interfac:[],server_grpc_wg_keyrequir:[],server_grpc_wg_port:[],server_grpc_wg_privkei:[],server_grpc_wg_pubkei:[],server_grpc_wireguard:[],server_host:10,server_http_host:10,server_nam:10,server_public_ip:9,servic:[2,3,5,9,10,11,13],set:[1,2,3,4,6,9,10,13],setup:[0,2,7],sever:[2,10],sexual:4,sfl:[6,10],share:[9,10,12],ship:[],should:[0,1,2,3,5,6,7,9,10,11,12],show:[3,4,10,12],side:8,sign:[2,3,6,9,12],signific:2,signigif:2,signup:[2,3,12],similar:[0,6,10,11],simpl:[2,3,6,10,12],simplest:[2,3],simpli:[2,3,5,6,12],simplifi:10,simultan:0,sinc:[],singl:[1,2,12],site:[0,2,7,10,12,13],situat:2,size:4,skynet:1,slim:[],slow:0,small:[2,6,11],smartgui:1,snap:9,social:4,solut:2,solv:2,some:[1,2,3,10,11,12,13],someon:11,someth:[5,6,9,10,11],somewher:6,soon:[7,12],sort:0,sourc:[2,3,7,8,9,11],space:4,spec:12,special:[2,3,10],specif:[2,3,4,10],specifi:[3,10],speed:[0,2],split:3,spoke:[0,2],sponsor:[],spread:0,sql:2,sql_conn:10,sqlconn:10,sqldata:10,sqlite:2,ssh:[6,9],ssl:[9,10],sspl:8,stabil:[],stabl:9,stack:[3,12,13],stai:3,stake:0,standard:[2,7],start:[10,12,13],startup:1,state:6,statement:7,statu:[3,10,12],step:[2,3,6,9,10],still:[0,10,11],stock:11,stop:[9,10],storag:[9,10],storageclassnam:10,store:[2,10],string:[6,10],structur:[],stun:12,subdomain:[9,10],submit:6,subnet:2,subsequ:2,subspac:11,subspacecloud:11,substanti:0,success:2,sudo:[3,6,9,10,12],support:[2,9,10,12],sure:[9,11,12],surfshark:11,suse:2,swag:10,swagger:7,sys:10,sys_modul:10,system:[6,7],system_bus_socket:10,system_u:12,systemctl:[3,9,10,12],systemd:[3,6,9,10,11,12],tab:[6,12],tail:3,tailor:[],tailscal:0,take:[0,1,2,4,6,10,12],talk:[0,2],tcp:9,team:[4,11],technic:[0,7,11],technolog:2,tee:9,tell:[0,2,3,10],templat:10,temporari:4,temporarili:4,term:11,terrain:11,test:6,than:[2,6,10,11],thei:[0,2,4,10,11,12],them:[2,6,10,11,12],themselv:[2,12],therefor:12,thhe:[],thi:[0,1,2,3,4,5,6,7,8,9,10,11,12],thing:[0,2,11],think:[11,13],third:12,thmpvlcykonxi:3,those:[0,2,3,5,9],though:[],thought:11,thousand:0,threaten:4,three:[6,9],through:[2,10],ticket:11,time:[1,2,3,5,6,10,12,13],timer:2,timestamp:2,token:[3,6,10,12],tool:[0,3,9],top:[2,9,12],topic:13,topolog:2,tos:9,total:[],toward:4,traefik:10,traffic:[0,2,5,9,10,12],trailofbit:11,transact:2,transport:9,treat:[2,3],tricki:2,troll:4,troubleshooot:9,troubleshoot:[1,3,6,9],tunnel:[0,2],tunnelbear:11,turn:[2,3,10,12],tutori:7,two:[0,1,2,12],txt:9,type:1,typic:[0,2,5,6,10],ua2zjt8wn7ga:5,ubuntu:[2,9,10],udp:[3,9,10,12],udpholepunch:3,ufw:9,ultim:11,unabl:2,unaccept:4,unam:9,uncom:[9,10],uncordon:1,under:[3,6,8,10,12],underlai:[0,13],underli:[],underscores_in_head:10,understand:[],uninstal:[7,12],uninstral:[],uniqu:[3,9],unix:[2,3,11],unless:[3,10],unmanag:2,unmesh:[],unnecessari:3,unregist:3,unregistr:3,unset:[3,10],unsupport:11,unsur:[5,6],unten:11,until:[3,6,12],unwelcom:4,unzip:10,updat:[1,2,6,9,11,12],upon:[2,3],ups:12,upstream_app:10,upstream_port:10,upstream_proto:10,urandom:9,url:10,usag:[3,7,10,13],use:[0,1,2,3,4,5,6,7,9,10,11,12,13],used:[1,2,3,5,6,10],useful:[],user:[2,3,6,12],useradminanydatabas:[],usernam:[1,6],uses:[0,1,2,5,6,10,12],using:[0,1,2,3,4,5,7,9,10,11,13],usr:[9,10],usual:3,util:3,v02:9,valid:[2,10],valu:[1,2,3,6,10,12],vari:[],variabl:[2,3],variou:[3,7,10],vehicl:11,verbos:10,veri:[0,2,3,11],verifi:2,versa:11,version:[2,4,8,9,10,12],via:[1,2,3,4,5,6,9,10,11,12,13],vice:11,view:[6,11,12],viewpoint:4,vim:[3,9,10],virtual:[0,3,5,7,9,11,13],visibl:[6,10],vm3ow4thatogiwnsla3thsl3894th:6,vne197vmradjodkb1zsuja:3,volum:[6,10,12],vpc:[0,11],vpn:[2,12,13],wai:[10,11,12],wait:9,want:[0,2,9,11,12],warn:10,web:[10,11],webserv:2,websit:2,week:[],weight:10,welcom:[4,11],well:[2,3,6,7,11,12],wgaddress6:3,wgaddress:3,wget:[9,10],what:[2,4,5,7,12],whatev:[3,9,10],when:[2,3,4,10,12],where:[2,5,6,7,10,13],wherev:0,whether:[0,3],which:[0,2,3,4,5,6,8,9,10,11,12],who:4,why:[2,3,7,12],wide:2,wider:2,wiki:4,wildcard:[9,10],window:[2,3,12],wipe:12,wiregard:[],wireguard:[0,3,5,6,7,9,10,11,12],wish:[5,10],within:[2,3,4],without:[1,2,3,4,6,7,11,12],won:11,work:[2,7,9,11],workstat:[3,6],world:[0,2],wors:2,worth:2,would:[0,3,5,6,9,10,11],write:[2,10],ws2:3,www:10,x86:3,yaml:[1,10],ydazgedrpuxmmrqul35wfjmhvrzr1rq0u:5,yes:3,yet:12,yml:[9,10,12],you:[0,1,2,3,5,6,7,9,10,12,13],your:[0,1,2,3,5,6,9,10,11,12,13],your_pass:1,your_password:1,your_secret_kei:1,yourwildcard:10,zeroti:0,zip:10,zrb9vfhk8a:11},titles:["About","API Reference","Architecture","Client Installation","Code of Conduct","External Clients","Getting Started","Welcome to the Netmaker Documentation","License","Quick Install","Advanced Server Installation","Support","Troubleshooting","Using Netmaker"],titleterms:{"case":0,Adding:[3,5],DNS:[3,9,10],Use:0,Using:13,Will:11,about:[0,7],access:1,advanc:10,agent:[],ani:11,annot:10,api:[1,7],architectur:[2,7],attribut:4,authent:1,basic:[],better:[],bug:[],build:[],call:1,cli:3,client:[2,3,5,7],code:[4,7],common:12,compat:[2,3,10],compon:2,compos:10,concept:2,conduct:[4,7],config:[3,10],configur:[3,5,10],contact:11,contribut:[],core:2,coredn:[2,10,12],creat:6,curl:1,daemon:3,daemonset:10,depend:9,deploi:6,descript:10,disabl:10,docker:[9,10],document:[1,7],doe:[0,11],domain:9,dual:[],enabl:[],enforc:4,enhanc:[],enterpris:11,exampl:1,extern:[2,5,7,13],faq:11,featur:[],file:[1,3,10],firewal:9,fork:[],format:1,full:[],gatewai:5,get:6,grpc:10,guid:7,how:[0,11],http:10,ingress:5,instal:[3,7,9,10,11],introduct:[3,5,9],ipv6:[],issu:12,kei:[1,6],kubernet:10,licens:[7,8,11],like:11,limit:2,linux:10,local:[],log:3,make:3,manag:[1,3,6],manual:[],mesh:2,mode:[3,10],mongodb:[],netclient:[2,3,6,10,11,12],netmak:[0,2,6,7,9,11,13],network:[1,2,3],nginx:[9,10],node:[1,2,6],nordnpn:11,note:[],offer:11,onli:[],oper:11,option:[],our:4,paid:[],pledg:4,prepar:9,prereqisit:[],prerequisit:[3,9],privat:3,process:2,proxi:10,quick:[7,9],refer:[1,3,7,10],remov:3,request:[],respons:4,revers:10,rqlite:[2,10],scope:4,secur:10,server:[1,2,7,10,12],setup:[6,10],site:[],slim:[],smaller:[],sql:[],sspl:11,stack:[],standard:4,start:[6,7,9],submit:[],support:[7,11],system:[2,3,10,11],systemd:2,technic:2,templat:9,test:10,token:[],troubleshoot:[7,12],tutori:13,uninstal:[3,6],uninstral:[],updat:3,usag:1,user:1,variabl:10,video:13,view:3,vpn:11,welcom:7,what:0,why:11,wireguard:2,without:10,work:0,written:13,you:11}}) \ No newline at end of file +Search.setIndex({docnames:["about","api","architecture","client-installation","conduct","external-clients","getting-started","index","license","quick-start","server-installation","support","troubleshoot","usage"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.intersphinx":1,sphinx:56},filenames:["about.rst","api.rst","architecture.rst","client-installation.rst","conduct.rst","external-clients.rst","getting-started.rst","index.rst","license.rst","quick-start.rst","server-installation.rst","support.rst","troubleshoot.rst","usage.rst"],objects:{},objnames:{},objtypes:{},terms:{"0afehuytvin":3,"100":[1,6],"101":3,"127":10,"1443":[],"147":3,"168":3,"170":3,"172":1,"182":3,"192":3,"1b3282d4b7aa":[],"1b3282d4b7aa_":[],"1gb":9,"200":1,"203":3,"236":5,"247":5,"251":3,"254":6,"27017":[],"2cpu":9,"2gb":9,"30s":10,"443":[9,10],"4gb":9,"500":[],"50051":[2,3,6,10],"50052":[],"50555":[],"51821":[3,9],"51822":5,"51825":9,"534":[],"5gb":[],"5qktbtgsvb45y3qyrmwft":3,"6400":1,"8081":[1,2,3,10],"8082":10,"abstract":2,"break":3,"case":[1,2,3,5,7,9,10,12,13],"class":10,"default":[1,2,3,5,6,9,10],"final":12,"function":[1,3,10,11],"import":[2,5,6],"long":[0,6,11],"new":[2,3,6],"null":9,"public":[2,3,4,5,8,9],"return":[2,9],"short":3,"static":[2,9,10,12],"switch":[10,11],"true":[3,10],"try":11,"var":[1,10],"while":[2,11],AWS:[0,9,11],Adding:[6,7],Being:4,DNS:[2,7,9,12,13],For:[2,3,5,6,9,10,12],IOS:12,IPs:[2,5],K3s:13,Not:2,That:2,The:[0,1,2,3,4,5,6,9,10,11],Then:[5,6,12],There:[0,1,3,6,11,12],These:[2,3,6],Use:[3,7],Used:[3,10],Useful:10,Using:[0,1,4,6,7],Will:3,With:[2,11],Yes:12,aa3bvg0rnitirxdx:1,abil:[11,12],abl:[1,2,5],abou:6,about:[2,3,6,9,10,11,12],abov:[2,3,6,9,10,11],absent:3,abus:4,acceler:[],accept:[3,4,5],access:[0,2,3,5,6,7,9,10,11,12,13],access_token_valu:10,accesskei:[1,3],accomplish:11,account:[4,12],achiev:[1,2,11,12],acm:9,across:[0,3],act:[2,4,5],action:[1,3,4],activ:12,actual:2,adapt:[4,10],add:[0,1,2,3,5,6,9,10],added:[2,3,6,10,11],adding:6,addit:[2,3,6,9,10,11],addnetwork:1,addr:3,address:[2,3,4,5,6,10,12],addressipv6:3,addressrang:1,adequ:10,adm:1,admin:[0,1,2,3,6,10,12],adopt:2,advanc:[1,4,6,7,9],afeiszli:[],after:[3,5,6,11],again:9,against:3,age:4,agent:[0,2,3,6,7,10,12],agent_backend:10,agentbackend:10,aggreg:2,agre:9,alex:3,algo:11,align:4,all:[0,1,2,3,4,5,6,7,8,9,10,11,12],allow:[1,2,3,5,6,9,10,12,13],allowedip:[3,5],allowedorigin:10,along:12,alreadi:[2,3,6,10],also:[0,1,2,6,9,10,11,12],altern:[2,10],although:12,alwai:10,amd64:9,android:[2,12],ani:[0,2,3,4,5,6,9,10],anoth:[2,11,12],answer:12,anymor:12,anyth:2,anywai:11,anywher:9,aorijqalrik3ajflaqrdajhkr:1,apach:[2,10],api:[2,3,6,9,10],api_port:10,apiaddress:3,apihost:10,apiport:10,apiserv:3,app:[5,10,11,12],appear:[4,6],appli:[4,10],applic:1,appoint:4,appropri:[2,4,5,9],approv:[1,3,6,11],aprov:12,apt:9,arbitrari:0,arch:[2,9],architectur:10,archiv:9,argument:3,arm:3,around:9,arrai:2,artifact:8,ask:[3,12],asset:10,assum:[2,5,9,10,12],attach:5,attack:4,attempt:2,attent:4,attribut:7,authent:[2,3,6],author:1,authsourc:[],autom:0,automat:[2,3,5,10],avail:[3,4,8,10,11],averag:[],awai:2,await:2,back:[2,5],backend:10,backend_url:10,background:2,backup:11,badpassword:[],balanc:11,ban:4,bare:2,base64:6,base:[2,3,9,10,11],bash:2,basi:[2,11],basic:13,bearer:1,becaus:[0,2],becom:2,been:[2,3,9],befor:[2,9,12],begin:[2,9],behavior:4,behind:[2,5,9,12],being:[2,10],believ:11,bellow:10,below:[1,2,5,6,9,10,13],best:[4,11],better:2,between:[0,2],bewar:3,beyond:[10,11],bin:[9,10],bin_t:12,binari:[2,3,6,10,11,12],bind:[9,10],bit:13,biz:9,blank:[3,5],blob:10,block:[10,12],bodi:4,both:[2,4,10,11],bottom:6,bound:9,bring:[],brows:11,browser:[],bug:[],build:[],built:2,bunch:11,busi:[9,11],button:[],call:[0,2,3,7,10],callabl:3,can:[0,1,2,3,5,6,8,9,10,11,12,13],cang:10,cannot:[3,5,9],cap_add:10,car:11,carrier:2,cat:12,caus:[2,9],caution:[],center:0,cento:2,certain:2,certbot:9,certif:[9,10],certonli:9,cgnat:[],cgroup:10,challeng:9,chang:[0,1,2,3,5,6,10,12],charact:12,chcon:12,check:[1,2,3,6,9,10,12],checkin:[1,2,3],chmod:9,choic:5,choos:[3,9],chose:11,chosen:[2,3,9],cidr:6,circumst:[3,4],clarifi:4,clear:11,cli:[2,9],click:[2,6,9],client:[0,6,9,10,11,12],client_max_body_s:10,client_mod:10,clientmod:10,close:11,cloud:[0,9,13],cluster:[10,13],code:[2,3,5,8,12],com:[3,4,6,9,10,11],combin:10,come:[2,7,10],comfort:9,comm:3,command:[2,3,6,9,10],comment:[4,10],commit:4,common:[2,7,9],commun:[2,3,4,7,9,10,11,12,13],compat:[5,7,11],compil:[2,3],complaint:4,complet:[2,12],complex:2,complic:2,compon:[7,10],compos:[6,7,9,12],comput:[0,2,3],concept:7,concern:11,concurr:9,conf:[5,9,10],confidenti:4,config:[1,2,5],configur:[0,1,2,6,7,9,12],conflict:[2,10],conflift:[],connect:[0,2,3,5,6,10,12,13],consensu:[2,12],consequ:10,consid:[2,4,6],consider:2,consist:2,consol:6,construct:4,consum:[3,9,10],consumpt:[],contact:[4,7,9],contain:[2,6,10],container_nam:10,containerd:9,content:1,context:10,continu:10,contrast:2,contribut:4,contributor:4,control:[2,6,10],copi:[6,10],core:[0,7,11],coredn:[3,7,9],coredns_addr:10,coredns_ip:9,corednsaddr:3,corefil:10,coreo:2,corpor:11,correct:4,correctli:10,cors_allowed_origin:10,could:[0,4,6,12],cours:9,coven:4,cover:7,cpu:[9,12],creat:[0,1,2,3,4,5,7,9,10,12,13],createadmin:1,creategatewai:1,createus:[],creation:0,credenti:10,critic:4,cron:2,cross:13,cryptocurr:0,curl:[6,9,10],current:[2,3,10,12],custom:[2,7,9,10],customiz:[],cycl:[1,2],daemon:2,dashboard:9,data:[0,2,10],databas:[2,12],date:1,dbadminanydatabas:[],dbu:10,ddflzqn:5,dearmor:9,deb:9,debian:2,debug:10,decis:7,decod:[2,3,6],deem:4,defaultkeepal:[],defin:4,delet:[1,5,6,12],deletegatewai:1,deni:12,depend:[2,3,7],depends_on:10,deploi:[2,7,9,10],deploy:[2,10],depreci:10,derogatori:4,deserv:11,design:[2,3,5,7,11],desktop:[2,3,5],detail:[1,2,3,4,6,7,10],determin:[4,11],dev:[9,10],develop:[6,9,10],devic:[0,2,3,7,11,12],diabl:[],diagram:2,differ:[0,2,4,6,10,11,13],digitalocean:9,directli:[0,1,2,5,9,10,12],directori:9,disabl:[2,4],disable_remote_ip_check:10,disableremoteipcheck:10,disconnect:12,discord:[11,12],discuss:[],displai:[],displaynam:1,distibut:2,distribut:2,distributionshav:2,dns:[2,3,9,10],dns_mode:[10,12],dnsconfig:10,dnsmode:10,dnson:3,dnsstublisten:10,doc:[6,9,10,11],docker:[2,6,7,12],document:[0,2,3,6,10],doe:[2,5,7,10,12],doesn:12,doing:0,domain:[10,12],don:[2,3,11,13],done:12,doubl:[],down:[0,6,11,12],download:[5,6,9,10,12],dual:[3,12,13],duplic:3,dure:3,dynam:[0,2,7],each:[0,2,3,6,10,12],easi:[2,10],easier:[2,11],easiest:2,easili:0,echo:9,econom:11,edit:[4,5],effect:6,effici:2,egress:[3,5],either:[2,5,11],ejf6yy51m:5,electron:4,elev:10,elimin:2,els:11,email:[9,11],empathi:4,empti:10,enabl:[2,6,9,10],encod:6,encompass:0,encount:[2,11],encrypt:[0,2,3,12],end:[2,9,10,11,12],endpoint:[1,2,3,5],enforc:7,engin:9,enhanc:[],enough:[],ensur:11,enter:[6,9],enterpris:9,entir:6,entireti:2,entri:[10,12],env:[1,10],environ:[0,1,2,4,10],equal:10,equival:10,error:[],escal:[],especi:[],establish:5,etc:[3,6,9,10,12],eth0:1,ethnic:4,evalu:11,even:[0,2],event:4,eventu:11,everi:[2,3,6,11],everyon:4,everyth:[2,10],evolv:2,examin:[],exampl:[2,3,4,5,7,9,10],except:10,execut:11,exist:[0,2,6,10],expand:11,expect:[4,7,10],experi:4,explain:[2,7],explicit:4,explicitli:10,expos:2,express:4,expressvpn:11,ext:[7,12],extens:2,extern:[3,10,11],face:4,fact:0,fail:[6,9],fair:4,fairli:[2,12],faith:4,fals:[3,10],familiar:[0,2,11,12],faq:7,fast:[2,7,10],faster:[0,2,3],fcontext:12,featur:[9,10,11],fedora:2,feiszli:[],few:[3,11],field:5,figur:13,file:[2,5,9,11],filenam:1,financi:11,find:[2,10,13],fine:0,firewal:[10,12],firmli:11,first:[2,3,6,10,11,12,13],fit:[9,13],flag:3,flat:0,flexibl:0,flow:2,focu:11,focus:4,folder:2,follow:[4,6,9,10,11,12],forc:10,fork:[],form:3,format:10,forum:12,forward:[3,5,9],foster:4,found:[0,2,8,10],free:4,freeli:8,frequent:12,friend:12,from:[0,1,2,3,4,5,6,9,10,11,13],front:[2,10],fssl:9,full:[0,2,10],fulli:[0,2],fundament:[],further:4,futur:[2,6,9,11],gain:[],gatewai:[1,2,3,7,13],gcp:9,gender:4,gener:[1,2,3,5,9,10,11],generate_config_j:10,get:[1,3,7,9,10,12,13],github:[2,3,7,9,10,11,12],githubusercont:[6,9,10],give:[2,6,7,10,12],given:[0,2,6,12],global:3,gnupg:9,goe:[0,10],going:10,golang:2,good:[4,5,11,12,13],googl:10,gpg:9,grab:3,gracefulli:4,grade:2,gravitl:[3,4,6,9,10,11,12],group:9,grpc:[2,3,6,9],grpc_port:10,grpc_ssl:10,grpcaddr:[],grpcaddress:3,grpcaddrrang:[],grpcendpoint:[],grpchost:10,grpcifac:[],grpcport:10,grpcserver:3,grpcwg:[],guid:[0,2,6,9,10,12],guidelin:11,hack:[],hand:7,handl:[0,2,9],harass:4,hard:11,harder:12,harm:4,has:[0,2,3,6,10,11,13],hasadmin:1,have:[0,2,3,4,5,6,9,10,11,12,13],haven:12,head:9,header:[1,10],health:11,heart:3,heavi:2,heaviest:[],heavili:[],help:[1,2,3,6,7,10,11,13],here:[2,4,6,8,9,10,11,13],high:2,highli:3,hit:12,hold:[0,2,3],hole:[3,12],holepunch:3,home:[0,2,3],hook:[2,5],horizont:[],host:[2,3,9,10,11],host_ip:10,hous:1,how:[2,3,7,10,12],howev:[1,2,3,9,10,11,12],html:10,http:[1,3,6,7,9,11],http_port:10,hub:[0,2],hundr:9,idea:11,ident:4,identifi:3,ignor:3,imag:10,imageri:4,immedi:[],impact:[2,11],implement:2,importantli:6,inappropri:4,inbound:9,incid:4,includ:[2,4,5,7,10],inclus:4,incompat:[],incorrect:[3,10],increas:2,inde:[],independ:5,individu:[4,10],industri:2,info:[2,4,9,10,11],inform:[2,3,4,6,9],ingress:[2,3,7,10],ingressgatewai:12,initi:[3,11],ins:2,insert:[9,10,12],insid:10,instal:[0,2,5,6],instanc:[1,2,3,4,6,9,10],instead:[0,3,5,9,10,12],instruct:[9,10],insult:4,intact:3,integr:10,intend:3,interact:[0,2,3],interest:[4,11,12],interfac:[1,3,5,6,9,10],interfer:[9,12],intern:10,internet:[0,2,11],intro:13,introduc:2,introduct:[2,7],invalid:[5,6],investig:4,invis:2,iot:[0,2],ipforward:3,iphon:2,ipsec:2,iptabl:3,ipv4:[3,12],ipv6:[3,12,13],isdualstack:3,isingressgatewai:3,isloc:3,isstat:3,issu:[4,7,9,10,11],iter:11,its:[0,2,3,4,5,6,10],itself:[2,3,6],job:2,join:[2,3,6,12],journalctl:[3,10,12],json:1,just:[0,2,3,5,10,11,12],jwt:[1,3],keep:1,keepal:3,kei:[2,3,9,10,12],kernel:[0,2,11],keynam:1,keyr:9,keyrequir:[],keyupd:1,keyvalu:[],kill:12,know:[10,11,12,13],known:[2,9],kube:10,kubectl:10,kubernet:[0,7,13],lack:[],lan:3,languag:4,laptop1:1,laptop:5,larg:2,larger:[],last:1,lastmodifi:1,latenc:2,later:2,latest:[2,3,5,10],layer:0,layout:2,lead:11,leadership:4,learn:[],least:[0,9,12],leav:[3,5,6,12],left:[10,12],less:[2,6],let:[0,11,13],letsencrypt:9,level:[2,4,10],light:10,lighter:[],lightweight:2,like:[0,2,3,6,9,10],likewis:[],limit:[7,10,11],line:2,link:[7,9,10],linod:9,linux:[2,3,6,7,9,11],linuxserv:10,list:[0,2,3,9,10],listen:10,listenport:1,littl:[2,11],load:[2,10,11],local:[2,3,6,9,10],localaddress:[1,3],localhost:1,localrang:3,locat:[0,2,3,10],log:[9,10,12],logic:5,login:6,look:11,lookup:2,lot:[2,11],lsb:9,lsb_releas:9,lxc:10,mac:[2,3],macaddress:[1,3],machin:[0,2,3,5,6,9,12],maco:12,made:[0,2,12],mai:[1,2,3,4,6,9,10,11,12],mail:4,main:[],mainfram:[],maintain:[4,11],make:[0,2,4,5,9,10,11,12],man:5,manag:[0,2,5,7,10,13],mandatori:[],mani:[0,2,10,11,13],manual:[2,3,6,9,10,12],map:10,master:[9,10],master_kei:10,masterkei:[1,10],match:[3,10],mean:[2,3,5,10],meant:10,media:4,medium:[],member:[4,13],memori:12,mesh:[0,5,11,12,13],meshclient:1,metal:2,method:[1,2,3,5,6],mgmt:1,microk8:[10,13],middl:5,might:[0,2,10],min:9,mind:[],minimum:12,mint:2,minu:10,minut:[9,10,12],miss:2,mix:3,mode:[2,7],model:[0,2],modif:10,modifi:[1,2,3,6,9,10,11],monet:11,mongo:10,mongo_admin:[],mongo_host:[],mongo_initdb_root_password:[],mongo_initdb_root_usernam:[],mongo_opt:[],mongo_pass:[],mongo_port:[],mongoadmin:[],mongoconn:[],mongodb:10,mongopass:[],mongovol:[],more:[0,1,2,5,6,7,9,10,11],most:[1,2,3,9,10,12],mostli:[2,3],mount:10,move:[6,9,11],much:[0,2],mullvad:11,mullvadvpn:11,multipl:[0,6,12],must:[1,2,3,5,6,9,10,11,12],mykei:[1,6],mynet:6,myserv:6,mysit:9,name:[1,2,3,5,6,10,12],nameserv:[2,3,10],namespac:10,nat:[2,5],nation:4,navig:[9,12],nebula:0,necessari:[2,3,4,10],need:[0,1,2,3,9,10,11,12],neighborhood:0,neither:2,net:[3,9],net_admin:10,netclient:[0,5,7],netclient_accesskei:3,netclient_accesstoken:3,netclient_address:3,netclient_addressipv6:3,netclient_api_serv:3,netclient_daemon:3,netclient_dn:3,netclient_endpoint:3,netclient_grpc_serv:3,netclient_interfac:3,netclient_ipforward:3,netclient_is_dualstack:3,netclient_is_loc:3,netclient_keepal:3,netclient_localaddress:3,netclient_localrang:3,netclient_macaddress:3,netclient_nam:3,netclient_network:3,netclient_o:3,netclient_password:3,netclient_port:3,netclient_postdown:3,netclient_postup:3,netclient_privatekei:3,netclient_publickei:3,netclient_roam:3,netclient_udp_holepunch:3,netconfig:[3,12],netid:1,netmak:[1,3,5,8,10,12],netmaker_base_domain:[9,10],netmaker_env:10,network:[0,5,6,7,9,10,11,12,13],network_mod:10,next:[3,6],nextcloud:13,nginx:[2,7,12],noclient:[],node:[3,5,7,10,12],nodn:10,non:[2,3,6,10],none:0,noonewillguessthi:1,nordvpn:11,note:[1,3,5,9,10,12],notifi:2,now:[0,5,6,9,10,11,12],nslookup:9,number:[2,6,11],oblig:4,obtain:[1,3],ode:3,off:[2,3,10,12],offens:4,offic:[0,13],offici:[1,4,9,12],offlin:4,omit:10,onc:[5,6,10],one:[2,3,5,6,9,10,12],onli:[1,2,3,5,6,11,12],onlin:4,onto:[],open:[2,4,9,11],openvpn:2,oper:[2,3,10],operatingsystem:3,opinion:9,opt:[],option:[2,3,7,10,11],oracl:9,order:[10,11,12],org:[9,10],orient:4,origin:10,osi:11,other:[0,2,3,4,5,6,10,11],otherwis:[0,3,4,12],our:[7,12],out:[0,2,6,9,10,11,13],outlin:[2,10],output:[3,6],outsid:[7,10],over:[0,2,10],overlai:[0,7],overlap:6,overrid:[3,10],overridden:[2,10],overview:[2,7,13],overwhelm:13,own:[2,9,10],pace:[],page:2,pai:11,paid:11,pair:[2,10],pane:6,part:[2,3,10],parti:12,partial:2,particip:4,particular:[2,3],pass:[2,3,10],password:[1,3,6],path:[1,10,11],patient:[],peer:[2,3,5,13],pend:[1,6],peopl:11,per:[9,11],perform:[1,2,3,10],period:2,perman:4,permiss:[4,9,12],permit:6,persistenkeepal:[],persistentkeepal:[3,5],person:4,perspect:[0,2],phase:[],phone:[3,5],physic:4,pick:[2,6],pictur:2,pidof:[],ping:6,pivpn:11,place:[3,9,10],plaintext:3,plan:[9,10],platform:[2,7],pleas:[3,9,10,11,12],pledg:7,plu:3,point:[2,9],polici:4,polit:4,popul:10,port:[2,3,6,9,10,12],posit:4,possibl:[2,7,9],post:[1,2,3,4],postchang:3,postdown:3,postup:3,practic:2,pre:10,preced:2,precend:10,prefer:[9,10,12],prepar:7,prereqisit:6,prerequisit:[2,6,7,10],present:[],previou:2,primari:10,prior:10,privaci:11,privat:[2,4,6,7,10,11,13],privatekei:[3,5],privileg:10,privkei:3,probabl:[0,11],problem:11,proce:[],process:[3,6,7,10],product:10,profession:4,project:[1,4,10,11],prompt:9,proof:0,properli:[3,12],properti:3,proto:9,protocol:10,provid:[0,2,3,9,10],proxi:[7,9],proxy_pass:10,proxy_pass_request_head:10,proxy_set_head:10,pubkei:3,publickei:[1,3,5],publicli:9,publish:[4,8],pull:[2,3,5,10],punch:[3,12],push:[3,5],put:1,pwd:[],python3:9,q9cog7c9qjnoxygvri:3,quarantin:3,question:12,quick:[6,10,12],quickli:[7,9,12],quickstart:12,race:[4,11],raft:[2,12],ram:9,rang:[3,5,6,9],rangestr:1,rapid:[],rapidli:[],raspian:2,raw:[3,6,9,10],reach:[0,2,3,5],reachabl:[2,3,5,10],reactj:2,read:10,readwriteanydatabas:[],reallysecret:1,reason:[2,4,10,11],reboot:12,reccommend:[],recent:[2,3,12],reciev:[1,2],recommend:[1,3,5,9,10,12],reconfigur:[2,3,12],record:[9,12],reduc:[],refactor:2,refer:[2,6,9,12],regard:[2,4],regardless:4,regist:[2,3],registr:3,regular:11,reiter:[],reject:4,rel:2,relai:[2,5,11],relat:[],releas:[2,3,9,10],reli:[0,3],relianc:[],religion:4,reload:9,remot:[0,3,10],remov:[1,2,4,6,9,10,12],removenetwork:1,repeat:6,repercuss:4,replac:[3,9,10],replace_master_kei:9,report:[2,4],repositori:[2,8],repres:4,represent:4,request:[1,2,10],requir:[1,2,3,6,9,10,12],resolut:[],resolv:[2,3,10],resolvectl:[3,10],resourc:[5,7],respect:4,respons:[2,7],rest:10,rest_backend:10,restart:[9,10,12],restbackend:10,restorecon:12,restrict:[10,11],result:4,retriev:[0,1,2,3,6,11],revers:[7,9],revert:3,review:4,rhel:2,right:[0,4,11],risk:12,rkxlgk2mg:5,rncjjbsaa3hzuhrk5hpyxm:3,road:11,roam:3,rogu:12,role:[],root:[9,10,12],rout:[0,2],route53:9,router:[2,12],rpumvsbpgq:5,rqlite:12,rule:[3,9],run:[0,1,2,3,5,6,7,9,10,11,12],runc:9,runnin:5,runtim:10,rwx:10,said:[2,11],same:[0,3,5,6,9,12],sampl:0,save:[6,9],scalabl:[],scan:5,scenario:6,schema:[],scope:7,screen:6,script:[2,3,6,10,12],second:6,secret:[1,3,6],secretkei:10,section:[3,10],secur:[0,1,2,3,7,9,12,13],securebetween:[],sed:[9,10],see:[1,2,3,6,9,10,12],select:[5,6,12,13],self:11,selinux:12,semanag:12,send:[2,3,10],sens:[2,11],sensibl:[0,2,6],separ:[2,4,13],seper:12,seri:9,serv:[2,9,10],server:[0,3,5,6,8,9,11],server_api_conn_str:10,server_api_host:10,server_grpc_conn_str:10,server_grpc_host:10,server_grpc_wg_address:[],server_grpc_wg_address_rang:[],server_grpc_wg_interfac:[],server_grpc_wg_keyrequir:[],server_grpc_wg_port:[],server_grpc_wg_privkei:[],server_grpc_wg_pubkei:[],server_grpc_wireguard:[],server_host:10,server_http_host:10,server_nam:10,server_public_ip:9,servic:[2,3,5,9,10,11,13],set:[1,2,3,4,6,9,10,13],setup:[0,2,7,9],sever:[2,10],sexual:4,sfl:[6,10],share:[9,10,12],ship:[],should:[0,1,2,3,5,6,7,9,10,11,12],show:[3,4,10,12],shown:5,side:8,sign:[2,3,6,9,12],signific:2,signigif:2,signup:[2,3,12],similar:[0,6,10,11],simpl:[2,3,6,10,12],simplest:[2,3],simpli:[2,3,5,6,9,12],simplifi:10,simultan:0,sinc:[],singl:[1,2,12],site:[0,2,7,10,12,13],situat:2,size:4,skynet:1,slim:[],slow:0,small:[2,6,11],smartgui:1,snap:9,social:4,solut:2,solv:2,some:[1,2,3,10,11,12,13],someon:11,someth:[5,6,9,10,11],somewher:6,soon:[7,12],sort:0,sourc:[2,3,7,8,9,11],space:4,spec:12,special:[2,3,10],specif:[2,3,4,10],specifi:[3,10],speed:[0,2],split:3,spoke:[0,2],sponsor:[],spread:0,sql:2,sql_conn:10,sqlconn:10,sqldata:10,sqlite:2,ssh:[6,9],ssl:[9,10],sspl:8,stabil:[],stabl:9,stack:[3,12,13],stai:3,stake:0,standard:[2,7],start:[10,12,13],startup:1,state:6,statement:7,statu:[3,10,12],step:[2,3,6,10],still:[0,10,11],stock:11,stop:10,storag:[9,10],storageclassnam:10,store:[2,10],string:[6,10],structur:[],stun:12,subdomain:[9,10],submit:6,subnet:2,subscript:9,subsequ:2,subspac:11,subspacecloud:11,substanti:0,success:2,sudo:[3,6,9,10,12],support:[2,9,10,12],sure:[9,11,12],surfshark:11,suse:2,swag:10,swagger:7,sys:10,sys_modul:10,system:[6,7],system_bus_socket:10,system_u:12,systemctl:[3,9,10,12],systemd:[3,6,10,11,12],tab:[6,12],tail:3,tailor:[],tailscal:0,take:[0,1,2,4,6,10,12],talk:[0,2],tcp:9,team:[4,11],technic:[0,7,11],technolog:2,tee:9,tell:[0,2,3,10],templat:10,temporari:4,temporarili:4,term:11,terrain:11,test:6,than:[2,6,10,11],thei:[0,2,4,10,11,12],them:[2,6,10,11,12],themselv:[2,12],therefor:12,thhe:[],thi:[0,1,2,3,4,5,6,7,8,9,10,11,12],thing:[0,2,11],think:[11,13],third:12,thmpvlcykonxi:3,those:[0,2,3,5,9],though:[],thought:11,thousand:0,threaten:4,three:[6,9],through:[2,10],ticket:11,time:[1,2,3,5,6,10,12,13],timer:2,timestamp:2,token:[3,6,10,12],tool:[0,3,9],top:[2,9,12],topic:13,topolog:2,tos:9,total:[],toward:4,traefik:10,traffic:[0,2,5,9,10,12],trailofbit:11,transact:2,transport:9,treat:[2,3],tricki:2,troll:4,troubleshooot:9,troubleshoot:[1,3,6,9],tunnel:[0,2],tunnelbear:11,turn:[2,3,10,12],tutori:7,two:[0,1,2,12],txt:9,type:1,typic:[0,2,5,6,10],ua2zjt8wn7ga:5,ubuntu:[2,9,10],udp:[3,9,10,12],udpholepunch:3,ufw:9,ultim:11,unabl:2,unaccept:4,unam:9,uncom:10,uncordon:1,under:[3,6,8,10,12],underlai:[0,13],underli:[],underscores_in_head:10,understand:[],uninstal:[7,12],uninstral:[],uniqu:[3,9],unix:[2,3,11],unless:[3,10],unmanag:2,unmesh:[],unnecessari:3,unregist:3,unregistr:3,unset:[3,10],unsupport:11,unsur:[5,6],unten:11,until:[3,6,12],unwelcom:4,unzip:10,updat:[1,2,6,9,11,12],upon:[2,3],ups:12,upstream_app:10,upstream_port:10,upstream_proto:10,urandom:9,url:10,usag:[3,7,10,13],use:[0,1,2,3,4,5,6,7,9,10,11,12,13],used:[1,2,3,5,6,10],useful:[],user:[2,3,6,12],useradminanydatabas:[],usernam:[1,6],uses:[0,1,2,5,6,10,12],using:[0,1,2,3,4,5,7,9,10,11,13],usr:[9,10],usual:3,util:3,v02:9,valid:[2,10],valu:[1,2,3,6,10,12],vari:[],variabl:[2,3],variou:[3,7,10],vehicl:11,verbos:10,veri:[0,2,3,11],verifi:2,versa:11,version:[2,4,8,9,10,12],via:[1,2,3,4,5,6,9,10,11,12,13],vice:11,view:[6,11,12],viewpoint:4,vim:[3,10],virtual:[0,3,5,7,9,11,13],visibl:[6,10],vm3ow4thatogiwnsla3thsl3894th:6,vne197vmradjodkb1zsuja:3,volum:[6,10,12],vpc:[0,11],vpn:[2,12,13],wai:[10,11,12],wait:9,want:[0,2,5,9,11,12],warn:10,web:[10,11],webserv:2,websit:2,week:[],weight:10,welcom:[4,11],well:[2,3,6,7,11,12],wgaddress6:3,wgaddress:3,wget:[9,10],what:[2,4,5,7,12],whatev:[3,10],when:[2,3,4,10,12],where:[2,5,6,7,10,13],wherev:0,whether:[0,3],which:[0,2,3,4,5,6,8,9,10,11,12],who:4,why:[2,3,7,12],wide:2,wider:2,wiki:4,wildcard:[9,10],window:[2,3,12],wipe:12,wiregard:[],wireguard:[0,3,5,6,7,9,10,11,12],wish:[5,10],within:[2,3,4],without:[1,2,3,4,6,7,11,12],won:11,work:[2,7,9,11],workstat:[3,6],world:[0,2],wors:2,worth:2,would:[0,3,5,6,9,10,11],write:[2,10],ws2:3,www:10,x86:3,yaml:[1,10],ydazgedrpuxmmrqul35wfjmhvrzr1rq0u:5,yes:3,yet:12,yml:[9,10,12],you:[0,1,2,3,5,6,7,9,10,12,13],your:[0,1,2,3,5,6,9,10,11,12,13],your_pass:1,your_password:1,your_secret_kei:1,yourwildcard:10,zeroti:0,zip:10,zrb9vfhk8a:11},titles:["About","API Reference","Architecture","Client Installation","Code of Conduct","External Clients","Getting Started","Welcome to the Netmaker Documentation","License","Quick Install","Advanced Server Installation","Support","Troubleshooting","Using Netmaker"],titleterms:{"case":0,Adding:[3,5],DNS:[3,5,10],Use:0,Using:13,Will:11,about:[0,7],access:1,advanc:10,agent:[],ani:11,annot:10,api:[1,7],architectur:[2,7],attribut:4,authent:1,basic:[],better:[],bug:[],build:[],call:1,cli:3,client:[2,3,5,7],code:[4,7],common:12,compat:[2,3,10],compon:2,compos:10,concept:2,conduct:[4,7],config:[3,10],configur:[3,5,10],contact:11,contribut:[],core:2,coredn:[2,10,12],creat:6,curl:1,daemon:3,daemonset:10,depend:9,deploi:6,descript:10,disabl:10,docker:[9,10],document:[1,7],doe:[0,11],domain:9,dual:[],enabl:[],enforc:4,enhanc:[],enterpris:11,exampl:1,ext:5,extern:[2,5,7,13],faq:11,featur:[],file:[1,3,10],firewal:9,fork:[],format:1,full:[],gatewai:5,get:6,grpc:10,guid:7,how:[0,11],http:10,ingress:5,instal:[3,7,9,10,11],introduct:[3,5,9],ipv6:[],issu:12,kei:[1,6],kubernet:10,licens:[7,8,11],like:11,limit:2,linux:10,local:[],log:3,make:3,manag:[1,3,6],manual:[],mesh:2,mode:[3,10],mongodb:[],netclient:[2,3,6,10,11,12],netmak:[0,2,6,7,9,11,13],network:[1,2,3],nginx:[9,10],node:[1,2,6],nordnpn:11,note:[],offer:11,onli:[],oper:11,option:5,our:4,paid:[],pledg:4,prepar:9,prereqisit:[],prerequisit:[3,9],privat:3,process:2,proxi:10,quick:[7,9],refer:[1,3,7,10],remov:3,request:[],respons:4,revers:10,rqlite:[2,10],scope:4,secur:10,server:[1,2,7,10,12],setup:[6,10],site:[],slim:[],smaller:[],sql:[],sspl:11,stack:[],standard:4,start:[6,7,9],submit:[],support:[7,11],system:[2,3,10,11],systemd:2,technic:2,templat:9,test:10,token:[],troubleshoot:[7,12],tutori:13,uninstal:[3,6],uninstral:[],updat:3,usag:1,user:1,variabl:10,video:13,view:3,vpn:11,welcom:7,what:0,why:11,wireguard:2,without:10,work:0,written:13,you:11}}) \ No newline at end of file diff --git a/docs/_build/html/server-installation.html b/docs/_build/html/server-installation.html index 68f03994..9ccf8895 100644 --- a/docs/_build/html/server-installation.html +++ b/docs/_build/html/server-installation.html @@ -548,6 +548,13 @@ Adding Clients to a Gateway + +
  • + + + Configuring DNS for Ext Clients (OPTIONAL) + +
  • diff --git a/docs/_build/html/troubleshoot.html b/docs/_build/html/troubleshoot.html index 5c498f9b..b8c4494d 100644 --- a/docs/_build/html/troubleshoot.html +++ b/docs/_build/html/troubleshoot.html @@ -490,6 +490,13 @@ Adding Clients to a Gateway + +
  • + + + Configuring DNS for Ext Clients (OPTIONAL) + +
  • diff --git a/docs/quick-start.rst b/docs/quick-start.rst index f22eb1eb..c741e01c 100644 --- a/docs/quick-start.rst +++ b/docs/quick-start.rst @@ -7,15 +7,15 @@ This quick start guide is an **opinionated** guide for getting up and running wi 0. Introduction ================== -We assume for this installation that you want all of the Netmaker features enabled, want your server to be secure, and want it to be accessible from anywhere. +We assume for this installation that you want all of the Netmaker features enabled, you want your server to be secure, and you want your server to be accessible from anywhere. -This instance will not be HA. However, it should comfortably handle around one hundred concurrent clients and support most use cases. +This instance will not be HA. However, it should comfortably handle around one hundred concurrent clients and support the most common use cases. -If you are deploying for a business or enterprise use case and this setup will not fit your needs, please contact info@gravitl.com, or check out the business subscription plans at gravitl.com/plans. +If you are deploying for a business or enterprise use case and this setup will not fit your needs, please contact info@gravitl.com, or check out the business subscription plans at https://gravitl.com/plans/business. By the end of this guide, you will have Netmaker installed on a public VM linked to your custom domain, secured behind an Nginx reverse proxy. -If this configuration does not fit your use case, see the :doc:`Advanced Installation <./server-installation>` docs. +For information about deploying more advanced configurations, see the :doc:`Advanced Installation <./server-installation>` docs. 1. Prerequisites @@ -47,11 +47,11 @@ Begin by installing the community version of Docker and docker-compose (there ar 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 + sudo apt-get -y 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 apt-get -y 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 @@ -64,7 +64,7 @@ Install Dependencies In addition to Docker, this installation requires WireGuard, Nginx, and Certbot. -``sudo apt install wireguard wireguard-tools nginx certbot python3-certbot-nginx net-tools`` +``sudo apt -y install wireguard wireguard-tools nginx certbot python3-certbot-nginx net-tools`` 3. Prepare VM @@ -109,6 +109,10 @@ Make sure firewall settings are appropriate for Netmaker. You need ports 53 and - allow 443/tcp from all - allow 53/udp and 53/tcp from all +In addition to the above ports, you will need to make sure that your cloud's firewall or security groups are opened for the range of ports that Netmaker's WireGuard interfaces consume. + +Netmaker will create one interface per network, starting from 51821. So, if you plan on having 5 networks, you will want to have at least 51821-51825 open (udp). + Prepare Nginx ----------------- @@ -122,10 +126,8 @@ Insert your domain in the configuration file and add to nginx: .. code-block:: - NETMAKER_BASE_DOMAIN= - sed -i 's/NETMAKER_BASE_DOMAIN/$NETMAKER_BASE_DOMAIN/g' netmaker-nginx-template.conf - sudo cp netmaker-nginx-template.conf /etc/nginx/sites-available/netmaker-nginx.conf - sudo ln -s /etc/nginx/sites-available/netmaker-nginx.conf /etc/nginx/sites-enabled/netmaker.nginx.conf + sed -i 's/NETMAKER_BASE_DOMAIN//g' netmaker-nginx-template.conf + sudo cp netmaker-nginx-template.conf /etc/nginx/conf.d/.conf nginx -t && nginx -s reload systemctl restart nginx @@ -135,23 +137,28 @@ Insert your domain in the configuration file and add to nginx: Prepare Templates ------------------ +**Note on COREDNS_IP:** Depending on your cloud provider, the public IP may not be bound directly to the VM on which you are running. In such cases, CoreDNS cannot bind to this IP, and you should use the IP of the default interface on your machine in place of COREDNS_IP. If the public IP **is** bound to the VM, you can simply use the same IP as SERVER_PUBLIC_IP. + .. code-block:: - wget https://raw.githubusercontent.com/gravitl/netmaker/develop/compose/docker-compose.quickstart.yml - sed -i 's/NETMAKER_BASE_DOMAIN/$NETMAKER_BASE_DOMAIN/g' docker-compose.quickstart.yml - sed -i 's/SERVER_PUBLIC_IP//g' docker-compose.quickstart.yml + wget https://raw.githubusercontent.com/gravitl/netmaker/develop/compose/docker-compose.yml + sed -i 's/NETMAKER_BASE_DOMAIN//g' docker-compose.yml + sed -i 's/SERVER_PUBLIC_IP//g' docker-compose.yml + sed -i 's/COREDNS_IP//g' docker-compose.yml Generate a unique master key and insert it: .. code-block:: tr -dc A-Za-z0-9 /g' docker-compose.quickstart.yml + sed -i 's/REPLACE_MASTER_KEY//g' docker-compose.yml + +You may want to save this key for future use with the API. Start Netmaker ---------------- -``sudo docker-compose -f docker-compose.quickstart.yml up -d`` +``sudo docker-compose -f docker-compose.yml up -d`` navigate to dashboard. to see your nginx instance. diff --git a/models/names.go b/models/names.go index 56b1086a..8d0b9d09 100644 --- a/models/names.go +++ b/models/names.go @@ -12,6 +12,7 @@ var NAMES = []string{ "iconic", "threat", "strike", + "boy", "vital", "unity", "audio", diff --git a/netclient/netclient.exe.manifest.xml b/netclient/netclient.exe.manifest.xml index e5894fd9..74f20b72 100644 --- a/netclient/netclient.exe.manifest.xml +++ b/netclient/netclient.exe.manifest.xml @@ -1,7 +1,7 @@ - + diff --git a/netmaker-arm b/netmaker-arm deleted file mode 100755 index 9a1cf73d..00000000 Binary files a/netmaker-arm and /dev/null differ diff --git a/netmaker-arm64 b/netmaker-arm64 deleted file mode 100755 index 46824528..00000000 Binary files a/netmaker-arm64 and /dev/null differ diff --git a/netmaker32 b/netmaker32 deleted file mode 100755 index f2af4c9a..00000000 Binary files a/netmaker32 and /dev/null differ