NixOSでPrometheusとGrafanaによる監視基盤の構築

前回の記事では新規に作成したNixOSにnginxをインストールしWebサーバの基本的な構築を行い、主要な3つのWebブラウザからWebサーバにアクセスしてテスト用のサイトを表示させて動作確認を行なった。
今回は、前回の記事にて構築したnginxと同じ機器にてPrometheusというシステム監視ツールとGrafanaというダッシュボードツールを導入し、監視基盤の構築とGrafanaの初期設定を行った。
過去の記事について NixOSネタの記事の一覧は、当記事内最下部の「NixOS関連の記事」欄内を参照。
 


監視環境について
今回はPrometheusとGrafanaを利用する。
Prometheusはシステム監視およびアラートツールキットで、オープンソースのソフトウェアとして公開されている。Prometheusは監視対象の情報を時系列データ(メトリクス)として収集・保存・表示するために使用され、サーバ等の状態を監視する。

Prometheusは監視対象のサーバにエクスポータ(メトリックスをPrometheusに投げる為のHTTPエンドポイント)を設定し、定期的にメトリックスのデータを取得する。取得したメトリックスのデータはPrometheusの内部にある独自のデータベースに保存される為、MySQLやPostgreSQL等のような外部のデータベースを別途導入する必要が無い。
PrometheusにはUIが実装されておりWebベースでメトリックスを確認出来るが、Grafana等のツールを別途導入しグラフ表示等でより見やすいUIにする事が出来る。また、アラート機能も実装されており、アラートのルールを定義する事で条件を満たしたらメールやSlackで通知する事が出来る。

Grafanaは監視システムと一緒に導入されるダッシュボードツールで、オープンソースのソフトウェアとして公開されている。GrafanaはPrometheus等のような監視ツールと一緒に導入されて利用される。
 


当方の環境
ホスト機:macOS 15.4.1 / MacBook Pro 2020 / RAM: 16GB / CPU: Intel Core i5 2.0GHz
仮想化環境:Oracle VirtualBox 7.1.6 r167084
ゲストOS:NixOS 24.11 (Vicuna)
監視ツール:Prometheus 2.55.0 / Grafana 11.3.6
監視対象:nginx 1.26.3
ゴールデンウィークも終わりいよいよ5月中旬に差し掛かる。そろそろNixOSの次のバージョン25.05がリリースされるだろう。
 


今回の要件
前回の記事にて導入したWebサーバnginxを監視する。
nginxが導入されているNixOSにPrometheusとGrafanaをインストールし、クライアント端末のWebブラウザFirefoxからPrometheusにアクセス出来る事とNixOSのステータスが表示される事を確認する。
NixOSのインストールおよび初期設定、nginxの導入の手順は以下の内容を実施した。
https://debslink.hatenadiary.jp/entry/20250311/1741649715 NixOSの沼に片足を突っ込んだ
https://debslink.hatenadiary.jp/entry/20250320/1742459549 NixOSの環境構築(今回はneofetch未導入)
https://debslink.hatenadiary.jp/entry/20250503/1746235454 NixOSでnginxによるWebサーバの構築
 
ざっくりとした要件は以下のとおり。
・前回の記事にて導入したnginxの環境を使用する。
・nginxが動作しているNixOSをローカル環境で監視する。
・nginxの設定とPrometheusの設定とGrafanaの設定を一部連携させる為、PrometheusとGrafanaの設定は/etc/nixos/nginx.nixファイルにまとめて記載する。
 
設定に取り掛かる前に、今の動作環境を出力。

[testsv99:~ ]# uname -a
Linux testsv99 6.6.88 #1-NixOS SMP PREEMPT_DYNAMIC Fri Apr 25 08:45:59 UTC 2025 x86_64 GNU/Linux
[testsv99:~ ]# 
[testsv99:~ ]# zsh --version
zsh 5.9 (x86_64-pc-linux-gnu)
[testsv99:~ ]# 

 


