Skip to content

Instantly share code, notes, and snippets.

@t-okkn
Last active February 13, 2021 14:46
Show Gist options
  • Save t-okkn/d8776c3bb3231315606272c1745d3aca to your computer and use it in GitHub Desktop.
Save t-okkn/d8776c3bb3231315606272c1745d3aca to your computer and use it in GitHub Desktop.
Ubuntu Server をインストールする手順です

Ubuntu Serverインストール手順

■前提

Ubuntu Server 18.04にて検証した手順です。
※「{{ }}」にて囲まれている部分は変数を表します(Jinja2などのテンプレートエンジンでもレンダリング可能なようにしてあります)。

■初期インストール

【コンソール】に表示される案内に沿ってインストールを実施していきます。
※バージョンによって変わる可能性があります。

  1. Install Ubuntu Server を選択(自動で選択される)
  2. 言語を選択(この時点ではEnglishを選択)
  3. キーボードレイアウトを選択(Japaneseを選択)
  4. Install Ubuntuを選択
  5. ネットワーク設定を行う(この時点ではDHCPにして素通りが良い)
  6. プロキシサーバの設定を行う(なければDoneで)
  7. ミラーサーバを日本に変更(http://jp.archive.ubuntu.com/ubuntu/)
  8. インストール先のディスクの設定を実施(基本的には全領域をext4でフォーマット)
  9. アカウントプロフィールの設定
  10. SSH Serverをインストールするにチェックを入れる
  11. その他必要なサーバについてチェックを入れてインストールを行う

インストール完了後、Bootディスクを抜いて再起動を実施

■ローカルディスクから起動後

  1. 【コンソール】インストール時に設定したユーザーとしてログインする

  2. 【コンソール】「ip a」にてIPアドレスを確認する

  3. 他の端末からrootユーザーでSSH接続を行う
    ※このとき、「ip a」で確認したIPアドレスで接続する
     他の端末におけるSSH接続方法は割愛

  4. パスワードを変更する

    $ passwd {{ Username }}
    $ sudo passwd root
    
  5. rootに昇格する

    $ su -
    
  6. sudoersを編集する

    # visudo
    =====
    -#Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
    +Defaults env_keep += "PATH"
    +Defaults env_keep += "HOME"
    
    +Defaults timestamp_timeout=30
    =====
    
  7. IPアドレスを設定する

    # ip a
    
    # /etc/netplan/80-default-netcfg.yaml
    +++++ DHCPの場合 +++++
    =====
    network:
        ethernets:
            {{ NICName }}:
                dhcp4: true
        version: 2
    =====
    
    +++++ 固定の場合 +++++
    =====
    network:
        ethernets:
            {{ NICName }}:
                addresses:
                - {{ IPAddress }}/{{ MaskBit }}
                gateway4: {{ DefaultGateway }}
                dhcp4: false
        version: 2
    =====
    
  8. 必要なモジュールのインストール

    # apt update
    # apt upgrade
    # apt install build-essential language-pack-ja console-data asp traceroute python3-pip fonts-ipafont dkms zsh bc
    
  9. タイムゾーンの設定

    # timedatectl set-timezone 'Asia/Tokyo'
    # timedatectl status
    
  10. ホストネームの追加設定

    # sed -i -r -e 's/^(127\.0\.0\.1.*)localhost(.*)$/\1localhost\t{{ Hostname }}\2/' -e 's/^(::1.*)localhost6(.*)$/\1localhost6\t{{ Hostname }}\2/' /etc/hosts
    
  11. ログインシェルをzshに変更する

    # chsh -s /bin/zsh root
    # chsh -s /bin/zsh {{ Username }}
    
  12. 「nano」をアンインストールして、「vim」にリンクを貼る

    # apt purge nano
    # ln -s /usr/bin/vim /bin/nano
    
  13. DNSサーバの設定を行う
    複数のIPを記載する際は半角空白区切り

    # sed -i -r 's/^#DNS=$/DNS={{ DNSServer }}/' /etc/systemd/resolved.conf
    
  14. systemd-resolvedの有効化と再起動

    # systemctl enable systemd-resolved
    # systemctl restart systemd-resolved
    
  15. [/etc/resolv.conf] をsystemd-resolved側の設定にする

    # rm /etc/resolv.conf
    # ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
    
  16. systemd-timesyncdの設定

    # sed -i -r -e 's/^#NTP=/NTP=ntp.jst.mfeed.ad.jp time.cloudflare.com/' -e 's/^#FallbackNTP=.*$/FallbackNTP=0.jp.pool.ntp.org 1.jp.pool.ntp.org 2.jp.pool.ntp.org 3.jp.pool.ntp.org/' /etc/systemd/timesyncd.conf
    
  17. systemd-timesyncdの有効化

    # timedatectl set-ntp true
    
  18. sshdの設定

    # sed -i -r -e 's/^#(Port )22$/\1{{ SSHPort }}/' -e 's/^#(PermitRootLogin ).*$/\1no/' -e 's/^#(PermitEmptyPasswords no)$/\1/' /etc/ssh/sshd_config
    # echo -e "\n#For Judgement of Cascade Proxy\nAcceptEnv SOURCE_SSH_CONNECTION" >> /etc/ssh/sshd_config
    
  19. ufwの設定

    # ufw default deny
    # ufw limit from {{ NetworkAddress }}/{{ MaskBit }} to any port {{ SSHPort }} proto tcp
    # ufw enable
    
  20. ufwの設定の確認

    # ufw status
    
  21. ufwの有効化

    # systemctl enable ufw
    
  22. SSDの自動trimデーモンの有効化と起動

    # systemctl enable --now fstrim.timer
    
  23. systemd-timesyncdの状態確認

    # timedatectl status
    
  24. systemctlのserviceの状態を確認

    # systemctl list-units --type=service | less
    
  25. 再起動

    # reboot
    
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment