0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ConoHa VPS (ubuntu 24.04) 初期設定メモ

0
Last updated at Posted at 2026-02-08

重い腰を上げて、ConoHa VPS v2.0からv3.0への移行を進めることにした。GMOさん的には、あんまり移行促進させる気はないように思われるが、v2.0は料金・性能的にも微妙なので、v3.0に移行することにした。この記事の更新の位置づけ。

半年程度をかけて5ノードをv2.0からv3.0へ移行を進めた。その際に、以下の悩みや課題が発生した。結果的にはv2.0のままノードを残すことを選択しても良かったかもしれない。

  • 強烈な帯域制限:
    v2.0ノードからv3.0ノードへ、5GB程度のデータを考えなしにscpでデータを移行させてしまったところ、v3.0ノードの全てが256kbpsに帯域制限されてしまった。解除されるまでに数日かかり、その間はひどいパケットロスにより、すべてのノードがほぼ利用不可能となってしまった。他のユーザに影響ある可能性があるとはいえ、移行直後の制限は相当に厳しく、他のノードまで巻き込む制限は強烈。現状ではネットワークを強化し、制限を見直したらしい。

  • v2.0との契約形態の違い:
    v2.0では「基本は時間課金・前払いで一定期間分を支払うことで割安になる」(VPS割引きっぷ)という形態だった。さらにきっぷは自由にノード間で付け替えることが可能だった。一方でv3.0では「VPSは月額課金が基本で、時間課金はオプション的に用意されている」という形態に変わっている。この月額課金を一定期間分まとめて支払うことで割引が効く(まとめトク)ものの、VPSを削除すると他のノードへの付け替えは不可能で、契約も消滅する。さらに自動更新を設定していないと、契約満了時に時間課金へ移行することなくVPS自身が削除される。まとめトク契約満了時には、VPSノード建て直し、あるいは自宅サーバや他のVPSサービスへの乗り換えが必須になりそう。

  • 契約変更やVPS追加の上限数:
    まとめトクの自動更新を有効にし、VPSの自動削除を防止しておきたいが、自動更新時の契約変更に何故か上限数が存在する。前述の契約形態の違いで、とりあえず自動更新時には1ヶ月で様子見しておきたいものの、その設定が弾かれる。また同様に、VPSノード自身も契約上限数があり、クーポンでの前払いであっても作成不可能エラーが出る。そのため、ことあるごとに上限数解除をお願いしなければならない。

ConoHa VPSの契約

お好きなプランのUbuntu 24.04を選択して契約。

  • Web管理画面からセキュリティグループをカスタム追加しておく
    • SSH用のTCP 50000番台ポート
    • HTTPS用のUDP 443番ポート
  • イメージタイプはOS。ubuntu 24.04を選択。

ドメインの設定

ドメイン管理はCloudflareで保持。

  • Cloudflare管理画面から、当該ドメイン名のアドレスを変える。
  • ConoHaのサーバ管理画面で、逆引きホスト名として当該ドメイン名を入れておく。念のため。

セキュリティ周りの初期設定

ユーザ作成

管理画面からrootでシェルログインをしてユーザ作成、sudoersに追加、ssh鍵の設定、viで適当に新しいユーザの公開鍵をコピペして登録、まで一気にやってしまう。

# root
adduser <new user>
usermod -aG sudo <new user>
su <new user>

# new user
$ mkdir ~/.ssh
$ touch ~/.ssh/authorized_keys
$ vi ~/.ssh/authorized_keys

SSH

SSHのポート変更

# systemdのsocket設定をオーバーライドしてポート変更
$ sudo systemctl edit ssh.socket
+ [Socket]
+ ListenStream=
+ ListenStream=0.0.0.0:59978
+ ListenStream=[::]:59978

/etc/ssh/sshd_configをいじってRoot/Passwordログインを禁止、公開鍵ログインのみとする。

- PermitRootLogin yes
+ PermitRootLogin no

- PubkeyAuthentication no
+ PubkeyAuthentication yes #公開鍵ログイン

- PasswordAuthentication yes
+ PasswordAuthentication no

- # PermitEmptyPasswords no
+ PermitEmptyPasswords no

- # AllowAgentForwarding yes
+ AllowAgentForwarding yes

/etc/ssh/sshd_config.d/50-cloud-init.confにも同様の設定があるので、そちらも修正しておく。(このファイルのようにオーバーライド用の設定ファイルを作るべきではあるが。。。)

- PasswordAuthentication yes
+ PasswordAuthentication no
# ssh再起動
$ sudo /etc/init.d/ssh restart

