#159·ladder

Panic when github doesn't load?

Author: selfhoster1312Created Aug 31, 2026Updated Aug 31, 2026

I've noticed ladder crashes regularly (not too often but at least a few times every month) and i have to restart it manually.

In systemctl status:

× ladder.service - Ladder: Paywall Remover
     Loaded: loaded (/etc/systemd/system/ladder.service; enabled; preset: enabled)
     Active: failed (Result: exit-code) since Thu 2026-08-27 19:02:46 CEST; 4 days ago
   Duration: 540ms
    Process: 950 ExecStart=/var/www/ladder/ladder -r https://raw.githubusercontent.com/everywall/ladder-rules/main/ruleset.yaml -p 56822 (code=exited, status=2)
   Main PID: 950 (code=exited, status=2)
        CPU: 31ms

août 27 19:02:45 srv systemd[1]: Started ladder.service - Ladder: Paywall Remover.
août 27 19:02:46 srv systemd[1]: ladder.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
août 27 19:02:46 srv systemd[1]: ladder.service: Failed with result 'exit-code'.

In my ladder logs:

panic: WARN: failed to load ruleset from 'https://raw.githubusercontent.com/everywall/ladder-rules/main/ruleset.yaml'
    failed to load rules from remote url 'https://raw.githubusercontent.com/everywall/ladder-rules/main/ruleset.yaml'
    Get "https://raw.githubusercontent.com/everywall/ladder-rules/main/ruleset.yaml": dial tcp: lookup raw.githubusercontent.com on [::1]:53: server misbehaving
    WARN: failed to load 1 rulesets

goroutine 1 [running]:
ladder/handlers.ProxySite({0x7fff7f4c5eb8?, 0x89efaa?})
    /home/runner/work/ladder/ladder/handlers/proxy.go:181 +0x6f
main.main()
    /home/runner/work/ladder/ladder/cmd/main.go:161 +0xa4d
2026/08/27 09:34:34 WARN: No ruleset specified. Set the `RULESET` environment variable to load one for a better success rate.
panic: WARN: failed to load ruleset from 'https://raw.githubusercontent.com/everywall/ladder-rules/main/ruleset.yaml'
    failed to load rules from remote url 'https://raw.githubusercontent.com/everywall/ladder-rules/main/ruleset.yaml'
    Get "https://raw.githubusercontent.com/everywall/ladder-rules/main/ruleset.yaml": dial tcp: lookup raw.githubusercontent.com on [::1]:53: server misbehaving
    WARN: failed to load 1 rulesets

goroutine 1 [running]:
ladder/handlers.ProxySite({0x7ffcd814ceb8?, 0x89efaa?})
    /home/runner/work/ladder/ladder/handlers/proxy.go:181 +0x6f
main.main()
    /home/runner/work/ladder/ladder/cmd/main.go:161 +0xa4d
2026/08/27 19:02:46 WARN: No ruleset specified. Set the `RULESET` environment variable to load one for a better success rate.
panic: WARN: failed to load ruleset from 'https://raw.githubusercontent.com/everywall/ladder-rules/main/ruleset.yaml'
    failed to load rules from remote url 'https://raw.githubusercontent.com/everywall/ladder-rules/main/ruleset.yaml'
    Get "https://raw.githubusercontent.com/everywall/ladder-rules/main/ruleset.yaml": dial tcp: lookup raw.githubusercontent.com on 127.0.0.1:53: server misbehaving
    WARN: failed to load 1 rulesets

goroutine 1 [running]:
ladder/handlers.ProxySite({0x7ffd6fadfeb8?, 0x89efaa?})
    /home/runner/work/ladder/ladder/handlers/proxy.go:181 +0x6f
main.main()
    /home/runner/work/ladder/ladder/cmd/main.go:161 +0xa4d

I think there's different problems involved:

  • Yunohost ladder package does not automatically restart ladder (downstream problem)
  • ladder probably should not crash when some network is unreachable (i think it crashes trying to refresh the ruleset, in which case it could use the older version?)
  • ladder could embed a default ruleset in the binary and rely on the network only for updates (maybe that's already the case but i didn't get it from the README)