PrometheusとGrafanaの導入設定

1. PrometheusとGrafanaのインストール
nginxがインストール済みの環境にて、PrometheusとGrafanaの導入設定に進む。
/etc/nixos/configuration.nixファイルの下の方の以下の場所に、PrometheusとGrafanaのパッケージのインストールの設定を追記する。
今回は/etc/nixos/nginx.nixファイルにPrometheusとGrafanaの設定を追記する為、/etc/nixos/configuration.nixファイルの上の方に有るimportsの項目にPrometheusとGrafanaの設定ファイル名を追記しない。

[testsv99:~ ]# sudo nvim /etc/nixos/configuration.nix 
:
省略
:
  # List packages installed in system profile. To search, run:
  # $ nix search wget
  environment.systemPackages = with pkgs; [
  #  vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
    zsh
    neovim
    chrony
    openssl
    nginx
    cacert
    prometheus  ◻️◻️追記
    grafana  ◻️◻️追記
  ];
:
省略
:

 
NixOSでファイアウォール設定を使用している場合、/etc/nixos/configuration.nixファイル内にポートを追記する。
ファイアウォール設定を有効にしていない環境では以下の設定が無くてもWebサーバおよびPrometheusやGrafanaにアクセスが可能である。
・GrafanaのGUIアクセス用:TCP/3000
・PrometheusのGUIアクセス用:TCP/3020
・Prometheusのエクスポータ用:TCP/3021

:
省略
:
  # Open ports in the firewall.
  # networking.firewall.allowedTCPPorts = [ ... ];
  # networking.firewall.allowedUDPPorts = [ ... ];
  # Or disable the firewall altogether.
  networking.firewall.enable = true;
  networking.firewall.allowPing = true;
  networking.firewall.interfaces."enp0s3".allowedTCPPorts = [ 22 80 443 3000 3020 3021 ]; ◻️◻️3000、3020、3021を追記
  networking.firewall.interfaces."enp0s3".allowedUDPPorts = [ 123 ];
:
省略
:

 
nginxとPrometheusとGrafanaとの間で互いに設定値を読み取る設定がある事から、当環境では/etc/nixos/nginx.nixファイルの中にPrometheusとGrafanaの設定を記載した。
追記したlocations設定のパスは、Grafanaの各ファイルが保存されている/var/lib/grafanaを指定。
nginxのproxyPassの設定は、Grafanaで設定したaddrとportの値を流用する内容となっている。
Grafanaのdatasourcesの設定は、Prometheusで設定したlistenAddress(当環境では使用せず)とportの設定を流用する内容となっている。

※以下の設定例は行数多めにつき、Webブラウザによって全て表示しきれない事があります。その場合は黒塗りの箇所をスクロールする事で終わりまで表示する事が出来ます。

