sa6anw.se/docs/Services/netmaker.md

6.3 KiB

title
Netmaker
                __    __    ________    ________    __       __     ______     __    __    ________    _______  
               |\_\  |\_\  |\ ______\  |\ ______\  |\_\     /\_\   /\ ____\   |  \  /  \  |\ ______\  |\ _____\ 
               | XX\ | XX  | XXXXXXXX   \XXXXXXXX  | XX\   /  XX  |  XXXXXX\  | XX /  XX  | XXXXXXXX  | XXXXXXX\
               | XXX\| XX  | XX__         | XX     | XXX\ /  XXX  | XX__| XX  | XX/  XX   | XX__      | XX__| XX
               | XXXX\ XX  | XX _\        | XX     | XXXX\  XXXX  | XX __\XX  | XX  XX    | XX _\     | XX __\XX
               | XX\XX XX  | XXXXX        | XX     | XX\XX XX XX  | XXXXXXXX  | XXXXX\    | XXXXX     | XXXXXXX\
               | XX \XXXX  | XX_____      | XX     | XX \XXX| XX  | XX  | XX  | XX \XX\   | XX_____   | XX  | XX
               | XX  \XXX  | XX ____\     | XX     | XX  \X | XX  | XX  | XX  | XX  \XX\  | XX ____\  | XX  | XX
                \XX   \XX   \XXXXXXXX      \XX      \XX      \XX   \XX   \XX   \XX   \XX   \XXXXXXXX   \XX   \XX

                                                                                                                      SA6ANW 

Netmaker
Wireguard VPN & Software Defined Networking

Med Netmaker Kan jag styra kommunikationen precis som jag vill. Det påminner om Tailscale men man har möjlighet att hosta det själv. Jag kör version 0.17.0.

För att köra netnetmaker Skapa en docker-compose.yaml med följande innehåll

version: "3.4"

services:
netmaker:
    container_name: netmaker
    image: gravitl/netmaker:v0.17.0
    cap_add: 
    - NET_ADMIN
    - NET_RAW
    - SYS_MODULE
    sysctls:
    - net.ipv4.ip_forward=1
    - net.ipv4.conf.all.src_valid_mark=1
    - net.ipv6.conf.all.disable_ipv6=0
    - net.ipv6.conf.all.forwarding=1
    restart: always
    volumes:
    - dnsconfig:/root/config/dnsconfig
    - sqldata:/root/data
    - mosquitto_data:/etc/netmaker
    environment:
    SERVER_NAME: "broker.netmaker.sa6anw.se"
    SERVER_HOST: "81.170.219.67"
    SERVER_API_CONN_STRING: "api.netmaker.sa6anw.se:443"
    COREDNS_ADDR: "81.170.219.67"
    DNS_MODE: "on"
    SERVER_HTTP_HOST: "api.netmaker.sa6anw.se"
    API_PORT: "8081"
    CLIENT_MODE: "on"
    MASTER_KEY: "Masterkey"
    CORS_ALLOWED_ORIGIN: "*"
    DISPLAY_KEYS: "on"
    DATABASE: "sqlite"
    NODE_ID: "netmaker-server-1"
    MQ_HOST: "mq"
    MQ_PORT: "443"
    MQ_SERVER_PORT: "1883"
    HOST_NETWORK: "off"
    VERBOSITY: "1"
    MANAGE_IPTABLES: "on"
    PORT_FORWARD_SERVICES: "dns"
    MQ_ADMIN_PASSWORD: "AdminPassword"
    ports:
    - "51821-51830:51821-51830/udp"
netmaker-ui:
    container_name: netmaker-ui
    image: gravitl/netmaker-ui:v0.17.0
    depends_on:
    - netmaker
    links:
    - "netmaker:api"
    restart: always
    environment:
    BACKEND_URL: "https://api.netmaker.sa6anw.se"
  caddy:
    image: caddy:2.6.2
    container_name: caddy
    restart: unless-stopped
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - caddy_data:/data
      - caddy_conf:/config
    ports:
      - "80:80"
      - "443:443"
coredns:
    container_name: coredns
    image: coredns/coredns
    command: -conf /root/dnsconfig/Corefile
    depends_on:
    - netmaker
    restart: always
    volumes:
    - dnsconfig:/root/dnsconfig
mq:
    container_name: mq
    image: eclipse-mosquitto:2.0.15-openssl
    depends_on:
    - netmaker
    restart: unless-stopped
    command: ["/mosquitto/config/wait.sh"]
    environment:
    NETMAKER_SERVER_HOST: "https://api.netmaker.sa6anw.se"
    volumes:
    - ./mosquitto.conf:/mosquitto/config/mosquitto.conf
    - ./wait.sh:/mosquitto/config/wait.sh
    - mosquitto_data:/mosquitto/data
    - mosquitto_logs:/mosquitto/log
volumes:
caddy_data: {}
caddy_conf: {}
sqldata: {}
dnsconfig: {}
mosquitto_data: {}
mosquitto_logs: {}
  • Byt till din egen domän
  • Sätt lång MASTER_KEY och AdminPassword

Du behöver också dilen Caddyfile i samma folder med följande innehåll

{
        # LetsEncrypt account
        email sa6anw@gmail.com
}

# Dashboard
https://dashboard.netmaker.sa6anw.se {
        # Apply basic security headers
        header {
                # Enable cross origin access to *.netmaker.sa6anw.se
                Access-Control-Allow-Origin *.netmaker.sa6anw.se
                # Enable HTTP Strict Transport Security (HSTS)
                Strict-Transport-Security "max-age=31536000;"
                # Enable cross-site filter (XSS) and tell browser to block detected attacks
                X-XSS-Protection "1; mode=block"
                # Disallow the site to be rendered within a frame on a foreign domain (clickjacking protection)
                X-Frame-Options "SAMEORIGIN"
                # Prevent search engines from indexing
                X-Robots-Tag "none"
                # Remove the server name
                -Server
        }

        reverse_proxy http://netmaker-ui
}

# API
https://api.netmaker.sa6anw.se {
        reverse_proxy http://netmaker:8081
}

# MQ
wss://broker.netmaker.sa6anw.se {
        reverse_proxy ws://mq:8883
}

Samma sak här, byt till din domän och mailadress.

Sista filen du behöver ät wait.sh

#!/bin/ash

wait_for_netmaker() {
echo "SERVER: ${NETMAKER_SERVER_HOST}"
until curl --output /dev/null --silent --fail --head \
    --location "${NETMAKER_SERVER_HOST}/api/server/health"; do
    echo "Waiting for netmaker server to startup"
    sleep 1
done
}

main(){
# wait for netmaker to startup
apk add curl
wait_for_netmaker
echo "Starting MQ..."
# Run the main container command.
/docker-entrypoint.sh
/usr/sbin/mosquitto -c /mosquitto/config/mosquitto.conf

}

main "${@}"

Sen är det bara att köra docker-compose up -d

Modifiering
Jag har valt att bryta ut caddy så att jag kan köra fler tjänster med bara en IP.

Det kommer mera!!!