コンテンツにスキップ

Top

/

自宅サーバー設定手順書

自宅サーバーの設定手順書の覚書。

さくらVPSの時と違って、メールサーバーやNextcloudの設定はしない。
そもそもプロバイダ的に自宅サーバーOKなのかも微妙。
SSHとWebサーバー(SSL対応)の設定のみする。

1. ドメイン取得

お名前.comでドメインを取得する。
.work が安くて良い。更新料のことまで考えて取得すること。

最初 .online にしてたが、更新料が高くて.workに変更した。
その際のSSL証明書とかの設定変更が面倒だったし、SEO対策的にも損をした。

2. ダイナミックDNS設定

固定IPなど持ってるはずがないのでDDNSの設定をする。

2-1. Aレコード設定

まずはお名前.comにログインし、Aレコード設定を行う。

これをしないと、お名前.comダイナミックDNS(DDNS)クライアントを実行したときに、データベースでエラーが発生しましたというエラーが出て更新できない。

まぁ当然というか、すでにあるAレコードを更新するツールなのにそもそものAレコードがなければエラーになるわな、という感じ。

ネームサーバーの設定→DNS関連の設定を選び、ドメインを選んで次へ
DNSレコード設定を利用するの右側の「設定する」ボタンを押す
Aレコードの「追加」ボタンを押す
ちなみにこの時に設定する値はなんでもいい。127.0.0.1でもなんでも。
設定することが大事。そのうえで、クライアントツールを実行したら更新されるので大丈夫。
(逆に言うと速やかにクライアントツール使って更新しないといけないけど)

こんだけ。

2-2. IPアドレスの反映

DDNSは簡単に言うと、定期的に変わる自分のIPアドレスをDNS上に展開することで、擬似的に固定IPアドレスっぽく振る舞う方法。

お名前.comダイナミックDNS(DDNS)クライアントをダウンロード。
実行すると定期的に自分の外部からのIPアドレスを取得し、DNSに反映させる。

Linuxしかない場合はしらん。(DiCEというのがあるがもう長いことメンテもされてない。使うなら自己責任)

3. CentOS 7のインストール

DVDにCentOS7のisoを焼いてインストール。最初ソフトウェアの選択を何もしなかったので minimal でインストールしてしまって往生した。
結局、サーバー (GUI 使用) を選択して再インストール。

※自分用メモ
うちのvaioは電源入れて「assist」ボタンを押すことによってBIOSに進んだ。F2とかF11とか死ぬほど連打してた。

この時userも作っておく。ここでは便宜上、unkoとしておく。

3-1. unkoにsudo権限をつける

# usermod -aG wheel unko
(一旦ログアウトしないと反映されないので注意)

3-2. hostnameを変えておく

$ sudo hostnamectl set-hostname jitaku.work

とりあえずrebootとかちょいちょいすること。

3-3. yumのアップデート

インストールしたらとりあえずこれをやる。念の為再起動。

# yum update -y
# reboot

3-4. 勝手にスリープするの止める

ノートPCの蓋を閉じるとスリープしてしまうのでしないように設定を変更する。

# vi /etc/systemd/logind.conf

#HandleLidSwitch=suspend
↓
HandleLidSwitch=ignore

# systemctl restart systemd-logind.service

4. ssh設定

SSH設定は主に2点。

ひとつはrootでのアクセスを禁止する。(同時に、unkoからしかログイン出来ないようにする)
もうひとつは公開鍵認証(クライアント認証)設定をする。

さくらVPSの時はポート番号の変更をし、Firewallに穴も開けたが、自宅なので(ルーターをいじれるので)、ポートフォワーディング設定で外部からのポート番号を変更した。
やり方は割愛。Buffaloのルーターの説明を見て。

4-1. sshサービスの起動、停止

起動

# systemctl start  sshd.service
# systemctl enable sshd.service <= 1回だけ。これをしておかないと再起動した時にsshが有効にならない

停止

# systemctl stop  sshd.service
# systemctl disable sshd.service <= これをすると再起動後、sshが有効にならない

4-1. rootでのアクセスを禁止する

rootでssh出来ないようにする。と同時に、sshで入れるユーザーの制限もする。

# vi /etc/ssh/sshd_config

