画像そのまんまなんですが、
Search Consoleに新しいドメインを追加したんですが、「トラフィックの処理が完了していません。」とか出て何も表示されなくて困りました。
結論
数日〜1週間くらい待てばいいらしいです。
検索ログは残ってるだろうしすぐ反映してくれるのかと思ったんですがそういうわけでもないようです。
気長に待ちましょう。
タイトルそのままです。
自宅サーバの思い出 Advent Calendar 2016の13日目の記事です。
ボタンを押せば希望のスペックのサーバが降ってきて、IPアドレスも付いていて、設定すればアプリケーションもデプロイされて、クラウドは 刺せばIPアドレスが降ってくる
どころの話じゃない。
仕事とかで使う分には本当に楽で良いんだけど、やはり家にサーバがないのは寂しい。
サーバとして使ってるやつとネットワーク機器
今持っているものはこんな感じ。
大学1年生の時に大学の授業とかで初めてサーバにsshでログインして、自分も家で触りたくなったのがきっかけだったような。
当時は自分のものはWindowsのノートPCしか持っていなくて、Linuxのサーバというのはとにかくかっこいい気がしていて、Apacheの It Works!
が出るまでのところを自分でやってみたかった。
家族用に自作したPCの予備でHDDは持っていたのと、ノートPCのメモリを載せ替えた余りのメモリがあったので新たに買ったのはマザーボードとPCケースだけ。 安くて消費電力が低いやつを探していたのでAtomD525が載っているマザーボードにした。
VMでUbuntuのインストールはやった事があったので、インストール作業自体はそんなに手間取らなかった。
sudo apt-get install apache
とか打って、Apacheを入れるのもあっさりできて感動した。
家の中でApacheが見られるようになって、今度は家の外からアクセスできるようにしたくなった。
ググると、 ポート解放
なる作業が必要らしい。
ポート解放するためにはルータにブラウザでアクセスして、何か設定が必要だという。
たいていは 192.168.0.1
とかにアクセスすると認証画面が出ると書いてあったけれど、アクセスしても繋がらないというエラーしか出ない。困った。
サーバのIPアドレスを確認しても、 192
で始まっていないし、 12x.xxx.xxx.xxx
みたいに見たことない数字で始まっている。(ここで気づくべきだった)
ネットワーク勉強したことないからよくわからん、Wi-Fiの設定だけで2日掛かったしやっぱダメかと思いつつ、先程のIPを大学から打ってみた。
すると…
キタ━━━━(゚∀゚)━━━━!! なんと繋がってしまった。そう、後に知ったけれど自宅にプライベートIPなんてものはなくて、グローバルIPが直接降ってきていたのだった。
今だから分かることだけれど、実は家の回線は集合住宅向けのネット接続サービスだった。
最初から用意されているので、家にモデムを置いたこともなければ、そもそもルータなんてものはなかった。
あったのはスイッチングハブだけで、1戸あたり /29
のグローバルIPが降ってきていた。
NATもファイアウォールもなしに一般家庭のPCがグローバルIPを持っているのは大丈夫なのか…?
楽言えば楽だし複数IP使えるのは嬉しいけど、このせいでNATとかプライベートIPとかグローバルIPの概念が全然理解できなかった。
家にサーバを置いて、用もなく外からsshしていると間違えてシャットダウンさせたり、NICの設定を間違えて疎通を取れなくしてしまったりトラブルはちょくちょく起こしていて、その度に色々と勉強になった。
そのうちホストの環境はあんまり汚したくないと思うようになって、KVMの事も調べてみたけれどCPUがAtom D525という貧弱な環境ではつらくて、そんなにお金ないしなぁと思っていたところに出会ったのがLXCだった。
自宅サーバ、LXC使って仮想化してみたい。
— くろさん (@kuro_m88) June 23, 2014
— くろさん (@kuro_m88) June 24, 2014
LXCはLinuxのコンテナ技術で、ネットワークとかディスクのリソースを隔離してくれるのでコンテナ型のVMのような雰囲気で使える。
非力な自宅サーバでもlxcのおかげで超軽量な仮想化が使えるようになって、用途ごとにサーバ立てたりできるようになったので素晴らしい。ユーザ権限でコンテナが動かせるのもよい。
— くろさん (@kuro_m88) July 30, 2014
いつから使い始めたかわからないけど2015年の8月には使い始めていた模様。
最新版でLXDでライブマイグレーションできた。検証に3時間半くらいかかっちゃった。
— くろさん (@kuro_m88) August 8, 2015
fit-PC2は社会人になってから手にいれたけれど、32bit CPUでLXCを使おうにも64bitマシンとバイナリが違って不便だし、ファイル転送するとNICが熱を持って死んでしまって通信できなくなるので疎通監視くらいにしか使えなかったのでIntelのNUCを買った。 Intel NUCは小さくて消費電力も低くて、音も耳を近づけないと聞こえないくらいだけどLXDでいくつかホストを常時起動しておくくらいなら十分な性能。
ネットワーク系の友達にルータ(NEC IX2005)を貰ってしまい、わけもわからず使い方をググっていたり教えて貰ううちにVPNが張れるようになり、気がついたら5人くらいの家とVPNしていて、BGPで経路が勝手に流れてくるようになっていた。 JuniperのSRX300とか欲しくなってきたし、タダより怖いものはない。
最近CiscoのAironetも中古品を買ってしまった。
友達とかの繋がりで、データセンタに個人のサーバを置かせて貰えるかもしれないという話が舞い降りてきた。 ただ、肝心のラックマウントサーバを持っていないのでそれに向けてヤフオクでよさげなサーバを探している。
1UでCPUが6〜8コア 12〜16スレッド、メモリが32GBくらい、HDDが1TB x 2、NICは2本以上のスペックでいいやつが見つかるといいなぁ。
突然自宅を飛び出してDCにサーバを設置することになったけれど、NUC1個くらいは静かだし家で飼っておきたい。
さくらのクラウドでインスタンスを立ててLXDを使った検証をしていて、とりあえずディスクを20GBにして使っていたら気がついたらディスクの空きがなくなってしまい、検証をある程度進めていてインスタンス作り直して手動で構築しなおすのも面倒だったのでディスク拡張をやってみました。
OSはUbuntu16.04で、ファイルシステムはext4です。
$ df -h Filesystem Size Used Avail Use% Mounted on udev 983M 0 983M 0% /dev tmpfs 201M 8.4M 192M 5% /run /dev/vda3 16G 16G 0 100% / tmpfs 1001M 0 1001M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 1001M 0 1001M 0% /sys/fs/cgroup
/dev/vda3
が空きがないのが見てわかります。LXD用のzfsイメージのサイズを大きく割当すぎたのが原因でした。
この時最悪だったのが、適当にコマンドを打つとそのコマンドが刺さって応答がなくなってしまうようになったことでした…。
シャットダウンしないと操作できないので一旦シャットダウンします。
ディスク一覧より、新しいディスクを作成します。
この時、空のディスクを作るのではなく、ディスクのソースに20GBの元のディスクを指定します。 こうすることで元のディスクの内容が新しいディスクにクローンされます。
ステータスが完了になるまで(コピーが完了するまで)待ちましょう。
停止させたサーバから元のディスクを取り外します。
停止させたサーバに新しいディスクを接続します。
新しいディスクが接続できたら、サーバを起動します。
この状態ではまだファイルシステム上はディスクは拡張されていませんし、 df -h
してもリサイズ後のサイズで認識されていません。
$ df -h Filesystem Size Used Avail Use% Mounted on udev 983M 0 983M 0% /dev tmpfs 201M 11M 190M 6% /run /dev/vda3 16G 16G 0 100% / tmpfs 1001M 0 1001M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 1001M 0 1001M 0% /sys/fs/cgroup
parted -l
コマンドでパーティションを確認しますが、この時に拡張済のディスクのサイズとGPT上のディスクのサイズが違う事をpartedが検知してくれるので、ここで修正を行います。
$ sudo parted -l Warning: Not all of the space available to /dev/vda appears to be used, you can fix the GPT to use all of the space (an extra 41943040 blocks) or continue with the current setting? Fix/Ignore? Fix Model: Virtio Block Device (virtblk) Disk /dev/vda: 42.9GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 2097kB 1049kB bios_grub 2 2097kB 4297MB 4295MB linux-swap(v1) 3 4297MB 21.5GB 17.2GB ext4
修正ができたら、 /dev/vda
(接続したディスクの名前) のパーティションサイズを変更します。
$ sudo parted /dev/vda GNU Parted 3.2 Using /dev/vda Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) p Model: Virtio Block Device (virtblk) Disk /dev/vda: 42.9GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 2097kB 1049kB bios_grub 2 2097kB 4297MB 4295MB linux-swap(v1) 3 4297MB 21.5GB 17.2GB ext4 (parted) resizepart 3 Warning: Partition /dev/vda3 is being used. Are you sure you want to continue? Yes/No? Yes End? [21.5GB]? 42.9GB (parted) p Model: Virtio Block Device (virtblk) Disk /dev/vda: 42.9GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 2097kB 1049kB bios_grub 2 2097kB 4297MB 4295MB linux-swap(v1) 3 4297MB 42.9GB 38.6GB ext4 (parted) Information: You may need to update /etc/fstab.
パーティションの拡張ができました。
次はファイルシステムの拡張です。 resize2fs
コマンドがよしなにやってくれます。
$ sudo resize2fs /dev/vda3 resize2fs 1.42.13 (17-May-2015) Filesystem at /dev/vda3 is mounted on /; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 3 The filesystem on /dev/vda3 is now 9424544 (4k) blocks long.
最後に確認をします。
$ df -h Filesystem Size Used Avail Use% Mounted on udev 983M 0 983M 0% /dev tmpfs 201M 14M 187M 7% /run /dev/vda3 36G 16G 19G 47% / tmpfs 1001M 0 1001M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 1001M 0 1001M 0% /sys/fs/cgroup
拡張できたようです。めでたしめでたし。
前佛さんに自動ディスク容量拡張機能について教えて頂きました!
@kuro_m88 こんにちは、記事を拝見しました! アーカイブ作成時に「@size-extendable」というタグを付けておけば、自動でディスク容量を拡張できます。よろしければ次回からお使い下さい。詳しくはこちらの記事もどうぞ>https://t.co/fNoaJSuBED
— 前佛雅人@さくらインターネット (@zembutsu_works) 2016年12月9日
さくらのクラウドに実装されている「ディスクの修正」機能に対応したパブリックアーカイブのOS
から起動した場合にこの機能が使えるようです。
この機能があればサーバ上での作業が減って楽できますね!
最近調布技研という団体のDNSのネームサーバーをCloudflareに変えてみた。 Cloudflareは無料でAPIつきのネームサーバーとCDNが使えてとても便利そうだったので。
APIつきのネームサーバーが使えるようになったので、レコード管理 & 反映の自動化をやってみた。
管理するために作ったのがこちら。
TerraformにCloudflareのproviderがあったので、これを使ってレコード設定を記述するようにした。
Provider: Cloudflare - Terraform by HashiCorp
variable "cloudflare_email" { description = "cloudflare email" } variable "cloudflare_apikey" { description = "cloudflare api key" } provider "cloudflare" { email = "${var.cloudflare_email}" token = "${var.cloudflare_apikey}" }
上記がTerraformのCloudflare providerを使うために必要な設定で、CloudflareのAPIキーをここに書いても動くけど、publicなリポジトリなので実行時に環境変数で渡すことにした。
resource "cloudflare_record" "chofu_tech_A" { domain = "chofu.tech" name = "chofu.tech" value = "151.101.100.133" type = "A" } resource "cloudflare_record" "www_chofu_tech_A" { domain = "chofu.tech" name = "www.chofu.tech" value = "151.101.100.133" type = "A" }
こんな感じでレコードを列挙していく。ただのテキストファイルなのでこれでプルリクベースで管理できるようになった。
プルリクのマージ後に自動で実行するためのツールとしてCircleCIを使った。
CircleCIは実行時に渡す環境変数が設定できて、その環境変数は外部から読めないようにできるのでAPIキーを隠しておきたい場合に便利。
TF_VAR_cloudflare_email = "hoge@example.com" TF_VAR_cloudflare_apikey = "hogehoge"
環境変数はこの2つを設定しておいた。 TF_VAR_
で始まる環境変数はTerraform内のパラメータとして使える。
あとは、CircleCIの設定ファイルに master
ブランチに変更があった場合は terraform plan
のみ実行(反映はされない)、 production
ブランチに変更があった場合は terraform apply
を実行(実際に反映される) されるようにして反映が自動で行われるようにした。
chofutech-public-dns-record/circle.yml at master · chofutech/chofutech-public-dns-record · GitHub
これでしばらく運用してみて便利そうだったら自分のドメインもこんな感じで管理してみようかなと思う。