🐈

Ubuntu22.04 LTS Serverをセットアップする

2024/08/26に公開

はじめに

Ubuntu22.04 LTS Serverをインストールしたときのセットアップメモです

パスワードの変更

初期のユーザ名、パスワードは、
username: ubuntu
password: ubuntu
なので、パスワードを変更する

$ passwd ubuntu
  • 任意のパスワードに変更

rootユーザのパスワードの変更

rootユーザのパスワードを変更する場合は以下

$ sudo passwd root
  • 任意のパスワードに変更する

キーマップの変更

英語キーボードの場合

$ sudo localectl set-keymap us

日本語キーボードの場合

$ sudo localectl set-keymap jp

一般的には、日本語のキーマップ(jp)が選ばれた場合、デフォルトで日本語の109キーボードのレイアウトが適用されます。
具体的に日本語キーボードのレイアウトを指定する場合は以下

  • 日本語106キーボードの場合
$ sudo localectl set-keymap jp106
  • 日本語109キーボードの場合
$ sudo localectl set-keymap jp-OADG109A

キーマップの別の設定方法は以下

$ sudo dpkg-reconfigure keyboard-configuration

一時的にキーマップを変更する場合

sudo loadkeys us
sudo loadkeys jp

パッケージの更新

$ sudo apt -y update
$ sudo apt -y upgrade

apt upgradeは、以前はapt-get upgradeでしたが、今はapt upgradeが使われるようです
この違いについては、以下の動画が勉強になりました
https://youtu.be/IekJyk-lN4c?si=yA8wDt_P25QsOEBo&t=1972

  • apt-get upgradeは、カーネルの更新ができない
    apt-get upgradeでは、新規パッケージのインストールができないため、カーネルメタパッケージのバージョンが上がって、依存関係が変わっても、新規パッケージのインストールが保留されてしまう
  • apt upgradeは、カーネルの更新ができる
    apt upgradeでは、新規パッケージのインストールができるため、カーネルの更新ができる

テキストエディタ(vim)のインストール

$ sudo apt install vim

タイムゾーンの設定

$ sudo timedatectl set-timezone Asia/Tokyo

タイムゾーンの別の設定方法は以下

$ echo TZ="Asia/Tokyo"
$ ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

ロケールの設定

日本語ロケールが対応されているか検索する

$ grep ja /usr/share/i18n/SUPPORTED
  • 検索結果に、ja_JP.UTF-8があることを確認する

日本語サポートを強化する場合は、日本語関連のパッケージをインストールする

$ sudo apt -y install language-pack-ja-base language-pack-ja

ロケールの追加

$ sudo locale-gen ja_JP.UTF-8

ロケールの設定

$ sudo localectl set-locale LANG=ja_JP.UTF-8

日時の設定

NTPによる時刻同期のサービスが動作中は日時が設定できないので、設定する際は一旦サービスを停止してから設定する

$ sudo systemctl stop systemd-timesyncd
$ sudo timedatectl set-time "2024-01-29 19:47:00"
$ sudo systemctl start systemd-timesynd

日時の別の設定方法は以下

$ sudo date 01291947002024
$ sudo hwclock -w
  • hwclockのオプション
    -r or --show : 現在のハードウェアクロックの表示
    -w or --systohc: システムクロックをハードウェアクロックへ設定
    -s or --hctosys: ハードウェアクロックをシステムクロックへ設定

IPアドレスの設定

netplanとsystemd-networkdを使ってIPアドレスを設定する

yamlファイルの追加

$ sudo vim /etc/netplan/99-manual-ip.yaml
  • 接頭辞の番号(XX-)、アルファベットの順に設定が読み込まれる
99-manual-ip.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: false
      dhcp6: false
      addresses:
        - 192.168.0.111/24
      routes:
        - to: default
          via: 192.168.0.1
      nameservers:
              addresses:
                - 192.168.0.1
              search: []
      optional: true

