※この記事はUdon Advent Calendar 2024 - Adventarの19日目の記事です。
はじめに
この記事では、Ubuntuを入れたサーバの環境構築を行います。とりあえず思いついた「sshの設定」「IPアドレスの固定」「公開鍵認証によるログインの設定」「ufwの設定」「Apacheのインストールと設定」「Dockerのインストールと設定」「Tailscaleのインストールと設定」を行います。
事前にサーバを何らかの形でインターネットに接続しておきましょう。
sshの設定
まずはこのサーバにsshでログインできるようにします。
sudo apt update
sudo apt install ssh
その後、IPアドレスを確認します。
ip a
いろいろ書いてありますが、inetの後に書かれているIPアドレスがLAN内でのIPアドレス(クラスが合っているか確認。10か172か192.168から始まるはず)です。これを控えておきましょう。以下では仮にw.w.w.w
とします。
わかりづらい場合は、まず以下のコマンドを使ってnet-toolsをインストールします。
sudo apt install net-tools
その後、以下のコマンドを使ってIPアドレスを確認します。
ifconfig
こうするといくらか見やすくなります。
また、ネットマスクも確認しておきましょう。IPアドレスの固定をする際に必要になります。
では、sshでログインしてみましょう。同一ネットワーク内のクライアント機で以下のコマンドを打ち込みます。
ssh [username]@w.w.w.w
パスワード認証が入るので、パスワードを入力します。これでログインできればOKです。
IPアドレスの固定
次に、このサーバのIPアドレスを固定します。IPアドレスはDHCPによって割り当てられるわけですが、クライアントならともかくサーバはIPアドレスが変わると困ることが多いです。なので、固定IPアドレスにしておきましょう。
以下のコマンドで設定ファイルを作成します。
sudo nano /etc/netplan/99_config.yaml
以下の内容を記述します。まずはWi-Fiを使う場合の例です。
network:
version: 2
renderer: networkd
wifis:
network-name:
dhcp4: false
access-points:
"SSID":
password: "password"
addresses:
- x.x.x.x/z
routes:
- to: default
via: y.y.y.y
nameservers:
addresses: [y.y.y.y]
まず、network-name
に関しては、ifconfig
やip a
で確認したネットワーク名を指定します。
dhcp4
はDHCPを使うかどうかを指定します。false
にして固定IPアドレスを使うようにします。
access-points
はWi-Fiの設定です。SSID
にはWi-Fiの名前を、password
にはパスワードを指定します。
x.x.x.x/z
ではサーバに割り当てるIPアドレスとネットマスクを指定します。
z
の数字については、ネットマスクが1になっているビットの数です。例えば、255.255.255.0
の場合は24
です。
また、y.y.y.y
はゲートウェイのIPアドレスです。nameservers
にはDNSサーバのIPアドレスを指定します。基本的にはゲートウェイと同じになるはずです。これだけで大丈夫ですが、GoogleのDNSサーバを使って複数個指定してもOKです。
また、イーサネットを使う場合は以下のようになります。
network:
version: 2
renderer: networkd
ethernets:
network-name:
dhcp4: false
addresses: [x.x.x.x/z]
routes:
- to: default
via: y.y.y.y
nameservers:
addresses: [y.y.y.y]
保存できたら、権限を変更して、設定を反映させます。
sudo chmod 600 /etc/netplan/99_config.yaml
sudo netplan apply
反映後、ssh接続していた場合はいったん切断されます。新しいIPアドレスで再接続してください。
ssh [username]@x.x.x.x
公開鍵認証によるログインの設定
パスワード認証は面倒なので、公開鍵認証によるログインを設定します。
まず、クライアント機で以下のコマンドを実行します。
cd ~/.ssh
ssh-keygen -b 4096 -f id_server
id_server
は任意の名前です。わかりやすいようにサーバの名前にしておきましょう。-b
はビット数で、多いほど安全なので4096にしておきます。
こうすると、公開鍵と秘密鍵が生成されます。前者はid_server.pub
、後者はid_server
です。前者の内容をコピーしておきましょう。
次に、config
ファイルを編集します。以下の形で記述しましょう。
Host [hostname]
HostName x.x.x.x
Port 22
IdentityFile ~/.ssh/id_server
User [username]
hostname
は適当に決めて大丈夫です。
そして、サーバにログインし、以下のコマンドを実行します。
mkdir .ssh
cd .ssh
echo [your_public_key] >> authorized_keys
.ssh
ディレクトリやauthorized_keys
ファイルは元から存在する場合があります。
これで設定は完了です。クライアント機で以下のコマンドを実行してログインしてみましょう。
ssh [hostname]
パスワードを聞かれることなくログインできれば成功です。
ufwの設定
自宅内で使う場合はあまり必要ないかもしれませんが、セキュリティのためにもufwを設定しておきましょう。
まずはufwをインストールします。元から入っている場合もあります。
sudo apt install ufw
次に、以下のコマンドで設定をします。まずはssh
接続が切れないようにします。
sudo ufw default deny
sudo ufw allow 22
sudo ufw enable
まず全てを拒否するように設定し、その後ssh
接続に用いる22番ポートを許可します。最後に有効化します。有効化を最後にやらないとssh
接続が切れ、再接続できなくなってしまいます。
不正アクセス対策で、ssh
接続に用いるポートを変更する場合は、それに応じたポートを許可してください。
Apacheのインストールと設定
まずはApacheをインストールします。
sudo apt install apache2
インストール後、以下のコマンドでApacheを起動します。
sudo systemctl start apache2
そして、以下のコマンドで自動起動を設定します。
sudo systemctl enable apache2
これでApacheが自動起動するようになります。
次に、Apacheが表示するページが確認できるようにします。まずはファイアウォールの設定をします。httpプロトコルとhttpsプロトコルが用いるポートを開けます。
sudo ufw allow 80
sudo ufw allow 443
再度に有効化します。
sudo ufw enable
同ネットワーク内で次のURLにアクセスしてみましょう。
http://x.x.x.x
ApacheのDefaultページが表示されれば成功です。
/var/www/html/index.htmlを編集することで、表示されるページを変更できます。
Dockerのインストールと設定
Dockerを使うと、いろいろホスティングすることが楽になります。まずはDockerをインストールしましょう。
以下の一連のコマンドを実行します。
sudo apt update
sudo apt install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo groupadd docker
sudo usermod -aG docker [username]
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
完了後、以下のコマンドを実行してDockerが正しくインストールされたか確認しましょう。
docker --version
docker-compose --version
それぞれバージョンが表示されれば成功です。docker-compose
がなかったら、以下のコマンドを実行してインストールしましょう。
sudo apt install docker-compose
2025/02/16追記
上記の方法でうまくいかない場合、snap
を用いてインストールしても良いようです。
sudo snap install docker
というかこっちのほうが圧倒的に楽なので、こちらを推奨します(docker-composeも同時に入るらしい)。
Gitのインストールと設定
Gitも入れておきましょう。
sudo apt install git
インストール後、以下のコマンドで設定をします。
git config --global user.name [username]
git config --global user.email [email]
[username]
と[email]
は適宜変更してください。
適当なリポジトリをクローンしてみて、正しくクローンできていたら成功です。
NetDataのインストールと設定
リソース管理のために、NetDataをインストールしておきます。
手順は以下の通り。
sudo apt install netdata
sudo nano /etc/netdata/netdata.conf
ここで、bind socket to IP
をそのサーバのIPアドレスにしておきます。xxx.xxx.xxx.xxx
形式で指定します。
それが終わったら、以下のコマンドでnetdataを有効化すればOKです。
sudo systemctl restart netdata
デフォルトでは19999番ポートでホストされるので、以下のコマンドによりufwに穴を開けておきます。
sudo ufw allow 19999
sudo ufw enable
適当なWebブラウザでxxx.xxx.xxx.xxx:19999
を指定すると、NetDataのサイトが表示されます。
Tailscaleのインストールと設定
この記事でやったように、Tailscaleをセットアップします。これでこのサーバに外部からもアクセスできるようになり、遠隔保守が可能になります。
詳しくはリンク先を参照してください。
おわりに
サーバの環境構築ができました。ここから、各サーバに合わせて様々なアプリケーションなどを導入していくことになります。
自分が使うサーバの内容はこれからもちょくちょく記事にするつもりです。
ではまた。明日の記事でお会いしましょう。
参考文献
Ubuntu 22.04 LTSで固定IPアドレスの設定 #Linux - Qiita