学術研究向けLinuxサーバーの構築手順

最近、私はMiniPCをUbuntuベースのサーバーに改造し、将来の研究ニーズに対応できるように設定しました。

Linuxの知識があまりなかったため、構築にあたり学習と試行錯誤を重ね、その手順や発生しうる問題、解決策を記録しました。


Ubuntuで管理者権限を持つ新規ユーザーの作成

クラウドサービスやベンダー提供、または自分でセットアップしたUbuntuサーバーでは、デフォルトユーザー(default User)が作成されます。通常、このユーザーはsudoコマンドで一時的に権限を昇格できますが、本質的には一般ユーザーです(管理者アカウントではありません)。同じ管理者権限を持つカスタムユーザーを作成したい場合は、以下の手順で行います。

1. 新規ユーザーの作成(ホームディレクトリとログインシェル指定)

sudo useradd -d "/home/<user_name>" -m -s "/bin/bash" <user_name>

パラメータの説明:

  • -d "/home/<user_name>":ユーザーのホームディレクトリを /home/<user_name> に設定
  • -m:ホームディレクトリを自動作成
  • -s "/bin/bash":デフォルトのログインシェルを /bin/bash に指定

2. 新規ユーザーに管理者権限を付与

sudo(管理者)権限を持つユーザーを作成するには、以下のコマンドを実行します。

sudo useradd -d "/home/<user_name>" -m -s "/bin/bash" -G sudo <user_name>
  • -G sudo<user_name>sudo グループに追加し、管理者権限を付与

3. 新規ユーザーのパスワード設定

新規ユーザーはデフォルトでパスワードがありません。以下のコマンドで <user_name> のパスワードを設定します。

sudo passwd <user_name>

コマンド実行後、2回パスワード入力を求められます。セキュリティ上、入力時に文字や記号は表示されません。パスワードを入力し、Enter で確定してください。

以上で、管理者権限を持つ新規ユーザー <user_name> を作成できます。sudo コマンドで管理者作業が可能です。


ターミナルのプロンプト美化

見た目が良く使いやすいプロンプトは作業効率を高めます。ここではzshを使った美化方法を紹介します。詳細は以前の記録を参照してください。


サーバーのリモートアクセス有効化

サーバーを物理的に離れた場所から操作するには、SSHサービスのインストールと設定、防火壁の調整が必要です。

1. SSHサービスのインストールと設定

基本的なSSHアクセスのみ必要な場合は、openssh-serverのインストールとサービス起動で十分です。セキュリティを高めるには、/etc/ssh/sshd_configの設定を最適化します。

sudo apt update
sudo apt install openssh-server

インストール後、SSHサービスの状態を確認します。

sudo systemctl status ssh
  • 設定の推奨事項

    • rootユーザーの直接ログイン禁止(推奨):rootでの直接ログインを避け、セキュリティを向上させます。/etc/ssh/sshd_configPermitRootLoginnoに設定。

      sudo nano /etc/ssh/sshd_config
      
      PermitRootLogin no
      
    • 許可ユーザーの制限AllowUsersでSSHログインを許可するユーザーを指定し、セキュリティを強化。

      AllowUsers <user_name>
      
    • デフォルト以外のポート使用(任意):SSHポートを22以外(例:2200)に変更し、スキャン攻撃を減らします。防火壁設定も合わせて変更してください。

      Port 2200
      
    • アイドル接続の自動切断:未使用のSSHセッションを自動切断するには、以下を追加。

      ClientAliveInterval 300
      ClientAliveCountMax 2
      

設定後、SSHサービスを再起動して反映します。

sudo systemctl restart ssh

2. UFWファイアウォールの設定

UFWファイアウォールを有効にしている場合は、SSHポートを開放します。デフォルト(22番)の場合:

sudo ufw allow ssh

ポートを変更した場合(例:2200):

sudo ufw allow 2200/tcp
  • 設定の確認

    sudo ufw enable
    sudo ufw status
    

3. SSH接続の確認

クライアント(例:Windows)からサーバーへの接続をテストします。Windowsでは PuTTYWindows Terminal などのSSH対応ターミナルを推奨します。

