Add Storage Box backup target to DocFast state
This commit is contained in:
parent
522fddd9e9
commit
812d2085e9
5 changed files with 75 additions and 25 deletions
2
docfast
2
docfast
|
|
@ -1 +1 @@
|
||||||
Subproject commit 73917551bd62d747a588fd27b62842d03555ff65
|
Subproject commit 1ef8f5743c5995c305c4590825c03df1e6d8a072
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"startingCapital": 1000,
|
"startingCapital": 1000,
|
||||||
"cash": 300,
|
"cash": 0,
|
||||||
"currency": "EUR",
|
"currency": "EUR",
|
||||||
"positions": [
|
"positions": [
|
||||||
{
|
{
|
||||||
|
|
@ -8,15 +8,25 @@
|
||||||
"name": "VanEck Defense UCITS ETF A",
|
"name": "VanEck Defense UCITS ETF A",
|
||||||
"isin": "IE000YYE6WK5",
|
"isin": "IE000YYE6WK5",
|
||||||
"buyDate": "2026-02-13",
|
"buyDate": "2026-02-13",
|
||||||
"avgPrice": 55.93,
|
"avgPrice": 55.95,
|
||||||
"shares": 12.516,
|
"shares": 17.784,
|
||||||
"amount": 700
|
"amount": 1000
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"limitOrders": [],
|
"limitOrders": [],
|
||||||
"watchlist": [
|
"watchlist": [
|
||||||
{ "symbol": "RHM.DE", "isin": "DE0007030009", "name": "Rheinmetall", "note": "Buy if major dip >10%" },
|
{
|
||||||
{ "symbol": "XDWD.DE", "isin": "IE00BJ0KDQ92", "name": "Xtrackers MSCI World", "note": "Safe diversification option" }
|
"symbol": "RHM.DE",
|
||||||
|
"isin": "DE0007030009",
|
||||||
|
"name": "Rheinmetall",
|
||||||
|
"note": "Buy if major dip >10%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"symbol": "XDWD.DE",
|
||||||
|
"isin": "IE00BJ0KDQ92",
|
||||||
|
"name": "Xtrackers MSCI World",
|
||||||
|
"note": "Safe diversification option"
|
||||||
|
}
|
||||||
],
|
],
|
||||||
"history": [
|
"history": [
|
||||||
{
|
{
|
||||||
|
|
@ -26,17 +36,28 @@
|
||||||
"isin": "IE000YYE6WK5",
|
"isin": "IE000YYE6WK5",
|
||||||
"amount": 700,
|
"amount": 700,
|
||||||
"price": 55.93,
|
"price": 55.93,
|
||||||
|
"shares": 12.516,
|
||||||
"reason": "European defense rearmament thesis. Diversified defense exposure via ETF. Strong momentum, geopolitical tailwinds."
|
"reason": "European defense rearmament thesis. Diversified defense exposure via ETF. Strong momentum, geopolitical tailwinds."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"date": "2026-02-16",
|
||||||
|
"action": "BUY",
|
||||||
|
"symbol": "DFNS",
|
||||||
|
"isin": "IE000YYE6WK5",
|
||||||
|
"amount": 300,
|
||||||
|
"price": 56.97,
|
||||||
|
"shares": 5.268,
|
||||||
|
"reason": "Doubling down on defense thesis. EU rearmament headlines accelerating. Deploy cash — 30% idle is unacceptable."
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"notes": "N26 uses Xetra tickers. Always provide ISIN for orders. Fractional shares by EUR amount supported.",
|
"notes": "N26 uses Xetra tickers. Always provide ISIN for orders. Fractional shares by EUR amount supported.",
|
||||||
"created": "2026-02-12T20:00:00Z",
|
"created": "2026-02-12T20:00:00Z",
|
||||||
"lastUpdated": "2026-02-13T16:15:00Z",
|
"lastUpdated": "2026-02-16T16:31:00Z",
|
||||||
"closingSnapshot": {
|
"closingSnapshot": {
|
||||||
"date": "2026-02-13",
|
"date": "2026-02-16",
|
||||||
"DFNS": 56.68,
|
"DFNS": 56.97,
|
||||||
"portfolioValue": 1009.41,
|
"portfolioValue": 1013.06,
|
||||||
"dailyPL": 9.39,
|
"dailyPL": 1.15,
|
||||||
"totalReturn": 0.94
|
"totalReturn": 1.31
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,14 @@
|
||||||
{
|
{
|
||||||
"date": "2026-02-14",
|
"date": "2026-02-15",
|
||||||
"events": [
|
"events": [
|
||||||
{ "time": "20:08", "activity": "Wind-down check-in sent via WhatsApp. Waiting for response." },
|
{
|
||||||
{ "time": "20:10", "activity": "Set up DNS records for DocFast (SPF/DKIM/DMARC). Nose shower done ✅" },
|
"time": "19:02",
|
||||||
{ "time": "20:17", "activity": "Watching something + playing BG3. Good wind-down combo ✅" },
|
"activity": "Evening check-in sent. Yesterday was 02:00 bedtime."
|
||||||
{ "time": "21:28", "activity": "BG3 question about Adamantine Forge" },
|
},
|
||||||
{ "time": "22:06", "activity": "Still reviewing DocFast features/bugs between gaming" },
|
{
|
||||||
{ "time": "23:10", "activity": "Wrapping up DocFast work for the night. Last CEO session running, will review tomorrow." },
|
"time": "20:34",
|
||||||
{ "time": "00:05", "activity": "Listening to audiobook, drinking tea. Good wind-down." },
|
"activity": "Follow-up wind-down nudge sent. Suggested The Substance or Der Herr der Puppen."
|
||||||
{ "time": "02:02", "activity": "Going to sleep. Acknowledged it's too late again." }
|
}
|
||||||
],
|
],
|
||||||
"summary": "Productive Saturday — BG3 gaming, DocFast work, browser tool fixed. Nose shower done. Audiobook + tea wind-down but still up until 02:00 Vienna. Late again."
|
"summary": ""
|
||||||
}
|
}
|
||||||
|
|
@ -61,6 +61,35 @@ We don't have custom templates. Listing them is false advertising. Removed from
|
||||||
## 2026-02-14 17:37 UTC — BUG-015: Migrate to SQLite
|
## 2026-02-14 17:37 UTC — BUG-015: Migrate to SQLite
|
||||||
File-based JSON won't survive concurrent requests. SQLite is the right choice for our scale (single server, <1000 users). No need for PostgreSQL yet. DB file on Docker volume for persistence.
|
File-based JSON won't survive concurrent requests. SQLite is the right choice for our scale (single server, <1000 users). No need for PostgreSQL yet. DB file on Docker volume for persistence.
|
||||||
|
|
||||||
|
## 2026-02-16 — Email Infrastructure: Scaling Strategy
|
||||||
|
|
||||||
|
**Context:** Currently running Postfix on the single app server (docfast-1). Investor asked how this scales behind a load balancer.
|
||||||
|
|
||||||
|
**Options evaluated:**
|
||||||
|
- **A) Dedicated mail server** — Separate VM running Postfix/Exim. Centralizes DKIM/SPF/PTR config, app servers relay through it. Moderate cost (~€4/mo for CX22), full control.
|
||||||
|
- **B) External email service** (Postmark, SES, SendGrid) — Best deliverability, no infra to manage, built-in analytics/bounce handling. ~$15-25/mo at our scale. Postmark recommended (focused on transactional email, excellent deliverability).
|
||||||
|
- **C) Keep Postfix on app server with relay** — Each app server relays through a central SMTP. Quick to set up but still managing Postfix everywhere.
|
||||||
|
|
||||||
|
**Recommendation: Option B (External service — Postmark)**
|
||||||
|
|
||||||
|
Reasons:
|
||||||
|
1. **Deliverability** — Services like Postmark have pre-warmed IPs with established reputation. We're fighting spam scores on a fresh Hetzner IP.
|
||||||
|
2. **Scaling** — Zero config when adding app servers. Just use the API/SMTP credentials.
|
||||||
|
3. **Operational cost** — No PTR/DKIM/SPF debugging. No Postfix maintenance. Engineer time > €15/mo.
|
||||||
|
4. **Analytics** — Bounce rates, open tracking, delivery confirmation built-in.
|
||||||
|
5. **When to implement** — After launch validation. Current Postfix setup is fine for MVP with the deliverability fixes applied today.
|
||||||
|
|
||||||
|
**Migration path:** Keep Postfix for now (with today's SPF/DMARC/PTR fixes). Switch to Postmark when we hit paid customers or add a second server, whichever comes first.
|
||||||
|
|
||||||
|
## 2026-02-16 — Email Deliverability Fixes (PTR, SPF, DMARC)
|
||||||
|
|
||||||
|
**Problem:** Emails scoring 10.90 spam score. Three issues identified:
|
||||||
|
1. PTR record showing generic Hetzner hostname → changed to `mail.docfast.dev`
|
||||||
|
2. SPF using `~all` (softfail) → changing to `-all` (hardfail)
|
||||||
|
3. DMARC using `p=none` → changing to `p=quarantine`
|
||||||
|
|
||||||
|
**Status:** PTR fixed via Hetzner Cloud API. SPF and DMARC require Hetzner DNS API token (not currently in credentials). A record for `mail.docfast.dev` also needed.
|
||||||
|
|
||||||
## 2026-02-14 17:37 UTC — Deferred items (with reasoning)
|
## 2026-02-14 17:37 UTC — Deferred items (with reasoning)
|
||||||
- BUG-016 (backups): Deferred to next session. Need to research Hetzner object storage or simple cron+scp backup.
|
- BUG-016 (backups): Deferred to next session. Need to research Hetzner object storage or simple cron+scp backup.
|
||||||
- BUG-017 (benchmarking): Deferred. Need load testing tools, will do before scaling marketing.
|
- BUG-017 (benchmarking): Deferred. Need load testing tools, will do before scaling marketing.
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@
|
||||||
"sshKey": "/home/openclaw/.ssh/docfast",
|
"sshKey": "/home/openclaw/.ssh/docfast",
|
||||||
"smtp": "Postfix + OpenDKIM configured. DKIM-signed emails working. SPF/DKIM/DMARC DNS records live.",
|
"smtp": "Postfix + OpenDKIM configured. DKIM-signed emails working. SPF/DKIM/DMARC DNS records live.",
|
||||||
"email": "noreply@docfast.dev",
|
"email": "noreply@docfast.dev",
|
||||||
"backups": "BorgBackup daily at 03:00 UTC (local). PostgreSQL + Docker volumes + configs.",
|
"backups": "BorgBackup daily at 03:00 UTC (local). PostgreSQL + Docker volumes + configs. Off-site: ssh -p23 u149513-sub11@u149513-sub11.your-backup.de (SSH key installed at /root/.ssh/id_ed25519)",
|
||||||
"cicd": "Forgejo Actions workflow (pending secrets setup)",
|
"cicd": "Forgejo Actions workflow (pending secrets setup)",
|
||||||
"infraDocs": "infrastructure/ directory with full provisioning scripts"
|
"infraDocs": "infrastructure/ directory with full provisioning scripts"
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue