Windows 11 のWSL でsystemd を有効にしてみました。
構成がすっきりしました。

環境

まず、現在PC で構築しているサービスを整理します。

WSL で構築するサービス

  • Pritunl (VPN、systemd で起動管理)
  • Code-server (IDE、systemd で起動管理)
  • Hexo (Blog、コマンドで実行)

Windows で構築するサービス

  • EPGStation (番組表/番組予約)
  • Mirakurun (チューナ)

WSL 構築

  1. systemd の有効化
  • 設定
    /etc/wsl.conf
    [boot]
    systemd=true
  • 一旦、WSL をシャットダウン(or 対象ディストリビューションをターミネート)
  1. ポートフォワードの設定
  • PowerShell スクリプト
    wsl-proxy.ps1
    $WSL2_IPV4=bash -c "ip route | grep 'eth0 proto kernel scope' | cut -d ' ' -f9"
    $HOST_IPV4="*"
    $PORTS=@(22,443,2049,3030,4000,8080,8443,9090,60000)
    foreach ($PORT in $PORTS)
    {
    netsh interface portproxy delete v4tov4 listenaddress=$HOST_IPV4 listenport=$PORT
    netsh interface portproxy add v4tov4 listenaddress=$HOST_IPV4 listenport=$PORT connectaddress=$WSL2_IPV4 connectport=$PORT
    }
  • ports
    port 用途
    22 SSH
    443 Pritunl
    2049
    3030
    4000 Hexo s
    8080 code-server
    8443
    9090
    60000 OpenVPN
  • タスクスケジューラで起動時に実行
  1. Node
  • n 用の設定
    ~/.bashrc
    export N_PREFIX=$HOME/.n
    export PATH=$N_PREFIX/bin:$PATH
  • 導入
    $ sudo apt install nodejs npm
    $ sudo npm install n -g
    $ sudo apt purge nodejs npm
    $ n latest
  1. Printunl
  • 手順
    https://techviewleo.com/install-pritunl-vpn-on-ubuntu-server/
  • 準備
    $ sudo apt update && sudo apt upgrade
    $ sudo apt install wget vim curl gnupg2 software-properties-common apt-transport-https ca-certificates lsb-release
    $ sudo tee /etc/apt/sources.list.d/pritunl.list << EOF
    deb https://repo.pritunl.com/unstable/apt jammy main
    EOF
    $ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com --recv 7568D9BB55FF9E5287D586017AE645C0CF8E292A
  • リポジトリのlibssl パッケージでは依存関係が満たせないので別途導入
    $ wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1-1ubuntu2.1~18.04.20_amd64.deb
    $ sudo dpkg -i libssl1.1_1.1.0g-2ubuntu4_amd64.deb
  • 導入
    $ curl -fsSL https://www.mongodb.org/static/pgp/server-5.0.asc|sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/mongodb-5.gpg
    $ echo "deb [ arch=$(dpkg --print-architecture) ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org.list
    $ sudo apt update && sudo apt install pritunl mongodb-org
    $ sudo systemctl start pritunl mongod
    $ sudo systemctl enable pritunl mongod
    $ systemctl status pritunl mongod
  1. code-server
  • 手順
    https://github.com/coder/code-server#user-content-getting-started
  • 設定
    $ curl -fsSL https://code-server.dev/install.sh | sh
    $ sudo systemctl enable --now code-server@$USER
    /.config/code-server/config.yaml
    #bind-addr: 127.0.0.1:8080
    bind-addr: 0.0.0.0:8080
    #auth: password
    auth: none
  • 拡張機能の導入
  • Project Manager でプロジェクトの登録
  • 永続化(別途Windows Terminal を常駐化)
  • 「VS Code Server」の方も試しましたが、導入できる拡張が少ないことと、接続に時間がかかることから不採用
  1. Hexo