用docker在铁威马NAS中搭建Chevereto图床

背景说明:

自己有一台铁威马的NAS,一直想搭建一个私人图床用于写写东西时图片的保存,经过网上查询,通过Cheveret+Tyora是比较完美的组合。再加上自己有一台铁威马的NAS,于是就开始查资料,并动手摸索着做做看。以下是相关记录。

开始想直接通过铁威马NAS中的WebServer直接搭建一个Chevereto站,但经过几天的测试与努力,不管是使用Apache还是使用Nginx,最后都因为WebServer中没有办法对配置文件进行修改导致卡在伪静态这一块没有办法继续。

因为不了解铁威马NAS所使用的Linux的目录结构,再加上对Linux也不是太熟悉,通过ssh连接NAS,进入命令行模式,多翻尝试也没能成功。

不得不说,铁威马的WebServer还是比较保守的,只是给你一个最简单的Web Server的环境,这一点跟宝塔面板相差太远。论坛以及微信公众号中提出引进宝塔建议的不至一个,但铁威马官方似乎对于自己造轮子比较感兴趣——哪怕这轮子不咋地。

实在没办法,最终还是使用Docker来实现Chevereto的搭建。

环境

硬件:铁威马NAS F4-221

系统:4.2.18-2110301149

步骤

一、安装docker

通过NAS系统的应用中心安装docker,如下图。

image-20211230141512711

上图中的docker我已经安装好了,这儿仅是截个图做个示例。

二、在Docker中搜索Chevereto映象

在Docker的注册表中搜索Chevereto的映象,会找出来一堆,选择下载次数最高的nmtan/chevereto,选择后点击“下载”,如下图。

image-20211230142549186

进入docker的映象,等待下载完成。下载完成后,会显示映象大小 ,未下载完成会显示“下载中”,如下图。

image-20211230144211551

三、启动映象并进行配置

1、常规设置,如下图。

image-20211230144528736

⑴“容器名称”,随便输入,开心就好。

⑵“启动资源限制”,最好做些限制。

⑶勾选”启用自动重新启动“。老实说我也不知道这一项到底有没有用。

2、卷,如下图。

image-20211230145537773

根据该映象的官方https://hub.docker.com/r/nmtan/chevereto介绍,需要将NAS中的某个目录映射为/var/www/html/images做为图片的存放位置。所以上图中的“装载路径”必须是/var/www/html/images,但前面的“文件/文件夹”根据个人需求决定,即Chevereto上传图片存放位置。

3、网络,如下图。

image-20211230150103368

没什么好说的,“网络名称”选择bridge即可。

4、端口设置,如下图。

image-20211230150143624

映象使用的是80端口,但实际上大多数人不太可能将80端口分配给NAS中的一个普通应用,而且正常情况下,家用宽带或是企业专线的80端口都是被屏蔽的,如果要开通的话,需要做备案等操作,很是烦琐,所以这儿需要将一个普通端口映射成80端口,而使用的是8111端口。

建站结束后对网站的访问就应该是http://urls:8111这样的格式。

“类型”保持TCP即可。

5、环境,如下图。

image-20211230150327456

环境设置中有很多项,大多数保持默认即可,我们只需要关注以下几项即可。

CHEVERETO_DB_HOST 数据库地址,默认为db。

这儿的数据库可以使用两种,一种是在docker中搭建MySQL环境,另一种是使用NAS自已的MySQL环境,即MariaDB。这儿我选择第二种,也是考虑不想重复造轮子。

如果使用NAS自己的MySQL环境的话,那么需要通过NAS的应用中心安装MariaDB,这是一个MySQL管理工具,如下图。

image-20211230153351466

通过MariaDB“启用MySQL服务器”并新建数据库chevereto。数据库名称其实无所谓,CHEVERETO_DB_USERNAME默认值是chevereto,通过MariaDB创建数据库时我也就使用这个名称。(关于MariaDB的使用是另一个问题,不在这儿详述。)

由于chevereto是安装在Docker中,而MariaDB是安装在宿主NAS中,此处的CHEVERETO_DB_HOST的默认值“db”是无法访问数据库的,需要将db修改为宿主NAS所在的域名或ip地址。也可以使用docker内部地址。(参考“藏美者阿远”的CSDN文章《docker修改文件夹权限_群晖通过Docker安装图床工具Chevereto的步骤》)

