Ubuntu Server 16.04 LTS でネットワーク内でSSHで接続できる自作サーバーを構築する

自作サーバーの構築はSSHで接続できさえすれば後は慣れた環境からサクサクできるので、今回はSSHで接続できるサーバーを構築するまでをまとめたいと思います。

Ubuntu Serverのインストールディスクの作成

Download Ubuntu ServerよりUbuntu Server 16.04.4 LTSのisoをダウンロードし、ディスクイメージに変換する。

hdiutil convert -format UDRW -o ~/Downloads/ubuntu.img ~/Downloads/ubuntu-16.04.4-server-amd64.iso

dmgという拡張子になるのでubuntu.imgにする。

mv ubuntu.img.dmg ubuntu.img

その後適当なUSBメモリかディスクなどをMacに繋いでdiskutil listで確認する。

$ diskutil list
/dev/disk0 (internal):
#:                       TYPE NAME                    SIZE       IDENTIFIER
0:      GUID_partition_scheme                         500.3 GB   disk0
1:                        EFI EFI                     314.6 MB   disk0s1
2:                 Apple_APFS Container disk1         500.0 GB   disk0s2
/dev/disk1 (synthesized):
#:                       TYPE NAME                    SIZE       IDENTIFIER
0:      APFS Container Scheme -                      +500.0 GB   disk1
Physical Store disk0s2
1:                APFS Volume Macintosh HD            203.5 GB   disk1s1
2:                APFS Volume Preboot                 25.0 MB    disk1s2
3:                APFS Volume Recovery                509.8 MB   disk1s3
4:                APFS Volume VM                      7.9 GB     disk1s4
/dev/disk2 (external, physical):
#:                       TYPE NAME                    SIZE       IDENTIFIER
0:     Apple_partition_scheme                        *251.0 GB   disk2
1:        Apple_partition_map                         4.1 KB     disk2s1
2:                  Apple_HFS                         2.4 MB     disk2s2

/dev/disk2が先程接続したディスクだとわかったのでアンマウントする。

diskutil unMountDisk /dev/disk2

/dev/disk2にイメージを作成する。

sudo dd if=~/Downloads/ubuntu.img of=/dev/rdisk2 bs=1m

4秒で完了

$ sudo dd if=~/Downloads/ubuntu.img of=/dev/rdisk2 bs=1m
Password:
848+0 records in
848+0 records out
889192448 bytes transferred in 4.066715 secs (218651282 bytes/sec)

インストールメディアをCD-ROMとして認識させる

組み上げたマシンにUSBでインストールメディアを接続してブートで起動しUbuntuのインストールを開始する。この時下記のような画面になりインストールができなくなる。 CD-ROMでインストールしてないのだが、/cdrom を参照したいみたいなので、インストールメディアをマウントする必要がある。

IMG_1438.jpg

まず、Alt+F2でコンソールを開きログを流れるようにする。

tail -f /var/log/syslog

この状態でインストールメディアを外してから再接続するとなんていう名前でマウントされるか分かると思う。私の場合は[sdc]というメッセージが出てきたので/dev/sdcだということがわかったので、下記のようにして/dev/sdc1/cdromにマウントする。

mount -tiso9660 /dev/sdc1 /cdrom

これで再度CDの認識を行うとインストールが進められるようになる。ちなみに優先LANで繋いだ状態でインストールを行えばネットワークの設定をある程度やってくれるのでおすすめ。

文字化けを解消する

日本語でインストールした影響か、インストール直後は文字化けして何も見えないので、下記のような記述を.bashrcに行います。

case $TERM in
linux) LANG=C ;;
*) LANG=ja_JP.UTF-8 ;;
esac

編集が完了したら.bashrcを再読込みする。

source ~/.bashrc

apt install できるようにする

sudo apt install ssh-serverとかしてさっさと終わらせたい所だが、多分やると下記のようなエラーが出ると思う。

