From d1332a2d42f42b132a1e9df761bee0a7e6b511f6 Mon Sep 17 00:00:00 2001 From: Quentin Date: Fri, 4 Dec 2020 13:42:20 +0100 Subject: [PATCH 1/2] Add alps container --- app/build/alps/Dockerfile | 21 +++++++++++++ app/build/alps/skipverify.patch | 55 +++++++++++++++++++++++++++++++++ app/build/docker-compose.yml | 7 +++++ 3 files changed, 83 insertions(+) create mode 100644 app/build/alps/Dockerfile create mode 100644 app/build/alps/skipverify.patch diff --git a/app/build/alps/Dockerfile b/app/build/alps/Dockerfile new file mode 100644 index 0000000..647d90d --- /dev/null +++ b/app/build/alps/Dockerfile @@ -0,0 +1,21 @@ +FROM golang:1.15.6-buster as builder + +ARG VERSION + +ENV CGO_ENABLED=0 GOOS=linux GOARCH=amd64 +WORKDIR /tmp/alps + +RUN git init && \ + git remote add origin https://git.sr.ht/~migadu/alps && \ + git fetch --depth 1 origin ${VERSION} && \ + git checkout FETCH_HEAD + +COPY skipverify.patch skipverify.patch + +RUN git apply skipverify.patch && \ + go build -a -o /usr/local/bin/alps ./cmd/alps + +FROM scratch +COPY --from=builder /usr/local/bin/alps /alps +COPY --from=builder /tmp/alps/themes /themes +ENTRYPOINT ["/alps"] diff --git a/app/build/alps/skipverify.patch b/app/build/alps/skipverify.patch new file mode 100644 index 0000000..14e14cb --- /dev/null +++ b/app/build/alps/skipverify.patch @@ -0,0 +1,55 @@ +From 47765c10f1af2013556f76dc63dfa056167ae5e8 Mon Sep 17 00:00:00 2001 +From: Quentin +Date: Fri, 4 Dec 2020 13:19:24 +0100 +Subject: [PATCH] Skip CA verification + +--- + imap.go | 3 ++- + smtp.go | 3 ++- + 2 files changed, 4 insertions(+), 2 deletions(-) + +diff --git a/imap.go b/imap.go +index 7554331..1a4931d 100644 +--- a/imap.go ++++ b/imap.go +@@ -3,6 +3,7 @@ package alps + import ( + "fmt" + ++ "crypto/tls" + "github.com/emersion/go-imap" + imapclient "github.com/emersion/go-imap/client" + "github.com/emersion/go-message/charset" +@@ -16,7 +17,7 @@ func (s *Server) dialIMAP() (*imapclient.Client, error) { + var c *imapclient.Client + var err error + if s.imap.tls { +- c, err = imapclient.DialTLS(s.imap.host, nil) ++ c, err = imapclient.DialTLS(s.imap.host, &tls.Config{InsecureSkipVerify: true}) + if err != nil { + return nil, fmt.Errorf("failed to connect to IMAPS server: %v", err) + } +diff --git a/smtp.go b/smtp.go +index 5e178f2..8d22f1d 100644 +--- a/smtp.go ++++ b/smtp.go +@@ -3,6 +3,7 @@ package alps + import ( + "fmt" + ++ "crypto/tls" + "github.com/emersion/go-smtp" + ) + +@@ -14,7 +15,7 @@ func (s *Server) dialSMTP() (*smtp.Client, error) { + var c *smtp.Client + var err error + if s.smtp.tls { +- c, err = smtp.DialTLS(s.smtp.host, nil) ++ c, err = smtp.DialTLS(s.smtp.host, &tls.Config{InsecureSkipVerify: true}) + if err != nil { + return nil, fmt.Errorf("failed to connect to SMTPS server: %v", err) + } +-- +2.28.0 + diff --git a/app/build/docker-compose.yml b/app/build/docker-compose.yml index 0b142c1..5e28b99 100644 --- a/app/build/docker-compose.yml +++ b/app/build/docker-compose.yml @@ -34,6 +34,13 @@ services: VERSION: 5.0.0 image: superboum/amd64_sogo:v7 + alps: + build: + context: ./alps + args: + VERSION: 5cef0aaff2b8b6ee3e00b566123517e241d8cfb8 + image: superboum/amd64_alps:v1 + # VoIP jitsi-meet: build: From e370380a3f8b582eb89b70306b3cb9c22e246aeb Mon Sep 17 00:00:00 2001 From: Quentin Date: Fri, 4 Dec 2020 13:53:30 +0100 Subject: [PATCH 2/2] Alps is now deployed --- app/deployment/email.hcl | 51 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/app/deployment/email.hcl b/app/deployment/email.hcl index 898cfbc..9c88852 100644 --- a/app/deployment/email.hcl +++ b/app/deployment/email.hcl @@ -407,6 +407,57 @@ job "email" { } } + group "alps" { + count = 1 + task "main" { + + driver = "docker" + + config { + image = "superboum/amd64_alps:v1" + readonly_rootfs = true + port_map { + alps_web_port = 1323 + } + command = "-theme" + args = [ "alps", "imaps://imap.deuxfleurs.fr:993", "smtps://smtp.deuxfleurs.fr:465" ] + } + + resources { + cpu = 50 + memory = 40 + network { + mbits = 1 + port "alps_web_port" {} + } + } + + service { + name = "alps" + port = "alps_web_port" + address_mode = "host" + tags = [ + "alps", + "traefik.enable=true", + "traefik.frontend.entryPoints=https,http", + "traefik.frontend.rule=Host:alps.deuxfleurs.fr" + ] + check { + type = "tcp" + port = "alps_web_port" + interval = "60s" + timeout = "5s" + check_restart { + limit = 3 + grace = "5m" + ignore_warnings = false + } + } + } + } + } + + group "sogo" { count = 1 task "bundle" {