Ubuntu server: Getting started
Ubuntu server を作るのに参考になると思われる動画です。
- OSのインストール方法
- CLI ログイン、ネットワーク設定、ssh接続
- ディスクトップLXDE、リーモトディスクトップ xrdp
- サーバー管理 cockpit
- ユーザー管理
- webサーバー(LAMP)<- ubuntu 22.04 はtasksel に含まれず
- ファイルサーバー samba
実際にサーバーを作る時につまずいたことの解決方法
- スリープ解除方法(ディスクトップ インストール時に変更になった?)
- 起動時 GRUB タイムアウト時間変更方法
Ubuntu Server ダウンロードとUSBメモリに書き込み
ソフトウエアのダウンドード
Ubuntu Server 22.04.1 LTS (LTS Long Term Support 長期保守される )をダウンロードする。
ディクストップ版もあるが、今回はサーバー版を選択。
ローカルにダウンロードして、USBに入れてサーバーから起動する方法。
balenaEtcher-Flash OS images to SD card & USB drivers
で、ダウンロードしたファイルをUSBメモリに書き込むために、Etcher をダウンロードする。
Etcherを使ってUSBメモリにUbuntu serverのイメージを書き込みます。
Ubuntu Server 22.04 install
サーバーにUSBメモリを差し込んで、サーバーの電源を起動するときに BIOS 画面を表示させ、または、Ubuntuのブート画面で。
UEFI Firmware Settings
を選択して
Please select boot device から、起動順序を USBメモリを一番上に変更する。
Try or Installer Ubuntu Server を選択
select your language
select keyboard layout
network connections.
:
:
インストーラーに従ってインストールを進めると
Reboot を促され、USBメモリを取りはすして、Enter
CLI ログイン
インストール時に設定したユーザー名とパスワードでログインします。
server login :
password :
ユーザーディレクトでログインされます
$ pwd
/home/bytemypi
$ exit
セキュリティ
まずは、ソフトウエアを最新に
$ sudo apt update
$ sudo apt upgrade
$ sudo reboot
ATP ( Advanced Package Tool ) is a powerful tool for handling the installation and removal of software
update-notifier
$ sudo apt install update-notifier-common
自動でアップデートするには、
9 , 14 のコメントを外して、設定を変更する。
$ cd /etc/apt/apt.conf.d
$ sudo nano 50unattended-upgrades
// Automatically reboot *WITHOUT CONFIRMATION* if
// the file /var/run/reboot-required is found after the upgrade
//Unattended-Upgrade::Automatic-Reboot "false";
Unattended-Upgrade::Automatic-Reboot "true";
// If automatic reboot is enabled and needed, reboot at the specific
// time instead of immediately
// Default: "now"
//Unattended-Upgrade::Automatic-Reboot-Time "02:00";
Unattended-Upgrade::Automatic-Reboot-Time "02:00";
“1” の確認みたい
$ sudo nano 20auto-upgrades
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
$ sudo reboot
Active: active (running) を確認する。
$ sudo systemctl status unattended-upgrades
Active: active (running) since Mon 2023-02-06 08:11:20 UTC; 5min ago
network
ネットワークの状態を確認
$ ip a
ネットワークのアドレスを変更したい場合は下のコマンドでファイルを修正する。
ファイルの設定を適用する。
$ sudo nano /etc/netplan/00-installer-config.yaml
$ sudo netplan apply
ssh
サーバーをリモートアクセスする時に必要な ssh をインストールする。
インストーラーで [ x ] ssh チェックを入れた場合には必要ない。
$ sudo apt install openssh-server
ssh クライアントからアクセスする。
MacOS はターミナルから
Windows はコマンドプロンプト
Ubuntu server のIP アドレスとユーザー名、パスワードでログインする。
> ssh username@server-ip-address
sshでサーバーをコントロールできるので、モニターやキーボードを繋がなくてもよくなる。
GUI
軽量なディスクトップ LXDE 環境をインストールする。
(最新の機器の場合は、標準採用のGnomeの方がWindowdライクに便利に使えるのでストレスは少ないと思います。)
dm(ディスプレイマネージャー)は、lightdm を選択
$ sudo apt install lxde-core lxappearance
$ sudo reboot
Remoto DeskTop
xrdp(x リモート デスクトップ) をインストール
$ sudo apt istall xrdp
$ sudo nano /etc/xrdp/startwm.sh
#test -x /etc/X11/Xsession && exec /etc/X11/Xsession
#exec /bin/sh /etc/X11/Xsession
lxsession -a LXDE -e LXDE
$ sudo adduser xrdp ssl-cert
$ sudo reboot
LXDEディスクトップはとてもシンプルですね。