[testsv99:~ ]# sudo nvim /etc/nixos/nginx.nix 
{ config, pkgs, lib, ... }:
{
  services.nginx = {
    enable = true;
    recommendedTlsSettings = true;
    virtualHosts."testsv99.local" = {
       root = "/var/www/test";
       locations."/" = {
         return = "200 '<html><body><font size=15><center>NixOS and nginx</center></font></body></html>'";
	 extraConfig = ''
	   default_type text/html;
	   '';
	 };
       locations."/var/lib/grafana/" = { ◻️◻️この行を含め、以下5行を追記
         proxyPass = "http://${toString config.services.grafana.addr}:${toString config.services.grafana.port}";
	 proxyWebsockets = true;
	 recommendedProxySettings = true;
	 };
       addSSL = true;
       sslCertificate = "/var/www/crt.pem";
       sslCertificateKey = "/var/www/privkey.pem";
       extraConfig = ''
         ssl_password_file "/var/www/password";
	 ssl_prefer_server_ciphers on;
	 ssl_stapling off;
	 ssl_stapling_verify off;
	 '';
       };
    };
  services.grafana = {  ◻️◻️この行を含め、以下18行のGrafanaの設定を追記
    enable = true;
    domain = "testsv99.local";
    port = 3000;
    addr = "192.168.3.247";
    provision = {
      enable = true;
      dashboards.settings.providers = [{
        name = "my dashboards";
        options.path = "/etc/grafana-dashboards";
      }];
      datasources.settings.datasources = [{
        name = "Prometheus";
        type = "Prometheus";
        url = "http://${config.services.prometheus.listenAddress}:${toString config.services.prometheus.port}";
      }];
    };
  };
  services.prometheus = { ◻️◻️この行を含め、以下20行のPrometheusの設定を追記
    port = 3020;
    enable = true;
    exporters = {
      node = {
        port = 3021;
        enabledCollectors = [ "systemd" ];
        enable = true;
      };
    };
    globalConfig.scrape_interval = "10s"; 
    scrapeConfigs = [{
      job_name = "nodes";
      static_configs = [{
        targets = [
          "localhost:${toString config.services.prometheus.exporters.node.port}"
        ];
      }];
    }];
  };
}
[testsv99:~ ]# 

 
設定を終えたら、sudo nixos-rebuild switchコマンドを叩きnginxの再ビルドおよびPrometheusとGrafanaのビルドを実行する。

[testsv99:~ ]# sudo nixos-rebuild switch
building Nix...
building the system configuration...
trace: Obsolete option `services.grafana.addr' is used. It was renamed to `services.grafana.settings.server.http_addr'.
trace: Obsolete option `services.grafana.port' is used. It was renamed to `services.grafana.settings.server.http_port'.
evaluation warning: The option `services.grafana.domain' defined in `/etc/nixos/nginx.nix' has been renamed to `services.grafana.settings.server.domain'.
:
省略
:
setting up /etc...
reloading user units for hechtia...
restarting sysinit-reactivation.target
reloading the following units: dbus.service
starting the following units: logrotate-checkconf.service, systemd-modules-load.service, systemd-tmpfiles-resetup.service
the following new units were started: grafana.service, nginx.service, prometheus-node-exporter.service, prometheus.service
[testsv99:~ ]#

 
ビルドはエラーを吐かずに完了。
念の為、nginxとPrometheusとGrafanaのサービスが正常に立ち上がっているか、systemctlコマンドで確認する。
sudo systemctl status nginx.serviceコマンドを叩き、nginxの動作を確認。Active: active (running)になっている事からnginxは正常に起動している事を確認出来た。

[testsv99:~ ]# sudo systemctl status nginx.service
● nginx.service - Nginx Web Server
     Loaded: loaded (/etc/systemd/system/nginx.service; enabled; preset: ignored)
     Active: active (running) since Wed 2025-05-07 20:45:04 JST; 36s ago
 Invocation: bd19384351cf4aaa862c80e070f10233
    Process: 6001 ExecStartPre=/nix/store/lvm1rpcfgm2d0izfbz2zyjqicr64kpdl-unit-script-nginx-pre-start/bin/nginx-pre-start (code=exited, status=0/SUCCESS)
   Main PID: 6003 (nginx)
         IP: 0B in, 0B out
         IO: 0B read, 0B written
      Tasks: 2 (limit: 4662)
     Memory: 2.6M (peak: 3.7M)
        CPU: 95ms
     CGroup: /system.slice/nginx.service
             ├─6003 "nginx: master process /nix/store/msswcm5a2icdji217x4r2wx3rkjbcx60-nginx-1.26.3/bin/nginx -c /nix/store/fxsy5xni9d6gdq4dmisjqg5z79q6dp9y-nginx.conf"
             └─6015 "nginx: worker process"