PermitRootLogin no <= (rootでのログイン禁止。コメント#を外して、yesをnoにする)
AllowUsers unko    <= (複数ユーザーを指定したい場合は、AllowUsers ユーザ名 ユーザ名 ユーザ名と後ろに続ける

4-2. 公開鍵認証(クライアント認証)設定をする

これをしておけばまぁまずsshから侵入されることはない。
流れは

  1. クライアント側で秘密鍵と公開鍵を作る
  2. 公開鍵をサーバーに一旦置く
  3. サーバー上でauthorized_keysに公開鍵を追記する

これだけ。
ただ、失敗すると外部からアクセスできなくなるので注意。(自宅サーバなのでそんなに心配でもないが)

クライアント側がLinuxだと簡単。Windowsの場合はTeraTermで。

4-2-1. クライアントがWindowsでの公開鍵認証設定

以下のサイトが非常に丁寧でわかりやすいので、以下参照。
公開鍵認証によるSSH接続 - Tera Termの使い方(https://webkaru.net/linux/tera-term-ssh-login-public-key/)

4-2-2. クライアントがLinuxでの公開鍵認証設定

クライアント側で秘密鍵と公開鍵を作る。

$ ssh-keygen -t rsa
~/.ssh/id_rsa     <= 秘密鍵
~/.ssh/id_rsa.pub <= 公開鍵

公開鍵(id_rsa.pub)をサーバー上のどこか適当なディレクトリにアップロード
サーバー側(CentOS)でクライアントの作成した公開鍵をauthorized_keysに追加する。
(権限変更を忘れないこと)

$ mkdir .ssh
$ chmod 700 .ssh/
$ cat id_rsa.pub >> .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys
$ rm id_rsa.pub

sshサービスを再起動

$ sudo systemctl restart sshd.service

4-3. パスワード認証を無効にする

公開鍵認証にしたのでパスワードで入れなくする。

$ sudo vi /etc/ssh/sshd_config

PasswordAuthentication no (パスワード禁止。証明書の認証のみ)
sshサービスを再起動

$ sudo systemctl restart sshd.service

5. Webサーバーの設定

外部からアクセスできるようにPort 80をルーターのポートフォワーディングしないといけないが割愛。
ルーターの説明書を見て設定する。

5-1. Apache

インストール

$ sudo yum update -y
$ sudo yum install -y httpd

設定(jitaku.work。wwwは付けないけど付けたければつければ良い。ただし、SSL証明書の時に気を付けること)

$ sudo vi /etc/httpd/conf/httpd.conf

ServerAdmin webadmin@jitaku.work <= 連絡先のメールアドレス。公開される可能性があるので公開されて良いアドレスを設定

ServerName jitaku.work:80

    Options FollowSymLinks

サービス起動

$ sudo systemctl start httpd.service
$ sudo systemctl enable httpd.service

Firewall設定

# firewall-cmd --permanent --add-service=http  --zone=public
# firewall-cmd --permanent --add-service=https --zone=public
# firewall-cmd --reload

ログイン確認 http://jitaku.workにログイン出来ることを確認。
(まだ、httpsでは入れない)

ログイン出来なかったらFirewall、ルーターの設定どちらかに問題がある。ので、そのあたりを確認。

5-2. SSL設定

注意!!
理由はわからないが自己署名証明書になってしまった。
原因かどうかわからないが、
/etc/httpd/conf.d/ssl.conf 内のデフォルトの記載に問題があるらしい。
別にいらないので、mvしておく。

# mv /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf.bak

5-2-1. Let's Encryptで電子証明書を発行

# yum install -y epel-release
# yum install -y certbot certbot-apache

証明書作成(Apacheの場合、いろんな設定をまとめてやってくれるのでこれが楽ちん)

# certbot run --apache -d jitaku.work

メールアドレス : webadmin@jitaku.work <= なんか合った時の連絡先
A <= メールアドレス公開してよいか確認
Y <= 忘れた。なんだったっけ?
2 <= httpアクセスをhttpsにリダイレクト

# systemctl restart httpd.service

5-2-2. Welcomeページを消す

Welcomeページを消しておく

# mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.bak
# touch /var/www/html/index.html
# systemctl restart httpd.service

5-2-3. 証明書の削除

証明書を作り直したい、ドメインを間違えた、などある場合は以下のコマンドで証明書を消せる。
が、再度証明書を作らないとApacheの設定上、起動できなくなるので注意。

# certbot revoke --cert-path /etc/letsencrypt/archive/jitaku.work/cert1.pem

5-3. 定期的な証明書の更新

Cronの設定

# systemctl list-timers <= 現状の確認
# systemctl enable --now certbot-renew.timer
# systemctl list-timers <= 確認

6. Samba設定

6-1. インストール

$ sudo yum install samba samba-client samba-common -y

6-2. 設定ファイル更新

$ sudo cp /etc/samba/smb.conf.example /etc/samba/smb.conf
$ sudo vi /etc/samba/smb.conf
追記

[Share]
path = /home/share/
browsable = yes
writable  = yes
read only = no
guest ok  = no

6-3. アクセスできるユーザの登録

すでに user というユーザーが存在しているとして、

$ sudo pdbedit -a -u user

とする。(居なければuseraddで作る)

アクセスできるユーザーの確認は、

$ sudo pdbedit -L -v

6-4. Firewall設定

$ sudo firewall-cmd --permanent --add-service=samba
$ sudo firewall-cmd --reload
$ sudo firewall-cmd --list-all

6-5. 共有ディレクトリ作成

$ sudo mkdir /home/share/
$ chown -R user:user /home/share
$ sudo chown -R user:user /home/share
$ sudo chmod 0777 /home/share/
$ chcon -t samba_share_t /home/share/

6-6. 再起動

$ sudo systemctl enable smb.service <= 最初だけ
$ sudo systemctl enable nmb.service <= 最初だけ
$ sudo systemctl restart smb.service
$ sudo systemctl restart nmb.service

その他

自宅サーバなんでこんなもん。
メールサーバー、ファイルサーバはさくらVPS側でやってるので。