Oracle Cloud は気前よく高スペック(CPU:4 コア,Memory:24GB)の Arm のインスタンスを無料で提供しています。
Web 接続環境さえあれば、どこでも接続できる個人用のストレージと開発環境を構築する方法を説明します。
構成イメージは下図通り、外部公開する VM(バーチャルマシン)を作成し、docker を用いて Visual Studio Code をブラウザベースで動作する code-server とNextcloud を構築します。
本手順の実施にあたり必要なものは以下です。
- Oracle Cloud Infrastructure のアカウント
- 独自ドメイン
- Cloudflare で購入することを推奨します
インスタンス作成
下記の Oracle 公式の手順 (3.インターネット・アクセスの有効化まで) に従い、インスタンスを立ててください。
Free Tier: Ubuntu インスタンスへの WordPress のインストール
作成する VM タイプは最新の Ubuntu にし、CPU も ARM に変更してください。
- OS イメージ : Ubuntu 22.04
- CPU : Arm
- ボリューム : 100GB
- CPU コア数 : 4 コア以下
- メモリ : 24GB 以下
また、Web と SSH 接続するため、VCNのイングレス・ルールの作成
の部分で 22, 80 ,443 解放しておいてください。
持っている独自ドメインを作成したインスタンスの IP と紐付けの DNS レコード登録を行います。
ここで CloudFlare の DNS 登録手順を掲載しておきます。
https://www.cloudflare.com/ja-jp/learning/dns/dns-records/
インスタンス設定
インスタンス作成完了後に、ローカルより ssh でアクセスして、OS の最新化にします。
sudo apt -y update && sudo apt -y upgrade && sudo apt -y autoremove
Oracle Cloud の Ubuntu インスタンスは ufw を用いてポートを開放できない問題があるため、iptables を無効にしておきます。
iptables -F
netfilter-persistent save
docker を使ったコンテナ作成
code-server と nextcloud のコンテナを建てるため、公式ドキュメントに従い docker をインストールします。
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
コンテナのデータを格納するフォルダを作成し、そのフォルダに入ります。
mkdir mycloud
cd mycloud
docker-compose.yml のファイルを作成して、内容は以下です。
version: '3.8'
services:
nextcloud:
image: nextcloud:latest
container_name: nextcloud
volumes:
- ./data:/var/www/html
environment:
- MYSQL_HOST=db
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_PASSWORD=trongpassword
depends_on:
- db
restart: always
db:
image: mariadb:latest
container_name: nextcloud-db
volumes:
- ./db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=mystrongrootpassword
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_PASSWORD=mystrongpassword
restart: always
caddy:
image: caddy:latest
container_name: nextcloud-caddy
depends_on:
- nextcloud
volumes:
- ./caddy/Caddyfile:/etc/caddy/Caddyfile
- ./caddy/data:/data
- ./caddy/config:/config
ports:
- "80:80"
- "443:443"
restart: always
code-server:
image: linuxserver/code-server
container_name: code-server
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Tokyo
- PASSWORD=pass #optional
- SUDO_PASSWORD=pass #optional
- PROXY_DOMAIN=your.domain.com
volumes:
- ./code-server:/config
- ./project:/home/project
ports:
- 8443:8443
restart: always
docker のコンテナを作成します。
sudo docker compose up -d
Web サーバーの SSL 暗号化通信を設定するcaddy/Caddyfile
というファイルを編集します。
nextcloud.yourdomain.com {
reverse_proxy nextcloud:80
header Strict-Transport-Security max-age=31536000;
encode gzip
file_server
}
vscode.yourdomain.com {
reverse_proxy code-server:8443
header Strict-Transport-Security max-age=31536000;
encode gzip
file_server
}
また、nextcloud のコンテナの初期設定は http 通信のため、https に変更します。以下の一行を追加します。
編集するファイル:data/config/config.php
<?php
$CONFIG = array (
...
'overwriteprotocol' => 'https',
...
);
そして、コンテナを再起動します。
sudo docker compose restart
nextcloud のメンテナンスジョブを定期的に動かせるように、cron ジョブを設定します。
sudo crontab -e
追加内容
*/15 * * * * docker exec -u www-data nextcloud php cron.php
まとめ
本記事の手順を全て無事に完了していれば、Web ブラウザーからドメインアクセスすることで code-server と nextcloud にアクセスできます。そこから初期設定して、自分独自の環境を楽しみましょう。
Top comments (0)