Add hands-off ACMEv2 + SSL support #101

Closed
opened 2021-07-10 12:52:24 +00:00 by shadowjonathan · 7 comments
shadowjonathan commented 2021-07-10 12:52:24 +00:00 (Migrated from gitlab.com)

This'll make deploying conduit way easier, as no reverse proxy gets in the way or has to be installed alongside it. Conduit will maintain it's own set of SSL certificates, and make them work through rocket, so that a user only has to point a domain at it, open 80 and 443, set the correct domain in the config, and conduit will do the rest. Conduit will then also refresh the certificates automatically if the current ones have less than 30 days left (similar to how certbot does it)

I'm eying https://crates.io/crates/acme2 for this.

This'll make deploying conduit way easier, as no reverse proxy gets in the way or has to be installed alongside it. Conduit will maintain it's own set of SSL certificates, and make them work through rocket, so that a user only has to point a domain at it, open 80 and 443, set the correct domain in the config, and conduit will do the rest. Conduit will then also refresh the certificates automatically if the current ones have less than 30 days left (similar to how certbot does it) I'm eying https://crates.io/crates/acme2 for this.
shadowjonathan commented 2021-07-10 12:53:28 +00:00 (Migrated from gitlab.com)

changed the description

changed the description
timokoesters commented 2021-07-10 13:01:48 +00:00 (Migrated from gitlab.com)

This will mean that users can't run apache or nginx if they already run conduit like this, because port 80 and 443 are already used. I think this confuses the user and should not be implemented

This will mean that users can't run apache or nginx if they already run conduit like this, because port 80 and 443 are already used. I think this confuses the user and should not be implemented
shadowjonathan commented 2021-07-10 13:05:14 +00:00 (Migrated from gitlab.com)

I don't think it'll confuse the user, as it'll be less stuff to deploy. I imagine some users would never even hear of nginx, apache, or caddy as reverse proxies, and only wanna set this up on their own raspberry pi, or their own cloud server. It'll lower the barrier to entry.

I don't think it'll confuse the user, as it'll be less stuff to deploy. I imagine some users would never even hear of nginx, apache, or caddy as reverse proxies, and only wanna set this up on their own raspberry pi, or their own cloud server. It'll lower the barrier to entry.
Peetz0r commented 2021-07-11 00:09:03 +00:00 (Migrated from gitlab.com)

This will definitely be useful for people who want to run just conduit and if you can turn it off it's still perfectly fine for people who want to run more stuff behind a reverse proxy.

This will definitely be useful for people who want to run _just conduit_ and if you can turn it off it's still perfectly fine for people who want to run more stuff behind a reverse proxy.
sspaeth commented 2021-07-11 04:18:56 +00:00 (Migrated from gitlab.com)

It would also mean I have to run conduit as root, which - at this point - I would be very hesitant to do.

P.S. yes, I know about capabilities and the network one specifically...
P.P.S. I'd rather provide an easy and detailed description on how to set up https://packages.debian.org/bullseye/stunnel4 for those wanting a minimal solution.

It would also mean I have to run conduit as root, which - at this point - I would be very hesitant to do. P.S. yes, I know about capabilities and the network one specifically... P.P.S. I'd rather provide an easy and detailed description on how to set up https://packages.debian.org/bullseye/stunnel4 for those wanting a minimal solution.
shadowjonathan commented 2021-07-11 09:46:29 +00:00 (Migrated from gitlab.com)

You don’t have to run conduit as root, you can also just give it elevated network interface permissions (I’m sure that exists via systemd service files)

You don’t have to run conduit as root, you can also just give it elevated network interface permissions (I’m sure that exists via systemd service files)
CobaltCause commented 2023-07-27 06:27:45 +00:00 (Migrated from gitlab.com)

Honestly I feel like if you're going to be hosting one or more webservers you ought to know how to set up a reverse proxy. It's just a matter of time before you decide to host more than one thing. There are already other good tools for automating cert renewals as well. I think the experience of using those existing tools alongside Conduit will be better than experiencing problems with edge cases of directly-in-Conduit implementations of these things. Also I'd imagine reverse proxies have better handling of various network problems that you get for free by using one.

Getting someone to write an HTTP proxy is not covered by the Geneva convention, but, as you can see, maybe it should be.

The HTTP crash course nobody asked for, fasterthanlime

Honestly I feel like if you're going to be hosting one or more webservers you ought to know how to set up a reverse proxy. It's just a matter of time before you decide to host more than one thing. There are already other good tools for automating cert renewals as well. I think the experience of using those existing tools alongside Conduit will be better than experiencing problems with edge cases of directly-in-Conduit implementations of these things. Also I'd imagine reverse proxies have better handling of various network problems that you get for free by using one. > Getting someone to write an HTTP proxy is not covered by the Geneva convention, but, as you can see, maybe it should be. — [*The HTTP crash course nobody asked for*, fasterthanlime](https://fasterthanli.me/articles/the-http-crash-course-nobody-asked-for)
Sign in to join this conversation.
No labels
Android
CS::needs customer feedback
CS::needs follow up
CS::needs on prem installation
CS::waiting
Chrome
Design:: Ready
Design:: in progress
Design::UX
E2EE
Edge
Firefox
GDPR
Iteration 13 IM
Linux
MacOS
Need::Discussion
Need::Steps to reproduce
Need::Upstream fix
Needs:: Planning
Needs::Dev-Team
Needs::More information
Needs::Priority
Needs::Product
Needs::Refinement
Needs::Severity
Priority::1-Critical
Priority::2-Max
Priority::3-Impending
Priority::4-High
Priority::5-Medium
Priority::6-Low
Priority::7-None
Progress::Backlog
Progress::Review
Progress::Started
Progress::Testing
Progress::Triage
Progress::Waiting
Reporter::Sentry
Safari
Target::Community
Target::Customer
Target::Internal
Target::PoC
Target::Security
Team:Customer-Success
Team:Design
Team:Infrastructure
Team:Instant-Messaging
Team:Product
Team:Workflows
Type::Bug
Type::Design
Type::Documentation
Type::Feature
Type::Improvement
Type::Support
Type::Tests
Windows
blocked
blocked-by-spec
cla-signed
conduit
contribution::advanced
contribution::easy
contribution::help needed
from::review
iOS
p::ti-tenant
performance
product::triage
proposal
refactor
release-blocker
s: dart_openapi_codegen
s::Famedly-Patient
s::Org-Directory
s::Passport-Generator
s::Requeuest
s:CRM
s:Famedly-App
s:Famedly-Web
s:Fhiroxide
s:Fhiroxide-cli
s:Fhiroxide-client
s:Fhirs
s:Hedwig
s:LISA
s:Matrix-Dart-SDK
s:Role-Manager
s:Synapse
s:User-Directory
s:WFS-Matrix
s:Workflow Engine
s:dtls
s:famedly-error
s:fcm-shared-isolate
s:matrix-api-lite
s:multiple-tab-detector
s:native-imaging
severity::1
severity::2
severity::3
severity::4
technical-debt
voip
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: Matthias/conduit#101
No description provided.