/
自宅サーバー設定手順書
自宅サーバーの設定手順書の覚書。
さくら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から侵入されることはない。
流れは
- クライアント側で秘密鍵と公開鍵を作る
- 公開鍵をサーバーに一旦置く
- サーバー上で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 (パスワード禁止。証明書の認証のみ)
$ 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側でやってるので。