vimでsudo権限を付け忘れてしまった時のファイルの保存方法

vim内で以下のコマンドを実行すると、強制的に上書き保存される

:w !sudo tee % > /dev/null
  • %: 編集中のファイル名

ファイルの権限の変更

netplanを適用しようとすると、権限がオープンすぎると怒られるので、権限を変更する

$ sudo chmod 600 /etc/netplan/99-manual-ip.yaml

systemd-networkdの有効化

初期状態だと、systemd-networkdがinactiveとなっている
サービスがマスクされている場合は、マスク解除する

$ sudo systemctl unmask systemd-networkd.service
$ sudo systemctl start systemd-networkd.service

netplanの適用

$ sudo netplan apply

nmcli(NetworkManager)を使ってIPアドレスを設定する

こちらは調べただけで、実際には試していません
Ubuntu Serverの場合、netplanとsystemd-networdを使用するようです

デバイスにコネクションを追加、IPアドレスを設定

$ sudo nmcli connection add type ethernet con-name eth0 ifname eth0
$ sudo nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.0.111/24 connection.autoconnect yes
$ sudo nmcli connection modify eth0 ipv4.gateway 192.168.0.1
$ sudo nmcli connection modify eth0 ipv4.dns 192.168.0.1

すべてのコネクションの再読み込み

$ sudo nmcli connection reload

コネクションの無効化、有効化

$ sudo nmcli connection down eth0
$ sudo nmcli connection up eth0

デバイスをコネクションから削除

$ sudo nmcli connection delete eth0

sudoの設定

ubuntuユーザで、sudo実行時に、パスワードを要求されないようにする

$ sudo visudo
/etc/sudoers
ubuntu ALL=(ALL:ALL) NOPASSWD:ALL

最初のALLは、ホストに対する許可
()内の左のALLは、どのユーザーになれるか
()内の右のALLは、どのグループになれるか
()外のALLは、どのコマンドを実行できるか

'@includedir /etc/sudoers.d'より後に追記する

Swap領域の設定

$ sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
$ sudo mkswap /swapfile
$ sudo chmod 600 /swapfile
$ sudo swapon /swapfile
  • 2GBのスワップ領域を追加する

自動マウント設定

$ sudo vim /etc/fstab
/etc/fstab
/swapfile swap swap default 0 0

システムが新しい/etc/fstab設定を登録するように、マウントユニットを再生成する

$ sudo systemctl daemon-reload

各種設定ファイル

.bashrc(bash)

~/.bashrc
HISTSIZE=100000
HISTFILESIZE=100000

alias ls='ls --color=auto'
alias la='ls -A --color=auto'
alias ll='ls -lF --color=auto'
alias pd='pushd'
alias dirs='dirs -v'

shopt -s autocd
shopt -s direxpand

setxkbmap us

stty stop undef
bind '"\C-n": history-search-forward'
bind '"\C-p": history-search-backward'

export EDITOR=vim
export HISTCONTROL="ignorespace:ignoredups"
export HISTIGNORE="ls:cd:pwd:exit"
export HTTP_PROXY="<proxy-sever-ip>:<port>"
export HTTPS_PROXY="<proxy-sever-ip>:<port>"
export FTP_PROXY="<proxy-sever-ip>:<port>"
export NO_PROXY="localhost,127.0.0.1"

export HISTCONTROL="ignorespace:ignoredups"
は、デフォルトで定義されている、
export HISTCONTROL="ignoreboth"
と意味は同じ

.gitconfig(git)

初期状態では.gitconfigは存在しない
以下のコマンドを入力すると作成される
git config --global user.name <my-name>
git config --global user.email <my-email-address>
git config --global http.proxy http://<proxy-sever-ip>:<port>
git config --global http.proxy https://<proxy-sever-ip>:<port>
git config --global init.defaultBranch main

~/.gitconfig
[user]
        name = <my-name>
        email = <my-email-address>
[http]
        proxy = http://<proxy-sever-ip>:<port>