telnetコマンドで接続テストも可能ですが、本番環境ではSSHクライアントを使用してください。

telnet <remote_ip> <remote_port>

<remote_ip>はサーバーのIPアドレス、<remote_port>はSSHポート(デフォルト22)に置き換えてください。

4. .Xauthorityファイルの権限問題修正

/home/<user_name>/.Xauthorityの権限エラーは、root以外で作成された場合に発生します。ユーザーディレクトリの所有権を修正し、必要に応じて.Xauthorityを新規作成します。

sudo chown <user_name>:<user_name> -R /home/<user_name>

問題が解決しない場合は、以下で新規作成:

sudo -u <user_name> touch /home/<user_name>/.Xauthority
sudo chown <user_name>:<user_name> /home/<user_name>/.Xauthority

5. Fail2Banの導入(推奨)

SSHへのブルートフォース攻撃対策としてfail2banを導入します。失敗したログイン試行を検知し、該当IPを一時的に遮断します。

sudo apt install fail2ban

fail2banはSSH保護を自動で有効化します。/etc/fail2ban/jail.localで詳細設定可能です。

[sshd]
enabled = true
port = 22
maxretry = 5
bantime = 600

サーバーとGitHubのSSH接続設定

UbuntuサーバーからGitHubへ安全にクローン・プッシュ・プルするためのSSH接続手順です。

1. Gitのインストールと確認

まずGitをインストールし、バージョンを確認します。

sudo apt install git
git --version

2. Gitユーザー情報の設定

GitHubのユーザー名とメールアドレスを設定します(GitHubアカウントと一致させてください)。

git config --global user.name "<github_account_name>"
git config --global user.email "<github_account_email>"

この設定は~/.gitconfigに保存され、全リポジトリで有効です。

3. SSH鍵ペアの生成

GitHubと安全に通信するため、SSH鍵ペアを生成します。

ssh-keygen -C "<github_account_email>" -t rsa
  • -C "<github_account_email>":鍵にコメント(通常はメールアドレス)を付与
  • -t rsa:RSAタイプの鍵を生成

コマンド実行後、3回Enterを押して(デフォルト名・パスフレーズなし)、~/.sshに鍵が保存されます。

4. SSH公開鍵をGitHubに登録

  1. 公開鍵を表示し、内容をコピーします。

    cat ~/.ssh/id_rsa.pub
    
  2. GitHubの「Settings」→「SSH and GPG keys」→「New SSH key」で貼り付け、説明を入力して保存します。

5. GitHubとのSSH接続テスト

設定後、以下で接続をテストします。

ssh -T git@github.com

成功すると、以下のようなメッセージが表示されます。

Hi <github_account_name>! You've successfully authenticated, but GitHub does not provide shell access.

6. よくある問題と対処法

  1. SSH鍵の権限エラー:権限を正しく設定してください。

    chmod 600 ~/.ssh/id_rsa
    chmod 644 ~/.ssh/id_rsa.pub
    
  2. SSH Agentへの鍵追加(推奨)

    eval "$(ssh-agent -s)"
    ssh-add ~/.ssh/id_rsa
    

Python環境の構築と管理


Miniforge

サーバーでPythonの科学計算環境を管理するため、軽量かつ高速なMiniforgeを採用しました。Miniforgeはconda-forgeチャンネルをデフォルトで利用し、Mambaも統合されています。

1. Miniforgeのインストール

Miniforge公式GitHubの手順に従い、以下でインストールします。

wget "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh"
bash Miniforge3-$(uname)-$(uname -m).sh
  • /usr/local/miniforge3へのインストールを推奨(複数ユーザーで共有可能、変更はrootのみ)
  • ZSH利用時は.zshrcにパスを追加

    export PATH="$usr/local/miniforge3/bin:$PATH"
    
  • .zshrcを再読み込み:source ~/.zshrc

2. Mamba環境の初期化

インストール後、Mambaを初期化します(例:/usr/local/miniforge3にインストールした場合)。

/usr/local/miniforge3/bin/mamba init

ZSHでうまくいかない場合は、.bashrcの設定を.zshrcにコピーしてください。

3. 環境の作成と管理

複数ユーザー環境では、root権限(sudo su)で環境を作成・管理することを推奨します。

