余ったHDDを活用!どこからでもアクセス可能な「自作クラウドストレージ」
・余ったHDDを有効活用したい
・Ubuntuの入った余ったPCを有効活用したい
・ポート開放ができなくてもクラウドストレージを作りたい
概要
・余ったミニPCにUbuntuを入れる
・Tailscaleの導入により、httpながらもVPNを介して安全に接続できる
・外付けHDDを用いた大容量ストレージ(設定が圧倒的に楽だったので今回はDockerを使用)
・Nextcloud&Tailscale on Docker
1.Ubuntu(LTS)のインストール
ミニPCにUbuntuを入れます。LTSの方が楽です。
2.Dockerのインストール
3.HDDのマウント
フォーマットしたHDDを接続します。(今回は試験的に2MBのパーティションを用いた)
空の領域をLinuxパーティションに変換し、マウントします。
(今回は/media/kiu21/hddとしてマウントします)
4.Docker-composeの編集
以下のような、ファイル構成でdocker-compose.ymlを作成していきます。
以降docker-composeを起動させると、nextcloudディレクトリに作成するサーバーのデータが入ります。(htmlとdbディレクトリ)
/home
|-/user
|-/nextcloud
|-docker-compose.yml
|-html #サーバー設定
|-db #データベース設定
次に、以下のような内容でdocker-compose.ymlを作成します。(LTSなのでメモ帳で作成できます!)
外付けHDDのパスである「/media/kiu21/hdd」は適宜、HDDがマウントされているパスに変換してください。
services:
db:
image: mariadb
restart: always
volumes:
- ./db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=admin
- MYSQL_PASSWORD=admin
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
app:
image: nextcloud:apache
ports:
- "8080:80"
links:
- db
volumes:
- ./nextcloud:/var/www/html
- /media/kiu21/hdd:/hdd1
restart: always
5.Docker-composeの起動
docker-composeが入ってないようならこちらを参照
docker daemonが動いていないようなら、以下のコマンドで開始できる。sudo service docker start
実際にdocker-composeを起動します。
$sudo docker-compose up -d
しばらく待ちます
$sudo docker ps
apach上にnextcloudが乗っているコンテナと、mariadbのコンテナが作成されました。
6.nextcloudへのログイン
ブラウザでurlに
のような画面となるので、ユーザー名とパスワードを設定してください。
画面を進んで、しばらくすると必要なアプリの準備が完了します。
その後、
「アプリ>無効なアプリ」から「external strage support」を有効にする
「管理者設定>外部ストレージ」
から以下のように設定します。(緑のチェックマークが出たら成功)
これで、外付けHDDにデータを保存する設定が完了しました。
7.tailscaleの設定(Docker内)
以下のコマンドでDockerのApacheサーバーのプロンプトへ入ります。
$sudo docker container exec -it nextcloud-app-1 bash
ここから、tailscaleをインストールし、設定を行います。
#apt-get update
#apt-get install curl -y
#curl -fsSL ttps://tailscale.com/install.sh | sh
#tailscaled --tun=userspace-networking --socks5-server=localhost:1055 &
Enter
#tailscale up
この後、URLが表示されるのでそこにログインして登録する。
途中でほかのデバイスからログインするよう促される。
「machines>nextcloudを入れたコンピュータ」をクリックすると以下のようなURLを調べることができる。このURLを使うとTailscaleを入れて自分のアカウントでログインしたPC・スマホからNextcloudへアクセスすることができる。
ドメインがこれなので、この場合「http://4f8afda7c9d1.tail9e316b.ts.net」アクセスしてみると、
となってしまう。
以前のバージョンであればアクセスできたが、セキュリティが向上している。。
対処として、URLをNextcloud設定ファイルに登録します。
DockerでNextcloudの設定ファイルは/nextcloud/htmlにバインドしているので、「/nextcloud/html/config/config.php」を以下のように編集すると、アクセスできるようになります。
以上で、Tailscaleにログインした端末なら、どこからでもこの場合「http://4f8afda7c9d1.tail9e316b.ts.net」からNextcloudを利用できます!
参考文献
Discussion