ConoHaが新プランになったし、再度別のサーバをUbuntu18.04から立ち上げる。この記事の更新の位置づけ。本当は20.04を待ちたかったけどまあいいや。
ConoHa VPSの契約
RAM1GB/SSD100GBプラン@東京リージョンを契約。月880円。3,4年前より安いわSSDが倍だわ…
- ひとまずポート制限はなし。sshでログインしてから設定。
- イメージタイプはOS。ubuntu 18.04を選択。OSじゃなくてアプリ指定(例えばDocker指定)しても立ち上げられんのね。進化してる!
- SSH Pubkeyは登録しない。仮想マシン作成時はユーザが作られないため、ユーザを作ってから登録する。
ドメインの設定
ドメイン管理はさくらインターネットのまま保持。
- さくらのドメイン管理画面から、当該ドメイン名のアドレスを変える。
- ConoHaのサーバ管理画面で、逆引きホスト名として当該ドメイン名を入れておく。念のため。
セキュリティ周りの初期設定
ユーザ作成 & ssh
SSHかコントロールパネルからrootでシェルログインをしてユーザ作成、sudoersに追加、ssh鍵の設定、viで適当に新しいユーザの公開鍵をコピペして登録、まで一気にやってしまう。
# adduser <new user>
# usermod -aG sudo <new user>
# su <new user>
$ mkdir ~/.ssh
$ touch ~/.ssh/authorized_keys
$ vi ~/.ssh/authorized_keys
sshd_config
をいじってPort変更、Root/Passwordログインを禁止、公開鍵ログインのみとする。
$ sudo vi /etc/ssh/sshd_config
- Port 22
+ Port xxx # ポート変更
- PermitRootLogin yes
+ PermitRootLogin no
- PubkeyAuthentication no
+ PubkeyAuthentication yes #公開鍵ログイン
- PasswordAuthentication yes
+ PasswordAuthentication no
- UsePAM yes
+ usePAM no
$ sudo /etc/init.d/ssh restart
iptables
の設定
ufw
で楽をする。Port 80/443はdockerのnginx-proxyが勝手に空けてくれるのでわざわざ空けなくてよろしい。
$ sudo ufw allow <ssh port> # ssh
$ sudo ufw default deny # デフォルトでは全部拒否
$ sudo ufw enable
確認。
$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
<ssh port> ALLOW IN Anywhere
<ssh port> (v6) ALLOW IN Anywhere (v6)
IPv6の設定
ConoHa VPSには、サーバごとに17個のIPv6アドレスが振られている。
しかし、Ubuntu18.04イメージで作成したイメージにはIPv4アドレスのみが割り当てられている。
IPv6でアクセスしたいのでIPv6アドレスも割り当てる。
network:
ethernets:
eth0:
- addresses: []
+ addresses:
+ - <ipv6_address>/64
dhcp4: true
dhcp6: false
accept-ra: false
optional: true
+ gateway6: <gateway_address>
version: 2
上記のように変更、あるいは11以上のプレフィックスのついたyamlを作って上記のように入れて設定を上書きする(e.g., /etc/netplan/20-mynetwork.yaml
)。そして以下を実行して反映。
$ sudo netplan apply
ホスト名変更
/etc/hosts
と/etc/hostname
が食い違ってるので、
/etc/hosts
127.0.0.1 conoha
/etc/hostname
conoha
みたいにしておく。
NTPはもう入れない
もうNTPサーバを立てる必要もなさそう。Ubuntuではsystemd-timesyncd
が動いているので勝手に時刻同期してくれるようだ。
こんな感じで同期している。
$ timedatectl status
Local time: Tue 2020-03-17 17:37:26 JST
Universal time: Tue 2020-03-17 08:37:26 UTC
RTC time: Tue 2020-03-17 08:37:27
Time zone: Japan (JST, +0900)
System clock synchronized: yes
systemd-timesyncd.service active: yes
RTC in local TZ: no
Docker
サーバは全部Dockerで動かす所存。
リポジトリの設定
$ sudo apt-get update;
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - # DockerのGPG鍵を導入
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable" # リポジトリ追加
Docker Community Editionの導入
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
$ sudo docker run hello-world # 動作確認
作った一般ユーザでDockerが利用できるようにしておく
sudo usermod -aG docker <new user>
Docker Composeの導入
$ sudo curl -L https://github.com/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# これ書いてる時点では1.25.4が最新。状況はgithubをチェック。 https://github.com/docker/compose/releases
$ sudo chmod +x /usr/local/bin/docker-compose # 実行権限付与
$ docker-compose --version # チェック
docker-compose version 1.25.4, build 8d51620a
参考:
Get Docker CE for Ubuntu
Install Docker Compose
Logwatchでgmail宛にログを投げる。
念のため。
$ sudo apt-get install logwatch
$ sudo cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/
gmail宛に編集。
- MailTo = root
+ MailTo = xxx@gmail.com
以下の記事を使って、さくらのメールサーバをリレーサーバとし、postfixからgmailへ送るようにする。