in the drive '/media/cdrom/' and press enter

これはリポジトリが設定されていないからなので設定する。

sudo vi /etc/apt/sources.list

下記のようにcdromから読み込もうとしていると思うので

deb cdrom:[Ubuntu-Server 16.04.4 LTS _Xenial Xerus_ - Release amd64 (20180228)]/ xenial main restricted

下記のようにインターネットに接続して取ってくるようにする。

# deb cdrom:[Ubuntu-Server 16.04.4 LTS _Xenial Xerus_ - Release amd64 (20180228)]/ xenial main restricted
deb http://ftp.jaist.ac.jp/pub/Linux/ubuntu xenial main restricted
deb-src http://ftp.jaist.ac.jp/pub/Linux/ubuntu xenial main restricted

こうすれば後はsudo apt updateとかしてインストールしてこれるようになる。

SSHサーバーを立ち上げる

SSHサーバーを立ち上げるにはインストールするだけで良い。

sudo apt install ssh-server

ポート変更するなど鍵などいろいろやりたいことはあるかもしれないけど、こんなのはSSHで接続して外部からやるほうがよっぽど早いので後回し。

Avahiで名前解決できるようにする

このままではシャットダウンして棚の上とかに持っていって再度ネットワークに接続する時にDHCPでIPアドレスが変わって面倒くさい(かといって固定IPにするのもIPの管理が面倒くさい)ので、Avahiで名前解決をしてコンピューター名で接続できるようにする。

sudo apt-get install avahi-daemon

avahi-deamonを起動する

sudo service start avahi-deamon

これでcomputername.localとかで接続できるようになった。これでリビングの机の上にあったコードだらけのサーバーをささっと自室のどこかに移動しちゃって、後はおしゃれなMacとかからSSHで接続してまったりと設定をしていけばOK。

おわり

外出先からの接続

あとは自宅からポートを開放して外から繋げるようにしてもいいだろうけど、そこに関してはここでは書かず別記事で書こうかなと思います。

電気代

自作サーバーは計測したところ一ヶ月電気代で500円くらい。あとは初期費用が8万。スペック的にはさくらのVPS 8G相当?

HDD 1TBとSSD 256GBを2枚積んでいる。HDDを外したら1W程度節電できた。SSDも1W程度だった。ただ2W節約したところで数十円だったので、それ払うだけで大容量のデータを保存できるなら別にいいかなってことで接続しっぱなし。

単純に楽しいからコスパはそこまで気にしなくてもOK

3年持てば良いとして、さくらのVPS 8Gクラスのサーバーが月々2700円くらいで使えるとすると嬉しい。加えてハードウェアについて学べたり、単純に趣味としてめちゃくちゃ楽しめる面もあるので、価格以上の価値があるのではないかと思う。(ちなみに今回はもともとあったデスクトップマシンを分解してパーツを流用しているので実費は2万くらいでした。)

停電時の対応

停電時はサーバーの起動が必要なんで、ずっと可動していてほしいような処理を行わせるマシンならUPSを付けてもいいかもしれない。安いのだと6,000円のがあった。3年使うとして月166円くらいコスト増しな感じ。長期出張とか旅行がある時は買ってもいいかもしれない。

参考

Ubuntuで/var/lib/dpkg/lock が取得できない場合の対処

Ubuntuで下記のようなエラーが出た

$ sudo apt upgrade
E: ロック /var/lib/dpkg/lock が取得できませんでした - open (11: リソースが一時的に利用できません)
E: 管理用ディレクトリ (/var/lib/dpkg/) をロックできません。これを使う別のプロセスが動いていませんか?

ディスプレイをUbuntuのマシンに接続してみたらGUIでアップデートのウィンドウが表示されていた。SSHで接続して作業していたので気づかなかった。

vimにおける「ゔぇえええ」とは

スクリーンショット 2018-03-21 13.15.51.png

