Docker's default pool on docker-1 holds fifteen /16 bridge networks. Ten are used; each Packet Station stack takes two, the Gitea runner one per job, the CI e2e stack two. The pool ran out on 2026-10-17 and every CI e2e job failed until idle networks were removed.
To do (needs sudo and a Docker restart, a short outage for every stack): add to /etc/docker/daemon.json {"default-address-pools":[{"base":"10.200.0.0/16","size":24}]}, restart Docker. Details in docs/DEPLOY.md.
Plan reference: OPS1 in docs/PLAN.md (open questions). Answer here; the build takes the default until then.
Docker's default pool on docker-1 holds fifteen /16 bridge networks. Ten are used; each Packet Station stack takes two, the Gitea runner one per job, the CI e2e stack two. The pool ran out on 2026-10-17 and every CI e2e job failed until idle networks were removed.
**To do (needs sudo and a Docker restart, a short outage for every stack):** add to /etc/docker/daemon.json `{"default-address-pools":[{"base":"10.200.0.0/16","size":24}]}`, restart Docker. Details in docs/DEPLOY.md.
---
Plan reference: OPS1 in [docs/PLAN.md](https://gt.pescoinc.biz/spencerm/PacketStation/src/branch/main/docs/PLAN.md) (open questions). Answer here; the build takes the default until then.
Recorded in docs/PLAN.md, docs/DEPLOY.md and CLAUDE.md (PR 51): production runs natively on its own Linux VM (systemd services for the app and the worker, PostgreSQL 16 on the VM, no Docker). The test stack and CI stay on docker-1. Phase 10 builds the VM deploy, backups and doctor. The production folder question on issue 38 no longer applies.
Details still needed before phase 10:
The VM's host name and address, and who builds it.
The OS. Debian 12 matches the image, so the ODBC driver and OpenSSL behave the same as in test.
How NPM on docker-1 reaches the VM: plain HTTP on the LAN, or TLS to the VM.
CPU, memory and disk for the VM, and where its backups go (the QNAP share as well?).
The address pool fix above is still worth doing for test plus CI, but no longer blocks production.
Recorded in docs/PLAN.md, docs/DEPLOY.md and CLAUDE.md (PR 51): production runs natively on its own Linux VM (systemd services for the app and the worker, PostgreSQL 16 on the VM, no Docker). The test stack and CI stay on docker-1. Phase 10 builds the VM deploy, backups and doctor. The production folder question on issue 38 no longer applies.
Details still needed before phase 10:
1. The VM's host name and address, and who builds it.
2. The OS. Debian 12 matches the image, so the ODBC driver and OpenSSL behave the same as in test.
3. How NPM on docker-1 reaches the VM: plain HTTP on the LAN, or TLS to the VM.
4. CPU, memory and disk for the VM, and where its backups go (the QNAP share as well?).
The address pool fix above is still worth doing for test plus CI, but no longer blocks production.
Update: test moves to its own VM as well, built natively the same way as production, so test rehearses the production install, backups, restore and doctor before go-live. docker-1 keeps CI only (the Gitea runner and the CI e2e stack). The docker-1 test stack keeps running until the test VM is ready. Recorded in docs/PLAN.md, docs/DEPLOY.md and CLAUDE.md (PR 51).
The questions above now apply to both VMs: name and address, OS, who builds them, size (test can be smaller, about 2 vCPU, 4 GB, 40 GB), and how NPM reaches them.
Update: test moves to its own VM as well, built natively the same way as production, so test rehearses the production install, backups, restore and doctor before go-live. docker-1 keeps CI only (the Gitea runner and the CI e2e stack). The docker-1 test stack keeps running until the test VM is ready. Recorded in docs/PLAN.md, docs/DEPLOY.md and CLAUDE.md (PR 51).
The questions above now apply to both VMs: name and address, OS, who builds them, size (test can be smaller, about 2 vCPU, 4 GB, 40 GB), and how NPM reaches them.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Docker's default pool on docker-1 holds fifteen /16 bridge networks. Ten are used; each Packet Station stack takes two, the Gitea runner one per job, the CI e2e stack two. The pool ran out on 2026-10-17 and every CI e2e job failed until idle networks were removed.
To do (needs sudo and a Docker restart, a short outage for every stack): add to /etc/docker/daemon.json
{"default-address-pools":[{"base":"10.200.0.0/16","size":24}]}, restart Docker. Details in docs/DEPLOY.md.Plan reference: OPS1 in docs/PLAN.md (open questions). Answer here; the build takes the default until then.
I've given this some thought, and I think we will move the production system to run on its own Linux VM instead of in a docker container.
Recorded in docs/PLAN.md, docs/DEPLOY.md and CLAUDE.md (PR 51): production runs natively on its own Linux VM (systemd services for the app and the worker, PostgreSQL 16 on the VM, no Docker). The test stack and CI stay on docker-1. Phase 10 builds the VM deploy, backups and doctor. The production folder question on issue 38 no longer applies.
Details still needed before phase 10:
The address pool fix above is still worth doing for test plus CI, but no longer blocks production.
Update: test moves to its own VM as well, built natively the same way as production, so test rehearses the production install, backups, restore and doctor before go-live. docker-1 keeps CI only (the Gitea runner and the CI e2e stack). The docker-1 test stack keeps running until the test VM is ready. Recorded in docs/PLAN.md, docs/DEPLOY.md and CLAUDE.md (PR 51).
The questions above now apply to both VMs: name and address, OS, who builds them, size (test can be smaller, about 2 vCPU, 4 GB, 40 GB), and how NPM reaches them.