bind9

server$ sudo apt install bind9 使用中のDNSサーバの確認 クライアントに設定されているDNSサーバはnmcliコマンドで確認できる。 $ nmcli device show | grep DNS IP4.DNS[1]: 8.8.8.8 IP4.DNS[2]: 8.8.4.4 IP4.DNS[3]: 1.1.1.1 Command-line to list DNS servers used by my system - Ask Ubuntu 用語 BIND DNSサーバー構築 | CentOSサーバー構築入門 コンテンツサーバ(権威サーバ) あるゾーン(DNSにおける名前の管理単位)に関する名前解決要求(非再帰問い合わせ)を受け取り、自身が管理するゾーンならば名前解決結果を、委任情報を持つゾーンならば委任先の権威サーバ情報を応答する。 ルートゾーン(FQDN: .)を管理するルートサーバは、TLD(例えば jp.)の権威サーバへの委任情報を持つ。 ゾーン情報において、NSレコードにより指定される。 JPRS用語辞典|ルートゾーン JPRS用語辞典|権威サーバー(権威DNSサーバー) JPRS用語辞典|ネームサーバー(DNSサーバー) キャッシュサーバ(フルサービスリゾルバ) クライアントから名前解決要求(再帰問い合わせ)を受け取り、 コンテンツサーバへ反復的に名前解決要求(反復問い合わせ)を送ることで任意のドメイン名の名前解決を行う。 JPRS用語辞典|フルサービスリゾルバー(キャッシュDNSサーバー) 例えばhoge.example.jp.というドメインの名前解決要求を受け取ったとき、 ルートサーバ.への非再帰問い合わせによりjp.権威サーバへの委任情報を取得する。 jp.権威サーバへの非再帰問い合わせによりexample.jp.権威サーバへの委任情報を取得する。 example.jp.権威サーバへの非再帰問い合わせによりhoge.example.jp.のIPアドレスを取得する、のような流れで反復的に問い合わせを行うことでhoge.example.jp.の名前解決を行う。 ISPの提供するDNSサーバや会社などの組織内DNSサーバ、GoogleやCloudflareなどが提供するパブリックDNSがある。 ASCII.jp:DNSによる名前解決の仕組みを理解しよう (1/2) 回送 プロキシのように、受け取った名前解決要求を他のDNSサーバに送り、 応答を返す。 /etc/bind/named.conf.options 自身が管理していない情報(ゾーン、委任情報)に関する問い合わせについて、 他のDNSサーバ(フルサービスリゾルバ)に問い合わせを回送するように設定する。 「再帰問い合わせ」と「非再帰問い合わせ」の違いを教えてください:DNS Tips - @IT BIND DNSサーバー構築 | CentOSサーバー構築入門 フォワード(回送) : お父さんのためのDNS講座 デフォルト設定ファイル options { directory "/var/cache/bind"; // If there is a firewall between you and nameservers you want // to talk to, you may need to fix the firewall to allow multiple // ports to talk. See http://www.kb.cert.org/vuls/id/800113 // If your ISP provided one or more IP addresses for stable // nameservers, you probably want to use them as forwarders. // Uncomment the following block, and insert the addresses replacing // the all-0's placeholder. // forwarders { // 0.0.0.0; // }; //======================================================================== // If BIND logs error messages about the root key being expired, // you will need to update your keys. See https://www.isc.org/bind-keys //======================================================================== dnssec-validation auto; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; }; 変更点 forwarders { 8.8.8.8; 8.8.4.4; 1.1.1.1; }; 初歩から解説!BINDでシンプルDNSサーバー構築【構築編】| 開発者ブログ | 株式会社アイソルート 確認 server$ systemctl restart bind9.service client$ dig @192.168.x.x aoirint.com ... ;; ANSWER SECTION: aoirint.com. 3600 IN A 185.199.108.153 aoirint.com. 3600 IN A 185.199.111.153 aoirint.com. 3600 IN A 185.199.109.153 aoirint.com. 3600 IN A 185.199.110.153 ... digコマンドの使い方 - Qiita /etc/bind/named.conf.local DNSサーバの管理するゾーンの名前と対応する設定ファイル(ゾーンファイル)を設定する。 ...

2021年6月9日 · aoirint

npm startでError: ENOENT: no such file or directory ... .steampathで起動しないときの対処(React)

gitでブランチを切り替えて依存関係に差分が生じたとき、 node_modulesを修正していないときに起きる。 Error: ENOENT: no such file or directory, stat '/home/USER/.steampath' package-lock.jsonがあれば、 package-lock.jsonに基づいて依存関係をインストールするnpm ciを実行する。 実行時にnode_modulesディレクトリの中身は削除され、再構築される。 npm ci https://docs.npmjs.com/cli/v7/commands/npm-ci https://stackoverflow.com/questions/64962960/error-enoent-no-such-file-or-directory-stat-home-dylan-steampath package-lock.jsonがないときは、手動でnode_modulesを削除するのがよいかもしれない。 rm -rf node_modules/ npm install ほかに、プログラムに構文エラーがあるときに起きることがある。この場合、tscでエラー箇所を調べて直す。

2021年6月5日 · aoirint

npm startで構文エラーが消えないときの対処(React)

npm startで構文エラーが消えなくなることがある。 npm startでサーバを起動してコードの変更を監視したままの状態で、gitでブランチを切り替えたときキャッシュが正しく更新されないことが原因と思われる。 キャッシュを破棄するには、 npm start -- --reset-cache 依存関係が変わっているとエラーの原因になるので、モジュールもインストールし直すのがよい。 npm ci https://qiita.com/kt3k/items/758c4f3595ffd7e74f9f

2021年6月5日 · aoirint

Wiki.jsのセットアップ

https://js.wiki/get-started 無料とは思えない多機能っぷりなWikiインフラ「Wiki.js」レビュー、自前でホスト&外部サービスと連携可能 - GIGAZINE メモリ消費量 $ docker stats CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS e225b6b77209 wikijs_wiki_1 0.01% 127.6MiB / 7.681GiB 1.62% 13.1MB / 22.7MB 44.5MB / 1.45MB 11 13d085313406 wikijs_db_1 0.00% 44.57MiB / 7.681GiB 0.57% 6.64MB / 4.09MB 4.27MB / 102MB 8 初期状態で150-200MiB程度の消費量と思われる。 下記の環境をサーバとして、別端末からNATループバックによる接続を試したところ、ページ遷移時のロードや記事の保存に少しだけ時間がかかるように思われたが、Wikiサイト自体がなかなか開かない、というような重さではなかった。 CPU: Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz Memory: 8GB Storage: SSD OS: Ubuntu Desktop 18.04 docker-compose.yaml version: "3.9" services: db: image: postgres:13-alpine environment: POSTGRES_DB: wiki POSTGRES_PASSWORD: wikijsrocks POSTGRES_USER: wikijs restart: unless-stopped volumes: - db-data:/var/lib/postgresql/data wiki: image: requarks/wiki:2 depends_on: - db environment: DB_TYPE: postgres DB_HOST: db DB_PORT: 5432 DB_USER: wikijs DB_PASS: wikijsrocks DB_NAME: wiki restart: unless-stopped ports: - "127.0.0.1:8000:3000" volumes: db-data: https://hub.docker.com/r/requarks/wiki https://hub.docker.com/_/postgres 基本的に初期設定で問題ない。 ...

2021年6月1日 · aoirint

GitLab CI, DockerイメージをビルドしてContainer Registryにpushする

2023-05-18 追記:この記事には、改訂版(2023年版)があります。 リポジトリ構造 .gitlab-ci.yml app/ Dockerfile .gitlab-ci.yml stages: - build build: stage: build image: docker:20.10 services: - docker:dind rules: - if: $CI_COMMIT_BRANCH == "main" script: - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - docker build ./app -t $CI_REGISTRY_IMAGE:latest - docker push $CI_REGISTRY_IMAGE:latest

2021年5月29日 · aoirint

Atom Text Editor Setup

GitHubが開発するElectron製高機能テキストエディタAtomをセットアップする。 Installation macOS, Windows https://atom.io/ Ubuntu https://flight-manual.atom.io/getting-started/sections/installing-atom/#platform-linux wget -qO - https://packagecloud.io/AtomEditor/atom/gpgkey | sudo apt-key add - sudo sh -c 'echo "deb [arch=amd64] https://packagecloud.io/AtomEditor/atom/any/ any main" > /etc/apt/sources.list.d/atom.list' sudo apt update sudo apt install atom Key Binding Resolver (Ctrl + .) キーバインドが重複してどれが動いているかわからないときに便利。 Packages パッケージにより機能拡張ができる。 https://atom.io/packages/ GUIによる操作 Install: Edit > Preferences > Install Config: Edit > Preferences > Packages CLIによる一括インストール # Export Package List apm list -b -e -i --no-v > atom_packages.txt # Import Package List and Install apm install --packages-file atom_packages.txt おすすめパッケージリスト ...

2021年5月14日 · aoirint

Open JTalk in Docker

以前にもOpen JTalkを触っていたが、時間が経った&記事が雑だったのでDockerでまとめ直しておく。 Open JTalk - aoirint’s note Dockerfileを作る。 FROM ubuntu:bionic RUN apt-get update && \ apt-get install -y \ open-jtalk \ open-jtalk-mecab-naist-jdic \ hts-voice-nitech-jp-atr503-m001 WORKDIR /data ENTRYPOINT [ "open_jtalk" ] mecab-naist-jdicは形態素解析辞書。 hts-voiceはボイスファイルだが、別途htsvoiceを用意する場合は不要。 ビルドする。 docker build . -t aoirint/open_jtalk 実行する。 echo "こんにちは" > text.txt # テキストファイルの文字列から音声を生成 docker run --rm -v "$PWD:/data" aoirint/open_jtalk -x /var/lib/mecab/dic/open-jtalk/naist-jdic/ -m /usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice text.txt -ow output.wav # 標準入力の文字列から音声を生成 cat text.txt | docker run --rm -i -v "$PWD:/data" aoirint/open_jtalk -x /var/lib/mecab/dic/open-jtalk/naist-jdic/ -m /usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice -ow output.wav # 標準入力の文字列から音声を生成して、標準出力に書き出す(wav形式) cat text.txt | docker run --rm -i -v "$PWD:/data" aoirint/open_jtalk -x /var/lib/mecab/dic/open-jtalk/naist-jdic/ -m /usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice -ow /dev/stdout > output.wav ffmpegで出力されたwavファイルを見るとこのような形式。 ...

2021年4月4日 · aoirint

Ubuntu/Raspberry Pi/Debianの時刻ずれを解消する

$ sudo apt update Get:1 http://raspbian.raspberrypi.org/raspbian buster InRelease [15.0 kB] Get:2 http://archive.raspberrypi.org/debian buster InRelease [32.9 kB] Reading package lists... Done E: Release file for http://raspbian.raspberrypi.org/raspbian/dists/buster/InRelease is not valid yet (invalid for another 27d 15h 31min 39s). Updates for this repository will not be applied. E: Release file for http://archive.raspberrypi.org/debian/dists/buster/InRelease is not valid yet (invalid for another 26d 5h 35min 24s). Updates for this repository will not be applied. こういうエラーが出ることがある(ログはRaspberry Pi OS)。 sudo timedatectl set-timezone Asia/Tokyo sudo date --set 2021-04-04 sudo date --set 06:00 まずは手動でタイムゾーンと時刻を合わせる(だいたいでOK)。 ...

2021年4月4日 · aoirint

SSH Port Forwardingを使ってNAT間で通信するPort Proxy Server in Docker

SSHポートフォワーディング:踏み台による中継接続 SSHポートフォワーディングには、 ローカルポートフォワーディング、 リモートポートフォワーディングの2種類があります。 sshポートフォワーディング - Qiita ローカルポートフォワーディングでは、 SSHサーバ側から見えるネットワークポートを SSHクライアント側に転送することができます。 例えば、ファイアウォール(NAT)に守られたネットワーク(ネットワークA)内にあるWebサーバ(ホストX)に 外部ネットワーク(ネットワークB)にあるクライアント(ホストY)から接続したいとき、 踏み台となる、ネットワークBから接続可能なSSHサーバ(ホストZ)がネットワークA内にあれば、 ホストYがホストZにSSH接続することで、 ホストXのWebサーバのネットワークポートに、 ホストYの指定したポートから接続できるようになります (「ホスト」は「各ネットワークに接続した、NICに割り当てられたIPアドレス」に対応)。 [email protected]: $ ssh [email protected] -L "127.0.0.1:10080:hostX.networkA.example:80" [email protected]: $ wget http://127.0.0.1:10080/index.html I am "hostX.networkA.example:80". リモートポートフォワーディングでは、 SSHクライアント側から見えるネットワークポートを SSHサーバ側に転送することができます。 先の例でいうと、ホストXがネットワークBに接続していて、 ファイアウォール(NAT)によってネットワークAにあるホストZから接続できないとき、 ホストYがホストZにSSH接続することで、ホストZからホストXに接続できるようになります。 [email protected]: $ ssh [email protected] -R "127.0.0.1:10080:hostX.networkB.example:80" [email protected]: $ wget http://127.0.0.1:10080/index.html I am "hostX.networkB.example:80". この方法は、ネットワーク内のあるホストにSSH接続ができる環境さえあれば、 VPNや他のTCPプロキシをセットアップするより簡単に隠されたネットワークにアクセスすることができるように思います。 ポートプロキシサーバ:2種類のSSHポートフォワーディングの組み合わせ ここで、別の構成のネットワークについても考えてみます。 新しくネットワークCを導入して、 ホストXはNAT内のネットワークC(hostX.networkC.example)、 ホストYはNAT内のネットワークB(hostY.networkB.example)、 ホストZはネットワークB、Cからともに接続可能なネットワークA(hostZ.networkA.example) という構成を考えてみます。 この構成で、ホストYからホストXに接続可能な環境を作るには、次のような手順が考えられます。 ホストXからホストZにSSH接続し、リモートポートフォワーディングによってホストZ上の"ポートQ"をホストX上の"ポートP"に転送する ホストYからホストZにSSH接続し、ローカルポートフォワーディングによってホストY上の"ポートR"をホストZ上の"ポートQ"に転送する これにより、ホストYは、自身のポートRを使って、ホストXのポートPに接続することができます。 もしホストXに物理的にアクセスできない環境でも、 あらかじめホストXをホストZに常時接続するように設定しておけば、 その接続(ポートQからポートPへの転送)が生きている限り、好きなタイミングでホストYからホストXに接続(ポートRからポートQへの転送、すなわちポートRからポートPへの転送)することができます。 SSH Port Forwardingを使ったPort Proxy Server in Docker 前項のポートプロキシサーバの問題として、次の3つを考えました。 ...

2021年3月21日 · aoirint

さくらのVPS 10周年記念キャンペーン 第2弾 スタートアップスクリプトを自作して公開してみませんか! キャンペーン

GitHub Self Hosted RunnerをさくらのVPS上に構築するスタートアップスクリプトを投稿しました。 https://secure.sakura.ad.jp/vps-beta/startupscripts/e3ad9634-6cda-4eeb-8a7a-6f68efedcc58 https://github.com/aoirint/sakura_vps_github_runner https://docs.github.com/en/free-pro-team@latest/actions/hosting-your-own-runners さくらインターネットさんのさくらのVPSは2010年9月にサービス開始し、2020年9月で10周年だそうで、 記念キャンペーンをやっています(応募したのは第2弾ですが、第3弾もやっていました)。 https://vps.sakura.ad.jp/news/vps-10th-campaign2/ さくらのVPS 10周年キャンペーン 第2弾 開催のお知らせ🎉 https://vps.sakura.ad.jp/news/vps-10th-campaign2/ — さくらのVPS (@sakura_vps) December 1, 2020 Twitterでこの10周年記念キャンペーンを見かけて、 ニンテンドープリペイドカードが当たる、ということで さくらのVPSの費用回収をするために Switchのゲームを買うために応募してみました(応募者が少なかったらしく当選した)。 — aoirint🎐 (@aoirint) March 20, 2021 (このステッカーほしい) スタートアップスクリプトは、新しい空っぽのVPSを契約した(単に契約済みの空っぽのVPSでも可)ときに初期設定をするためのシェルスクリプトです(初回起動時に自動実行してくれる)。環境変数みたいなものも注入することができます(スクリプトごとのプリセットに加えて、実行時に上書きもできる)。 本当は完全にSSHを使わなくていいように、自動アップデートやデータバックアップ、異常時のメール/Slack送信(おそらく異常時はバックアップからデータを復帰させてコンテナみたいにゼロベースで作り直すのがいい、と思うのだが、それならはじめからコンテナオーケストレーションサービスという選択肢があるのか..?)みたいなところまでスタートアップスクリプトに組み込めるとよいのですが、なかなかむずかしいので今回はそこまでやっていません。 さくらのVPSのスタートアップスクリプトには、公式が配布しているものに加えて、おそらくほとんど中の人なんじゃないかと思うがユーザ間での共有機能があります。 ゲームサーバ(7 Days to Die、ARK、Minecraft、Factorio、Terrariaなど)やアプリケーションサーバ(Mastodon、GitLab Foss、Nextcloud、Mattermostなど)、SoftEther VPNなんかの有名どころはそろっているように思います。 余計なアプリケーションも立ちませんし、うまくすれば完全にGUIで操作できるので、ゲーム配信者(サーバエンジニア系でなくて、事務所にも所属してない)なんかにも有用なんじゃないかな(参加型配信とか、IP公開しなくてよくなるので)と思います(国内サーバだし)。 GUI化というのはVPSのコンソールだけでなくて、Basic認証 over HTTPSとか付けてゲームサーバ制御用のWebアプリを添付してもおもしろいかもしれません(固定のサブドメインはもらえるので)。 サーバを借りるときにつらいところはメモリが少ないこと、ストレージが少ないことだと思っています(ラックサーバ構築したことないのでそれとの比較は知らないけど)が、単アプリケーションの動作なら大丈夫な気がします。 ストレージが少ないといっても、画像・動画サーバみたいな使い方をしなければ大丈夫な容量はある気がします(最安で25GB、次点で50GB)。 それはAWS S3でやったほうがいいんでしょうね。 問題は年7000-円と費用が小さくはないことですかね。 配信を含む業務に関連した目的で、個人事業主なら経費にはなると思いますが(税金)。 競合にAWS Lightsailがありますが、費用はLightsailの方が安い気がします(料金体系がよくわかってないですが。サーバ起動自体は定額でも、通信量で追加課金とかされるんでしょうか? それこそS3があるので、アプリケーションサーバの場合ちゃんと組んでいて、小-中規模ならそんなに通信しないとは思いますが)。 趣味用途の人は「お客様満足度調査」に回答するとQUOカードの抽選があったりするのでそのへんで回収を..。 料金体系:https://vps.sakura.ad.jp/specification/ さくらお客様満足度調査、抽選当たった — aoirint🎐 (@aoirint) October 13, 2020 お客様満足度調査実施のお知らせ | さくらインターネット (2020/07)

2021年3月20日 · aoirint