🐏

Xserver VPSにDockerを導入する

2023/05/07に公開

目的

簡単なWebアプリを公開したくて、XserverのVPSを取得した。
ローカル環境でDockerを使って開発しているため、公開するVPSにもDockerを導入してコンテナ技術の恩恵を受けたい。
ということで、Docker導入のために行ったことを(自分用に)残しておく。

セットアップ環境

  • ローカル環境
    • Windows 10 Home
    • WSL2 Ubuntu 22.04
  • Xserver VPS
    • Ubuntu 22.04
    • SSH Key設定済(自動生成)
      Xserver_VPS
      Xserver申込内容

VPSにssh接続する

【前提】クライアント側での作業

  1. 公開鍵を取得する
    VPS申し込み時点で.pemをダウンロードできる(一度きり)
    Xserver_ssh_key
    公開鍵の取得
     
  2. Windows環境からUbuntu環境へ公開鍵を配置する
    Windowsエクスプローラから\wsl$\UbuntuでUbuntuディレクトリにアクセス可能
    公開鍵の配置先は、~/.ssh/配下が一般的
    Put_pub_key
    公開鍵の配置
    補足.~:Zone.Identifierファイル
    Windowsからファイルを配置すると、謎のファイルが併せて作成される。
    Zone_Identifier
    Zone.Identifier...?
    これはWindowsのファイルシステム「NTFS」にある 代替データストリーム という機能で自動的に作成されている。
    Ubuntuのファイルシステム「EXT4」ではフォローしていない機能のため、Ubuntu環境にコピーすると代替データストリームもモロ見えになる。
    ファイルシステムに依存するメタデータであるため、Ubuntu環境で利用する限りは削除して問題ない
  3. configファイルを作成する
    頻繁に実行するsshコマンドを楽にするために、ssh接続用のconfigファイルを作成する
    ファイル名はconfigとして~/.ssh/配下に配置するのが一般的
    cat << EOS >> ~/.ssh/config
    Host xvps-root # 任意の文字列
            HostName ***.***.***.*** # VPSのIPv4アドレス
            User root
            IdentityFile ~/.ssh/exsample-ssh-key.pem
    EOS
    
  4. VPSにssh接続する
    以降は以下のコマンドのみで接続可能。
    ssh xvps-root # configファイルのHost名
    
    ssh
    ssh接続できた

Docker Engine、Docker Composeのインストール

【前提】VPS側での作業、rootユーザ想定

  1. リポジトリ情報ファイル(~.sources)を配置する
    Dockerが公開しているaptリポジトリに接続するためのファイルを/etc/apt/sources.list.d/配下に作成する。
    ※aptリポジトリや接続ファイルなど基礎的なことについては コチラの記事 にまとめている。
    cat << EOS | sudo tee /etc/apt/sources.list.d/docker.sources > /dev/null
    Types: deb
    URIs: https://download.docker.com/linux/ubuntu
    Suites: $(lsb_release -cs)
    Components: stable
    Architectures: $(dpkg --print-architecture)
    Signed-By: 
    $(while read line; do echo " $line"; done < <(curl -fsSL https://download.docker.com/linux/ubuntu/gpg))
    EOS
    
  2. Docker Engine、Docker Composeのインストール
    Docker公式docより。
    sudo apt update
    sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    

管理ユーザの作成&設定

【前提】VPS側での作業、rootユーザ想定
rootユーザは常用するべきではないため、管理ユーザを作成する。

  1. 新規ユーザの作成
    sudo adduser ユーザ名 # 任意のユーザ名
    
    フルネーム以降は未入力(エンターキー連打)。
    Add_User
    ユーザ作成
  2. sudo、dockerのサブグループを追加
    sudo usermod -aG sudo,docker ユーザ名 #新規作成したユーザ名
    
  3. ssh用の公開鍵登録
    rootユーザの公開鍵を流用することにします。
    sudo install -m 700 -o ユーザ名 -g ユーザ名 -d /home/ユーザ名/.ssh # 新規作成したユーザ名
    sudo install -m 600 -o ユーザ名 -g ユーザ名 ~/.ssh/authorized_keys /home/ユーザ名/.ssh/authorized_keys # 新規作成したユーザ名
    
  4. 【クライアント側作業】configファイルを作成する
    クライアント側(WSL2 Ubuntu)のconfigファイルに新規ユーザの設定を追加
    cat << EOS >> ~/.ssh/config
    Host xvps # 任意の文字列
            HostName ***.***.***.*** # VPSのIPv4アドレス
            User ユーザ名 # 新規作成したユーザ名
            IdentityFile ~/.ssh/exsample-ssh-key.pem
    EOS
    

参考

代替データストリーム
https://www.wdic.org/w/TECH/代替データ ストリーム
ssh公開鍵のパーミッション
https://tech-blog.rakus.co.jp/entry/20210727/ssh#よくあるエラー
Linux installコマンド
https://linuxcommand.net/install/

Discussion