<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="https://v1sta.xyz/wp-content/plugins/pretty-rss-feeds/xslt/pretty-feed.xsl" type="text/xsl" media="screen" ?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:media="http://search.yahoo.com/mrss/">

<channel>
	<title>Nginx &#8211; 景の域</title>
	<atom:link href="https://v1sta.xyz/tag/nginx/feed/" rel="self" type="application/rss+xml" />
	<link>https://v1sta.xyz</link>
	<description>远景的幻想空间</description>
	<lastBuildDate>Sun, 18 Jan 2026 06:56:05 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://v1sta.xyz/wp-content/uploads/2026/03/V1sta-Orb-Output512-2-60x60.png</url>
	<title>Nginx &#8211; 景の域</title>
	<link>https://v1sta.xyz</link>
	<width>32</width>
	<height>32</height>
</image> 
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/>
<atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/>
<atom:link rel="hub" href="https://websubhub.com/hub"/>
<atom:link rel="self" href="https://v1sta.xyz/tag/nginx/feed/"/>
	<item>
		<title>通过Webinoly安装WordPress并修改端口号</title>
		<link>https://v1sta.xyz/tech/webinoly-install-wordpress-on-wan/</link>
					<comments>https://v1sta.xyz/tech/webinoly-install-wordpress-on-wan/#respond</comments>
		
		<dc:creator><![CDATA[远景の域主 V1STA]]></dc:creator>
		<pubDate>Fri, 16 Jan 2026 11:58:31 +0000</pubDate>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[Nginx]]></category>
		<category><![CDATA[Webinoly]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">https://v1sta.xyz/?p=2414</guid>

					<description><![CDATA[继上次在自家服务器上搭建WordPress看起来过去了一些时日，由于自家宽带不开放80和443常见端口访问，直 &#8230; <a href="https://v1sta.xyz/tech/webinoly-install-wordpress-on-wan/" class="more-link">继续阅读<span class="screen-reader-text">通过Webinoly安装WordPress并修改端口号</span> <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p><span style="color: black; font-family: Microsoft YaHei UI; font-size: 10pt;">继上次在自家服务器上搭建WordPress看起来过去了一些时日，由于自家宽带不开放80和443常见端口访问，直接在WP后台修改成地址+端口号也是一直苦恼于重定向次数过多的问题，所以又是改nginx又是改数据库。但熬夜许久忽然发现解决方案如此简单。</span></p>
<p><span style="color: black; font-family: Microsoft YaHei UI; font-size: 10pt;">简单说一下要点就是：直接在wp-config.php编辑站点目录的define编码项目。</span></p>
<h5><span style="color: #32a0bc; font-family: Microsoft YaHei UI;">前置条件：<br />
</span></h5>
<ul>
<li><span style="color: #524f4c;"><span style="font-family: Microsoft YaHei UI; font-size: 8pt;">一个真正的域名，可创建SSL证书</span><span style="color: #595959; font-family: 微软雅黑; font-size: 11pt;"><br />
</span></span></li>
<li><span style="color: #524f4c;"><span style="font-family: Microsoft YaHei UI; font-size: 8pt;">可以映射端口转发的路由器、未被运营商封锁的端口，未被系统占用的端口</span><span style="color: #595959; font-family: 微软雅黑; font-size: 11pt;"><br />
</span></span></li>
</ul>
<p><span id="more-2414"></span></p>
<h2><span style="color: #008897; font-family: Microsoft YaHei UI; font-size: 14pt;">1.创建网站<br />
</span></h2>
<p><span style="color: black; font-family: Microsoft YaHei UI; font-size: 10pt;">在内网的Webinoly可以首先用site命令使用域名创建普通的WordPress网站，端口号80（开启SSL则为443），在局域网访问的情况下，域名的端口号其实应该能够直接连接，若是没有则修改客户机系统的hosts也能达到直连访问的目的。<br />
</span></p>
<p><span style="color: black; font-family: Microsoft YaHei UI; font-size: 10pt;">此时也可以顺带申请一下SSL证书，不过由于公网端口封堵，因此只可选择dns txt验证方式：<br />
</span></p>
<pre><span style="color: black; font-family: Microsoft YaHei UI; font-size: 10pt;">sudo site domain.ltd -ssl=on -manual=dns</span></pre>
<h2><span style="color: #008897; font-family: Microsoft YaHei UI; font-size: 14pt;">2.配置WordPress<br />
</span></h2>
<p><span style="color: black; font-family: Microsoft YaHei UI; font-size: 10pt;">随后根据正常步骤访问域名配置WordPress，之后要额外安装一个WordPress插件 —— <a href="https://wordpress.org/plugins/make-paths-relative/">Make Paths Relative</a> ，<br />
这个插件顾名思义，可以将WP网站转换为相对链接的结构。<br />
</span></p>
<p><img decoding="async" src="https://v1sta.xyz/wp-content/uploads/2026/01/011626_1211_WebinolyW1.png" alt="" /><span style="font-family: 微软雅黑; font-size: 11pt;"><br />
</span></p>
<p><span style="font-size: 11pt;"><span style="font-family: 微软雅黑;">如有需要，还可在设置页面添加域名信息：（包括「域名</span>:<span style="font-family: 微软雅黑;">端口」形式）<br />
</span></span></p>
<p><img decoding="async" src="https://v1sta.xyz/wp-content/uploads/2026/01/011626_1211_WebinolyW2.png" alt="" /><span style="font-family: 微软雅黑; font-size: 11pt;"><br />
</span></p>
<h2><span style="color: #008897; font-family: Microsoft YaHei UI; font-size: 14pt;">3.编辑Nginx端口配置<br />
</span></h2>
<p><span style="color: black; font-family: Microsoft YaHei UI; font-size: 10pt;">编辑Webinoly服务主机上的域名主机配置 sites-available/domian.ltd.conf ，在需要访问的Server部分添加需要监听的端口，或是复制一份现有80或443的Server配置，将端口号改为自定义的端口：<br />
</span></p>
<pre># WebinolyNginxServerStart

Server {
listen 443 ssl;
listen [::]:443 ssl;
listen [::]:443 quic;
listen 443 quic;
listen [::]:2000 ssl;
listen 2000 ssl;
listen [::]:2000 quic;
listen 2000 quic;
server_name domain.ltd;

……</pre>
<h2><span style="color: #008897; font-family: Microsoft YaHei UI; font-size: 14pt;">4.编辑WordPress的wp-config.php硬配置<br />
</span></h2>
<p><span style="color: black; font-size: 10pt;"><span style="font-family: Microsoft YaHei UI;">寻找到自定义编辑行，添加如下代码。原理是硬配置网站链接为根</span><span style="font-family: 微软雅黑;">部分（这可能会导致网页分享插件发生空白错乱）<br />
</span></span></p>
<pre><span style="color: #6a9955; font-family: Consolas; font-size: 10pt;">/* Add any custom values between this line and the "stop editing" line. */
</span><span style="color: #8a8a67; font-family: Consolas; font-size: 10pt;">define<span style="color: #686868;">(<span style="color: #894d34;">'WP_SITEURL','/');
</span></span></span><span style="color: #8a8a67; font-family: Consolas; font-size: 10pt;">define<span style="color: #686868;">(<span style="color: #894d34;">'WP_HOME','/')</span></span></span></pre>
<h2><span style="color: #008897; font-family: Microsoft YaHei UI; font-size: 14pt;">注意事项<br />
</span></h2>
<p><span style="color: black; font-family: Microsoft YaHei UI; font-size: 10pt;">可以通过浏览器的开发者工具查看页面资源（如CSS与JS）指向的服务器目录位置，<br />
这样就可以看到资源究竟是从HTTP/HTTPS的标准端口加载，还是从自定义的端口号加载了。<br />
</span></p>
<p><span style="color: black; font-family: Microsoft YaHei UI; font-size: 10pt;">若是无法打开网页的话，可以尝试用浏览器的隐私模式查看。手机LTE（或有WWAN连接的笔记本）也是个不错的公网测试环境。<br />
</span></p>
<p><span style="color: black; font-family: Microsoft YaHei UI; font-size: 10pt;">直接在浏览器输入域名并不能直接跳转到端口号，这个功能需要DNS管理侧跳转实现，不是所有DNS服务商都提供这一功能，对于私人用途也没有必要。<br />
</span></p>
<p><span style="color: black; font-size: 10pt;">Webinoly<span style="font-family: 微软雅黑;">自带黑洞模板，理论上直接从IP+端口号无法访问，只有从域名+端口访问才能显示网页。<br />
至于运营商侧是否因此探测或者禁止……并不可测。因地区而异吧，本文不会探讨法律风险。<br />
不过安全起见仍然建议使用HTTPS协议。<br />
另家宽不建议开启爬虫探测，必要时开启整站HTTPAUTH也并非不可。<br />
</span></span></p>
<p><span style="color: black; font-family: Microsoft YaHei UI; font-size: 10pt;">最后，测试完毕后，切勿忘记将临时修改的自定义hosts，将其复原回来！开发愉快~<br />
</span></p>

<p><a href="https://v1sta.xyz/tech/webinoly-install-wordpress-on-wan/" rel="nofollow">来源</a></p>]]></content:encoded>
					
					<wfw:commentRss>https://v1sta.xyz/tech/webinoly-install-wordpress-on-wan/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<enclosure url="https://v1sta.xyz/wp-content/uploads/2026/01/011626_1211_WebinolyW1.png" length="110978" type="image/png"/><media:content url="https://v1sta.xyz/wp-content/uploads/2026/01/011626_1211_WebinolyW1.png" width="775" height="769" medium="image" type="image/png"/>	</item>
		<item>
		<title>Dokuwiki 安装记录</title>
		<link>https://v1sta.xyz/tech/dokuwiki-installation/</link>
					<comments>https://v1sta.xyz/tech/dokuwiki-installation/#respond</comments>
		
		<dc:creator><![CDATA[远景の域主 V1STA]]></dc:creator>
		<pubDate>Tue, 27 Jun 2023 08:31:22 +0000</pubDate>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[Dokuwiki]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Nginx]]></category>
		<category><![CDATA[Webinoly]]></category>
		<guid isPermaLink="false">https://v1sta.xyz/?p=1494</guid>

					<description><![CDATA[准备重新启动我的Minecraft服务器了。想着打算开一个服务器的Wiki，记录服务器配置与规则、模组之类的信 &#8230; <a href="https://v1sta.xyz/tech/dokuwiki-installation/" class="more-link">继续阅读<span class="screen-reader-text">Dokuwiki 安装记录</span> <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<p>准备重新启动我的Minecraft服务器了。想着打算开一个服务器的Wiki，记录服务器配置与规则、模组之类的信息，供玩家们查阅。</p>



<p>我不太想在VPS上再运行一些带数据库的Web服务，除非用SQLite，所以选择了Dokuwiki，虽然最后发现并不太合适（可能还不如用Typecho+SQLite，奈何Typecho没有我比较喜好的主题）</p>



<span id="more-1494"></span>



<h2 class="wp-block-heading">安装</h2>



<p>这次还是使用我喜爱的Webinoly运维脚本配置，和上次<a href="https://v1sta.xyz/tech/blessing-skin/" data-type="post" data-id="1174">搭建Blessing Skin</a>的过程类似，一行site命令，使用标准的php模板并配置SSL证书，一气呵成：</p>



<pre class="wp-block-preformatted">site [domain.ltd] -php -ssl=on</pre>



<p>打开 Dokuwiki 的<a href="https://download.dokuwiki.org/">官网下载</a>页面，可以选择自定义最小化的编译版本，仅保留需要的插件和语言：</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://v1sta.xyz/wp-content/uploads/2023/06/chrome_spCPC60oyz.png" data-lbwps-width="1920" data-lbwps-height="1079" data-lbwps-srcsmall="https://v1sta.xyz/wp-content/uploads/2023/06/chrome_spCPC60oyz-300x169.png"><img data-dominant-color="f3f2f2" data-has-transparency="true" style="--dominant-color: #f3f2f2;" fetchpriority="high" decoding="async" width="1024" height="575" sizes="(max-width: 1024px) 100vw, 1024px" src="https://v1sta.xyz/wp-content/uploads/2023/06/chrome_spCPC60oyz-1024x575.png" alt="" class="wp-image-1495 has-transparency" srcset="https://v1sta.xyz/wp-content/uploads/2023/06/chrome_spCPC60oyz-1024x575.png 1024w, https://v1sta.xyz/wp-content/uploads/2023/06/chrome_spCPC60oyz-300x169.png 300w, https://v1sta.xyz/wp-content/uploads/2023/06/chrome_spCPC60oyz-768x432.png 768w, https://v1sta.xyz/wp-content/uploads/2023/06/chrome_spCPC60oyz-1536x863.png 1536w, https://v1sta.xyz/wp-content/uploads/2023/06/chrome_spCPC60oyz.png 1920w" /></a></figure>
</div>


<p>然后点击下载，会自动转到下载页面，下载编译的压缩包，并提示如果没有自动下载则点击链接，复制这个链接即为wget下载链接。注意有下载时限，过一段时间后会过期，因此我也无法提供下载链接。</p>



<p>使用 <code>tar -xvzf</code> 解压后获得名为 <code>dokuwiki</code> 的目录，将其替换默认的 htdocs目录（也可以在nginx配置文件改成 dokuwiki ），并递归设置目录所有者为www-data以取得权限。</p>



<pre class="wp-block-preformatted">tar -xvzf dokuwiki-*.tgz
chown -R www-data:www-data ./htdocs
nginx -s reload</pre>



<p>此时已经可以在浏览器中访问了，在域名后面输入 <code>install.php</code> 就能够访问安装器页面，出于安全原因，这个安装器只能在全新的Dokuwiki使用一次，配置以后还需要移走 install.php 以阻止访问。</p>



<h2 class="wp-block-heading">URL重写</h2>



<p>参考Dokuwiki上的<a href="https://www.dokuwiki.org/rewrite">Rewrite页</a>。可以通过URL重写移除链接中的doku.php字样，需要在配置页 > 高级设置中设定userewrite项为 .htaccess(2)，以及打开canonical 完全标准的URL。</p>



<p>虽然userewrite表述为.htaccess，但并不是Apache HTTP Server特有的重写配置，同样也支持IIS、Nginx等多个其他的Web服务器。在此附上启用Nginx重写功能的片段，顺便设置敏感目录的阻止访问。</p>



<pre class="wp-block-preformatted">location / { try_files $uri $uri/ @dokuwiki; }
 
location @dokuwiki {
        rewrite ^/_media/(.*) /lib/exe/fetch.php?media=$1 last;
        rewrite ^/_detail/(.*) /lib/exe/detail.php?media=$1 last;
        rewrite ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&amp;id=$2 last;
        rewrite ^/(.*) /doku.php?id=$1&amp;$args last;
    }
 
    location ~ \.php$ {
        if (!-f $request_filename) { return 404; }
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param REDIRECT_STATUS 200;
        fastcgi_pass 127.0.0.1:9000;
    }
    
location ~ /(data|conf|bin|inc|vendor)/ {
    deny all;
}</pre>



<p>需注意的是，第一行的 location 配置与 Webinoly自带的 common/phpx.conf 相冲突，需要在站点Nginx主配置注释include后者以识别 @dokuwiki 。</p>



<p>这时URL重写便已经配置好了，如同WP的伪静态一样简单。</p>



<h2 class="wp-block-heading">主题</h2>



<p>Dokuwiki可以安装很多模板主题 (Template) ，它们以Wikipedia的风格居多，也有少数现代扁平化的设计。我比较喜欢 <a href="https://www.dokuwiki.org/template:sprintdoc">SprintDoc</a> 模板，是德国人开发的，基于Material设计语言，简单而优雅，而且有著浓厚的德国工业文件的风格。</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img data-dominant-color="ececed" data-has-transparency="false" style="--dominant-color: #ececed;" decoding="async" width="600" height="316" sizes="(max-width: 600px) 100vw, 600px" src="https://v1sta.xyz/wp-content/uploads/2023/06/image-3.png" alt="" class="wp-image-1496 not-transparent" srcset="https://v1sta.xyz/wp-content/uploads/2023/06/image-3.png 600w, https://v1sta.xyz/wp-content/uploads/2023/06/image-3-300x158.png 300w" /></figure>
</div>


<p>在扩展管理器中搜索 SprintDoc 就可以直接下载，然后去配置页启用template，当然也可以自己下载上传压缩包安装。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">结尾</h2>



<p>最后，我还是放弃了使用Dokuwiki，研究了一会发现，Dokuwiki的结构并不是很适合我。</p>



<p>尽管Dokuwiki是一种纯文件架构（Flat-file CMS）的程序，比较类似的是Grav CMS，但是并不代表从服务器下载文件就能直接所见即所得，除非直接离线存储整个网页。</p>



<p>Dokuwiki特有的synatx格式与富文本编辑器也不太好用，虽说有插件支持Markdown，但不是文件格式存储，依然没什么优势。</p>



<p>其次，Dokuwiki对于英语/拉丁语以外的语言体系的支持并不算好，虽然并不是完全不支持亚洲语系，但是URL只能设定为英文。分类的功能也不太好用，不像Mediawiki的几个站点。</p>



<p>最初的初衷只是为了想要记录一些服务端、客户端区分的MC模组，然而本来就有先人在mcmod百科上记载了，而且也被很多支持BMCLAPI的启动器所引用，我为何不直接写文笔记附上mcmod.cn的链接呢？</p>



<p>可能还是担忧突然一夜之间内容消失的重创。</p>



<p>虽然对一个小服务器没什么影响……我还是用OneNote吧。其实，支持metaweblog发布到WP功能的旧版Word更适合记录啊。</p>

<p><a href="https://v1sta.xyz/tech/dokuwiki-installation/" rel="nofollow">来源</a></p>]]></content:encoded>
					
					<wfw:commentRss>https://v1sta.xyz/tech/dokuwiki-installation/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<enclosure url="https://v1sta.xyz/wp-content/uploads/2023/06/chrome_spCPC60oyz-1024x575.png" length="166770" type="image/png"/><media:content url="https://v1sta.xyz/wp-content/uploads/2023/06/chrome_spCPC60oyz-1024x575.png" width="1024" height="575" medium="image" type="image/png"/>	</item>
		<item>
		<title>搭建基于h5ai的文件共享空间：WebDAV篇</title>
		<link>https://v1sta.xyz/tech/file-carbinet-webdav/</link>
					<comments>https://v1sta.xyz/tech/file-carbinet-webdav/#respond</comments>
		
		<dc:creator><![CDATA[远景の域主 V1STA]]></dc:creator>
		<pubDate>Sun, 25 Jun 2023 06:20:18 +0000</pubDate>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Nginx]]></category>
		<category><![CDATA[WebDAV]]></category>
		<guid isPermaLink="false">https://v1sta.xyz/?p=1440</guid>

					<description><![CDATA[上篇文章介绍了如何用h5ai搭建资源存放箱，但是h5ai只能共享展示文件列表，并不具备管理文件的功能。

虽然可以通过SFTP上传和管理文件，域主自己也尝试了SSHFS-Win挂载VPS的目录，显然速度并不理想，其他的协议（如FTP、SMB）放在公网不安全、配置证书或VPN又相当麻烦，因此还是要搭建一个WebDAV服务。]]></description>
										<content:encoded><![CDATA[
<p>上篇文章介绍了如何用h5ai搭建资源存放箱，但是h5ai只能共享展示文件列表，并不具备管理文件的功能。</p>



<p>虽然可以通过SFTP上传和管理文件，域主自己也尝试了SSHFS-Win挂载VPS的目录，显然速度并不理想，其他的协议（如FTP、SMB）放在公网不安全、配置证书或VPN又相当麻烦，因此还是要搭建一个WebDAV服务。</p>



<span id="more-1440"></span>



<p>关于上篇搭建h5ai的文章，请点击下方阅读：</p>



<figure class="wp-block-mamaduka-bookmark-card is-style-default"><a class="bookmark-card" href="https://v1sta.xyz/tech/file-carbinet-h5ai/"><div class="bookmark-card__image"><img decoding="async" src="https://v1sta.xyz/wp-content/uploads/2023/06/chrome_MKhlJzZyao.png"/></div><div class="bookmark-card__content"><div class="bookmark-card__title">搭建基于h5ai的文件共享空间：h5ai篇 &#8211; 景の域</div><div class="bookmark-card__description">最近重新弄了一下Minecraft的服务器，上次说到，HMCL启动器支持通过静态文件列表检查整合包完整性，实现自动更新的功能。</div><div class="bookmark_card__meta"><img decoding="async" class="bookmark_card__meta-icon" src="https://v1sta.xyz/wp-content/uploads/2023/05/cropped-blutorii-16x16.png"/><span class="bookmark_card__meta-publisher">v1sta.xyz</span></div></div></a></figure>



<p></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p>Linux平台有许多WebDAV的服务端，Go、Rust等编写的二进制服务端，如Dave、Davrage，有PHP写的SabreDAV，有Docker运行的容器；一些私有云程序如Nextcloud、Rclone也内建了WebDAV的功能，甚至Nginx、Apache都可以通过模块支持简单的WebDAV协议……</p>



<p>域主在搭建WebDAV的时候，先后尝试了Dave和Davrage，下载了二进制文件，复制到 <code>/usr/local</code> 新建子目录，并用 <code>ln -s</code> 在 <code>/usr/bin</code> 目录下创建软链接、自行编写Systemd Service系统服务，再用Nginx反代，但就是跑不起来……</p>



<pre class="wp-block-preformatted">[Unit]
Description=WebDAV Service
StartLimitIntervalSec=0
[Service]
Type=simple
Restart=always
RestartSec=1
User=root
ExecStart=/usr/bin/dave
</pre>



<p>Davrage可算作是Dave的改版，Dave使用yaml配置，而Davrage使用环境变量（Environment）运行，读取命令行参数或者env文件中的变量。</p>



<p>Davrage的更新时间比Dave晚一些。不过都卡在了用户验证的环节，而且没法被Windows系统自带的文件夹映射识别到……</p>



<pre class="wp-block-preformatted">[Unit]
Description=WebDAV Service
StartLimitIntervalSec=0
[Service]
Type=simple
Restart=always
RestartSec=1
User=root
ExecStart=/usr/bin/davrage
EnvironmentFile=/usr/local/davrage/env
</pre>



<p>尽管轻量小巧，既然不能用也不过是废柴一个（霖并感），逐放弃。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p>后来了解到了Rclone，虽然主要的功能是聚合挂载网络云盘映射到本地，但也可以运行兼容的WebDAV服务。</p>



<p>搭建WebDAV的过程中参考了这篇文章： <a href="https://sharpgan.com/rclone-webdav-service-with-systemd-and-nginx-and-cloudflare/">Rclone搭建Webdav服务+Systemd保活+Nginx反代+CF加速一条龙</a> ，虽然也需要自己创建Systemd服务，至少可以正常运行了。</p>



<p>先创建单独的运行用户，通过wget下载rclone并解压，解压到用户目录下：</p>



<pre class="wp-block-preformatted">adduser webdav
su - webdav &amp;&amp; mkdir rclone &amp;&amp; cd rclone
wget https://downloads.rclone.org/rclone-current-linux-amd64.zip
unzip rclone-current-linux-amd64.zip &amp;&amp; mv rclone-v1.62.0-linux-amd64/rclone ./ &amp;&amp; rm -rf rclone-current-linux-amd64*
</pre>



<p>下面是Rclone的Systemd服务配置，需要指定运行参数、路径 （其中 <code>[domain.ltd]</code> 为网站目录的域名），并且单独创建htpasswd的密码文件。</p>



<pre class="wp-block-preformatted">[Unit]
Description=Rclone Webdav Service
After=network.target
[Service]
User=webdav
# Execute `systemctl daemon-reload` after ExecStart= is changed.
ExecStart=/home/webdav/rclone/rclone serve webdav /var/www/[domain.ltd]/htdocs --addr 127.0.0.1:5000 --htpasswd /home/webdav/rclone/htpasswd
[Install]
WantedBy=multi-user.target</pre>



<p>在命令行中创建bcrypt格式的密码文件，其中 <code>[username]</code> 为用户名，可随意填写，随后根据交互式命令输入密码：</p>



<pre class="wp-block-preformatted">apt-get install apache2-utils
cd /home/webdav/rclone
touch htpasswd
htpasswd -B htpasswd [username]</pre>



<p>保存以后重启一下systemd的daemon，再启用Rclone服务配置的自启动项：</p>



<pre class="wp-block-preformatted">systemctl daemon-reload
systemctl enable rclone
systemctl start rclone
systemctl status rclone</pre>



<p>Nginx反代可以使用SSL，由于Rclone的WebDAV服务也附带一个简单的文件列表，建议配置额外的端口号或者子域名访问，不放在主要的443 server 配置中，避免安全性和配置冲突问题。</p>



<pre class="wp-block-preformatted">error_page 405 = @app;
location @app {
proxy_pass http://127.0.0.1:5000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
location ~ /.well-known {
allow all;
}
location / {
proxy_pass http://127.0.0.1:5000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
}</pre>



<p>访问浏览器，输入webdav的地址，再输入访问的用户名和密码，即可访问rclone自带的索引列表界面：</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><a href="https://v1sta.xyz/wp-content/uploads/2023/06/chrome_CWq9GvCFQl.png" data-lbwps-width="1027" data-lbwps-height="772" data-lbwps-srcsmall="https://v1sta.xyz/wp-content/uploads/2023/06/chrome_CWq9GvCFQl-300x226.png"><img data-dominant-color="fcfcfc" data-has-transparency="true" style="--dominant-color: #fcfcfc;" decoding="async" sizes="(max-width: 1024px) 100vw, 1024px" src="https://v1sta.xyz/wp-content/uploads/2023/06/chrome_CWq9GvCFQl-1024x770.png" alt="" class="wp-image-1443 has-transparency" width="504" height="378" srcset="https://v1sta.xyz/wp-content/uploads/2023/06/chrome_CWq9GvCFQl-1024x770.png 1024w, https://v1sta.xyz/wp-content/uploads/2023/06/chrome_CWq9GvCFQl-300x226.png 300w, https://v1sta.xyz/wp-content/uploads/2023/06/chrome_CWq9GvCFQl-768x577.png 768w, https://v1sta.xyz/wp-content/uploads/2023/06/chrome_CWq9GvCFQl.png 1027w" /></a></figure>
</div>


<p>使用资源管理器（Explorer）添加网络向导和映射网络驱动器也可以正常识别：</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://v1sta.xyz/wp-content/uploads/2023/06/rundll32_vdkmqEDhVA.png" data-lbwps-width="595" data-lbwps-height="534" data-lbwps-srcsmall="https://v1sta.xyz/wp-content/uploads/2023/06/rundll32_vdkmqEDhVA-300x269.png"><img data-dominant-color="fafbfb" data-has-transparency="true" style="--dominant-color: #fafbfb;" loading="lazy" decoding="async" width="595" height="534" sizes="auto, (max-width: 595px) 100vw, 595px" src="https://v1sta.xyz/wp-content/uploads/2023/06/rundll32_vdkmqEDhVA.png" alt="" class="wp-image-1444 has-transparency" srcset="https://v1sta.xyz/wp-content/uploads/2023/06/rundll32_vdkmqEDhVA.png 595w, https://v1sta.xyz/wp-content/uploads/2023/06/rundll32_vdkmqEDhVA-300x269.png 300w" /></a></figure>
</div>


<p>缩略图可以正常显示在映射启动器中：</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://v1sta.xyz/wp-content/uploads/2023/06/explorer_vWhZYlQenu.png" data-lbwps-width="1033" data-lbwps-height="729" data-lbwps-srcsmall="https://v1sta.xyz/wp-content/uploads/2023/06/explorer_vWhZYlQenu-300x212.png"><img data-dominant-color="f9faf9" data-has-transparency="true" style="--dominant-color: #f9faf9;" loading="lazy" decoding="async" width="1024" height="723" sizes="auto, (max-width: 1024px) 100vw, 1024px" src="https://v1sta.xyz/wp-content/uploads/2023/06/explorer_vWhZYlQenu-1024x723.png" alt="" class="wp-image-1445 has-transparency" srcset="https://v1sta.xyz/wp-content/uploads/2023/06/explorer_vWhZYlQenu-1024x723.png 1024w, https://v1sta.xyz/wp-content/uploads/2023/06/explorer_vWhZYlQenu-300x212.png 300w, https://v1sta.xyz/wp-content/uploads/2023/06/explorer_vWhZYlQenu-768x542.png 768w, https://v1sta.xyz/wp-content/uploads/2023/06/explorer_vWhZYlQenu.png 1033w" /></a></figure>
</div>


<p>至此，一个基于h5ai和WebDAV的文件共享空间，就搭建完成了。</p>



<p>不过也要想一个好名字……</p>



<p>让我这个域主，为这个共享空间命名吧，闭上眼随意思考一个名字来决定，它会暗示这个空间的存在感，也会暗示这个空间的能力……</p>



<p>文件！是文件的资源，让我为它命名，这个共享空间的名字是……</p>



<p>资源存放箱！<sup>File Carbinet</sup>  能力为列出文件资源的列表在站点上共享</p>



<iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width=500 height=88 src="//music.163.com/outchain/player?type=2&#038;id=30482386&#038;auto=0&#038;height=66"></iframe>

<p><a href="https://v1sta.xyz/tech/file-carbinet-webdav/" rel="nofollow">来源</a></p>]]></content:encoded>
					
					<wfw:commentRss>https://v1sta.xyz/tech/file-carbinet-webdav/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<enclosure url="https://v1sta.xyz/wp-content/uploads/2023/06/chrome_CWq9GvCFQl.png" length="26251" type="image/png"/><media:content url="https://v1sta.xyz/wp-content/uploads/2023/06/chrome_CWq9GvCFQl.png" width="1027" height="772" medium="image" type="image/png"/>	</item>
		<item>
		<title>搭建基于h5ai的文件共享空间：h5ai篇</title>
		<link>https://v1sta.xyz/tech/file-carbinet-h5ai/</link>
					<comments>https://v1sta.xyz/tech/file-carbinet-h5ai/#comments</comments>
		
		<dc:creator><![CDATA[远景の域主 V1STA]]></dc:creator>
		<pubDate>Sat, 24 Jun 2023 12:27:23 +0000</pubDate>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[h5ai]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Nginx]]></category>
		<category><![CDATA[Webinoly]]></category>
		<guid isPermaLink="false">https://v1sta.xyz/?p=1425</guid>

					<description><![CDATA[最近重新弄了一下Minecraft的服务器，上次说到，HMCL启动器支持通过静态文件列表检查整合包完整性，实现自动更新的功能。

不过后续可能会分享更多的文件、图片等，NGINX自带的索引列表过于简陋，索性尝试一下热门的h5ai吧。于是，我基于h5ai搭建了本站的资源存放箱（File Cabinet）共享文件。]]></description>
										<content:encoded><![CDATA[
<p>最近重新弄了一下Minecraft的服务器，上次说到，HMCL启动器支持通过静态文件列表检查整合包完整性，实现自动更新的功能。</p>



<p>不过后续可能会分享更多的文件、图片等，NGINX自带的索引列表过于简陋，索性尝试一下热门的h5ai吧。于是，我基于h5ai搭建了本站的资源存放箱（File Cabinet）共享文件。</p>



<span id="more-1425"></span>



<p>并且考虑到SFTP的速度很慢，实在不想上传几个文件还要打开WinSCP之类的运维工具，顺便也搭建了一个WebDAV服务端，用于管理上传的文件。<em><s>后续再更新</s></em></p>



<p>在此之前我使用的是SSHFS-Win，就是下图这个，它可以在资源管理器（Explorer）挂载目录，类似于RaiDrive之类的第三方软件，不过它是自由免费的开源软件。奈何SFTP的文件传输效率还是太低了些……</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://v1sta.xyz/wp-content/uploads/2023/06/SSHFS-Win_Manager_LL7NJFVRg1.png" data-lbwps-width="895" data-lbwps-height="495" data-lbwps-srcsmall="https://v1sta.xyz/wp-content/uploads/2023/06/SSHFS-Win_Manager_LL7NJFVRg1-300x166.png"><img data-dominant-color="2e333b" data-has-transparency="true" style="--dominant-color: #2e333b;" loading="lazy" decoding="async" width="895" height="495" sizes="auto, (max-width: 895px) 100vw, 895px" src="https://v1sta.xyz/wp-content/uploads/2023/06/SSHFS-Win_Manager_LL7NJFVRg1.png" alt="" class="wp-image-1426 has-transparency" srcset="https://v1sta.xyz/wp-content/uploads/2023/06/SSHFS-Win_Manager_LL7NJFVRg1.png 895w, https://v1sta.xyz/wp-content/uploads/2023/06/SSHFS-Win_Manager_LL7NJFVRg1-300x166.png 300w, https://v1sta.xyz/wp-content/uploads/2023/06/SSHFS-Win_Manager_LL7NJFVRg1-768x425.png 768w" /></a></figure>
</div>


<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">安装h5ai</h1>



<p>h5ai是一个基于PHP开发的文件共享索引程序，由德国人Lars Jung，全称是 HTML5 Apache Index，本是取代Apache自带的静态文件索引功能，不过也可以支持其他的Web服务器。</p>



<figure class="wp-block-mamaduka-bookmark-card is-style-horizontal"><a class="bookmark-card" href="https://larsjung.de/h5ai/"><div class="bookmark-card__image"><img decoding="async" src="https://larsjung.de/_assets_e6efc6e2a36562198dcc2229a4f45013361fb6d0/images/icon.svg"/></div><div class="bookmark-card__content"><div class="bookmark-card__title">h5ai · modern HTTP web server index for Apache httpd, lighttpd, nginx and Cherokee · larsjung.de</div><div class="bookmark-card__description">modern HTTP web server index for Apache httpd, lighttpd, nginx and Cherokee</div><div class="bookmark_card__meta"><img decoding="async" class="bookmark_card__meta-icon" src="https://larsjung.de/_assets_e6efc6e2a36562198dcc2229a4f45013361fb6d0/images/icon.ico"/><span class="bookmark_card__meta-publisher">larsjung.de</span></div></div></a></figure>



<p></p>



<p>h5ai很好安装，打开上面的项目主页，可以看到一个大大的版本号下载按钮，右键复制按钮的链接，通过wget就可以下载到服务器上。目前最新的版本号是0.30.0，用cd命令转到文件共享的虚拟主机（vhost）网站目录内下载并解压。</p>



<pre class="wp-block-preformatted">cd /var/www/[domain.ltd]/htdocs
wget https://release.larsjung.de/h5ai/h5ai-0.30.0.zip
unzip h5ai-0.30.0.zip</pre>



<p>解压后会出现一个名为 _h5ai的文件夹，这是h5ai的程序目录，不过默认是隐藏的，下文会提到如何隐藏前缀文件。</p>



<p>然后编辑虚拟主机的配置文件，添加_h5ai路径的index.php索引程序：</p>



<pre class="wp-block-preformatted">root /var/www/[domain.ltd]/htdocs;

index index.php index.html /_h5ai/public/index.php;

location ~ .*\.(zip|ini|jar)?$ { 
     allow all; 
} 
...</pre>



<p>由于我使用的Webinoly有安全模板限制，默认不能通过直链访问一些压缩包和可执行文件后缀的静态资源，因此也添加了特定的文件后缀赦免。</p>



<p>此时在浏览器中输入文件站的域名，在后方加入 <code>/_h5ai/public/index.php/</code> 访问h5ai的自检（探针）页面，默认无密码就可以进入，编辑option文件添加访问密码。</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://v1sta.xyz/wp-content/uploads/2023/06/chrome_a0Koz5SEWI.png" data-lbwps-width="1091" data-lbwps-height="733" data-lbwps-srcsmall="https://v1sta.xyz/wp-content/uploads/2023/06/chrome_a0Koz5SEWI-300x202.png"><img data-dominant-color="fbfbfc" data-has-transparency="true" style="--dominant-color: #fbfbfc;" loading="lazy" decoding="async" width="1024" height="688" sizes="auto, (max-width: 1024px) 100vw, 1024px" src="https://v1sta.xyz/wp-content/uploads/2023/06/chrome_a0Koz5SEWI-1024x688.png" alt="" class="wp-image-1428 has-transparency" srcset="https://v1sta.xyz/wp-content/uploads/2023/06/chrome_a0Koz5SEWI-1024x688.png 1024w, https://v1sta.xyz/wp-content/uploads/2023/06/chrome_a0Koz5SEWI-300x202.png 300w, https://v1sta.xyz/wp-content/uploads/2023/06/chrome_a0Koz5SEWI-768x516.png 768w, https://v1sta.xyz/wp-content/uploads/2023/06/chrome_a0Koz5SEWI.png 1091w" /></a></figure>
</div>


<p>根据自检页面的指示设定文件和目录的权限、安装需要的扩展等等。</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://v1sta.xyz/wp-content/uploads/2023/06/chrome_azuig8NHb4.png" data-lbwps-width="917" data-lbwps-height="678" data-lbwps-srcsmall="https://v1sta.xyz/wp-content/uploads/2023/06/chrome_azuig8NHb4-300x222.png"><img data-dominant-color="fafafa" data-has-transparency="true" style="--dominant-color: #fafafa;" loading="lazy" decoding="async" width="917" height="678" sizes="auto, (max-width: 917px) 100vw, 917px" src="https://v1sta.xyz/wp-content/uploads/2023/06/chrome_azuig8NHb4.png" alt="" class="wp-image-1429 has-transparency" srcset="https://v1sta.xyz/wp-content/uploads/2023/06/chrome_azuig8NHb4.png 917w, https://v1sta.xyz/wp-content/uploads/2023/06/chrome_azuig8NHb4-300x222.png 300w, https://v1sta.xyz/wp-content/uploads/2023/06/chrome_azuig8NHb4-768x568.png 768w" /></a></figure>
</div>


<p>一切就绪以后，h5ai就可以正常运行了。</p>



<h1 class="wp-block-heading">配置h5ai</h1>



<p>如果想达到上图域主的效果，还需要设定h5ai的配置。</p>



<p>h5ai的主要配置文件位于 <code>_h5ai/private/conf/options.json</code>  ，可以设定的配置非常多，在此仅列出我主要修改的几项：</p>



<pre class="wp-block-preformatted">"view": {
    "binaryPrefix": false,
    "disableSidebar": false,
    "fallbackMode": false,
    "fastBrowsing": true,
    "fonts": ["Ubuntu", "Roboto", "Helvetica", "Arial", "sans-serif"],
    "fontsMono": ["Ubuntu Mono", "Monaco", "Lucida Sans Typewriter", "monospace"],
    "hidden": ["^\\.", "^_h5ai", "icon.ico"],
    "hideFolders": false,
    "hideIf403": true,
    "hideParentFolder": false,
    "maxIconSize": 40,
    "modes": ["details", "grid", "icons"],
    "modeToggle": false,
    "setParentFolderLabels": true,
    "sizes": [20, 40, 60, 80, 100, 140, 180, 220, 260, 300],
    "theme": "comity",
    "unmanaged": ["index.html", "index.htm", "index.php"],
    "unmanagedInNewWindow": false
},</pre>



<p>这里可以设置UI的显示模式、字体、隐藏文件、主题等等，比如hidden设置隐藏文件可以使用正则、也可以单独匹配文件名，这里我添加了 icon.ico 图标文件。</p>



<h3 class="wp-block-heading">语言设置</h3>



<pre class="wp-block-preformatted">"l10n": {
        "enabled": true,
        "lang": "zh-Hans",
        "useBrowserLang": true
 },</pre>



<p>修改 <code>lang</code> 为简体中文 (zh-Hans) ，默认为英语 (en)。不过h5ai本身亦内置多种语言，<code>useBrowserLang</code> 可根据用户端浏览器自动切换显示的语言。</p>



<h3 class="wp-block-heading">修改谷歌镜像</h3>



<p>h5ai的界面默认使用Google Fonts，可以灵活更换字体，但在国内也可能会出现打不开的现象，好在可以替换成其他链接：</p>



<pre class="wp-block-code"><code>"resources": {
        "scripts": &#91;],
        "styles": &#91;
            "//fonts.googleapis.com/css?family=Ubuntu:300,400,700%7CUbuntu+Mono:400,700"
        ]
},</code></pre>



<p>在 <code>styles</code> 中填写自定义字体的URL，使用Google Fonts的话可以把Ubuntu Mono换成其他的字体名称；</p>



<p>以及将 <code>fonts.googleapis.com</code> 替换为国内可用的字体镜像，比如 <code>fonts.loli.net</code> 的，这个是老生常谈了。</p>



<h3 class="wp-block-heading">添加MD文件备注</h3>



<p>还是在 <code>options.json</code> 中，找到 <code>custom</code> 开头，修改 <code>enable</code> 为 <code>true</code> ，可开启文件页眉/页脚备注，支持Markdown和HTML格式。</p>



<pre class="wp-block-preformatted">"custom": {<br>"enabled": true,<br>"stopSearchingAtRoot": true<br>},</pre>



<p>随后可在文件目录中添加 <code>_h5ai.header.md(.html)</code>&nbsp;和 <code>_h5ai.footer.md(.html)</code> 文件</p>



<h3 class="wp-block-heading">修改根目录标题</h3>



<p>h5ai默认根目录标题显示为当前的域名，可以在 <code>_h5ai/public/js/scripts.js</code> 文件中修改自定义名称</p>



<p>找到PHP域名函数 <code>("/"===t?f.getDomain():n.name)</code> </p>



<p>替换为自定义字符串 <code>("/"===t?'资源存放箱':n.name)</code></p>



<h3 class="wp-block-heading">修改网页标题</h3>



<p>网页标题 (Title) 位于 <code>_h5ai/private/php/pages/index.php</code> 文件中，以 <code>&lt;title&gt;</code> <code>&lt;title/&gt;</code> 开头/结尾的HTML代码：</p>



<pre class="wp-block-preformatted">&lt;title&gt;index - powered by h5ai v0.30.0 (https://larsjung.de/h5ai/)&lt;title/&gt; </pre>



<p>此代码即为网页显示的标题，默认显示h5ai的版本、版权信息，可以将其替换成要显示的自定义文字。</p>



<p>需要在 options.json 关闭面包屑导航的动态标题功能。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p>域主顺便用Rclone搭建了额外的WebDAV文件传输和管理服务，天色已晚，待我吃完饭后，放到下篇再写……</p>



<p>嗯……如果在自己的服务器架设Jekyll、Hugo或Grav之类的Markdown博客引擎，也许可以用H5ai作为图床和视频站……</p>

<p><a href="https://v1sta.xyz/tech/file-carbinet-h5ai/" rel="nofollow">来源</a></p>]]></content:encoded>
					
					<wfw:commentRss>https://v1sta.xyz/tech/file-carbinet-h5ai/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<enclosure url="https://v1sta.xyz/wp-content/uploads/2023/06/chrome_MKhlJzZyao.png" length="745912" type="image/png"/><media:content url="https://v1sta.xyz/wp-content/uploads/2023/06/chrome_MKhlJzZyao.png" width="1316" height="742" medium="image" type="image/png"/>	</item>
	</channel>
</rss>