iptablesの設定

ufwで楽をする。Port 80/443などはdockerが勝手に空けてくれるのでわざわざ空けなくてよろしい。

# ssh
$ sudo ufw allow <ssh port>/tcp
# デフォルトでは全部拒否
$ 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>/tcp             ALLOW IN    Anywhere
<ssh port>/tcp (v6)        ALLOW IN    Anywhere (v6)

IPv6の設定は特に不要

ConoHa VPSには、サーバごとに1つのIPv4アドレス、17個のIPv6アドレスが振られている。数年前と違って、自動でIPv4アドレス・IPv6代表アドレスがサーバのeth0に割り当てられるようになっている。netplanをいじる必要はない。

NTPはもう入れない

もうNTPサーバを立てる必要もなさそう。Ubuntuではsystemd-timesyncdが動いているので勝手に時刻同期してくれるようだ。

こんな感じで同期している。

$ timedatectl status
               Local time: Sun 2026-02-08 16:40:07 JST
           Universal time: Sun 2026-02-08 07:40:07 UTC
                 RTC time: Sun 2026-02-08 07:40:07
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: n/a
          RTC in local TZ: no

Docker

いつも通りサーバは全部Dockerで動かす。公式ドキュメントに従ってdockerを導入。

リポジトリの設定

# コンフリクトしたパッケージの削除
$ sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc | cut -f1)

# Docker GPG Keyの追加
$ sudo apt update &&\
  sudo apt install ca-certificates curl &&\
  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

# APTソースの追加
$ sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF

# パッケージリストの更新
$ sudo apt update

Docker Community Editionの導入

# Docker CEのインストール
$ sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 作った一般ユーザでDockerが利用できるようにしておく
$ sudo usermod -aG docker <new user>

# インストール確認 (再ログイン後に実行)
$ docker run hello-world

Docker Composeの導入は不要

docker本体に統合されたので、別途導入は不要。

IPv6対応

こちらの記事を参考にDockerのIPv6対応をしておく。

  1. /etc/docker/daemon.jsonを作成・編集
/etc/docker/daemon.json
{
  "ipv6": true,
  "ip6tables": true,
  "userland-proxy": false,
  "fixed-cidr-v6": "fd00:ace:cafe:beaf::/80"
}
  1. Docker再起動
$ sudo systemctl stop docker.socket &&\
 sudo systemctl stop docker &&\
 sudo systemctl start docker
  1. 確認
$ docker network inspect bridge | grep IPv6
        "EnableIPv6": true,
$ ip addr show docker0 |grep inet6
  inet6 fd00:ace:cafe:beaf::1/80 scope global nodad
  inet6 fe80::53:9dff:fe88:b3be/64 scope link

/etc/sysctl.confは編集不要。勝手にnet.ipv6.conf.all.forwarding = 1 が立っている。

Logwatchでメールで監視ログを投げる

念のため。

$ sudo apt install logwatch
$ sudo cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/

/etc/logwatch/conf/logwatch.confを自分のアドレス宛に編集。

- MailTo = root
+ MailTo = xxx@example.com

Postfixのリレー設定の記事を使って、さくらのメールサーバをリレーサーバとし、postfixから自分のアドレスへログメールを送るようにする。

/etc/postfix/main.cfを編集。

+ mydomain = conoha.example.com

- myorigin = /etc/mailname
+ myorigin = $mydomain

- append_dot_mydomain = no
+ append_dot_mydomain = yes

- smtpd_tls_security_level=may
+ smtpd_tls_security_level=yes

+ # For sasl authentication
+ smtp_sasl_auth_enable = yes
+ smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
+ smtp_sasl_mechanism_filter = cram-md5, plain, login
+ smtp_sasl_tls_security_options = noanonymous, noplaintext

- mydestination = $myhostname, conoha, localhost.localdomain, , localhost
+ mydestination = $myhostname, localhost.localdomain, localhost.$mydomain, localhost.localdomain, localhost, $mydomain

- relayhost =
+ relayhost = [example.sakura.ne.jp]:587

- inet_interfaces = all
+ inet_interfaces = 127.0.0.1

/etc/postfix/sasl_passwdを作成。

/etc/postfix/sasl_passwd
example.sakura.ne.jp noreply@example.sakura.ne.jp:<password>

Postmapデータベースを作成し、postfixを再起動。

$ sudo postmap /etc/postfix/sasl_passwd
$ sudo systemctl restart postfix

最後に動作確認。

$ sudo /etc/cron.daily/00logwatch
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?