webブラウザからサーバー管理
Cockpit をインストール
ブラウザーからアクセスしてサーバーを管理できる Cockpit をインストールする。
cockpit.socket を確認するとアクティブになっていました。インストールすると自動的に有効設定になるのかな。
$ sudo apt isntall cockpit
$ sudo systemctl status cockpit.socket
Active: active (listening)
$ sudo vi /etc/netplan/00-installer-config.yaml
renderer: NetworkManager
デスクトップのブラウザに サーバーの IP アドレス:9090 を入力すると、保護されていない通信のダイアログが表示されますが、構わずに進めると、cockpitの管理画面が表示されました。
サーバーのディスクトップでも、ローカルPCからでもアクセスして表示が可能なので、便利に使えそうです。

ユーザー管理
ユーザー作成
サーバーにユーザーアカウントを追加する
sudo adduser new-username
Adding Administrative Privileges
ユーザー名 accout-username を sudo group に追加
sudo usermod -a -G sudo account-username
ユーザー切り替え
swich user ( su )
su -username
become root
root は、なんでもできてしまうので、注意が必要ですね。
$ sudo su -
# exit
$
Listing User Accounts
compgen -u
Remove User Account
sudo deluser account-username
Enable the "root" Account
root アカウントでログインできるようにする
sudo passwd root
root アカウントでログインできないようにする
sudo passwd -l root
サーバー名を変更
インストール時にサーバー名を設定するが、途中でサーバー名を変更するには、
hostname
hostnamctl
sudo hostnamectl set-hostname new-name
exec bash
cat /etc/hosts
sudo nano /etc/hosts
/etc/hosts
127.0.1.1 server ->> new-name
Tasksel
choose software to install
Ubuntu のインストーラーで表示されていましたが、 taksel は動作させるサービスを選択してインストールできる
sudo apt update
sudo apt install tasksel
sudo tasksel
動画で説明のあったソフトウエアセレクション tasksel の選択項目はとても簡素でした。
ubuntu 20.xx と 22.xx で変更があったのかもしれません。
動画では、LAMP サーバーを tasksel を使ってインストールしていました。