新規環境の作成
mamba create --name <new_env_name> python=3.11 --no-default-packages
  • --name <new_env_name>:環境名
  • python=3.11:Pythonバージョン指定
  • --no-default-packages:Pythonのみインストール

一般ユーザーはホームディレクトリ配下にプライベート環境を作成可能:

mamba create --prefix /home/username/myenv python=3.11 --no-default-packages
環境の削除
mamba remove --name <env_name> --all
mamba remove --prefix /path/to/directory --all

4. よく使うパッケージのインストール

base環境は直接変更せず、用途ごとに専用環境を作成してください。例:JupyterHubのインストール

mamba create --name ml_env python=3.12 jupyterhub jupyterlab notebook notebook scipy numpy numpy
mamba activate ml_env
mamba install jupyter-lsp-python jupyterlab-lsp jupyterlab-git jupyterlab_execute_time

5. 権限による更新制限

一般ユーザーがシステム環境を更新しようとすると、権限エラーが発生します。

mamba update --all

エラー例:

EnvironmentNotWritableError: The current user does not have write permissions to the target environment.
  environment location: /usr/local/miniforge3
  uid: 1000
  gid: 1000

一時的にbase環境を更新する場合はsudoを利用:

sudo /usr/local/miniforge3/bin/mamba update --all

Poetry

PoetryはPythonプロジェクトの依存管理・仮想環境管理・パッケージ公開を効率化するツールです。

1. Poetryのインストール

Python 3.7以上が必要です。

  1. 公式インストールスクリプトを利用:

    curl -sSL https://install.python-poetry.org | python3 -
    
  2. PATHに追加:

    export PATH="$HOME/.local/bin:$PATH"
    
  3. インストール確認:

    poetry --version
    

2. 新規プロジェクトの作成

poetry new my_project

生成されるディレクトリ構成:

my_project/
├── my_project/
│   └── __init__.py
├── pyproject.toml
└── tests/
    └── __init__.py

既存プロジェクトの場合:

cd existing_project
poetry init

3. 依存関係の管理

  • 本番依存の追加:

    poetry add requests
    
  • 開発依存の追加:

    poetry add pytest --dev
    
  • 依存のインストール:

    poetry install
    

4. 仮想環境の管理

  • 仮想環境の有効化:

    poetry shell
    
  • 仮想環境の終了:

    exit

  • 仮想環境のパス確認:

    poetry env info --path
    
  • 仮想環境の削除:

    poetry env remove python
    

5. 依存ロックファイルの管理

  • 依存バージョンの更新:

    poetry update
    
  • ロックファイルに基づくインストール:

    poetry install
    

6. スクリプト・コマンドの実行

  • スクリプトの実行:

    poetry run python script.py
    
  • テストの実行:

    poetry run pytest
    

7. Pythonパッケージの公開

  • パッケージのビルド:

    poetry build
    
  • PyPIへの公開:

    poetry publish --build
    

    テスト用PyPIの場合:

    poetry publish --repository testpypi
    

以下は計量経済学分野でR環境を構築する手順です。RおよびRStudioのインストール、主要パッケージの導入方法をまとめます。


Ubuntuで計量経済学向けR環境を構築する

計量経済学では、Rは経済データの処理や回帰分析、時系列分析などに適しています。

1. Rのインストール

Ubuntu標準リポジトリのRは最新版でない場合があります。最新バージョンを入手するにはCRANリポジトリを利用します。

  1. CRANリポジトリの追加

    sudo apt update
    sudo apt install software-properties-common dirmngr -y
    
  2. CRANのGPGキー追加

    wget -qO- https://cloud.r-project.org/bin/linux/ubuntu/marutter_pubkey.asc | sudo tee -a /etc/apt/trusted.gpg.d/cran_ubuntu_key.asc
    
  3. GPGキーの確認(任意)

    gpg --show-keys /etc/apt/trusted.gpg.d/cran_ubuntu_key.asc
    
  4. CRANリポジトリをaptソースに追加

    sudo add-apt-repository "deb https://cloud.r-project.org/bin/linux/ubuntu $(lsb_release -cs)-cran40/"
    
  5. Rと開発パッケージのインストール

    sudo apt install r-base r-base-dev -y
    

