--- 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 20240104
**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 MQ_ADMIN_PASSWORD Du behöver också filen `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. Som näst sista filen du behöver är `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 "${@}" Till sist `mosquitto.conf` per_listener_settings false listener 8883 protocol websockets allow_anonymous false listener 1883 protocol websockets allow_anonymous false plugin /usr/lib/mosquitto_dynamic_security.so plugin_opt_config_file /mosquitto/data/dynamic-security.json 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 publik IP. Modifiera `docker-compose.yaml` på följande sätt 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" + - "8081:8081" 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" + ports: + - "8080:80" - 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 + ports: + - "8883:8883" volumes: caddy_data: {} caddy_conf: {} sqldata: {} dnsconfig: {} Filen `Caddyfile` kan du ta bort