May 07 20:45:04 testsv99 systemd[1]: Starting Nginx Web Server...
May 07 20:45:04 testsv99 nginx-pre-start[6002]: nginx: the configuration file /nix/store/fxsy5xni9d6gdq4dmisjqg5z79q6dp9y-nginx.conf syntax is ok
May 07 20:45:04 testsv99 nginx-pre-start[6002]: nginx: configuration file /nix/store/fxsy5xni9d6gdq4dmisjqg5z79q6dp9y-nginx.conf test is successful
May 07 20:45:04 testsv99 systemd[1]: Started Nginx Web Server.
[testsv99:~ ]# 

 
続いてsudo systemctl status prometheus.serviceコマンドを叩き、Prometheusの動作を確認。Active: active (running)になっている事からPrometheusも正常に起動している事を確認出来た。

[testsv99:~ ]# sudo systemctl status prometheus.service 
● prometheus.service
     Loaded: loaded (/etc/systemd/system/prometheus.service; enabled; preset: ignored)
     Active: active (running) since Wed 2025-05-07 20:45:04 JST; 1min 9s ago
 Invocation: 29dba8d328564f189a4da18e5e9fa905
   Main PID: 6087 (prometheus)
         IP: 93.9K in, 3.9K out
         IO: 64M read, 68K written
      Tasks: 7 (limit: 4662)
     Memory: 94.2M (peak: 94.6M)
        CPU: 347ms
     CGroup: /system.slice/prometheus.service
             └─6087 /nix/store/7jcmzhdsyp5zav18ahldq8igaqxcmv4k-prometheus-2.55.0/bin/prometheus --config.file=/nix/store/h20x6g3nvlxb2687k9p9svb0nxggi703-prometheus.yml-checkconfig-checked --web.listen-address=0.0.0.0:3020 --alertmanager.notificati>

May 07 20:45:05 testsv99 prometheus[6087]: ts=2025-05-07T11:45:05.384Z caller=head.go:794 level=info component=tsdb msg="WAL segment loaded" segment=2 maxSegment=3
May 07 20:45:05 testsv99 prometheus[6087]: ts=2025-05-07T11:45:05.384Z caller=head.go:794 level=info component=tsdb msg="WAL segment loaded" segment=3 maxSegment=3
May 07 20:45:05 testsv99 prometheus[6087]: ts=2025-05-07T11:45:05.384Z caller=head.go:831 level=info component=tsdb msg="WAL replay completed" checkpoint_replay_duration=1.090359ms wal_replay_duration=71.673104ms wbl_replay_duration=174ns chunk_s>
May 07 20:45:05 testsv99 prometheus[6087]: ts=2025-05-07T11:45:05.386Z caller=main.go:1218 level=info fs_type=EXT4_SUPER_MAGIC
May 07 20:45:05 testsv99 prometheus[6087]: ts=2025-05-07T11:45:05.387Z caller=main.go:1221 level=info msg="TSDB started"
May 07 20:45:05 testsv99 prometheus[6087]: ts=2025-05-07T11:45:05.387Z caller=main.go:1404 level=info msg="Loading configuration file" filename=/nix/store/h20x6g3nvlxb2687k9p9svb0nxggi703-prometheus.yml-checkconfig-checked
May 07 20:45:05 testsv99 prometheus[6087]: ts=2025-05-07T11:45:05.396Z caller=main.go:1441 level=info msg="updated GOGC" old=100 new=75
May 07 20:45:05 testsv99 prometheus[6087]: ts=2025-05-07T11:45:05.396Z caller=main.go:1452 level=info msg="Completed loading of configuration file" filename=/nix/store/h20x6g3nvlxb2687k9p9svb0nxggi703-prometheus.yml-checkconfig-checked totalDurat>
May 07 20:45:05 testsv99 prometheus[6087]: ts=2025-05-07T11:45:05.396Z caller=main.go:1182 level=info msg="Server is ready to receive web requests."
May 07 20:45:05 testsv99 prometheus[6087]: ts=2025-05-07T11:45:05.397Z caller=manager.go:164 level=info component="rule manager" msg="Starting rule manager..."
[testsv99:~ ]# 

 
続いてsudo systemctl status grafana.serviceコマンドを叩き、Grafanaの動作を確認。Active: active (running)になっている事からGrafanaも正常に起動している事を確認出来た。

