migrate dev→CT104, secrets→CT109; add proton-bridge; sunset CT111/CT112

- CT 111 (dev): Gitea + Coder + act-runner migrated to CT 104
  - Gitea uses Redis for queue/cache/session (idmapped NFS LevelDB workaround)
  - Zoraxy routes dev/git updated to 192.168.1.40
  - AdGuard dev.nuclide.lan updated to 192.168.1.40
- CT 112 (secrets): Infisical migrated to CT 109
  - DB dump restored; SITE_URL updated to 192.168.1.8:8200
  - AdGuard secrets.nuclide.lan updated to 192.168.1.8
- Proton Mail Bridge deployed on CT 104 (SMTP :1025, IMAP :1143)
- Homepage updated: Dev group → ct104, Infisical → my-local, Background group added
- portmap, ct-inventory, zoraxy, dev-environment, secrets-manager all updated

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-26 22:08:08 +02:00
parent bcbe9e7a88
commit a2f1d49170
6 changed files with 95 additions and 41 deletions
+15 -9
View File
@@ -1,6 +1,8 @@
# Dev Environment — CT 111 (dev.nuclide.systems)
# Dev Environment — CT 104 (dev.nuclide.systems)
CT 111 hosts the self-hosted development platform: **Coder** (dev workspaces) + **Gitea** (internal repos).
**Migrated from CT 111 to CT 104 on 2026-05-26.** CT 111 ("dev") is decommissioned; LXC pending removal.
CT 104 hosts the self-hosted development platform: **Coder** (dev workspaces) + **Gitea** (internal repos).
## Services
@@ -126,16 +128,20 @@ Host git.nuclide.systems
---
## CT 111 specs
## CT 104 specs (current host)
| | |
|---|---|
| IP | 192.168.1.42 |
| Cores | 12 |
| RAM | 32GB |
| Rootfs | 60GB local-zfs (Docker image cache) |
| UNAS | /mnt/pve/unas (mp0) |
| GPU | renderD128 (Intel Arc Xe, by-path) |
| IP | 192.168.1.40 |
| Cores | 16 |
| RAM | 48GB |
| Rootfs | 200GB local-zfs |
| UNAS | /mnt/pve/unas (mp0) — coder + gitea data paths unchanged |
| GPU | renderD128 (Intel Arc Xe, idmapped) |
Compose files at `/opt/stacks/coder/` and `/opt/stacks/gitea/` on CT 104.
Gitea uses Redis (`gitea-redis`) for queue/cache/session — required because CT 104 uses idmapped NFS which doesn't support LevelDB file locks.
Act-runner at `/opt/stacks/act-runner/` — runner name `ct104-runner`.
---
+42
View File
@@ -0,0 +1,42 @@
# Proton Mail Bridge
Headless Proton Mail Bridge running on CT 104 — exposes ProtonMail account as SMTP/IMAP endpoints for local services (n8n, Infisical, etc.).
## Stack
- **Host**: CT 104 (`docker`, 192.168.1.40), `/opt/stacks/proton-bridge/docker-compose.yml`
- **Image**: `shenxn/protonmail-bridge:latest`
- **SMTP**: `192.168.1.40:1025`
- **IMAP**: `192.168.1.40:1143`
- **Config volume**: `proton-bridge_proton_config`
## Initial login (one-time, interactive)
```bash
ssh root@192.168.1.40
docker exec -it proton-bridge /bin/bash
protonmail-bridge --cli
# Commands: login → (enter Proton credentials) → list (note bridge SMTP password)
# exit
```
After login the bridge stores credentials in the volume and runs headlessly on restart.
## SMTP credentials for other services
Once logged in, run `list` inside the CLI to get:
- **SMTP host**: `192.168.1.40`
- **SMTP port**: `1025`
- **SMTP user**: your Proton email address
- **SMTP password**: the bridge-generated password (not your Proton login password)
- **IMAP host**: `192.168.1.40`
- **IMAP port**: `1143`
## Ops
```bash
# CT 104
cd /opt/stacks/proton-bridge
docker compose up -d --force-recreate proton-bridge
docker logs proton-bridge -f
```
+3 -3
View File
@@ -1,8 +1,8 @@
# Secrets Manager — Infisical on CT 112
# Secrets Manager — Infisical on CT 109
**Status: deployed 2026-05-22.** Running at `http://192.168.1.7:8200` (LAN-only, no Zoraxy route — secrets must not be internet-exposed).
**Status: deployed 2026-05-22; migrated CT 112 → CT 109 on 2026-05-26.** Running at `http://192.168.1.8:8200` (`http://secrets.nuclide.lan:8200`). LAN-only, no Zoraxy route — secrets must not be internet-exposed.
Stack: `infisical/infisical:latest-postgres` + Postgres 16 + Redis 7, all on CT 112 (`secrets`, `192.168.1.7`). Compose at `/opt/stacks/infisical/` on CT 112.
Stack: `infisical/infisical:latest-postgres` + Postgres 16 + Redis 7, all on CT 109 (`ops`, `192.168.1.8`). Compose at `/opt/stacks/infisical/` on CT 109. CT 112 ("secrets") is decommissioned; LXC pending removal.
## Problem statement
+2 -2
View File
@@ -17,8 +17,8 @@ Audited 2026-05-23; updated 2026-05-26 (mcp.nuclide.systems removed, ai/chat bac
| ai.nuclide.systems | 192.168.1.40:14003 | ✓ | Bifrost LLM gateway (LiteLLM decommissioned 2026-05-26) |
| ~~arcane.nuclide.systems~~ | ~~192.168.1.8:10002~~ | — | **DECOMMISSIONED 2026-05-26** — replaced by Portainer |
| chat.nuclide.systems | 192.168.1.40:14002 | ✓ | Open WebUI (LobeChat decommissioned 2026-05-26) |
| dev.nuclide.systems | 192.168.1.42:7080 | ✓ | Coder (CT 111) |
| git.nuclide.systems | 192.168.1.42:3000 | — | Gitea (CT 111) |
| dev.nuclide.systems | 192.168.1.40:7080 | ✓ | Coder (CT 104; migrated from CT 111 2026-05-26) |
| git.nuclide.systems | 192.168.1.40:3000 | — | Gitea (CT 104; migrated from CT 111 2026-05-26) |
| gotify.nuclide.systems | 192.168.1.40:10003 | ✓ | Gotify push notifications |
| ha.nuclide.systems | 192.168.1.60:8123 | ✓ | Home Assistant (VM 100) |
| hoarder.nuclide.systems | 192.168.1.40:17001 | — | Karakeep bookmarks |