Skip to content

Repository files navigation

nrhrhysd616/dotfiles

macOS環境構築

シェル環境構築

  1. 以下のアプリケーションをインストール&一度起動しておく

  2. 以下のZshコマンドを順番に実行

    $git clone git@github.com:nrhrhysd616/dotfiles.git
    $chmod 744 dotfiles/init-mac.zsh
    $zsh dotfiles/init-mac.zsh
  3. iTerm2の設定を反映

    iTerm2を起動しメニューの「Settings...」から以下を設定
    General -> Settings -> Import All Settings And Data...を選択
    dotfiles/iterm2/iTerm2-all-settings.itermexportのファイルを選択してインポート

  4. .gitconfig.user.localファイルを編集

    • signingkey: ssh公開鍵の情報
    • name: アルファベットフルネーム
    • email: sshキーの設定と同一のGithubで利用しているメールアドレス
  5. コミット署名のローカル検証用に~/.ssh/allowed_signersファイルを作成

    git log --show-signatureで署名を検証できるようにするための設定
    メールアドレスと公開鍵は.gitconfig.user.localに設定したものと同一にする

    echo "<email> <signingkeyの公開鍵>" > ~/.ssh/allowed_signers
    chmod 644 ~/.ssh/allowed_signers
  6. sshdを再起動して設定を反映する

    sudo launchctl stop com.openssh.sshd
    sudo launchctl start com.openssh.sshd
  7. VSCodeのClineのCustom Instructionsを手動で設定する

    現状設定のエクスポートなどができず、settings.jsonファイルでの外出しも不可能なため手動

  8. Tailscaleにサインインし、tailnetのHTTPS証明書を有効化する

    後述のcsctlコマンドを使う場合のみ必要

    tailscale up

    サインイン後、管理コンソールのDNS設定で 「HTTPS Certificates」をEnable HTTPSにする
    これを有効にしないとtailscale certが証明書を発行できず、csctlが起動に失敗する

    サインインさえ済ませておけば接続は切っておいてよい
    csctlが必要なときだけ自動で接続し、使い終わったら自動で切断する

  9. AWS CLIの認証設定

    aws/configからコピーされた~/.aws/configを編集し、login_sessionにIAMユーザーのARNを設定する

    [default]
      login_session = arn:aws:iam::<account-id>:user/<iam-user-name>
      region = ap-northeast-1

    認証はaws loginで行う(AWS CLI 2.32.0以降が必要)
    ブラウザでコンソールにサインインすると一時クレデンシャルが~/.aws/login/cacheに発行される
    有効期限は最長12時間で、その間15分ごとに自動更新される

    aws login
    aws sts get-caller-identity  # ARNを確認

    この方式では長期のアクセスキーを一切作らないため、~/.aws/credentialsは存在しない

    サインインにはMFAを設定したIAMユーザーを使うこと
    ルートユーザーはアカウント解約・支払い情報の変更などルート専用の操作にのみ使い、 日常の操作やCLIからは使わない

miseの使い方

miseは複数の言語のバージョン管理ツールです。Python、Node.js、Bunなどをmiseで管理しています。

  • インストール済みツールの確認

    mise list
  • 利用可能なバージョンの確認

    mise ls-remote python
    mise ls-remote node
  • グローバルバージョンの変更

    # 特定バージョンを指定
    mise use -g python@3.12
    mise use -g node@20
    
    # 最新版にアップデート
    mise use -g python@latest
    mise use -g node@lts
  • プロジェクトごとのバージョン指定

    # プロジェクトディレクトリで実行
    cd /path/to/project
    mise use python@3.11  # .tool-versionsファイルが生成される
  • 現在のバージョン確認

    python --version
    node --version
    bun --version

csctlの使い方

csctlは任意のプロジェクトディレクトリをcode-server(ブラウザ版VS Code)として起動し、 Tailscale経由で公開するコマンドです。iPadなど同じtailnetに参加している端末のブラウザからプロジェクトを開けます。

