infrastructure: co-op now self-hosts on Infomaniak; document mail, DNS and backups
- New 'Where it runs' section: services moved to the co-op's own Infomaniak server (Swiss sovereign cloud, Geneva, renewable-powered, ISO 14001/50001/27001) from a personal Hostinger account on 2026-11-02; note the steward bot runs on a separate machine and was not part of the migration. - DNS subsection: managed manually at domains.coop (nameservers yoursrs.com); the zone is only 11 records, with the apex A/AAAA and a wildcard A/AAAA carrying every application hostname. - Backups subsection: encrypted nightly backups to Infomaniak Encrypted S3, kept seven days; the steward-bot host backs up selected home directories to the same object storage. - New 'Mail' section: inbound mail is received directly by the box; the newsletter (Listmonk) sends via the Scaleway Transactional Email relay (SPF, DKIM and DMARC pass at p=reject), while the member portal still sends through the Cloudron mail service on the box. Both send as info@inference.coop. - Correct the webmail URL: mail.inference.coop -> email.inference.coop (the Cloudron mail app vhost; mail.inference.coop is not a configured vhost).
This commit is contained in:
1 parent
a0e7c8d405
commit
f0ed33371c
1 file changed
+61
-1
+61
-1
@@ -26,6 +26,36 @@ Members ──> your own tools ────┘ gateway │
|
||||
The whole stack runs on [Cloudron](https://cloudron.io), which handles hosting,
|
||||
single sign-on, and per-app isolation.
|
||||
|
||||
## Where it runs
|
||||
|
||||
The co-op's services run on a server the co-op owns and pays for directly, at
|
||||
**Infomaniak** — a Swiss sovereign cloud provider whose data centres are in
|
||||
Geneva, run on renewable energy, and certified to ISO 14001, ISO 50001 and
|
||||
ISO 27001. The stack moved there from a personal Hostinger account on
|
||||
**2026-11-02**; nothing about how members use the co-op changed in the move.
|
||||
|
||||
One thing runs elsewhere: the co-op's **steward bot** — the automation behind the
|
||||
digests and the newsletter drafts — runs on a separate machine, not on the
|
||||
Cloudron server, and was not part of the migration.
|
||||
|
||||
### DNS
|
||||
|
||||
`inference.coop` is managed by hand at **domains.coop** (nameservers
|
||||
`ns1/ns2.yoursrs.com`). The zone is deliberately small — **eleven records**. Most
|
||||
of the co-op hangs off just a few of them: the apex (`inference.coop`), `www`,
|
||||
and a wildcard (`*.inference.coop`) point at the server, so each application
|
||||
hostname — chat, portal, dashboard, gateway, git, newsletter, vault and the rest
|
||||
— is served by the wildcard rather than having a record of its own. The DNS
|
||||
change sheet listing all eleven records is public, in
|
||||
[`co-op/runbooks`](https://git.inference.coop/co-op/runbooks).
|
||||
|
||||
### Backups
|
||||
|
||||
Cloudron writes **encrypted** backups to **Infomaniak's object storage** (the
|
||||
"Infomaniak Encrypted S3" site, in Switzerland) every night, and keeps the last
|
||||
**seven days**. The steward-bot host backs up its own selected home directories
|
||||
to the same object storage.
|
||||
|
||||
## Components
|
||||
|
||||
| Component | Purpose | URL | Code |
|
||||
@@ -43,11 +73,41 @@ single sign-on, and per-app isolation.
|
||||
| **Surfer** | Static hosting (landing page, thanks page) | inference.coop | [co-op/website](https://git.inference.coop/co-op/website) |
|
||||
| **Listmonk** | Member newsletter (auto-synced from membership) | newsletter.inference.coop | — |
|
||||
| **Vaultwarden** | Password manager (admin credentials) | vault.inference.coop | — |
|
||||
| **SnappyMail** | Webmail | mail.inference.coop | — |
|
||||
| **SnappyMail** | Webmail | email.inference.coop | — |
|
||||
|
||||
Open Collective (billing and fiscal sponsorship) is the one external service in
|
||||
the flow — see [opencollective.com/inference-cooperative](https://opencollective.com/inference-cooperative).
|
||||
|
||||
## Mail
|
||||
|
||||
The `inference.coop` mail domain is the co-op's, and the mail itself runs on the
|
||||
co-op's Cloudron server.
|
||||
|
||||
**Incoming** mail is received directly by that server — the domain's MX record
|
||||
points at it, it accepts mail on the standard SMTP port, and webmail and mail
|
||||
apps reach it over the usual encrypted ports (IMAP and SMTP over TLS). If mail
|
||||
to your `@inference.coop` address stops arriving, that is a fault on our side to
|
||||
fix, not a limitation of how the co-op is set up.
|
||||
|
||||
**Outgoing** mail travels by two different paths, on purpose:
|
||||
|
||||
- The **newsletter** (Listmonk) sends through **Scaleway Transactional Email**,
|
||||
an EU-based SMTP relay, rather than from our own server. Our domain is
|
||||
authenticated to that relay with its own DKIM key, and a real message has been
|
||||
checked end to end: SPF, DKIM and DMARC all pass under a `p=reject` policy —
|
||||
so anything claiming to be from us that the relay hasn't authenticated is
|
||||
rejected outright rather than quietly filed away.
|
||||
- The **member portal's** transactional email — welcome messages, budget
|
||||
notices, the confirmation the nightly membership sweep sends — still sends from
|
||||
the co-op's own server, through the mail service Cloudron runs for us.
|
||||
|
||||
Both paths send as **Inference Cooperative `<info@inference.coop>`**.
|
||||
|
||||
Why split them: sending the newsletter through a relay lets a provider with
|
||||
established sending IPs carry a list this size, instead of leaning on one
|
||||
freshly-migrated server's reputation. Receiving we keep in-house, on our own
|
||||
hardware.
|
||||
|
||||
## Matrix
|
||||
|
||||
Members get a federated Matrix account on our self-hosted Synapse
|
||||
|
||||
Reference in new issue
Block a user