Windows10上のVirtualBoxにUbuntuServer22.04をインストールし、snap版NextCloudにSSL化した外部ドメインから接続できるようになるまでの手順を備忘録として記しました。
多分回線速度にもよりますが、30分くらいで外部公開まで終わります。
おおまかな手順
- virtualboxをインストール
- ubuntuServerをインストール
- SSH接続(TeraTermインストール)
- IPv4固定
- ブラウザからNextCloudのアカウント作成
- Ubuntuのファイヤーウォールを設定
- myDNS(ダイナミックDNSに登録&無料ドメイン取得)
- ルーターのポート転送を設定
- UbuntuのNextCloudに無料ドメインを結びつける
- Let’s EncryptでSSL化
- おわり!!
大半はコマンドコピペするだけの簡単なおしごとです。
私と同様に構築するだけなら、Ubuntuに20回にも満たない回数コマンドをコピペするだけでOK!
私の環境は以下の通りです。
- Windows11(2022-04 x64ベースシステム用 Windows 11の累積更新プログラム (KB5012592)適用)
- VirtualBox 6.1
- Ubuntu Server 22.04 LTS
- Snap版nextcloud(その時点での安定版)
それでは以下手順の覚え書きです。
VirtualBoxをインストール→UbuntuServer22.04 LTSインストール
Ubuntu 22.04 LTS ServerをVirtualBoxにインストールする
おあつらえ向きの内容のサイトがあったので、↑のを参照してください。
仮想マシンのスペックはとりあえず
- CPU 1コア
- RAM 2048MB
- ストレージ 10GB(可変)
- ネットワーク ブリッジネットワークアダプター
ブリッジネットワークアダプターにしないと色々面倒です(経験談)
ストレージはクラウドとして酷使するなら当然相応のサイズ割り振ってください。
今回はお試しなので、10GB。この場合、クラウドに上げられる容量は5GB位だったと記憶しています。
また、「OpenSSHServer」と、「NextCloud」のインストールにはしっかりチェックを入れてください。
SSHインスコはここにチェックを。
NextCloudはこちらをチェック。
ミスって忘れたらまあOSごと入れ直せばいいので気楽にいきましょう。
仮想環境なんで失敗してもノーダメ!
SSH接続できるように
「Tera Term」というSSHクライアントソフトでUbuntuにSSH接続します。
最初はIPアドレスが自動で変わるので以下のコマンドを打ち込みます。
$ip a
このコマンドをUbuntuの画面上に直接打ちこみIPアドレスを調べます。
そして、そのアドレスに接続します。
こんな感じで。
Ubuntuに直にコピペできないので、コピペできるこのソフト越しにするのがおすすめです。
「何かをコピー→Tera Termで右クリック」
これでコピペできます。
IPアドレス固定
まず以下3つのコマンドを1つずつコピペします。
$cd /etc/netplan
$ ls -l
$sudo nano 077-installer-config.yaml
※$ ls -lで出てきたファイル名よりもアルファベット順で後に来るようなファイル名にします。
例えば私は$ls -l で「00-installer-config.yaml」というファイルが出てきたのでそれよりはアルファベット順で後ろに来る「$sudo nano 077-installer-config.yaml」と、コマンドを打ちました。
「$sudo nano 077-installer-config.yaml」を打ったら、以下9行コピペします。
network:
version: 2
renderer: networkd
ethernets:
enp0s3:
addresses: [192.168.0.102/24]
gateway4: 192.168.0.1
nameservers:
addresses: [8.8.8.8]
保存は「CtrlとS」。編集画面を閉じるには「CtrlとX」です。
その後、以下のコマンドで適用します。
$sudo netplan apply
赤字 enp0s3はネットワークアダプターの名前です。先ほど$ip aしたときの奴を入れます。
IPアドレスなどはお使いの環境や好みで変更してください。
青い192.168.0.102はそのままそのサーバーのIPアドレスとなります。自由に設定しましょう。
IPアドレスの変更が正常に適用されたかは、再度以下のコマンドでIPアドレスを調べることで分かります。
$ip a
デフォルトゲートウェイの確認
なおデフォルトゲートウェイは以下の方法でわかります。
$ ip route show
と打つと、
default via 192.168.1.1 dev enp0s3 proto static (以下略)
となるので、赤字がデフォルトゲートウェイです。
インターネッツに接続できてるか確かめる
名前解決ができればネットに正常に接続できてるでしょ、ということで以下のコマンドで確かめます。
$ nslookup google.com
この結果が良い感じに表示されていればOKです。
NextCloudアカウント作る
Windows11側のブラウザで、先ほど固定したIPアドレスを検索バーに打ち込みます。
このように
そして好きなユーザー名とパスワードを設定します。
こんな糞パスワードはNG!
Ubuntu Server のファイヤーウォール設定
再びSSHクライアントに戻って、以下4コマンドを1つずつコピペします。
$ sudo ufw allow 80
$ sudo ufw allow 443
$ sudo ufw allow 22
$ sudo ufw enable
$ sudo ufw reload
$ sudo ufw status
4つめは設定できているかの確認みたいなもんです。
ポート番号と意味は、
ポート22:SSH
ポート80:HTTP
ポート443:HTTPS
という対応です。
Let’s EncryptでSSL化 する時に80のポートも使うのでオールHTTPS接続だからといって80を閉めてはだめみたいですね・・・
myDNSに登録&実行ドメイン取得&グローバルIP告知
↑のページの手順1番目のところだけをすればOKです。
「2.DiskStationにDDNS更新情報をセットする」以下は参照する必要がありません。
グローバルIPをWindowsのVBSスクリプトで告知する
ご注意ください!!!
この項目の作業だけは仮想環境ではなく、
ホストOSであるWindows上での作業です!!!
ご注意ください!!!
以下をメモ帳にでもコピペし、拡張子を「.vbs」で保存します。
こちらの方のスクリプトを参照しました。(https://www.uramiraikan.net/Works/entry-2029.html)
Option Explicit
On Error Resume Next
Const strURL = "http://www.mydns.jp/login.html"
Const strUser = "mydns123456"
Const strPasswd = "abcde654321"
Dim objXML
Dim strXMLDoc
Dim intRet
Set objXML = WScript.CreateObject("MSXML2.XMLHTTP.3.0")
intRet = 0
objXML.open "GET", strURL, False, strUser, strPasswd
objXML.send
strXMLDoc = objXML.responseText
intRet = objXML.status
Set objXML = Nothing
'WScript.Echo strXMLDoc
WScript.Quit(0)
Windowsタスクスケジューラで毎日定時にでも起動させましょう。
なお、赤字部分はMyDNSにもらったメールに記載されているIDとパスワードに書き換えます。
ルーターのポート転送設定
「NAT転送」よりサーバーのIPアドレスに対してポート443,80を開けます。
ルーターは各社操作が全然異なるのでそれぞれ調べてください。。。
tplinkの私の作業を一応載せときます。
これを80,443で行います。わかりやすいIPアドレスにするとこういうとき便利。
NextCloudに無料ドメインを結びつける
仮想Ubuntu上での作業に戻ってきました。
$ sudo nextcloud.occ config:system:set trusted_domains 1 --value=example.server-on.net
自分がMyDNSで取得したドメインに書き換えて↑のコマンドを実行します。
なおchromeなどだとSSL化終わるまでアクセス不可のことがあります。ドメインを入れただけではアクセスできないのは正常ですご安心ください。
HTTPSを強制する設定のためです。
だからLet’s EncryptでSSL化が必要だったんですね。
ちなみに以下のコマンドで、設定が反映されてるか確かめられます。
$ sudo nextcloud.occ config:system:get trusted_domains
別のドメインを使うようになった際は、単にexample.server-on.netを新たなドメインに置き換えて下のコマンド打てばそれで完了です。上書きされます。
$ sudo nextcloud.occ config:system:set trusted_domains 1 --value=example.server-on.net
Let’s EncryptでSSL化
$sudo nextcloud.enable-https lets-encrypt
途中なんか質問されたら「y(yes)」と答え、メアドを入れます。3ヶ月ごとの更新のためだとか。
メアドは「[email protected]」みたいな形で入れます。
(カギ括弧は不要です)
ドメイン「example.server-on.net」は、先ほど取得したものを。
(カギ括弧は不要です)
では実際に外部からアクセスしてみる
$sudo apt update
$sudo apt upgrade
$sudo apt autoremove
$reboot
上から順に3つコピペして最新版にアップデートして、不要になったパッケージを自動的に削除し、Ubuntuの再起動をしてから、アクセスしてみます。
こんな感じで。
全てがうまく要っていた場合、ログイン画面が出ます。
先ほど設定したIDとパスワードでログインしましょう。
あとは貴方だけのおもちゃです。
システムの詳細を見る
RAM2GBで十分ってのがわかります。
CPUも8世代core i7デスクトップ版程度のCPUを2コアを割り当てたものの、1コアで十分そうです。
ロードアベレージ1未満なら、1コアで十分って意味です。
仮想マシンに10GBしか割り当てなかった時、ほとんど何も置けませんねぇ。
自分のクラウドのセキュリティを診断
上のリンク先に、自分のサーバーのドメインを入れると診断してくれます。
勿論私のはA+(最高)評価ですわ‼︎
NextCloudの魅力
どんな危ないファイル・検閲されたらBANされるようなデータも好きなだけアップロードできます。
(ここで言う危ないファイルとは、犯罪絡みのファイルではなく、第三者に検閲されたら危険なことになる、俺のパスワード一覧.txtみたいなファイルのことを指します)
(BANされそうなデータとは、自炊電子書籍とかの合法的に入手した電子の著作物などを指します)
もちろんファイルごと、フォルダごとの共有リンクを発行して、外部サービス(GoogleDriveとか)を介さずどんなものでも共有することもできます。
私は出先でPCでTS抜き録画したアニメを見るために使っています。
エンコード済みだけでテラバイト単位で存在し、アニメという著作物をGoogleDriveにあげたらBANされそうということもありクラウドを自作に至ったわけです。
クライアントアプリがAndroid・IOS・Windows他様々なプラットフォーム用にあるうえ、ブラウザからもアクセスできるのが決め手ですね。
是非やってみてください‼︎
こちらもおすすめです