[testsv99:~ ]# sudo systemctl status grafana.service 
● grafana.service - Grafana Service Daemon
     Loaded: loaded (/etc/systemd/system/grafana.service; enabled; preset: ignored)
     Active: active (running) since Wed 2025-05-07 20:45:04 JST; 1min 46s ago
 Invocation: 4cdf9a600a974a5bbc88ffb699cf0e68
    Process: 6085 ExecStartPre=/nix/store/qpyd9r29jpfbz6yym986jvv0xn3g1rig-unit-script-grafana-pre-start/bin/grafana-pre-start (code=exited, status=0/SUCCESS)
   Main PID: 6095 (grafana)
         IP: 0B in, 0B out
         IO: 147.2M read, 164K written
      Tasks: 7 (limit: 4662)
     Memory: 202.8M (peak: 203.1M)
        CPU: 1.280s
     CGroup: /system.slice/grafana.service
             └─6095 /nix/store/xjpn5vrinfbsbqpvf8ckvygndja52i1y-grafana-11.3.6/bin/grafana server -homepath /var/lib/grafana -config /nix/store/nx41mv4bsmbg6khyqdm2zbqk1f7ri2k1-config.ini

May 07 20:46:26 testsv99 grafana-start[6095]: logger=provisioning.dashboard type=file name="my dashboards" t=2025-05-07T20:46:26.273133464+09:00 level=error msg="failed to search for dashboards" error="stat /etc/grafana-dashboards: no such file o>
May 07 20:46:31 testsv99 grafana-start[6095]: logger=infra.usagestats t=2025-05-07T20:46:31.176903052+09:00 level=info msg="Usage stats are ready to report"
May 07 20:46:36 testsv99 grafana-start[6095]: logger=provisioning.dashboard type=file name="my dashboards" t=2025-05-07T20:46:36.272289638+09:00 level=error msg="Cannot read directory" error="stat /etc/grafana-dashboards: no such file or director>
May 07 20:46:36 testsv99 grafana-start[6095]: logger=provisioning.dashboard type=file name="my dashboards" t=2025-05-07T20:46:36.272777142+09:00 level=error msg="Failed to read content of symlinked path" path=/etc/grafana-dashboards error="lstat >
May 07 20:46:36 testsv99 grafana-start[6095]: logger=provisioning.dashboard type=file name="my dashboards" t=2025-05-07T20:46:36.272848858+09:00 level=info msg="falling back to original path due to EvalSymlink/Abs failure"
May 07 20:46:36 testsv99 grafana-start[6095]: logger=provisioning.dashboard type=file name="my dashboards" t=2025-05-07T20:46:36.273800397+09:00 level=error msg="failed to search for dashboards" error="stat /etc/grafana-dashboards: no such file o>
May 07 20:46:46 testsv99 grafana-start[6095]: logger=provisioning.dashboard type=file name="my dashboards" t=2025-05-07T20:46:46.271608935+09:00 level=error msg="Cannot read directory" error="stat /etc/grafana-dashboards: no such file or director>
May 07 20:46:46 testsv99 grafana-start[6095]: logger=provisioning.dashboard type=file name="my dashboards" t=2025-05-07T20:46:46.271918429+09:00 level=error msg="Failed to read content of symlinked path" path=/etc/grafana-dashboards error="lstat >
May 07 20:46:46 testsv99 grafana-start[6095]: logger=provisioning.dashboard type=file name="my dashboards" t=2025-05-07T20:46:46.271960106+09:00 level=info msg="falling back to original path due to EvalSymlink/Abs failure"
May 07 20:46:46 testsv99 grafana-start[6095]: logger=provisioning.dashboard type=file name="my dashboards" t=2025-05-07T20:46:46.271982386+09:00 level=error msg="failed to search for dashboards" error="stat /etc/grafana-dashboards: no such file o>
[testsv99:~ ]# 

 
nginxとPrometheusとGrafanat共に、サービスが正常に立ち上がっている事を確認し、監視の設定に進む事が出来る状態となった。
最後にnginxとPrometheusとGrafanaのバージョンを確認。
ここまでは想定以上に滞り無く進む事が出来たが、この後実施する監視設定に苦戦した...

