【完全版】ZeroTier + VirtualBox + UbuntuでNextcloudを構築する方法 〜プライベートクラウドの作り方〜

## ✅ はじめに

この記事では、**ZeroTier + VirtualBox + Ubuntu** を使って **安全なプライベートクラウド（Nextcloud）** を自宅やプライベートネットワーク内に構築する方法を紹介します。

- 外付けSSDなどのストレージを使って大容量保存も可能
- **ZeroTier** を使うことで、自宅の外からも安全にアクセス可能
- **HTTPS** なしでもZeroTier内通信は安全

こんな人におすすめ！
- 自宅サーバを立てたいけど、セキュリティが不安な人
- 自分専用のクラウド（Nextcloud）を作りたい人
- 公開せずに安全に使いたい人

私は、外付けSSD1TBを持っていたが何も使わずに埃をかぶっていたので何か活用する術がないか考えたところ「そうだ、Nextcloudを構築しよう！！」となりました。

⚠️ ご注意ください
本記事は私の学習・検証に基づいた内容を紹介するものであり、実際のご利用にあたってはご自身の判断と責任でご対応ください。
環境や状況により挙動が異なる可能性もありますので、実施前に必ずバックアップ等の対策を行うことをおすすめします。

---

## ✅ ゴール

- VirtualBoxにUbuntu Serverをセットアップ
- Nextcloudをインストール
- ZeroTierで安全なプライベートネットワークからアクセス
- 外付けSSDをNextcloudのデータ保存先にする（任意）

---

## ✅ 前提条件

- Windows PC（VirtualBoxを使う）
- 外付けSSD（任意、Nextcloudのデータ保存に利用可能）
- ZeroTierアカウント（無料）
- Ubuntu Server 24.04.2 LTS ISO

---

## ✅ 1. VirtualBoxでUbuntu Serverをセットアップ

### ① Ubuntu仮想マシン作成
- VirtualBoxで新規仮想マシン作成
- メモリ：最低2GB（推奨4GB）
- HDDサイズ：20GB以上（Nextcloud用）
- ISO：Ubuntu Server 24.04.2をマウント

### ② ネットワーク設定
- **アダプター1** → 「ブリッジアダプター」（LAN内からもアクセス）
- **アダプター2** → なし（ZeroTierがUbuntu内で仮想NICを作るため）

### ③ Ubuntu Serverをインストール

---

## ✅ 2. ZeroTierの導入

### ① ZeroTierアカウント作成・ネットワーク作成
- https://my.zerotier.com で無料アカウント
- 「Create Network」で新しいネットワーク作成

### ② UbuntuにZeroTierインストール
```bash
curl -s https://install.zerotier.com | sudo bash
sudo zerotier-cli join <ネットワークID>
```

### ③ ZeroTier管理画面で「Authorize」チェック

### ④ ZeroTierのIP確認
```bash
ip a
```
例：
```
ztxxxxxxx: <UP>
    inet 172.x.x.x
```

---

## ✅ 3. Apache, MariaDB, PHPのインストール（Nextcloud準備）

### ① Apacheインストール
```bash
sudo apt update
sudo apt install apache2 -y
```

### ② MariaDBインストールと設定
```bash
sudo apt install mariadb-server -y
sudo mysql_secure_installation
sudo mysql -u root -p
```

```sql
CREATE DATABASE nextcloud;
CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextclouduser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
```

### ③ PHPとモジュール
```bash
sudo apt install php php-mysql php-xml php-gd php-mbstring php-curl php-zip libapache2-mod-php -y
```

---

## ✅ 4. Nextcloudのインストール

### ① ダウンロード＆展開
```bash
cd /var/www/
sudo wget https://download.nextcloud.com/server/releases/latest.tar.bz2
sudo tar -xjf latest.tar.bz2
sudo chown -R www-data:www-data nextcloud
```

### ② Apache設定
```bash
sudo nano /etc/apache2/sites-available/nextcloud.conf
```

```apache
<VirtualHost *:80>
    DocumentRoot /var/www/nextcloud
    ServerName nextcloud.local

    <Directory /var/www/nextcloud/>
        Require all granted
        AllowOverride All
    </Directory>
</VirtualHost>
```

```bash
sudo a2ensite nextcloud.conf
sudo a2enmod rewrite
sudo systemctl restart apache2
```

---

## ✅ 5. Nextcloudの trusted_domains 設定

```bash
sudo nano /var/www/nextcloud/config/config.php
```

```php
'trusted_domains' => array (
    0 => 'localhost',
    1 => '172.x.x.x',  // ZeroTier IP
    2 => '192.168.x.x', // ブリッジアダプターのLAN IP
),
```

---

## ✅ 6. ファイアウォール設定（UFW）

```bash
sudo ufw allow 80
sudo ufw allow from 172.x.x.0/24 to any port 80
sudo ufw allow from 192.168.x.0/24 to any port 80
sudo ufw enable
```

---

## ✅ 7. Nextcloudセットアップ画面へのアクセス

- **ZeroTier IP** or **LAN IP** からアクセス
```
http://172.x.x.x
```

→ Nextcloudセットアップ画面が出れば成功！

---

## ✅ 8. 外付けSSDのマウント（任意）

### ① SSD接続とUUID確認
```bash
lsblk
```

```bash
blkid
```

### ② マウントとデータフォルダ設定
```bash
sudo mkdir /mnt/nextcloud-data
sudo mount /dev/sdb1 /mnt/nextcloud-data
```

### ③ 永続化（/etc/fstab）※/var/www/nextcloud/dataがなければ作成
```bash
UUID="(blkidで表示されたuuid)" /var/www/nextcloud/data ext4 defaults 0 0
```

### ④ Nextcloudのデータディレクトリを変更（インストール時に指定）

---

## ✅ 9. HTTPSが必要な場合の選択肢

| 通信状況                   | 対応                                         |
|------------------------|--------------------------------------------|
| **ZeroTier/LAN内だけ**     | HTTPでもOK（ZeroTierは暗号化されている）             |
| **外からもアクセスしたい** | Let's EncryptでHTTPS対応 or 自己署名SSL                |

---

## ✅ 10. まとめ

- **ZeroTier** で安全な仮想プライベートネットワーク
- **VirtualBox** で柔軟な仮想マシン運用
- **Nextcloud** で自分だけのクラウド環境
- **外付けSSD** で大容量データ保存も可能

---

## ✅ おまけ：外からもアクセスしたい場合の追加手順

- グローバルIP or DDNS
- ポート開放（80, 443）
- Let's EncryptによるHTTPS化

→ 別記事で解説予定！

---

## ✅ おわりに

**ZeroTier + VirtualBox + Ubuntu + Nextcloud** の組み合わせは、コストをかけずに高セキュリティなクラウドを自分で持ちたい方にぴったりです。  
家庭内、外出先、どこからでも「自分だけのクラウド」を実現しましょう！

---