Vimでノーマルモード(コマンドを打てる状態)になっている時、特定の単語を選択しようとvでビジュアルモードになってeで単語の末尾に移動しようと思ったら、日本語入力になっていて、びっくりして何度かeを連打してしまった時に表示される文字。

scpコマンドでファイルをリモートからダウンロードする

scpはSSHでファイルをやり取りできる。リモートからローカルにファイルをダウンロードにするには以下のようにする。左から右に行くと覚えると良い。

scp hoge:/path/to/file.txt ~/Downloads/file.txt

なのでローカルからリモートにファイルを送る場合は下記のようになる。

scp ~/Downloads/file.txt hoge:/path/to/file.txt

ディレクトリまるごとも可能。

scp -r hoge:/path/to/dir ~/Downloads/dir

おそらくscpを使いたい時ってサーバー上のログファイルを取ってきて解析したいって時が多いので、書いておきました。

Ubuntuでcrontabを編集する時のエディタを指定する

初回起動の時に設定することができるが、誤って違うエディタを設定したり、デフォルトのエディタでそのままOKしてしまった場合に変更するにはselect-editorで変更できる。

$ select-editor
Select an editor.  To change later, run 'select-editor'.
1. /bin/nano        <---- easiest
2. /usr/bin/vim.basic
3. /usr/bin/vim.tiny
4. /bin/ed
Choose 1-4 [1]: 2

Gitリモートリポジトリをシンプルに構築する

今まで一人で開発しているのにGithubの有料プランを使っていたんですが、プルリクエストとか別に個人では使わないし、なんならGithubも見に行ったりあまりしないので解約して、既にある自前のサーバーにリポジトリを立てることにしました。

サーバーの構築

適当に自宅や社内などにサーバーを作ります。既にあるならそこでも構いません。そのサーバーにはSSHの鍵で接続できるようにしておきます。

リモートリポジトリの作成

mkdir -p /path/to/hoge.git
cd /path/to/hoge.git
git --bare init --shared

ローカルリポジトリの設定

リモートリポジトリを設定する。既にGithubなどで運用していたリポジトリだと違うリモートリポジトリが設定されていると思うので.git/config内のファイルを開いて修正します。

git remote add origin host:/path/to/hoge.git

その後pushすればmasterブランチが反映されます。全てのブランチを反映したいなら適宜やる必要があるかと
思いますが、そこについては詳しくは調べていません。

git push origin master

メモ

Githubを解約したことで毎月1000円弱浮く。Gitlabなどを構築しようと思ったが、20分くらいDockerであれやこれや。。とやっていた所、なんだか面倒くさくなって原始的に管理することにしました。家庭内や社内にリポジトリある方が、セキュリティ面でもかなり安全だろうと思うので一石二鳥。

UbuntuでMacレベルに使いやすくておしゃれな環境構築

gnome.png

Ubuntuでデスクトップマシンを構築することにしました。開発サーバー用途なんですが、そのままでも触ることがあるので、なるべくMacに近いおしゃれなマシン構築を目指し上記のようなUIになりました。キーボードはUSキーボードです。

あれから結局想像を超えて快適かつ便利だったので、仕事用のノートPCもUbuntuにしました。Ubuntuで困ることは対応するソフトウェアが少ないと思うかもしれませんが、現代ではGoogle Chromeアプリとして出ているアプリも多く、Google Chromeを使っていればそれほど困りません。また、プリンタのようなものは思ったよりLinuxでもつながります。

また、Webエンジニアが懸念するPhotoshopですが、私も例外ではなくPhotoshopをよく触ります。しかし、Gimpを徹底的に勉強すればPhotoshopと遜色のない作業ができます。勉強といっても2〜3日いろいろ触っていれば基本的なことはすべてできます。

それにWindowsやMacに依存したアプリケーションがあって、それが必要なら、エンジニアならそれをクラウドで開発すればいいのです。不便ならもっと便利なものをクロスプラットフォームで作ってしまえば自由な世界が広がる!

