Switched to caddy because tinyproxy is too limited

This commit is contained in:
Roberto Alsina 2024-07-04 13:10:32 -03:00
parent 0e55f6a2d9
commit 56e59ae4a0
4 changed files with 43 additions and 20 deletions

18
Caddyfile Normal file
View File

@ -0,0 +1,18 @@
{
https_port 8888
http_port 8887
local_certs
}
localhost:8888 {
handle_path /admin/terminal/* {
reverse_proxy /* http://127.0.0.1:7681
}
handle_path /admin/* {
reverse_proxy /* http://127.0.0.1:3000
}
}
handle_path /faaso/hello/* {
reverse_proxy /* http://hello-d89veq:3000
}

View File

@ -10,7 +10,7 @@ RUN shards build -d --error-trace
RUN strip bin/* RUN strip bin/*
FROM --platform=${TARGETPLATFORM:-linux/amd64} alpine as ship FROM --platform=${TARGETPLATFORM:-linux/amd64} alpine as ship
RUN apk update && apk add tinyproxy multirun openssl zlib yaml pcre2 gc libevent libgcc libxml2 ttyd && apk cache clean RUN apk update && apk add caddy multirun openssl zlib yaml pcre2 gc libevent libgcc libxml2 ttyd && apk cache clean
# Unprivileged user # Unprivileged user
RUN addgroup -S app && adduser app -S -G app RUN addgroup -S app && adduser app -S -G app
@ -19,10 +19,10 @@ WORKDIR /home/app
RUN mkdir runtimes public RUN mkdir runtimes public
COPY runtimes/ runtimes/ COPY runtimes/ runtimes/
COPY public/ public/ COPY public/ public/
COPY tinyproxy.conf ./ COPY Caddyfile ./
COPY --from=build /home/app/bin/faaso-daemon /home/app/bin/faaso /usr/bin/ COPY --from=build /home/app/bin/faaso-daemon /home/app/bin/faaso /usr/bin/
RUN mkdir /secrets RUN mkdir /secrets
RUN echo "sarasa" > /secrets/sarlanga RUN echo "sarasa" > /secrets/sarlanga
CMD ["/usr/bin/multirun", "-v", "faaso-daemon", "tinyproxy -d -c tinyproxy.conf"] CMD ["/usr/bin/multirun", "-v", "faaso-daemon", "caddy run --config Caddyfile"]

View File

@ -2,7 +2,7 @@ require "docr"
require "kemal" require "kemal"
module Proxy module Proxy
@@current_config = File.read("tinyproxy.conf") @@current_config = File.read("Caddyfile")
# Get current proxy config # Get current proxy config
get "/proxy/" do get "/proxy/" do
@ -30,24 +30,31 @@ module Proxy
funkos.sort! funkos.sort!
config = %( config = %(
User nobody {
Group nogroup https_port 8888
Port 8888 http_port 8887
Listen 0.0.0.0 local_certs
Timeout 600 }
Allow 0.0.0.0/0
ReverseOnly Yes localhost:8888 {
ReverseMagic Yes handle_path /admin/terminal/* {
ReversePath "/admin/" "http://127.0.0.1:3000/" reverse_proxy /* http://127.0.0.1:7681
ReversePath "/admin/terminal/" "http://127.0.0.1:7681" }
) + funkos.map { |funko| %(ReversePath "/faaso/#{funko.split("-")[0]}/" "http://#{funko}:3000/") }.join("\n") handle_path /admin/* {
reverse_proxy /* http://127.0.0.1:3000
}
) + funkos.map { |funko| %(
handle_path /faaso/#{funko.split("-")[0]}/* {
reverse_proxy /* http://#{funko}:3000
}
)}.join("\n") +"}"
if @@current_config != config if @@current_config != config
File.open("tinyproxy.conf", "w") do |file| File.open("Caddyfile", "w") do |file|
file << config file << config
end end
# Reload config # Reload config
Process.run(command: "/usr/bin/killall", args: ["-USR1", "tinyproxy"]) Process.run(command: "/usr/bin/killall", args: ["-USR1", "caddy"])
@@current_config = config @@current_config = config
end end
config config

View File

@ -3,7 +3,7 @@ module Terminal
@@terminal_process : Process | Nil = nil @@terminal_process : Process | Nil = nil
def start_terminal(_args = ["bash"], readonly = false) def start_terminal(_args = ["sh"], readonly = false)
args = ["-p", "7681", "-c", "admin:admin", "-o"] args = ["-p", "7681", "-c", "admin:admin", "-o"]
args += ["-W"] unless readonly args += ["-W"] unless readonly
args += _args args += _args
@ -16,5 +16,3 @@ module Terminal
end end
end end
Terminal.start_terminal