Deployed version of Documenso.

This commit is contained in:
Patrick Fic
2026-03-26 14:57:09 -07:00
parent 7dab60e3bc
commit 220b1c7968
7 changed files with 7041 additions and 27 deletions

View File

@@ -25,6 +25,7 @@ locals {
ses_domain = coalesce(var.ses_identity_domain, var.hosted_zone_name)
smtp_host = "email-smtp.${var.aws_region}.amazonaws.com"
s3_bucket_name = coalesce(var.upload_bucket_name, "${local.name_prefix}-${data.aws_caller_identity.current.account_id}-${var.aws_region}")
app_secret_name = coalesce(var.app_secret_name, "${local.name_prefix}/${replace(var.domain_name, ".", "-")}/app")
common_tags = merge(var.tags, {
Application = var.project_name
ManagedBy = "Terraform"
@@ -192,6 +193,13 @@ resource "aws_route_table_association" "public" {
route_table_id = aws_route_table.public.id
}
resource "aws_route_table_association" "database_public" {
count = var.db_publicly_accessible ? length(aws_subnet.database) : 0
subnet_id = aws_subnet.database[count.index].id
route_table_id = aws_route_table.public.id
}
resource "aws_security_group" "alb" {
name = "${local.name_prefix}-alb-sg"
description = "Public ingress to the Documenso load balancer"
@@ -259,6 +267,17 @@ resource "aws_security_group" "db" {
security_groups = [aws_security_group.ecs.id]
}
dynamic "ingress" {
for_each = var.db_allowed_cidrs
content {
from_port = 5432
to_port = 5432
protocol = "tcp"
cidr_blocks = [ingress.value]
}
}
egress {
from_port = 0
to_port = 0
@@ -306,7 +325,7 @@ resource "aws_db_instance" "postgres" {
skip_final_snapshot = !var.db_final_snapshot_on_destroy
final_snapshot_identifier = var.db_final_snapshot_on_destroy ? "${local.name_prefix}-final-${random_id.final_snapshot.hex}" : null
auto_minor_version_upgrade = true
publicly_accessible = false
publicly_accessible = var.db_publicly_accessible
apply_immediately = false
db_subnet_group_name = aws_db_subnet_group.this.name
vpc_security_group_ids = [aws_security_group.db.id]
@@ -314,6 +333,8 @@ resource "aws_db_instance" "postgres" {
performance_insights_enabled = false
enabled_cloudwatch_logs_exports = ["postgresql", "upgrade"]
depends_on = [aws_route_table_association.database_public]
tags = merge(local.common_tags, {
Name = "${local.name_prefix}-postgres"
})
@@ -327,7 +348,7 @@ resource "aws_cloudwatch_log_group" "documenso" {
}
resource "aws_secretsmanager_secret" "app" {
name = "${local.name_prefix}/app"
name = local.app_secret_name
recovery_window_in_days = 7
tags = local.common_tags
@@ -383,7 +404,7 @@ resource "aws_s3_bucket" "uploads" {
bucket = local.s3_bucket_name
lifecycle {
prevent_destroy = true #Remove this to tear down the bucket.
prevent_destroy = false #Remove this to tear down the bucket.
}
tags = merge(local.common_tags, {
@@ -693,29 +714,37 @@ resource "aws_route53_record" "app" {
}
resource "aws_ses_domain_identity" "this" {
count = var.manage_ses_resources ? 1 : 0
domain = local.ses_domain
}
resource "aws_route53_record" "ses_verification" {
zone_id = data.aws_route53_zone.primary.zone_id
name = "_amazonses.${aws_ses_domain_identity.this.domain}"
type = "TXT"
ttl = 600
records = [aws_ses_domain_identity.this.verification_token]
count = var.manage_ses_resources ? 1 : 0
zone_id = data.aws_route53_zone.primary.zone_id
name = "_amazonses.${aws_ses_domain_identity.this[0].domain}"
type = "TXT"
ttl = 600
records = [aws_ses_domain_identity.this[0].verification_token]
allow_overwrite = true
}
resource "aws_ses_domain_dkim" "this" {
domain = aws_ses_domain_identity.this.domain
count = var.manage_ses_resources ? 1 : 0
domain = aws_ses_domain_identity.this[0].domain
}
resource "aws_route53_record" "ses_dkim" {
count = 3
count = var.manage_ses_resources ? 3 : 0
zone_id = data.aws_route53_zone.primary.zone_id
name = "${aws_ses_domain_dkim.this.dkim_tokens[count.index]}._domainkey.${aws_ses_domain_identity.this.domain}"
type = "CNAME"
ttl = 600
records = ["${aws_ses_domain_dkim.this.dkim_tokens[count.index]}.dkim.amazonses.com"]
zone_id = data.aws_route53_zone.primary.zone_id
name = "${aws_ses_domain_dkim.this[0].dkim_tokens[count.index]}._domainkey.${aws_ses_domain_identity.this[0].domain}"
type = "CNAME"
ttl = 600
records = ["${aws_ses_domain_dkim.this[0].dkim_tokens[count.index]}.dkim.amazonses.com"]
allow_overwrite = true
}
resource "aws_ecs_task_definition" "documenso" {
@@ -727,6 +756,8 @@ resource "aws_ecs_task_definition" "documenso" {
execution_role_arn = aws_iam_role.ecs_task_execution.arn
task_role_arn = aws_iam_role.ecs_task.arn
depends_on = [aws_secretsmanager_secret_version.app]
container_definitions = jsonencode([
{
name = "documenso"