インストール

何らかのメディアにUbuntuイメージを入れて、適当に用意したPCにブートで起動してインストールするだけでOK。この項目は今度時間ある時にガッツリ追記したいと思います。今回はUbuntuをインストールしてからについて書くことに注力しようかなと思います。

初期設定

Gitのインストール

このあと何かと使います

sudo apt install git

GTKテーマのインストール

GNOMEのテーマは気分で変えることが多いのでいろいろ入っていると便利なのでこちらを参考に一括インストールします。(参考サイトはデザインが崩れていて記事が消えるのが不安なので少し丁寧に手順をこちらでも解説します。)

git clone https://github.com/tliron/install-gnome-themes ~/install-gnome-themes

Rubyが必要みたいなのでインストール

sudo apt install ruby

リポジトリのインストール

~/install-gnome-themes/install-gnome-themes

追記: しばらく経ち、Ubuntu 18.10の時点で動作しないのと、そんなに気分でも変えない。後述のMateriaがおそらく最も美しいデザインなのであれだけを入れれば良いかなと思ったのでこちらは取り消しします。GNOME Tweaksは引き続きGUIでの設定で使うので入れておきましょう。

GNOME Tweakをインストールします

Screenshot from 2018-03-04 09-54-22.png

Tweaksとしてアプリケーションがインストールされるので検索して起動。すると外観タブからこんな感じで自由に変更できるようになります。

Screenshot from 2018-03-04 10-01-39.png

デザインをよりおしゃれにする

Ubuntuの使い勝手をできるだけMacに近づけるを参考にアイコンはPapirusを、アプリケーション外観にはMateria(旧Flat Plat)を使うことにしました。なんだかMacとは別の方向でとてもおしゃれになってしまいました(笑)

Papirusのインストール(アイコン)

sudo add-apt-repository ppa:papirus/papirus
sudo apt-get update
sudo apt-get install papirus-icon-theme

Materiaのインストール(アプリケーション外観)

ppa:dyatlov-igor/materia-themeを入れてインストール。

sudo add-apt-repository ppa:dyatlov-igor/materia-theme
sudo apt update
sudo apt install materia-theme

リポジトリを追加せずとも入れることができます。

sudo apt install materia-gtk-theme

公式

Paperは途中で断念

Paperというテーマがかなり人気なようなんでインストールしていっていたんですが、paper-gtk-theme がインストールできませんでした。なくなっちゃったのかな。それで今回は上記のPapirusとMateriaを使うことにしました。

USキーボードでの日本語入力

Ubuntuインストール時にUSキーボードを設定すれば多分普通にキーボードは使えるし、Mozcもインストールされているので日本語入力は問題ない。ただし、入力ソースの切り替えに難がある。

こちらを参考にMozcの直接入力とひらがな入力を切り替えるようにすると良いようだが、私の環境ではうまく切り替えることができなかった(ひらがな入力から直接入力へ戻れない)ので、Super+Spaceで入力ソースを切り替え、Ctrl+Spaceでは再起動時にMozcのひらがな入力への変更だけ(初回にひらなが入力に変更すると次の再起動まで固定されるみたいなので)に使用することにした。

CapsLockをESCキーに割り当てる

Vim使いはESCキーがCapsLockの位置にあるとはかどります。keyboard layout - How to permanently switch Caps Lock and Esc - Ask Ubuntuに書いてあった方法が参考になりました。本当に助かりました。

まずdconf-toolsをインストールします。

sudo apt install dconf-tools

名前が変わり現在はDConf EditorとしてGUIから入れられるようになっています。

Screenshot from 2019-01-12 09-54-54.png

次にdconfとアプリケーションを検索してdconf設定を開いたらcaps:swapescapexkb-optionsに入力します。このときシングルコーテーションを忘れないようにします。忘れると入力欄が赤くなり通知してくれます。

