Windows10にリプレイスされるとWindows7なPCが余りますよね
そのまま廃棄してしまうにはもったいないスペックのPCにUbuntuServer20.04LTSをインストールしてみる
作業メモ
まずインストールイメージをダウンロードする

Bootableなisoイメージがダウンロードできるので、DVDに焼くか、Etcherのようなツールを使用してBootableなUSBメモリを作成する

インストールメディアから起動する
Install Ubuntu Serverを

- 言語はとりあえず
Englishで

- 今回は
Continue without updatingを

- 日本語キーボードを接続しているので
Japanese

- LANは認識されていました

- Proxyは設定不要な環境です

- ミラーサイトはデフォルトのまま

- LVM(Logical Volume Manager)は使いません

- ハードディスクの割当てはおまかせでrootパーティションのみ

- もうあとには戻れない

- ユーザーを登録

- 社内LANのみからアクセスされる予定なので適当に

- SSHサーバーはインストール必須

- やりたいことがあるので
dockerだけインストールしておく

- インストーラーにおまかせして待つ

- 先に進めたいので
Cancel update and reboot

- UbuntuServerが起動した

- かんたんな初期設定が済むまではコンソールからログインする

UbuntuServerが起動したら
avahi-daemonを使えるようにする
ssh [email protected]で接続できるようになるので便利!!
$ sudo apt install -y avahi-daemon
ネットワークの設定をする
まずはIPアドレスの確認
$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:83:e2:a3 brd ff:ff:ff:ff:ff:ff
inet 172.16.99.204/16 brd 172.16.99.255 scope global dynamic ens33
valid_lft 14173sec preferred_lft 14173sec
inet6 fe80::20c:29ff:fe83:e2a3/64 scope link
valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:e8:0b:fe:9d brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
IPv6を無効化
当面のところ社内LANではIPv6は無効化してある
カーネルのIPv6モジュールを無効化することで対応した
$ sudo nano /etc/default/grub
#GRUB_CMDLINE_LINUX_DEFAULT="maybe-ubiquity"
#GRUB_CMDLINE_LINUX=""
GRUB_CMDLINE_LINUX_DEFAULT="maybe-ubiquity ipv6.disable=1"
GRUB_CMDLINE_LINUX="ipv6.disable=1"
$ sudo update-grub
IPアドレスを固定する
avahiで名前解決できない環境に対応するためにIPアドレスも固定しておく
$ sudo cp /etc/netplan/00-installer-config.yaml /etc/netplan/99_config.yaml
$ sudo nano /etc/netplan/99_config.yaml
network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: false
dhcp6: false
addresses:
- 172.16.99.254/16
gateway4: 172.16.99.1
nameservers:
addresses: [8.8.8.8]
$ sudo netplan apply
最低限のファイアウォールの設定をしておく
まずsshのアクセスだけを受け付けるようにする
インターネットには晒すつもりはないのでsshのポート番号はデフォルトのままにしておく
もしインターネットに晒す場合は適宜ポート番号を変更するか、ban4ipなどを導入する
$ sudo ufw status
[sudo] password for administrator:
Status: inactive
$ sudo ufw default allow outgoing
Default outgoing policy changed to 'allow'
(be sure to update your rules accordingly)
$ sudo ufw default deny incoming
Default incoming policy changed to 'deny'
(be sure to update your rules accordingly)
$ sudo ufw allow ssh
Rules updated
Rules updated (v6)
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
$ sudo ufw status
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
※Fromは社内LANのネットワークセグメントからに限定しておくのがベター
タイムゾーンを設定する
$ sudo timedatectl set-timezone Asia/Tokyo
ロケールを日本語に設定する
日本語ロケールがインストールされているか確認する
$ localectl list-locales
C.UTF-8
en_US.UTF-8
日本語ロケールをインストールする
$ sudo apt -y install language-pack-ja-base language-pack-ja
$ localectl list-locales
C.UTF-8
en_US.UTF-8
ja_JP.UTF-8
現在のロケールを確認して日本語に設定する
$ localectl
System Locale: LANG=en_US.UTF-8
VC Keymap: n/a
X11 Layout: us
X11 Model: pc105
$ sudo localectl set-locale LANG=ja_JP.UTF-8
$ localectl
System Locale: LANG=ja_JP.UTF-8
VC Keymap: n/a
X11 Layout: us
X11 Model: pc105
コンソール画面で文字化けした場合は
$ LANG=en_US
.bashrcに設定を書いておけと設定が永続化される
$ echo export LANG=en_US >> .bashrc
$ source ~/.bashrc
ささっと簡単にWebサーバーを構築してみる
いろいろ設定をし忘れたりするので、ポカヨケのためにもできるだけDockerのコンテナを使うようにする
- まずhttpアクセスを受け入れるようにする
アクセスを受け入れるポートは8080にする
$ sudo ufw allow 8080/tcp
- DockerOfficialなhttpdコンテナをポート8080で動かしてみる
$ sudo docker run -d -p 8080:80 --name httpd httpd
23eb26b4cec5b6b4257d2d36a259eb84cacb39419f358d122cd4f7868068ac32
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
23eb26b4cec5 httpd "httpd-foreground" 16 seconds ago Up 15 seconds 0.0.0.0:8080->80/tcp httpd
http://ubuntuserver.local:8080/にアクセスできることを確認しておく
- httpdコンテナを止めてみる
$ sudo docker stop httpd
httpd
httpdコンテナを止めるとhttp://ubuntuserver.local:8080/にアクセスできなくなることも確認しておくとよい
- 自分のコンテンツを公開したい
$ mkdir ~/httpd_content
# ※~/httpd_contentになにかコンテンツをコピーする
# ※さっきのコンテナは削除する
$ sudo docker rm httpd
$ sudo docker run -d -p 8080:80 -v "~/httpd_content/:/usr/local/apache2/htdocs/" --name httpd httpd
http://ubuntuserver.local:8080/にアクセスするとコピーしておいたコンテンツが表示されることを確認する
このままコンテンツを充実させていってもよし、WordPressのコンテナを動作させてもよし
再起動したときにコンテナは動いてほしい
--restart=alwaysオプションで対応できる
- 自動起動を有効化する
$ sudo docker update --restart=always httpd
httpd
- 自動起動が有効化されているコンテナを確認する
$ sudo docker inspect -f "{{.Name}} {{.HostConfig.RestartPolicy.Name}}" $(sudo docker ps -aq) | grep always
/httpd always
- 自動起動を無効化する
$ sudo docker update --restart=no httpd
httpd