$ tasksel --list-tasks
u desktop Debian desktop environment
u gnome-desktop GNOME
u xfce-desktop Xfce
u gnome-flashback-desktop GNOME Flashback
u kde-desktop KDE Plasma
u cinnamon-desktop Cinnamon
u mate-desktop MATE
u lxde-desktop LXDE
u lxqt-desktop LXQt
u web-server web server
u ssh-server SSH server
u laptop laptop
あれ!
LAMP-server の項目がありません。
$ sudo tasksel install lamp-server
と直接入力しても sasksel ではインストールできませんでした。
ubuntu 22.04LTS でtaskselの内容変更があったのかもしれません。
個別にインストールして設定しても同じですが、労力が違います。
ちなみに、LAMP とは
L inux
A pache
M ysql
P hp
の頭文字です。
ここは、聞き流して
Adding a Drive
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 61.9M 1 loop /snap/core20/1405
loop1 7:1 0 63.3M 1 loop /snap/core20/1778
loop2 7:2 0 79.9M 1 loop /snap/lxd/22923
loop3 7:3 0 111.9M 1 loop /snap/lxd/24322
loop4 7:4 0 49.8M 1 loop /snap/snapd/17950
sda 8:0 0 953.9G 0 disk
├─sda1 8:1 0 1G 0 part /boot/efi
└─sda2 8:2 0 952.8G 0 part
└─md0 9:0 0 952.7G 0 raid1
└─md0p1 259:0 0 952.7G 0 part /
sdb 8:16 0 953.9G 0 disk
├─sdb1 8:17 0 1G 0 part
└─sdb2 8:18 0 952.8G 0 part
└─md0 9:0 0 952.7G 0 raid1
└─md0p1 259:0 0 952.7G 0 part /
sr0 11:0 1 1024M 0 rom
空きディスクがあって、そのディスクをマウントする手順です。
$ sudo wipefs -a /dev/空きディスク
GPT fdisk ( gdisk ) でパーテーションを作成する。(ディスクのデーターが無くなるのでディスク名の選択に充分注意してください)
※ GTP ( GUID Partition Table )
$ sudo gdisk /dev/空きディスク
1パーテーションならば、質問はデフォルトで良さそうです。
$ sudo gdisk -l /dev/空きディスク
パーテーションナンバーまで含めて指定し、ここでは、ext4 でフォーマットしていました。
$ sudo mkfs.ext4 /dev/空きディスク1
Mount the Drive
cd /mnt
sudo mkdir mount-point-name
sudo chattr +i mount-point-name
UUID ( Universally Unique Identifier ) を下のコマンド blkid で表示してコピーする。
UUID=”3620ee6a-3d49-ce07-5df9-f0f9d6863f58″
sudo blkid
sudo nano /etc/fstab
/etc/fstab に追加する
たとえば、
UUID=”3620ee6a-3d49-ce07-5df9-f0f9d6863f58″ /mount/path ext4 defaults 0 2
マウントの設定を反映するには、
sudo mmount -a
df -h パーテーション名
sudo chown -R user-name パーテーション名/
sudo chmod -R 750 パーテーション名/
File Sharing With Samba
SMB ( Server Message Block ) or CIFS ( Common Internet File System ) protocol
ネットワークにあるドライブ 記憶装置 ハードドライブ があるとさまざまなディバイスから見れると便利ですね。
要するに Samba は NAS と同様なことができます。
sudo apt updete
sudo apt install samba
sudo smbpasswd -a existing-useername
Create Samba Share
cd etc/samba
sudo cp smb.conf cmb.bk
sudo nano smb.conf
smb.conf に設定を追加します。
[share]
path = /mnt/ドライブ名
valid user = ユーザー名
read only = no
smb.conf 設定例(自分の)
[homes]
comment = Home Directoris
browseable = yes
read only = no
create mask = 0700
direvtory mask = 0700
valid user = %S
設定を有効にするために、smbd.service を再起動します。
sudo systemctl restart smbd.service
Windows から Samba server にアクセス
ip アドレスと smb.conf に設定したshare で共有してみよう。
\\\192.188.0.200\share
The Uncomplicated Firewall (ufw)
ファイアウォールを設定、
デフォルトは inactive 未設定になっています。
サーバーなので、不特定多数にアクセスされる場合は、ポートを最小限に絞る方が安全です。
$ sudo ufw status
Status: inactive
allow と deny で制御する
$ sudo ufw allow ssh
$ sudo ufw enable
sshでの接続をローカルのみにしたいのであれば、自宅のネットワーク IP アドレスの範囲 [ 192.168.1.0/24] に設定
$ sudo ufw allow from 192.168.1.0/24
$ sudo apt isntall net-tools
$ sudo netstat -tulpn
-t. show only TCP connections
-u. show only UDP connections
-l. show only listening sockets
-p. show numerical addresses instead of trying to determine host,port or user names
-n show the PID and program name to which each socket belongs
スリープを無効に
Ubuntu22.04 server 版をインストールしたのですが、ディスクトップを入れたせいか、しばらくアクセスをしないと、スリープしてしまいます。
スリープを解除するのは、 systemctl で mask するようです。
$ sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
Created symlink /etc/systemd/system/sleep.target → /dev/null.
Created symlink /etc/systemd/system/suspend.target → /dev/null.
Created symlink /etc/systemd/system/hibernate.target → /dev/null.
Created symlink /etc/systemd/system/hybrid-sleep.target → /dev/null.
スリープを有効にしたい場合
$ sudo systemctl unmask sleep.target suspend.target hibernate.target hybrid-sleep.target
GRUB タイムアウト時間変更
ブートローダーを読み込んで、OS を選択させる時間を設定変更できます。
サーバーなので、再起動時の時間は短い方が良いので、変更の仕方を勉強してみましょう。
sudo nano /etc/default/grub
GRUB_TIMEOUT=0
の数字を変更すると、起動時のタイムアウトの時間が変更されるようですが、最初から =0 である???。
デフォルトの設定値は =0 だけど、なぜか 30 秒くらいカウントしていました。
もう一つ設定箇所を発見しました。
sudo nano /etc/grub.d/00_header
set timeout=${GRUB_RECORDFAIL_TIMEOUT:-30}
2箇所あったので、2つとも変更しました。(内容を読むのがめんどくさかったので)
の数字 (-30 )を変更すると、起動時のタイムアウトの時間が変更されるようです。
試しに ( -5 ) を入れて再起動するがダメでした。
設定値をアップデートしないと、反映されないみたいです。
sudo update-grub
これで、GRUB のタイムアウト 5秒に設定できました