とローカルホームラボDNSのセットアップ


私のホームラボ環境でマルチパスとLXDを使用して構築されたFossアプリケーション、コンテナ(DockerとLXD)、および仮想マシンの数を増やしたので、私はアプリケーションとコンテナが動いている異なるポートを覚えているという困難を理解し始めました.この問題に対処する解決策の1つは、IPアドレスとポート番号を覚えていなければならないように、DNS解決に基づく呼び出しをリダイレクトするリバースプロキシでローカルおよび外部アドレスを解決するために働くローカルネットワークのためのドメインネームシステムを持つことでした.
以下のコマンドはコンテナが動いているDockerコンテナとポートを記載します、要件はホームセットアップのためにドメインを作成することですhomelab.net そして、ドメインURLを使用してホストしているコンテナ化されたアプリケーションにアクセスしてください.appsmith.homelab.net excalidraw.homelab.net typesense.homelab.net nocodb.homelab.net など

# get container names and port numbers
docker container ls --format "table {{.ID}}\t{{.Names}}\t{{.Ports}}" -a


CONTAINER ID   NAMES                        PORTS
cbb2ac402270   appsmith                     0.0.0.0:9001->9001/tcp, 0.0.0.0:70->80/tcp, 0.0.0.0:444->443/tcp
c9875323b989   typesense_typesense-1_1      0.0.0.0:8108->8108/tcp
c453288c8496   excalidraw                   0.0.0.0:3001->80/tcp
5be5d33f1f50   k8s-control-plane            127.0.0.1:34589->6443/tcp
4140d2fbf7d5   mysql_nocodb_1               0.0.0.0:8082->8080/tcp
e7310461bee9   mysql_root_db_1              3306/tcp, 33060/tcp
9b56c33d45d5   meilisearch_ms_1             0.0.0.0:7700->7700/tcp
9ac6a0e16b0e   mongo2                       0.0.0.0:20002->27017/tcp
2aaf01d2233f   mongo1                       0.0.0.0:20001->27017/tcp
860b521f97dc   mongo3                       0.0.0.0:20003->27017/tcp
d8ad1ec3cab8   rethinkdb_rethinkdb_1        0.0.0.0:28015->28015/tcp, 0.0.0.0:29015->29015/tcp, 0.0.0.0:8081->8080/tcp

上記のようにローカルホームネットワーク上で動作するコンテナとアプリケーションはパブリックドメイン名を持っていません.オプションはDNSASASQとNGinxを逆プロキシとしてDNSサーバをセットアップするのを探すことでした.コンテナはローカルDNSサーバの唯一のユースケースのシナリオではないかもしれません、デバイスの向こう側のローカルファイル共有にアクセスするのが好きである他の多くがあるかもしれません;モバイルデバイスからのアプリケーションへのアクセス
dnsmasqとnginxを実装する前にコンテナアプリケーションにアクセスするオプションappsmith - http://localhost:70 excalidraw - http://localhost:80 typesense - http://localhost:8080
dnsmasqとnginxの実装後appsmith - http://appsmith.homelab.net excalidraw - http://excalidraw.homelab.net typesense - http://typesense.homelab.net
dnsmasqとnginxの実装ステップを始めましょう.以下のステップは、Ubuntu 20.04で行われます- Debianベースのディストリビューション.
DNSASASQのインストールを開始する前に、システムの解決を無効にします.
  sudo systemctl stop systemd-resolved
  sudo systemctl disable systemd-resolved

ステップ1 : dnsutilsをインストールする


  sudo apt update && sudo apt install dnsmasq && sudo apt install dnsutils

ステップ2 : dnsmasq設定ファイルを作成する


    dnsmasq_conf="no-dhcp-interface=enp2s0f0
    bogus-priv
    domain=homelab.net
    expand-hosts
    local=/homelab.net/
    domain-needed
    no-resolv
    no-poll
    server=8.8.8.8
    server=8.8.4.4"
    sudo echo -e "$dnsmasq_conf" > /etc/dnsmasq.d/home-lab.net 
   sudo systemctl restart dnsmasq

ステップ3 :コンテナDNSレコードをファイルに追加します。etc / hosts .ホストファイルのレコードはdnsmasq


  sudo nano /etc/hosts  
  # add the below records to the hosts file
  #Container DNS records
  # appsmith
  192.168.20.113 appsmith
  # excalidraw
  192.168.20.113 excalidraw
  # typesense
  192.168.20.113 typesense

ステップ4 : dnsmasqサービスの再起動


sudo systemctl restart dnsmasq.service

ステップ5 : nginxをインストールする


  sudo apt update && sudo apt install nginx

ステップ6 :リバースプロキシ機能を有効にするには、新しいnginx設定ファイルを作成します


  sudo nano /etc/nginx/sites-enabled/homelab.conf
  server {
          listen 80;
          listen [::]:80;
          server_name typesense.homelab.net;
          location / {
                   proxy_bind 192.168.20.113;
                   proxy_pass http://localhost:3000;
          }
  }

  server {
          listen 80;
          listen [::]:80;
          server_name appsmith.homelab.net;
          location / {
                  proxy_bind 192.168.20.113;
                  proxy_pass http://localhost:70;
          }

  }

  server {
          listen 80;
          listen [::]:80;
          server_name excalidraw.homelab.net;
          location / {
                  proxy_bind 192.168.20.113;
                  proxy_pass http://localhost:3001;
          }

  }
The proxy_pass 引き数は全ての着信クライアントリクエストをnocodbに転送する.ホーセルラボそれぞれのアプリケーションに-ネット.IPアドレスとポート番号を簡単に変更することができます.

ステップ7リロード


  sudo systemctl reload nginx