各インスタンスはこのマシンのTailscale IPに直接バインドし、tailscale certが発行した証明書でTLSを終端するため、 https://<MagicDNS名>:<ポート>/でアクセスできます。インターネットには一切公開されません。

  • 起動して公開する

    # ディレクトリを指定するだけ(ポートは18080から空きを自動選択、インスタンス名はディレクトリ名)
    csctl start ~/Documents/Project/github.com/nrhrhysd616/dotfiles
    
    # カレントディレクトリを公開する
    csctl start
    
    # ポートと名前を明示する(複数プロジェクトを同時に公開できる)
    csctl start ~/work/api --port 18090 --name api

    起動に成功するとURLとパスワードが表示されます。パスワードは全インスタンス共通で、初回に自動生成されます。

  • 一覧・状態・ログ

    csctl list             # 全インスタンスの一覧
    csctl status api       # 1つの詳細(URL、PID、ログの場所など)
    csctl logs -f api      # ログを追尾
    csctl url api          # URLだけを出力
    csctl open api         # ローカルのブラウザで開く
  • 停止

    csctl stop api         # 名前で停止
    csctl stop 18090       # ポートで停止
    csctl stop all         # 全部停止
    csctl restart api      # 同じディレクトリ・ポートで再起動
  • その他

    csctl doctor           # 依存コマンドとTailscaleの状態を確認
    csctl password         # 共通パスワードを表示
    csctl password --reset # パスワードを再生成(再起動するまで既存インスタンスは旧パスワード)
    csctl cert             # TLS証明書の発行・更新
    csctl font install     # Fira Codeをcode-server自身から配信する(後述)
    csctl help             # 全コマンドのヘルプ
  • エディタ設定とテーマ

    設定はcode-server/settings.jsonで管理し、csctlが各インスタンスの User/settings.jsonからシンボリックリンクを張るため全インスタンスで共有される。 code-server上で設定を変更するとリポジトリ側のファイルが直接書き換わる。

    vscode/settings.json(デスクトップ版)とは別ファイルにしている。ブラウザ版では 拡張機能を入れ直す必要があり、外部アプリ連携も動かないため、 拡張機能に依存しない設定だけを持たせている。

    • テーマは組み込みのMonokaiとアイコンテーマvs-setiを使う(拡張機能不要)
    • Monokai Proを使いたい場合はcode-server上で拡張機能monokai.theme-monokai-pro-vscodeを インストールし、code-server/settings.jsonworkbench.colorThemeを書き換える
    • 拡張機能は~/.local/share/csctl/extensionsに置かれ全インスタンスで共有されるため、 インストールは一度だけでよい
  • Fira Codeを全端末で使う

    editor.fontFamilyはブラウザが動いている端末のフォントを参照するため、 Fira Codeが入っていないiPadなどでは効かずフォールバックされる。 以下を実行するとcode-server自身がWebフォントとして配信するようになり、どの端末でも適用される。

    csctl font install   # 有効化(実行後、起動中のインスタンスはrestartが必要)
    csctl font status    # 状態確認
    csctl font remove    # 元に戻す

    この処理はcode-server本体のCSSに@font-faceを追記し、~/Library/FontsのFira Codeを 配信ディレクトリへコピーする。code-serverを更新すると失われるが、 一度有効にしておけば次回のcsctl start時に自動で貼り直される。

  • 動作のカスタマイズ

    環境変数 説明
    CSCTL_PORT_START ポート自動選択の開始番号(既定: 18080、そこから20個スキャンする)
    CSCTL_AUTO_UP 0を指定すると自動tailscale upを無効化する
    CSCTL_AUTO_DOWN 0を指定すると自動tailscale downを無効化する
    CSCTL_CODE_SERVER_BIN code-serverのパスを明示する
    CSCTL_TAILSCALE_BIN tailscaleのパスを明示する

Tailscaleの自動接続について:

  • Tailscaleを常駐させる必要はありません。csctl startが未接続(Stopped)を検出すると自動でtailscale upし、 最後のインスタンスを停止した時点で自動的にtailscale downします
  • 自動切断はcsctlが接続した場合のみ行われます。自分でtailscale upした接続はcsctlが切ることはありません
  • サインインが必要な状態(NeedsLogin)ではブラウザ操作が要るため自動接続しません。手動でtailscale upしてください

補足:

  • 証明書は起動のたびに有効期限をチェックし、残り30日を切っていれば自動で更新されます
  • 拡張機能とsettings.jsonは全インスタンスで共有されますが、開いているタブやウィンドウ状態などの ユーザーデータはインスタンスごとに分離されます(VS Codeは同じuser-data-dirを複数のサーバーで同時に使えないため)
  • Macがスリープするとインスタンスも応答しなくなります。常時アクセスしたい場合はcaffeinateなどで抑止してください
  • Macを再起動するとインスタンスは終了します(自動起動はしないため、再度csctl startが必要)

システム設定

  • iCloud

    各種必要に応じて設定

  • アクセシビリティ > ディスプレイ

    ポインタの枠線のカラー > 白 ポインタの塗りつぶしカラー > オレンジ

  • キーボード > キーボードショートカット…

    スクリーンショット以外のショートカットをすべて削除
    「F1、F2などのキーを標準のファンクションキーとして利用」はオン

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Contributors

Languages