使用h5ai搭建自己的目录浏览私有云

最近挑选服务器目录共享的引擎,在诸如Seafile、ownCloud、FileRun、Directory Lister、h5ai之间几经挑选。因为没有文件web上传需求,也没有多用户需求,仅仅是自己做个路径web浏览而已。

因此最终选择了美观轻量的h5ai;同时为了控制访问权限,选择了较为轻量的Apache Basic身份验证。

实验环境

  • Ubuntu 20.04
  • /mnt/download为需要在web展示的路径

实验步骤

一、更新apt源、安装所需软件

1
$ sudo apt update && sudo apt install apache2 php php-gd imagemagick zip ffmpeg

二、下载h5ai

1
2
3
$ sudo wget https://release.larsjung.de/h5ai/h5ai-0.29.2.zip && sudo tar -xzvf v0.29.2.tar.gz
$ sudo mv h5ai-0.29.2/src/_h5ai/ /mnt/download/
$ sudo chown -R www-data:www-data /mnt/download/_h5ai/

三、调整配置文件

1
$ sudo vi /etc/php/7.*/apache2/php.ini
  • 将上面配置文件的disable_functions选项中去掉pcntl_exec
1
$ sudo vi /etc/apache2/sites-available/000-default.conf
1
2
3
4
5
6
7
8
9
<VirtualHost *:80>
DirectoryIndex /_h5ai/public/index.php
<Directory "/mnt/download/">
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /mnt/download/.htpasswd
Require valid-user
</Directory>
</VirtualHost>

如果要想启用https链接,则要改成如下配置同时使用命令sudo a2enmod ssl开启apache2的ssl加密功能,同时修改配置文件中的服务器名称和key路径。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<IfModule mod_ssl.c>
<VirtualHost>
DirectoryIndex /_h5ai/public/index.php
<Directory "/mnt/download/">
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /mnt/download/.htpasswd
Require valid-user
</Directory>

ServerName Your.Domain.Name
SSLCertificateFile key.crt
SSLCertificateKeyFile key.key
</VirtualHost>
</IfModule>

四、创建密码文件

1
$ sudo htpasswd -cm /mnt/download/.htpasswd User1

五、启动服务并检查插件状态

1
$ sudo systemctl restart apache2

服务启动后访问管理界面,查看插件是否均正常运行。

管理界面默认密码为空,需要更改默认密码可以在服务器*_h5ai/private/conf/options.json*中更改。

常见故障

  • [ERR] h5ai sources must be preprocessed to work correctly

    如果直接从GitHub上下载,则会报这个错误。出现这个错误的原因是GitHub上的是未经过npm编译过的原始代码,下载主页编译好的即可解决。