[testsv99:~ ]# nginx -v                          
nginx version: nginx/1.26.3
[testsv99:~ ]# 
[testsv99:~ ]# prometheus --version
prometheus, version 2.55.0 (branch: unknown, revision: unknown)
  build user:       nix@nixpkgs
  build date:       unknown
  go version:       go1.23.8
  platform:         linux/amd64
  tags:             builtinassets
[testsv99:~ ]# 
[testsv99:~ ]# grafana cli -v    
grafana version 11.3.6
[testsv99:~ ]# 

 


Prometheusの監視設定

最後に、PrometheusのダッシュボードツールであるGrafanaにて監視の設定を行う。
当項目は文章だけでサラッと書くだけにしようと考えていたが、Grafanaのバージョンやリビジョン等の違いによるものだろうか、参照したサイトの多くが当環境のGrafanaの表示と微妙に異なっていた為、備忘録としてスクリーンショットの画像付きで残した。
 

1. Grafanaにログイン
Webブラウザを立ち上げ、上記で設定したPrometheusのIPアドレス(当環境ではnginxおよびGrafanaと同居)とポート番号でアクセスする。
Grafanaのログイン画面が表示され、初回アクセス時はユーザ名とパスワード共にadminである。ログイン直後にパスワードの設定が求められる。


 