2. RStudioのインストール

RStudioはデータ分析や可視化に便利なIDEです。公式ガイドを参照してください。

  1. RStudio Server最新版をダウンロード
  2. dpkgでインストール

    sudo dpkg -i rstudio-server-<version>.deb
    
  3. インストール確認

    sudo systemctl status rstudio-server
    

RStudio Serverはhttp://<your-server-ip>:8787でアクセスできます。

3. 計量経済学関連Rパッケージのインストール

  1. システム依存パッケージのインストール

    sudo apt-get install build-essential libssl-dev libcurl4-openssl-dev libxml2-dev
    
  2. 主要パッケージのインストール

    Rコンソールで以下を実行:

    chooseCRANmirror(graphics = FALSE)
    install.packages(c("tidyverse", "data.table", "broom", "plm", "forecast", "lmtest", "sandwich", "stargazer"))
    
    • tidyverse:データ処理・可視化
    • data.table:高速データ処理
    • broom:回帰結果の整形
    • plm:パネルデータ回帰
    • forecast:時系列分析
    • lmtestsandwich:計量経済学的検定・ロバスト標準誤差
    • stargazer:回帰結果の表形式出力
  3. 高度な計量経済学ツール

    install.packages(c("AER", "urca", "vars"))
    
  4. 金融時系列分析パッケージ(任意)

    install.packages(c("quantmod", "TTR", "zoo", "xts"))
    

4. GitHubトークンを使ったプライベートパッケージのインストール

GitHubからパッケージをインストールする場合、API制限回避のためトークン利用を推奨します。

  1. Rコンソールでトークン生成:

    usethis::create_github_token()
    
  2. GitHubでPersonal Access Tokenを作成

  3. R環境にトークンを設定:

    gitcreds::gitcreds_set()
    

5. サンプル:plmパッケージでパネルデータ回帰

  1. plmのインストール

    install.packages("plm")
    
  2. plmの利用例

    library(plm)
    
    # サンプルパネルデータ
    data("Produc", package = "plm")
    pdata <- pdata.frame(Produc, index = c("state", "year"))
    
    # 固定効果モデル
    fe_model <- plm(log(gsp) ~ log(pcap) + log(hwy) + log(water) + log(util), data = pdata, model = "within")
    summary(fe_model)
    

    以下は整理优化后的指南,以帮助更有效地同步数据、安装字体、并处理 Nvidia 驱动程序和库的相关问题。


其他问题


1. データ同期

ローカルデータをリモートサーバーに同期するには、rsyncが効率的です。詳細はこちらのチュートリアルを参照。

  • 同期コマンド例

    rsync -r /path/to/sync/ <username>@<remote_host>:<destination_directory>
    
  • 大容量ファイルの進捗監視

    watch -n <time_interval> du -sh /path/to/large/file
    

2. よく使うフォントのインストール

LinuxにはWindowsの標準フォント(ArialやTimes New Romanなど)が含まれていません。これらをインストールし、matplotlibのキャッシュを削除してフォントを反映させます。

sudo apt install msttcorefonts
rm -rf ~/.cache/matplotlib

3. ドライバ/ライブラリのバージョン不一致

nvidia-smiで以下のエラーが出る場合:

Failed to initialize NVML: Driver/library version mismatch

Stack Overflowの解決策を参考にしてください。

  1. サーバーの再起動

    sudo reboot
    
  2. Nvidiaドライバの再インストール

    sudo apt purge nvidia* libnvidia*
    sudo ubuntu-drivers install
    sudo reboot
    

4. Nvidiaドライバのアップグレード

  1. 旧ドライバの削除

    sudo apt purge *nvidia* -y
    sudo apt remove *nvidia* -y
    sudo rm /etc/apt/sources.list.d/cuda*
    sudo apt autoremove -y && sudo apt autoclean -y
    sudo rm -rf /usr/local/cuda*
    
  2. 推奨ドライバの検索とインストール

    ubuntu-drivers devices
    

    例:バージョン550をインストール

    sudo apt install libnvidia-common-550-server libnvidia-gl-550-server nvidia-driver-550-server -y
    
  3. 再起動と確認

    sudo reboot now
    

    nvidia-smiでエラーが出る場合は、カーネルヘッダーを再インストールしてください。