下記は18.04でのスクリーンショット。

Screenshot from 2018-03-04 09-32-52.png

下記は18.10でのスクリーンショット。

Screenshot from 2019-01-12 09-56-40.png

保存するとこんな感じになります。

Screenshot from 2018-03-04 09-29-59.png

フォントをきれいにしたい

Ubuntuフォントも十分きれいですが、個人的にはプログラミングについてはRictyが好きです。aptで入れられるので入れましょう。

sudo apt install -y fonts-roboto fonts-noto fonts-ricty-diminished

https://qiita.com/naoyoshinori/items/682780aeca39db6b1b79

LINEがしたい

Google Chromeの拡張機能で普通にできるようでした。

マウスホイールを逆にする

Macではマウスを上にコロコロするとコンテンツが下に移動します。WindowsやLinuxのデフォルトはマウスを上にコロコロするとコンテンツが上に移動すると思うんですが、Macと同じような操作感に揃えたいので変更します。なんと変更はOSの設定のナチュラルスクロールをONにすることで可能なようです。

Screenshot from 2018-03-04 10-37-41.png

MacからSSHで接続できるようにする

今回はMacはメイン機です。Ubuntuはサブ機として構築しています。そんな人はMacからUbuntuに接続して作業できるようにすると良いです。これにはSSHサーバーをインストールするだけでMacからssh user@pcname.localとして接続できるようになります。

sudo apt-get install openssh-server

複数の人間がアクセスするような社内ネットワークにデスクトップマシンを置く場合はパスワード認証をオフにして、鍵のみでの接続を許可するようにすると良いでしょう。これについては時間がある時に細かく追記します。

VPN経由での接続

VPS経由での接続の場合はhoge.localという形式では接続できないかもしれません。その場合は実際に割り当てられているIPを指定して接続するのが良いと思います。VPN経由での接続が多い人はUbuntuマシンに固定IPを振り、hostsで設定しておくのがおすすめ。固定IPを指定できない環境の場合は'

4Kディスプレイで接続

設定からGUIで100%や200%と設定できるが実際は150%が最適だと思う。これらを設定するにはCLIで下記のようにコマンドを実行する。ディスプレイ別に設定する方法については後ほど調査して追記します。

gsettings set org.gnome.desktop.interface text-scaling-factor 1.5

アプリケーションによってはOSのスケール設定に追従しない場合がありますが、それぞれの設定項目や設定ファイルに編集をする余地があることが多く今の所困っていません。サブ記事ではSpotifyの設定などもしていますのでご確認ください。

画像編集をする

UbuntuではAdobe PhotoShopは動きませんがGimpが動きます。

sudo apt install gimp
  • Spaceを押しながらマウスを動かすと移動ができ
  • Ctrlでスポイト
  • mでレイヤーを移動できる

あとはGimpは有名でしたが、最近Kritaという画像処理ソフトがあります。これはPhotoshopに動作がにていて、PSDファイルもかなりの精度で開けます。Gimpだと上手く開けないものがある時はこちらを試してみましょう。私は最近ではKritaだけ使ってます。

スクリーンショットの設定

スクリーンショットはWindowsと同じようにPrintScreenキーで撮影ができます。

ファイルはデフォルトではユーザーディレクトリ以下に保存されますが、保存先を変えるには下記のようにすると良いです。

gsettings set org.gnome.gnome-screenshot auto-save-directory "file:///home/$USER/Desktop/"

しかし最近ではこれだけではスクリーンショットの保存先が変更されません。これと一緒に既存のショートカットキーのスクリーンショットを無効(現在は無効にできなかったので適当な違うキーに割り当てて)一番下の追加ボタンから新しいショートカットキーを割り当てる作業が必要です。

無効にするには無効にしたいショートカットを選択してBackspaceキーで無効化できます。

Screenshot from 2019-01-11 13-18-02.png

そして一番したの+キーを押して独自のショートカットキーを追加します。

