Nix, NixOS에서 NextJS 서버 설정하기
요약
요 블로그에서 했던걸 Nix에서 다시 해봤다.
설정
Dockerfile에 있던 설정을 대충 다음과 같이 비슷하게 구현해야 한다.
# srcs.nix
survived-viewer-v2-build = pkgs.buildNpmPackage {
name = "survived-viewer-v2";
src = "${survived.outPath}/viewer-v2";
npmBuild = "npm run build";
npmDepsHash = "sha256-blahblah...";
# One of these copy script is unnecessary.
installPhase = ''
mkdir -p $out/public/_next
cp -r .next $out/
cp -r .next/standalone/* $out
cp -r public $out/public/
cp -r .next/static $out/public/_next/static
'';
};
systemd.services."survived-viewer-v2" = {
enable = true;
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
path = [ "/run/current-system/sw" ];
environment = {
HOSTNAME = "127.0.0.1";
PORT = "8686";
};
serviceConfig = {
ExecStart = "${pkgs.nodejs_22}/bin/node ${srcs.survived-viewer-v2-build}/server.js";
Restart = "always";
};
};
결론
이렇게 하면 되긴 되는데, NextJS 서버 설정이 좀 이상한건지 port가 public하게 오픈되더라? 별수없이 Docker로 다시 롤백해뒀다.