From 5c3875fe273ab79734dba640a6a8f2465d826bb2 Mon Sep 17 00:00:00 2001 From: whitney Date: Mon, 13 Apr 2026 15:34:58 -0700 Subject: [PATCH] Make project management folder --- productivity/mailserver/README.md | 52 +++++++++++++++++++ .../planka/.gitignore | 0 .../{ => project-management}/planka/README.md | 0 .../planka/docker-compose.yml | 0 .../planka/planka-db.env.example | 0 .../planka/planka.env.example | 0 .../taiga/.env.example | 0 .../{ => project-management}/taiga/.gitignore | 0 .../{ => project-management}/taiga/README.md | 0 .../taiga/docker-compose.yml | 0 .../{ => project-management}/taiga/nginx.conf | 0 11 files changed, 52 insertions(+) create mode 100644 productivity/mailserver/README.md rename productivity/{ => project-management}/planka/.gitignore (100%) rename productivity/{ => project-management}/planka/README.md (100%) rename productivity/{ => project-management}/planka/docker-compose.yml (100%) rename productivity/{ => project-management}/planka/planka-db.env.example (100%) rename productivity/{ => project-management}/planka/planka.env.example (100%) rename productivity/{ => project-management}/taiga/.env.example (100%) rename productivity/{ => project-management}/taiga/.gitignore (100%) rename productivity/{ => project-management}/taiga/README.md (100%) rename productivity/{ => project-management}/taiga/docker-compose.yml (100%) rename productivity/{ => project-management}/taiga/nginx.conf (100%) diff --git a/productivity/mailserver/README.md b/productivity/mailserver/README.md new file mode 100644 index 0000000..acd4f1f --- /dev/null +++ b/productivity/mailserver/README.md @@ -0,0 +1,52 @@ +# Mail Server +A dockerized mail server for PWS. For now I am using [Stalwart](https://stalw.art/). + +# Setup + +1. Port forward the following ports: +- 25/TCP - SMTP, mandatory for receiving mail. May need to open a support ticket to open this port or live with partial nonfunction. +- 465 - SMTPS, implicit TLS. +- 587 - SMTP, alternative, possibly blocked by ISPs. +- 993 - IMAPS, mandatory for reading mail from apps. +- 443 - HTTPS, mandatory for the management dashboard and modern JMAP. + +2. DNS Records (Basic) +- A, `Host=mail, v=YOUR_IP` +- MX, `Host=@, v=mail.example.com` +- CNAME, `em123.example.com -> sendgrid.net` +- CNAME, `s1._domainkey.example.com` +- CNAME, `s2._domainkey.example.com` + +3. DNS Records (Security) +- TXT (DKIM), `Host=@, v=spf1 mx include:sendgrid.net -all`. +- TXT (DMARC), `Host=_dmarc, v=DMARC1; p=quarantine; rua=mailto:admin@example.com`, Tells people what to do if SPF/DKIM fails. + +4. Configure Sendgrid/Get API Key +- We are NOT setting a PTR record because I am on a residential internet connection. +- Set up a SendGrid account. +- Go to `Settings > API Keys` and create a key with `Full Access` and `Mail Send` permissions. Copy the key. +- Go to `Settings > Sender Authentication` and complete Sender Authentication steps to link your domain to SendGrid so they can send your mail. + +5. Create Relay Host in Stalwart (`Settings > SMTP > Outbound > Relay Hosts`) +- `Description: SendGrid Relay` +- `Address: smtp.sendgrid.net` +- `Port: 587` +- `Protocol: SMTP` +- `Authentication: Username: apikey, Secret: `. + +6. Set Routing Rule in Stalwart (`Settings > SMTP > Outbound > Routing') +- Create or Edit the routing strategy: +```json +[ + { "if": "is_local_domain('', rcpt_domain)", "then": "local" }, + { "else": "SendGrid Relay" } +] +``` + +3. Start via Docker +```bash +docker compose up -d +``` + +4. Test +Use [Mail-Tester.com](https://mail-tester.com) to test. diff --git a/productivity/planka/.gitignore b/productivity/project-management/planka/.gitignore similarity index 100% rename from productivity/planka/.gitignore rename to productivity/project-management/planka/.gitignore diff --git a/productivity/planka/README.md b/productivity/project-management/planka/README.md similarity index 100% rename from productivity/planka/README.md rename to productivity/project-management/planka/README.md diff --git a/productivity/planka/docker-compose.yml b/productivity/project-management/planka/docker-compose.yml similarity index 100% rename from productivity/planka/docker-compose.yml rename to productivity/project-management/planka/docker-compose.yml diff --git a/productivity/planka/planka-db.env.example b/productivity/project-management/planka/planka-db.env.example similarity index 100% rename from productivity/planka/planka-db.env.example rename to productivity/project-management/planka/planka-db.env.example diff --git a/productivity/planka/planka.env.example b/productivity/project-management/planka/planka.env.example similarity index 100% rename from productivity/planka/planka.env.example rename to productivity/project-management/planka/planka.env.example diff --git a/productivity/taiga/.env.example b/productivity/project-management/taiga/.env.example similarity index 100% rename from productivity/taiga/.env.example rename to productivity/project-management/taiga/.env.example diff --git a/productivity/taiga/.gitignore b/productivity/project-management/taiga/.gitignore similarity index 100% rename from productivity/taiga/.gitignore rename to productivity/project-management/taiga/.gitignore diff --git a/productivity/taiga/README.md b/productivity/project-management/taiga/README.md similarity index 100% rename from productivity/taiga/README.md rename to productivity/project-management/taiga/README.md diff --git a/productivity/taiga/docker-compose.yml b/productivity/project-management/taiga/docker-compose.yml similarity index 100% rename from productivity/taiga/docker-compose.yml rename to productivity/project-management/taiga/docker-compose.yml diff --git a/productivity/taiga/nginx.conf b/productivity/project-management/taiga/nginx.conf similarity index 100% rename from productivity/taiga/nginx.conf rename to productivity/project-management/taiga/nginx.conf