update: add dockerfile

This commit is contained in:
2025-05-14 11:49:53 +07:00
parent 0117931817
commit 7717a3b866
4 changed files with 27 additions and 7 deletions

20
Dockerfile Normal file
View File

@ -0,0 +1,20 @@
FROM golang:1.23.1-alpine3.20 AS go_builder
WORKDIR /src
COPY . .
RUN apk update && apk upgrade && apk add --no-cache ca-certificates tzdata
RUN update-ca-certificates
RUN go build -o ./tmp/main
FROM scratch
WORKDIR /src
COPY --from=go_builder /usr/share/zoneinfo /usr/share/zoneinfo
COPY --from=go_builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
COPY --from=go_builder /src/tmp/main /src
ENV TZ Asia/Jakarta
ENTRYPOINT ["./main"]

View File

@ -5,6 +5,7 @@ import (
"log" "log"
"os" "os"
"tunnel_pls/server" "tunnel_pls/server"
"tunnel_pls/utils"
) )
func main() { func main() {
@ -19,9 +20,9 @@ func main() {
log.SetOutput(os.Stdout) log.SetOutput(os.Stdout)
log.SetFlags(log.LstdFlags | log.Lshortfile) log.SetFlags(log.LstdFlags | log.Lshortfile)
privateBytes, err := os.ReadFile("id_rsa") privateBytes, err := os.ReadFile(utils.Getenv("ssh_private_key"))
if err != nil { if err != nil {
log.Fatal("Failed to load private key (./id_rsa)") log.Fatalf("Failed to load private key : %s", err.Error())
} }
private, err := ssh.ParsePrivateKey(privateBytes) private, err := ssh.ParsePrivateKey(privateBytes)

View File

@ -10,10 +10,11 @@ import (
"strings" "strings"
"time" "time"
"tunnel_pls/session" "tunnel_pls/session"
"tunnel_pls/utils"
) )
func NewHTTPSServer() error { func NewHTTPSServer() error {
cert, err := tls.LoadX509KeyPair("certs/localhost.direct.SS.crt", "certs/localhost.direct.SS.key") cert, err := tls.LoadX509KeyPair(utils.Getenv("cert_loc"), utils.Getenv("key_loc"))
if err != nil { if err != nil {
return err return err
} }

View File

@ -24,12 +24,10 @@ func NewServer(config ssh.ServerConfig) *Server {
if utils.Getenv("tls_enabled") == "true" { if utils.Getenv("tls_enabled") == "true" {
go func() { go func() {
err := NewHTTPSServer() err := NewHTTPSServer()
if err != nil {
if err != nil { if err != nil {
log.Fatalf("failed to start https server: %v", err) log.Fatalf("failed to start https server: %v", err)
} }
return return
}
}() }()
} }
go func() { go func() {