Ubuntu22.04 LTS Serverをセットアップする
はじめに
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が使われるようです
この違いについては、以下の動画が勉強になりました
- 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-)、アルファベットの順に設定が読み込まれる
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
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
/swapfile swap swap default 0 0
システムが新しい/etc/fstab設定を登録するように、マウントユニットを再生成する
$ sudo systemctl daemon-reload
各種設定ファイル
.bashrc(bash)
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
[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)
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
# PasswordAuthentication yes
↓
PasswordAuthentication yes
$ sudo systemctl restart ssh
$ systemctl status ssh
DNS/DHCP/TFTP(dnsmasq)
$ sudo apt -y install dnsmasq
$ vim /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
/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
[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の確認
$ echo $DISPLAY
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