Cloudreveを使ってみる
こんにちは。もちもちずきんです。今回はOSSのクラウドストレージアプリケーションであるCloudreveを使ってみたいと思います。
Cloudreveとは?
Cloudreve(公式ホームページ,Github)はGo言語のフレームワークであるGinを使用して作られた「最小限のコストでパブリックとプライベートの両方のオンラインシステムを迅速に構築することができる」ことを売りにしているOSSのクラウドストレージアプリケーションです。
機能の特徴として
- ローカルマシン、スレーブマシン、Qiniu、Aliyun OSS、Tencent Cloud COS、Youpaiyun、OneDriveをストレージ端末としてサポートしている
- アップロード/ダウンロードでクライアントからの直接転送をサポート、ダウンロード速度制限をサポートしている
- オンライン圧縮・解凍、マルチファイルパッケージダウンロードのサポート
- WebDAVプロトコルのサポート
- ファイルのパスワードや期間を設定したURL共有
- ドラッグアンドドロップでの操作
- 動画、画像、音声、テキスト、Officeドキュメントをオンラインでプレビュー可能
を謳っています。
UIもMDUIを採用しており、Googleドライブライクで非常に使いやすそうなアプリケーションになっています。残念ながらi18n/l10nはまだ行われておらず、対応している言語は中国語のみになっています。
CloudreveをUbuntu20.04にインストール
それでは公式ガイドを参考にCloudreveサーバーを構築していきます。
とりあえず動かしてみる
動かすだけであれば非常に簡単です。
ダウンロード→解凍→実行権限付与→実行とするだけで動きます。
まず、Cloudreveのリリースページにアクセスします。
記事を書いている時点で最新のバージョンは3.4.2です。Assetsの中から自分のマシンのアーキテクチャにあったバイナリファイルをダウンロードします。ここではamd64のLinuxを扱います。
$ wget https://github.com/cloudreve/Cloudreve/releases/download/3.4.2/cloudreve_3.4.2_linux_amd64.tar.gz
解凍します。
$ tar -zxvf cloudreve_3.4.2_linux_amd64.tar.gz
解凍すると「cloudreve」というファイルが出てきます。これに実行権限を与えて実行するとlocalhost:5212からCloudreveにアクセスすることができます。
$ chmod +x ./cloudreve
$ ./cloudreve
実行するとサーバーが立ち上がり、ログが出力されます。初回起動時にはAdminの初期ログインメールアドレスとパスワードが表示されます。
$ ./cloudreve
___ _ _
/ __\ | ___ _ _ __| |_ __ _____ _____
/ / | |/ _ \| | | |/ _ | '__/ _ \ \ / / _ \
/ /___| | (_) | |_| | (_| | | | __/\ V / __/
\____/|_|\___/ \__,_|\__,_|_| \___| \_/ \___|
V3.4.2 Commit #c31c77a Pro=false
================================================
[Info] 2022-02-19 17:28:40 初始化数据库连接
[Info] 2022-02-19 17:28:40 开始进行数据库初始化...
[Info] 2022-02-19 17:28:40 初始管理员账号:[email protected]
[Info] 2022-02-19 17:28:40 初始管理员密码:XXXXXXXX
[Info] 2022-02-19 17:28:41 开始执行数据库脚本 [UpgradeTo3.4.0]
[Info] 2022-02-19 17:28:41 数据库初始化结束
[Info] 2022-02-19 17:28:41 初始化任务队列,WorkerNum = 10
[Info] 2022-02-19 17:28:41 初始化定时任务...
[Info] 2022-02-19 17:28:41 当前运行模式:Master
[Info] 2022-02-19 17:28:41 开始监听 :5212
この場合
[Info] 2022-02-19 17:28:40 初始管理员账号:[email protected]
[Info] 2022-02-19 17:28:40 初始管理员密码:XXXXXXXX
と出力されているようにメールアドレスが「[email protected]」でパスワードが「XXXXXXXX」です。
設定ファイルなどを書かずにそのまま実行すると実行しているディレクトリにDBのファイルcloudreve.db
とアップロードしたファイルが保存されるuploads
というディレクトリが生成されます。
設定を書いて動かしてみる
このまま動かしても良いのですが、今回はWebサーバーとしてNginx、DBにMySQL、システム管理にSystemdを使って動かして見たいと思います。
手順としては
- ダウンロード・解凍・実行権限付与
- 実行ユーザー作成
- バイナリファイルを移動
- DBを作る
- Configファイルを作る
- 実行してみる
- Nginxの設定を書く
- Systemdの設定を書く・有効化・起動する
という手順で行っていこうと思います。
ダウンロード・解凍・実行権限付与
「とりあえず動かしてみる」でも行った、ダウンロード・解凍・実行権限付与を行います。
詳しい手順は「とりあえず動かしてみる」の途中までと全く同じなので省略します。
$ wget https://github.com/cloudreve/Cloudreve/releases/download/3.4.2/cloudreve_3.4.2_linux_amd64.tar.gz
$ tar -zxvf cloudreve_3.4.2_linux_amd64.tar.gz
$ chmod +x ./cloudreve
実行ユーザー作成
# adduser --disabled-login cloudreve
バイナリファイルを移動
作成したバイナリファイルを移動します。今回は/home/cloudreve/で稼働させたいと思います。
$ sudo mv cloudreve /home/cloudreve/
DBを作る
MySQLがインストールされいてる前提で進みます。インストールしていない人は# apt install mysql-server mysql-client
などの操作を適宜行ってインストールを済ませてください。
Mysqlのコンソールに入ります。
# mysql -u root -p
データベースとDBのユーザーを作成します。今回はDB名を「cloudreve_db」ユーザーを「cloudreve_user」パスワードは「cloudreve_pass」として設定します。それぞれ適宜変更してください。(パスワードなどは特に安全なものを設定してください)
MySQL [(none)]> CREATE DATABASE cloudreve_db;
Query OK, 1 row affected (0.002 sec)
MySQL [(none)]> CREATE USER 'cloudreve_user'@'localhost' IDENTIFIED BY 'cloudreve_pass';
Query OK, 0 rows affected (0.017 sec)
MySQL [(none)]> GRANT ALL PRIVILEGES ON cloudreve_db. * TO 'cloudreve_user'@'localhost';
Query OK, 0 rows affected (0.002 sec)
MariaDB [(none)]>\q
Bye
Configファイルを作る
今回は/home/cloudreve/conf.ini
にConfigファイルを作成していきたいと思います。場所を変える場合は適宜変更してください。
ユーザーcloudreve
でconf.ini
を作成します。
# sudo -u cloudreve touch /home/cloudreve/conf.ini
編集します。
# vi /home/cloudreve/conf.ini
公式ガイドを参考にConfigを記入していきます。今回書き換える設定はDBの設定など一部のみ。
[System]
; 動作モード
Mode = master
; リスニングポート
Listen = :5212
; Debugの有効化/無効化
Debug = false
; データベース設定。デフォルト設定でSQLiteを使う場合は削除
[Database]
; sqlite/mysql/mssql/postgresの中からデータベースを選択
Type = mysql
; データベースのポート
Port = 3306
; ユーザー名
User = cloudreve_user
; パスワード
Password = cloudreve_pass
; データベースのホスト
Host = 127.0.0.1
; データベース名
Name = cloudreve_db
; テーブルの接頭辞
TablePrefix = cd_
; 文字コード
Charset = utf8
; CORSの設定
[CORS]
AllowOrigins = *
AllowMethods = OPTIONS,GET,POST
AllowHeaders = *
AllowCredentials = false
; サムネイルの設定
[Thumbnail]
MaxWidth = 400
MaxHeight = 300
FileSuffix = ._thumb
; 並行して作成するサムネイル数。-1でCPUコアに合わせて自動設定
MaxTaskCount = -1
; jpg / pngの選択(多分エンコード後のサムネイル形式)
EncodeMethod = jpg
; サムネイルが生成されたらゴミ箱に移動するかどうか(ここはよくわからなかった)
GCAfterGen = false
; サムネイル生成の圧縮クオリティ
EncodeQuality = 85
動かしてみる
一旦この状態で動くかどうか確認します。
# sudo su - cloudreve
$ ./cloudreve -c /home/cloudreve/conf.ini
動いていたらAdminのメールアドレスと初期パスワードを控えておきます。
$ ./cloudreve -c conf.ini
___ _ _
/ __\ | ___ _ _ __| |_ __ _____ _____
/ / | |/ _ \| | | |/ _ | '__/ _ \ \ / / _ \
/ /___| | (_) | |_| | (_| | | | __/\ V / __/
\____/|_|\___/ \__,_|\__,_|_| \___| \_/ \___|
V3.4.2 Commit #c31c77a Pro=false
================================================
[Info] 2022-02-20 13:27:49 初始化数据库连接
[Info] 2022-02-20 13:27:49 开始进行数据库初始化...
[Info] 2022-02-20 13:27:49 初始管理员账号:[email protected]
[Info] 2022-02-20 13:27:49 初始管理员密码:XXXXXX
[Info] 2022-02-20 13:27:49 开始执行数据库脚本 [UpgradeTo3.4.0]
[Info] 2022-02-20 13:27:49 数据库初始化结束
[Info] 2022-02-20 13:27:49 初始化任务队列,WorkerNum = 10
[Info] 2022-02-20 13:27:49 初始化定时任务...
[Info] 2022-02-20 13:27:50 当前运行模式:Master
[Info] 2022-02-20 13:27:50 开始监听 :5212
SSHトンネリングなどでlocalhost:5212
をみて正常に起動したことを確認し、Ctrl+C
で終了します。
Cloudreveユーザーをexit
で抜けます。
Nginxの設定を書く
次にNginxの設定を書いていきます。Nginxがはいっていない場合は# apt install nginx
などでインストールしてください。
ここではSSLの設定をLet'sEncryptを使用する前提で書いています。証明書は各自で適宜取得してください。
まずsites-available
に設定を書き込んでいきます。
# vi /etc/nginx/sites-available/cloudreve.conf
example.com
を適宜自分のドメインに書き換えてください。
server {
listen 80;
listen [::]:80;
server_name example.com;
location / { return 301 https://$server_name$request_uri; }
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
# プロキシを設定
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://127.0.0.1:5212;
}
}
sites-enabledにシンボリックリンクを設定します。
# ln -s /etc/nginx/sites-available/cloudreve.conf /etc/nginx/sites-enabled/cloudreve.conf
#nginx -t
を行ってエラーが出なければOKです。
Nginxをリロードします。
# systemctl reload nginx
systemdファイルを作成・記入
/etc/systemd/system/cloudreve.service
を作成します。
# vi /etc/systemd/system/cloudreve.service
[Unit]
Description=Cloudreve
Documentation=https://docs.cloudreve.org
After=network.target
After=mysqld.service
Wants=network.target
[Service]
User=cloudreve
Group=cloudreve
WorkingDirectory=/home/cloudreve/
ExecStart=/home/cloudreve/cloudreve -c /home/cloudreve/conf.ini
Restart=on-abnormal
RestartSec=5s
KillMode=mixed
StandardOutput=null
StandardError=syslog
[Install]
WantedBy=multi-user.target
デーモンの読み直し、自動起動オン、立ち上げを行います。
# systemctl daemon-reload
# systemctl enable cloudreve.service
# systemctl start cloudreve.service
これでURLを入力するとCloudreveが使えます。
控えておいたAdminのメールアドレスとパスワードでログインができるはずです。
ログインしたら、パスワードの変更などを適宜行ってください。
ここの上の欄にメールアドレス、下の欄にパスワードが入力できます。