Защита Octoprint с помощь HAProxy
DjinNСтавим HAProxy:
- sudo apt-get install haproxy
Редактируем конфиг:
- sudo nano /etc/haproxy/haproxy.cfg
global
maxconn 4096
user haproxy
group haproxy
daemon
log 127.0.0.1 local0 debug
defaults
log global
mode http
option httplog
option dontlognull
retries 3
option redispatch
option http-server-close
option forwardfor
maxconn 2000
timeout connect 5s
timeout client 15min
timeout server 15min
frontend public
bind :::80 v4v6
option forwardfor except 127.0.0.1
use_backend webcam if { path_beg /webcam/ }
use_backend octoprint_unsecure if { hdr_beg(host) -i 192.168 }
default_backend octoprint
backend octoprint
acl needs_scheme req.hdr_cnt(X-Scheme) eq 0
reqrep ^([^\ :]*)\ /(.*) \1\ /\2
reqadd X-Scheme:\ https if needs_scheme { ssl_fc }
reqadd X-Scheme:\ http if needs_scheme !{ ssl_fc }
option forwardfor
server octoprint1 127.0.0.1:5000
acl ValidOctoPrintUser http_auth(OctoPrintUsers)
http-request auth realm OctoPrint if !ValidOctoPrintUser
backend octoprint_unsecure
acl needs_scheme req.hdr_cnt(X-Scheme) eq 0
reqrep ^([^\ :]*)\ /(.*) \1\ /\2
reqadd X-Scheme:\ https if needs_scheme { ssl_fc }
reqadd X-Scheme:\ http if needs_scheme !{ ssl_fc }
option forwardfor
server octoprint1 127.0.0.1:5000
backend webcam
reqrep ^([^\ :]*)\ /webcam/(.*) \1\ /\2
server webcam1 127.0.0.1:8080
userlist OctoPrintUsers
user USER password HASHEDPASS
Чтобы не спрашивало пароль, когда входите из локальной сети, проверьте строку use_backend octoprint_unsecure if { hdr_beg(host) -i 192.168 } и исправьте на вашу сеть.
Если вы хотите использовать просто пароль, а не хеш, то вместо password необходимо использовать insecure-password mypassword, но я настоятельно рекомендую использовать хеш, для этого:
- sudo apt install whois
- mkpasswd -m sha-512
И копируем полученный хэш.