我在此处使用了docker的内部地址。要获得该地址需要通过ssh连接到铁威马NAS上,然后执行ifconfig命令,结果中docker0:中即为docker的内部地址,通常为172.17.0.1,如下图示。

image-20211230160105467

CHEVERETO_DB_USERNAME 数据库用户名,默认为chevereto。

这儿根据在MariaDB中的实际用户名来填写。可以为chevereto数据库创建一个用户,如果对MariaDB不熟悉,就用Maria初始用户名root即可。

CHEVERETO_DB_PASSWORD 数据库密码

根据MariaDB中实际配置的对应用户的密码填写即可。

CHEVERTO_DB_NAME 数据库名称,默认为chevereto

根据MariaDB中实际新建的数据库名称填写即可,此处使用chevereto(见上文)。

CHEVERTO_DB_PREFIX 数据库前缀,不需要修改

CHEVERTO_DB_PORT 数据库端口,默认3306

根据MariaDB中实际设置的数据库端口填写即可,如果没有修改过的话,MariaDB中的默认端口就是3306.

最后点击“应用”按钮,该映象会自动启动。可以到“容器”中去查看,如下图。

image-20211230164936757

如果配置没有问题的话,正常在容器中可以看到“运行中”字样。

四、访问Chevereto

在本地电脑上打开浏览器,在地址输入http://nasip:8111即可访问并对Chevereto进行安装设置。如果与NAS同处于一个内网中,则nasip直接输入内网地址即可。但既然是图床,当然是希望在互联网上能够访问到。所以如果在互联网上访问该站,则根据该NAS的外网IP地址加上对应的端口号来进行访问,因为让NAS能够被互联网用户访问的具体方法各不相同,如动态域名、内网穿透等,此处的nasip与端口号可能都不一样。具体不在此处详述。

五、安装Chevereto

说明:因为我的Chevereto图床已经建好了,创建过程中没有截图,没有办法再调出安装界面重新截图,所以在网上找了几张做为示例。

在浏览器地址栏通过http://nasip:8111打开后出现如下图(图片来自于网络)的界面,对应的各项内容,图片中已经有了说明(此处说明是图片本来就有的,并不是我备注的)。

这个界面用于Chevereto建个初始管理员帐号,其界面与大多数注册界面类似。

在这里插入图片描述

这儿主要要说一下WebSite mode(网站运营模式)项的选择,共有两个选项分别是Personal和Community,分别是个人模式和社群模式。

我本来的预想是建一个管理员帐号用于对网站的管理,再建几个普通用户分别给自己和家人使用,但经过实际测试,当使用Personal(个人)模式时,普通用户登录后会出现“该页面不存在”的错误提示。

image-20211231132302077

而且普通用户上传图片时会出现“请示被拒绝"的提示,如下图。

image-20211231132424151

但使用Community(社群)模式没有此问题,所以后来我选择了Community模式。

网上有一些安装教程,在讲到初始安装Chevereto时,还会出现数据库配置界面,如下图。但因为前面已经在docker中配置好了数据库的相关环境变量,本次安装并没有出现这个界面。

chevereto-guide1

六、一些配置的修改

1、语言的修改

Cheverto默认语言是英文,通过点击右上角用户名称处,然后在弹出的下拉菜单中选择settings——Language——简体中文——Save changes来修改界面语言,如下图。

image-20211231133725084

2、修改时区为北京时间

跟上图一样的位置,直接在TimeZone处分别选择Asia——Shanghai——Save changes

3、修改2M上传限制

PHP默认限制上传大小为2M,可按以下方法解除此限制。

⑴通过ssh连接铁威马NAS,并su为root帐号。

⑵执行docker ps -a,在执行结果中查找IMAGE为nmtan/chevereto的记录。找到该记录后,再找到该记录CONTAINER ID,本例为0fc040e896d4

⑶执行docker cp 0fc040e896d4:/var/www/html/.htaccess /root/

此时会将配置文件.htaccess复制到/root目录中,但这是一个隐藏文件,需要通过ls -a来查看。

以上操作如下面代码所示。

