Closed cattyhouse closed 1 year ago
sudo journalctl -g 'empty|stale' -u caddy
Hi, caddy-trojan
uses the FileStorage
module to store data. So this might be an issue with caddy
not caddy-trojan
.
Hi,
caddy-trojan
uses theFileStorage
module to store data. So this might be an issue withcaddy
notcaddy-trojan
.
Thanks for your reply. Do you see these logs on your side if you are using caddy 2.6.4?
there is a file in /home/caddy/.local/share/caddy/trojan/xxxxxxxxxxx
, that is used to store up/down traffics, maybe related to that file?
looks like it is due to this commit : https://github.com/caddyserver/certmagic/commit/79babffe28c5e593b19b5268bf26447f1f5f0b26
looks like this kind of log can't be disabled because it does not have a logger
( namespace
field), thus not possible to exclude
temporary solution:
edit caddy.service, add one of
below options
[Service]
# newer systemd, e.g. on Archlinux
# ~ means discard, the following keyword is in extended regex (ERE) form
LogFilterPatterns=~FileStorage.*trojan
# older systemd, e.g. on debian 12
# this version of system does not have above option, we have to redirect logs to /dev/null
# WARNING: this will discard all logs except for caddy environ output
StandardError=null
why does it bother?
journalctl -g 'empty|stale' -u caddy | wc -l
:
32285
@imgk would you mind reading this comment? it basically says, .lock
should not be created empty.
when created , it stores timestamps info as json format.
https://github.com/caddyserver/certmagic/issues/232#issuecomment-1550788904
i made a patch to disable traffic updating, thus disables creating lock files
do you think it is worthy making this as an option?
diff --git a/listener/listener.go b/listener/listener.go
index b8116c2..88efe02 100644
--- a/listener/listener.go
+++ b/listener/listener.go
@@ -192,11 +192,11 @@ func (l *Listener) loop() {
lg.Info(fmt.Sprintf("handle trojan net.Conn from %v", c.RemoteAddr()))
}
- nr, nw, err := l.Proxy.Handle(io.Reader(c), io.Writer(c))
+ _, _, err := l.Proxy.Handle(io.Reader(c), io.Writer(c))
if err != nil {
lg.Error(fmt.Sprintf("handle net.Conn error: %v", err))
}
- up.Consume(utils.ByteSliceToString(b[:trojan.HeaderLen]), nr, nw)
+ // up.Consume(utils.ByteSliceToString(b[:trojan.HeaderLen]), nr, nw)
}(conn, l.Logger, l.Upstream)
}
}
Hi, sorry for the late reply. If you want to stop storing traffic on disk, you can try to setup trojan like this.
{
"apps": {
"http": {
"servers": {
"srv0": {
"listen": [":443"],
"listener_wrappers": [{
"wrapper": "trojan"
}],
"routes": [{
"handle": [{
"handler": "trojan",
"connect_method": true,
"websocket": true
},
{
"handler": "file_server",
"root": "/var/www/html"
}]
}]
}
}
},
"trojan": {
"upstream": {
"upstream": "memory"
},
"proxy": {
"proxy": "no_proxy"
},
"users": ["pass1234","word5678"]
},
"tls": {
"certificates": {
"automate": ["example.com"]
},
"automation": {
"policies": [{
"issuers": [{
"module": "acme",
"email": "your@email.com" //optional,recommended
},
{
"module": "zerossl",
"email": "your@email.com" //optional,recommended
}]
}]
}
}
}
}
thanks. that's basically replace caddy
with memory
?
Yes. When setting the value of upstream
to memory
, caddy-trojan wouldn't store traffic data to caddy FileStorage. Just store that data in computer memory.
will that store users
added via API in memory as well?
and even in memory, lock file is still generated on each connection?
would you mind to tell all the differences between caddy
and memory
caddy
: save to caddy
FileStorage
memory
: save to computer memory
thanks! i'll close now. it is caddy upstream issue (race condition).
@imgk the issue is solved upstream by Caddy author Matt Holt by introducing a wait and retry mechanism. And he suggests using sync.Mutex
method for the lock file (quote "For in-process locking, definitely just use sync.Mutex."
)
could you take a look at it? thanks.
caddy 2.6.4 with caddy-trojan
main
, lots of log like this , every 3~10 minutes:the user/group is
caddy:caddy
, home is/home/caddy
, permissions/ownership are all fine as i've checked. , i already set global log level to PANIC.btw, trojan is working fine, it's just the logs are annoying.
what could be the causes?
Caddyfile (with sensitive info replaced)