2. データソースの追加
ログイン後、トップ画面に遷移する。
トップ画面左側のHomeの左側に表示されている三本線(「三」みたいな線)をクリックする。


 
続いて「Connections」「Data sources」の順にクリックすると、Data sourcesの画面に遷移する。
Data sourcesの画面にて「prometheus-1」(当環境のhttp://192.168.3.247:3020の表示が有る)をクリックする。


 
「prometheus-1」の設定画面に遷移する。
画面最下部の「save & test」をクリックする。
「Successfully queried the Prometheus API」が表示される事を確認する。


 

3. ダッシュボードの追加
トップ画面の左上にある+をクリックし、続いて「New Dashboard」をクリックする。


 
「+Add visualization」をクリックする。


 
「Select data source」にて「prometheus-1」を選択する。


 
監視対象とは関係無いテスト用とおぼしきグラフが表示されるが、これは無視して設定を進める。
「Metric」にて「Select metric」をクリックし「node_cpu_seconds_total」を選択する。


 
Metricの右隣にある「Select label」をクリックし「cpu」を選択、続いて「Select value」にて「0」を選択する。
その後「Run queries」をクリックする。


 
「Run queries」をクリックした後、値が取得できている事を確認。値が取得できるとグラフが表示される。
グラフが表示されている事を確認したら、画面右上の「Save dashboard」をクリックする。


 
Save dashboardにて「Title」を編集し「Save」をクリックする。


 
続いて「Panel options」の設定画面が右側に表示されるので、Titleやグラフの表示をここで編集が可能である。


 
お疲れ様でした。ダッシュボードの追加設定は当手順で終わりとなる。
「Back to dashboard」をクリックすると、ダッシュボードの画面に遷移し、上記で設定したグラフが表示される。


今回はここまで。
当記事はWebサーバとして構築したNixOSにPrometheusとGrafanaをインストールし自機の監視を行う手順となっているが、監視対象の設定をリモートのサーバに指定する事で業務環境のような監視が可能となる。
そして上記で実施してきた手順を何度か繰り返す事で監視したい機能やグラフ等を追加し表示させる事が出来るだけでなく、機能だけでなく見た目もカスタマイズする事が可能で、かっこいいイケてる監視画面にする事も出来る。Grafanaは別の意味でハマりそうなツールだ。



振り返り
今回監視系のサーバの構築を実施した事で、家庭内の環境ではあるが一通りのシステムを揃える事が出来るようになった。残りはディレクトリサーバやストレージサーバくらいか。MariaDBやPostgreSQLなどデータベースは家で使用する予定が無いので却下。そう言えば、Flakeはインストール後は放置状態でhome-managerは未導入なのでそちらを先にしようか。短期間の間に10以上もNixOS関連の記事を投稿した為に今は息切れの状態。次回以降は投稿の間隔を広げようと思う。
 


参照サイト
https://nixos.org/ Nix & NixOS Declarative builds and deployments
https://nixos.org/manual/nixos/stable/ NixOS Manual
https://search.nixos.org/packages NixOS Search Packages
https://wiki.nixos.org/wiki/Prometheus Prometeus - NixOS Wiki
https://nixos.wiki/wiki/Grafana Grafana - NixOS Wiki
https://prometheus.io/ Prometeus
https://grafana.com/ja/ Grafana
https://qiita.com/itokazu/items/153ac52b063bb332e266 PrometheusとGrafanaでLinuxをサクッとモニタリングする - Qiita
https://qiita.com/MetricFire/items/f7ac1c9edf33eac48772 【Grafana】基礎から応用まで、これで網羅! - Qiita
https://gist.github.com/rickhull/895b0cb38fdd537c1078a858cf15d63e Prometheus, Grafana, Loki, Promtail on NixOS
 


NixOS関連の記事
https://debslink.hatenadiary.jp/entry/20250311/1741649715 NixOSの沼に片足を突っ込んだ
https://debslink.hatenadiary.jp/entry/20250316/1742128054 NixOSにFlakeを導入した
https://debslink.hatenadiary.jp/entry/20250320/1742459549 NixOSの環境構築
https://debslink.hatenadiary.jp/entry/20250323/1742731080 NixOSでSFTPサーバの設定
https://debslink.hatenadiary.jp/entry/20250328/1743167901 NixOSでSambaによるファイルサーバの構築
https://debslink.hatenadiary.jp/entry/20250405/1743844940 NixOSでrsyslogの設定
https://debslink.hatenadiary.jp/entry/20250411/1744300480 NixOSでDNSサーバの構築
https://debslink.hatenadiary.jp/entry/20250413/1744551596 NixOSのシステムの再現性の検証
https://debslink.hatenadiary.jp/entry/20250418/1744924524 NixOSでPostfixとDovecotによるメールサーバの構築
https://debslink.hatenadiary.jp/entry/20250419/1745062553 NixOSでPostfixとDovecotによるメールサーバの構築 - SASL認証編
https://debslink.hatenadiary.jp/entry/20250421/1745236668 NixOSのパッケージやOSのアップデートに関するメモ
https://debslink.hatenadiary.jp/entry/20250428/1745795434 NixOSをCLIでインストールした
https://debslink.hatenadiary.jp/entry/20250503/1746235454 NixOSでnginxによるWebサーバの構築
https://debslink.hatenadiary.jp/entry/20250508/1746706416 NixOSでPrometheusとGrafanaによる監視基盤の構築
https://debslink.hatenadiary.jp/entry/20250510/1746884897 NixOSの導入にあたり参考になったサイト
https://debslink.hatenadiary.jp/entry/20250524/1748072722 NixOSを24.11から25.05にアップデートした
https://debslink.hatenadiary.jp/entry/20251214/1765688458 NixOSを25.05から25.11にアップデートした
https://debslink.hatenadiary.jp/entry/20260117/1768615582 Raspberry Pi 4BにNixOSを導入しファイルサーバを構築した