[https]
        proxy = http://<proxy-sever-ip>:<port>
[init]
        defaultBranch = main

.wgetrc(wget)

~/.wgetrc
export http_proxy=http://<proxy-sever-ip>:<port>/
export https_proxy=http://<proxy-sever-ip>:<port>/
export ftp_proxy=http://<proxy-sever-ip>:<port>/

サーバー(デーモン)のインストール

SSH

$ sudo apt -y install openssh-server
$ vim /etc/ssh/sshd_config
/etc/ssh/sshd_config
# PasswordAuthentication yes
↓
PasswordAuthentication yes
$ sudo systemctl restart ssh
$ systemctl status ssh

DNS/DHCP/TFTP(dnsmasq)

$ sudo apt -y install dnsmasq
$ vim /etc/dnsmasq.conf
/etc/dnsmasq.conf
except-interface=wlan0
bind-dynamic

port=0
enable-tftp
tftp-root=/tftpboot

dhcp-leasefile=/var/lib/misc/dnsmasq.leases
dhcp-option=option:router,192.168.0.1
dhcp-option=option:netmask,255.255.255.0
dhcp-option=option:dns-server,192.168.0.1
dhcp-range=192.168.0.10,192.168.0.40,6h
$ mkdir -m 777 /tftpboot
$ dnsmasq --test
$ sudo systemctl restart dnsmasq
$ systemctl status dnsmasq

NFS

$ sudo apt -y install nfs-kernel-server
$ vim /etc/exports
/etc/export
/tftpboot/nfsroot 192.168.0.0/16(rw,sync,no_root,squash,no_subtree_check)
$ mkdir -p /tftpboot/nfsroot
$ chmod -R 777 /tftpboot
$ sudo systemctl restart nfs-server
$ systemctl status nfs-server

NFSサーバーがサポートしているバージョンを表示する

$ sudo cat /proc/fs/nfsd/versions
-2 +3 +4 +4.1 +4.2

samba

$ sudo apt -y install samba
$ vim /etc/samba/smb.conf
/etc/samba/smb.conf
[global]
   unix charset = UTF-8
   dos charset = CP932
   inerfaces = 127.0.0.0/8 192.168.0.0/16 172.0.0.0/8 eth0

[share]
   path = /tftpboot
   writable = yes
   guest ok = yes
   guest only = yes
   force create mode =777
   force directory mode = 777
$ sudo systemctl restart smbd
$ systemctl status smbd

X11転送の設定

X11のライブラリ

X11転送に必要なライブラリをインストールする

  • xorg-x11-xauth(xauth)
$ sudo apt -y install xorg-x11-xauth

通常はxauthだけでよいようですが、使用するGUIソフトウェアによっては以下のライブラリが必要になるようです

  • libXtst
  • libXrender

X11アプリ(xeyesなど)

テスト用にxeyesなどのX11アプリをインストールする

$ sudo apt -y install x11-app

SSH設定

$ sudo vi /etc/ssh/sshd_config
  • X11Forwarding yes

SSH設定の再読み込み

$ sudo systemctl restart sshd

環境変数DISPLAYの確認

$ echoDISPLAY

Xサーバのインストール

X Window Systemが必要な場合は、以下のパッケージをインストールする

$ sudo apt -y install xserver-org

デスクトップ環境のインストール

ubuntuでデスクトップ環境が必要な場合は、以下のパッケージをインストールする

$ sudo apt -y install ubuntu-desktop

"system program problem detected"が表示されるときの対処法

クラッシュレポートの確認と削除

$ ls /var/crash
$ sudo rm /var/crash/*

firefoxの設定

firefox - [一般] - [ネットワーク設定] - [接続設定...(E)] - [手動でプロキシーを設定する(M)]
・HTTP プロキシー(X): <proxy-sever-ip>、ポート(P):<port>
・「このプロキシーをHTTPSでも使用する(S)」にチェックを入れる

以上

Discussion