Screenshot from 2019-01-11 13-17-20.png

こんな感じに設定します。

Screenshot from 2019-01-11 13-17-08.png
Screenshot from 2019-01-11 13-17-05.png
Screenshot from 2019-01-11 13-17-00.png

好きなキーに割り当てればいいわけですが、Ubuntuはデフォルトで下記のような動作なので、同じようにショートカットを作成してあげればよいかと思います。

  • Alt+PrintScreenで現在のアクティブウィンドウのスクリーンショットを撮影
  • Shift+PrintScreenで範囲を指定してスクリーンショットを撮影

Ubuntu 18.04からUbuntu 18.10にアップグレードした場合などもリセットされるのでその都度この設定を行いましょう。

ターミナルのコピーとペーストについて

TerminalでCtrl+Cで出力をコピーしたくなるが、Ctrl+Cは処理のキャンセルと被る。いろいろ試行錯誤してもどこかで妥協しなければいけなくなるので、いっそのこと諦めている。

以前このように書きましたが、よくよく調べていたらCTRL+SHIFT+Cでコピー、CTRL+SHIFT+Vでペーストができましたのでほとんど苦労していません。デフォルトのターミナルが使いにくいので私はTerminatorを使っているんですが、それ限定だったらすみません。

音楽が聴きたい

MacではiTunesで音楽を聴いていた人は困るかもしれません。

Apple Music以外のサービスはクロスプラットホームに対応していることが多いので、この機会に乗り換えをおすすめします。自分の曲をアップロードして混ぜて聴きたいならGoogle Music、自分の曲は必要ないならSpotifyがおすすめです。SpotifyはnanoコマンドでGUIアプリケーションがインストールできるようになっています。サブ記事をご覧ください。

画面収録をしてMP4を生成したい

MacであればQuickTimeで画面収録ができますが、Ubuntuでこれを再現するにはSimpleScreenRecoderを使えば良いです。

sudo apt install simplescreenrecorder

参考: https://ry0.github.io/blog/2016/02/21/simplescreenrecorder/

画面収録をしてアニメーションGIFを作成したい

MacであればLICEcapというアプリケーションがありましたが、UbuntuではPeekがおすすめ。

sudo add-apt-repository ppa:peek-developers/stable
sudo apt update
sudo apt install peek

こんな感じで撮影できました

test.gif

https://github.com/phw/peek

動画編集がしたい

Shotcutを使えば良いです。Shotcutはクロスプラットホームで提供されている動画編集ソフトでほとんどのことが無料でできます。週に1度くらい2時間くらい動画編集をしているのですが、利用当初は突然落ちることがあったんですが、最近アップデートもしていないのになぜか安定してきました。snapでインストールできます。

sudo snap install shotcut --classic

https://shotcut.org/

サブ記事

一時期ここにリストでリンク追加していってたんですが、40記事くらいを超えて面倒になったので、私のUbuntuサブ記事の一覧へのリンクをおいておきます。

https://qiita.com/search?q=user%3Asetouchi+ubuntu

おわりの感想

思ったより使いやすいものができました。最近はGoogle Chromeでほとんどのことができるし、取引先も勤務先もGoogleクラウドを利用していることが増えてきたのでほぼ困らなくなってきました。画像処理や動画処理の時だけMacでいいかなって感じ。

ただLinuxはセキュリティソフトとかがないわけなので対外的な説明が難しい。セキュリティちゃんと入れてますよって言えば済むわけじゃないから。

デザインがあんまりにも美しくて可愛くて、サブマシンだったのにメインマシンにしたくなってしまって困っています。やっぱデスクトップ機だからいろいろと軽快に動作するし、想定を超えちゃってるから困っちゃいますね。。

課題

  • .vimrcなどについては後日追記予定
  • vino-preferenceでリモート接続できるようにしようとしたがグレー画面になりできない。様々な方法を試したができなかったので、後日トライ。