[root@TNAS-01 temp]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
0fc040e896d4        nmtan/chevereto     "docker-php-entryp..."   4 hours ago         Up 2 hours          0.0.0.0:8111->80/tcp   nmtan_chevereto
[root@TNAS-01 temp]# docker cp 0fc040e896d4:/var/www/html/.htaccess /root/
[root@TNAS-01 temp]# ls -a /root
 .   ..   .bashrc   .config   frp   h1   .htaccess   nattunnel   nohup.out   .rnd  'VirtualBox VMs'
[root@TNAS-01 temp]#vi /root/.htaccess

⑷通过vi /root/.htaccess编辑配置文件,在文件末尾增加 php_value post_max_size 128Mphp_value upload_max_filesize 128M,我这儿设定的数值是最大能上传128M的图片,具体的根据需要自己决定设置多少。

文件内容如下面所示。

# Disable server signature^M
ServerSignature Off^M
^M
# Enable CORS across all your subdomains (replace dev\.local with your domain\.com)^M
# SetEnvIf Origin ^(https?://.+\.dev\.local(?::\d{1,5})?)$   CORS_ALLOW_ORIGIN=$1^M
# Header append Access-Control-Allow-Origin  %{CORS_ALLOW_ORIGIN}e   env=CORS_ALLOW_ORIGIN^M
# Header merge  Vary "Origin"^M
^M
# Disable directory listing (-indexes), Multiviews (-MultiViews)^M
Options -Indexes^M
Options -MultiViews^M
^M
<IfModule mod_rewrite.c>^M
^M
        RewriteEngine On^M
^M
        # If you have problems with the rewrite rules remove the "#" from the following RewriteBase line^M
        # You will also have to change the path to reflect the path to your Chevereto installation^M
        # If you are using alias is most likely that you will need this.^M
        #RewriteBase /^M
^M
        # 404 images^M
        # If you want to have your own fancy "image not found" image remove the "#" from RewriteCond and RewriteRule
        # Make sure to apply the correct paths to reflect your current installation^M
        RewriteCond %{REQUEST_FILENAME} !-f^M
        RewriteRule images/.+\.(gif|jpe?g|png|bmp|webp) - [NC,L,R=404]^M
        #RewriteRule images/.+\.(gif|jpe?g|a?png|bmp|webp) content/images/system/default/404.gif [NC,L]^M
^M
        RewriteCond %{REQUEST_FILENAME} !-f^M
        RewriteCond %{REQUEST_FILENAME} !-d^M
        RewriteCond %{REQUEST_URI} !\.(css|js|html|htm|rtf|rtx|svg|svgz|txt|xsd|xsl|xml|asf|asx|wax|wmv|wmx|avi|bmp|c
        RewriteRule . index.php [L]^M
^M
</IfModule>
        php_value post_max_size 128M
        php_value upload_max_filesize 128M

⑸.htaccess配置文件编辑好后再通过docker cp /root/.htaccess 0fc040e896d4:/var/www/html/把文件复制回原处。

执行情况如下。

[root@TNAS-01 temp]# docker cp /root/.htaccess 0fc040e896d4:/var/www/html/
[root@TNAS-01 temp]#

⑹进入Chevereto,单击右上角用户名弹出下拉菜单,选择仪表盘——设置,如下图。

image-20211231142925634

⑺在弹出的新页面中按下图设置,最后保存修改即可。

image-20211231143616540

经新自验证,如果配置文件不改,则在Chevereto中的“最大上传文件大小(MB)[MB]”处的数值修改为大于2M会不成功。

一些问题

经过以上步骤,基本上这个图床就搭建成功了,但仍旧存在一些问题,具体如下。

一、版本升级问题

目前安装的这个映象是Chevereto的免费版本,版本号1.4.1,如下图。

image-20211231151430404

目前Chevereto最新的免费版本是Chevereto-Free1.6.1,如下图。

image-20211231151530923

通过“仪表盘”——“统计”——“检查更新”,进行升级,始终无法成功,如下面。

image-20211231151653808

提示“无法从 GitHub 获取 Chevereto Free v1.6.1”,具体原因是因为Github访问困难的原因,还是因为通过Docker安装的原因,搞不清楚。希望看到本篇并且知道的朋友不吝赐教。

©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容