5. カーネルヘッダーとGCCの設定

  1. カーネルヘッダーの再インストール

    sudo apt install --reinstall linux-headers-$(uname -r)
    sudo reboot
    
  2. GCCバージョンの更新

    sudo apt-get install gcc-12
    sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 12
    

    カーネルヘッダー再インストール後、nvidia-smiが正常に動作するはずです。

このページは生成AIによって自動翻訳されており、不正確または不完全な情報が含まれている可能性があります。 ご意見・ご指摘はこちらまで。品質向上のためご協力をお願いいたします。

  • 监控大文件的传输进度

如果同步的是较大文件,可以用 watch 命令来监控同步进度:

watch -n <time_interval> du -sh /path/to/large/file

该命令会每隔 <time_interval> 秒刷新一次文件的大小变化。


2. 安装常用字体

Linux 系统默认不带有一些 Windows 中的常用字体(例如 ArialTimes New Roman)。安装这些字体可以改善文档和网站的显示效果,特别是那些依赖这些字体的图形输出。安装 Microsoft TrueType 核心字体包并刷新缓存:

sudo apt install msttcorefonts
rm -rf ~/.cache/matplotlib
  • msttcorefonts 包括多种 Microsoft 字体,如 Arial 和 Times New Roman。
  • 第二个命令删除了 matplotlib 缓存目录,以确保更新后的字体正确加载。

3. 驱动程序/库版本不匹配

在运行 nvidia-smi 时,如果出现以下错误:

Failed to initialize NVML: Driver/library version mismatch

可以参考 Stack Overflow 上的解决方案。简要的步骤如下:

  1. 重启服务器
    某些情况下,重启服务器即可解决问题:

    sudo reboot
    
  2. 卸载并重新安装 Nvidia 驱动程序

    如果重启无效,尝试以下命令清除现有的 Nvidia 驱动程序并重新安装:

    sudo apt purge nvidia* libnvidia*
    sudo ubuntu-drivers install
    sudo reboot
    

4.升级 Nvidia 驱动程序

要升级 Nvidia 驱动程序,可以按照以下步骤进行:

  1. 卸载旧驱动程序

    sudo apt purge *nvidia* -y
    sudo apt remove *nvidia* -y
    sudo rm /etc/apt/sources.list.d/cuda*
    sudo apt autoremove -y && sudo apt autoclean -y
    sudo rm -rf /usr/local/cuda*
    
  2. 查找并安装推荐的驱动程序

    运行以下命令来查找推荐的 Nvidia 驱动程序版本:

    ubuntu-drivers devices
    

    或者通过以下命令安装指定版本(例如 550,根据系统需求调整版本号):

    sudo apt install libnvidia-common-550-server libnvidia-gl-550-server nvidia-driver-550-server -y
    
  3. 重启并检查

    重启服务器并使用 nvidia-smi 检查新驱动是否正常运行:

    sudo reboot now
    

    如果 nvidia-smi 返回以下错误:

    NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver.
    

    尝试重新安装内核头文件并重启。


5.内核头文件安装和 GCC 配置

如遇到内核头文件或 GCC 版本问题,按以下步骤操作:

  1. 重新安装内核头文件

    sudo apt install --reinstall linux-headers-$(uname -r)
    sudo reboot
    
  2. 更新 GCC 版本

    如果内核头文件安装过程中遇到 GCC 错误,可以升级到 gcc-12

    sudo apt-get install gcc-12
    sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 12
    

    重新安装内核头文件并重启服务器后,nvidia-smi 应该能够正常工作。

このページは生成AIによって自動翻訳されており、不正確または不完全な情報が含まれている可能性があります。 ご意見・ご指摘はこちらまで。品質向上のためご協力をお願いいたします。




    この記事を楽しみましたか?

    次におすすめの記事はこちら:

  • macOSシステム設定の記録
  • 低スペッククラウドサーバーの実用的な設定記録
  • 「随筆」旧居の記憶
  • 「随筆」2025年の最初の日に、少し語ってみる
  • 2024年の研究活動総括