目前已实现:
未实现:
背景
Laf 0.8 用得不顺手,1.0 要求略高(只有1C1G的机器),只能通过本地服务器(4C16G)部署后通过 frp 到公网访问。
1. 本地部署 laf
- 按照 README 来就ok了。
- 部署前要先安装sealos和卸载docker。
- 部署过程中遇到错误异常退出就
sealos reset --force
一把嗦再重试部署。
- DOMAIN建议设置为 IP.nip.io,比如
127.0.0.1.nip.io
2. frp
不说了直接上配置。假设你的frp domain是 laf.example.com
首先是控制台的frpc配置:
[laf]
type=http
local_ip=127.0.0.1.nip.io
local_port=80
custom_domains=laf.example.com
host_header_rewrite = 127.0.0.1.nip.io
然后就是给每一个 laf-app 做frp:
[laf-app1]
type=http
local_ip=127.0.0.1.nip.io
local_port=80
custom_domains=app1.laf.example.com
host_header_rewrite = app1.127.0.0.1.nip.io
每次新建app都要添加一个新的frp配置。
3. nginx
我用的BT面板,只需要将 laf.example.com
和 *.laf.example.com
都放一个站点下。
反向代理设置为:
目标url:http://127.0.0.1:8080 (8080为frps的配置端口)
然后你访问一下 http://laf.example.com
能打开就ok。
4. SSL
先关闭反向代理,然后登录BT账号,然后直接在 站点-SSL
中的 let;s Encrypt 申请即可
然后打开反向代理。
然后你访问一下 https://laf.example.com
能打开就ok。
5. 外网访问 127.0.0.1.nip.io 失败
这时候需要请出牛逼的油猴插件。
在 laf.example.com 页面点击油猴-新建插件,输入以下代码:
(function() {
'use strict';
const originalHost = '127.0.0.1.nip.io'
const targetHost = 'laf.example.com'
const replaceUrl = (originalUrl) => {
const url = new URL(originalUrl, location.href);
url.protocol = 'https:'
url.host = url.host.replace(originalHost, targetHost)
return url.href
}
const originalFetch = window.fetch;
window.fetch = function(input, init) {
if (typeof input === 'string' && input.includes(originalHost)) {
input = replaceUrl(input);
}
return originalFetch.apply(this, arguments);
};
const originalXHR = window.XMLHttpRequest;
window.XMLHttpRequest = function() {
const xhr = new originalXHR();
const originalOpen = xhr.open;
xhr.open = function(method, url, async, user, password) {
if (typeof url === 'string' && url.includes(originalHost)) {
url = replaceUrl(url)
}
originalOpen.call(xhr, method, url, async, user, password);
};
return xhr;
};
})();
自行替换一下 laf.example.com 和 127.0.0.1.nip.io 两个字符串即可。