Een tweede paneel koppelen
Een tweede merk is een tweede CoreCP-installatie. Het draait dezelfde software, installeert dezelfde pakketten uit dezelfde bron — en deelt verder niets. Eigen database, eigen klanten, eigen sleutels, eigen certificaatautoriteit, eigen huis
Geschreven voor: Beheerder
Een tweede merk is een tweede CoreCP-installatie. Het draait dezelfde software, installeert dezelfde pakketten uit dezelfde bron — en deelt verder niets. Eigen database, eigen klanten, eigen sleutels, eigen certificaatautoriteit, eigen huisstijl.
Wat het eerste paneel (de primary) wél van het tweede (de replica) weet: welke versie het draait, of het gezond is, in welk kanaal en welke golf het zit, en of de licentie loopt. Verder niets. Dat is geen afspraak die je kunt vergeten: het paneel aan de andere kant heeft simpelweg geen commando dat een klantgegeven kan teruggeven.
Alleen beheerders zien dit. Resellers en eindklanten merken er niets van.
Wat je nodig hebt
- Een tweede server met een werkend CoreCP-paneel erop: eigen domeinnaam, eigen database, eigen certificaat. Dat is dezelfde installatie als de eerste keer.
- Een eigen node-CA op die machine. Dit is het enige dat je nooit mag delen. Zie "Waarom een eigen CA" onderaan.
- Uitgaand HTTPS van de replica naar poort 8443 van de primary. Inkomend hoeft er op de replica niets open: de replica belt naar buiten, nooit andersom.
Eerst installeren, dan koppelen
Dat zijn twee verschillende klussen, en ze gebeuren op twee verschillende plekken — dezelfde scheiding die Plesk 360 en Rancher maken:
| Waar | Waarom | |
|---|---|---|
| Een CoreCP-paneel installeren op de tweede machine | in een terminal, als root (bootstrap/install.sh, of scripts/deploy-panel-server.sh vanaf de dev-machine) | het schrijft systemd-units, maakt een database aan en maakt de eigen certificaatautoriteit van die machine |
| Het koppelen aan dit paneel | in het paneel, onder Instellingen → Gekoppelde panelen | een begeleide, zeldzame handeling waar een formulier, validatie en bevestiging fouten schelen |
Het paneel installeert nooit iets op de andere machine en heeft er nooit een inlog voor. Het geeft alleen een code uit; wie daar root heeft, draait één regel.
De korte weg: in het paneel
Instellingen → Gekoppelde panelen → Paneel koppelen. Alleen voor beheerders — een reseller ziet het menu-item niet, en de API weigert de routes erachter ongeacht wat het zijmenu toont.
- Geef het paneel een korte identificatie (
panel2), een naam voor in de lijst, en het kanaal en de golf waarin het updates krijgt. - Optioneel: pin het op een IP-adres — het uitgaande adres van het andere paneel. Een koppeling vanaf een ander adres wordt dan geweigerd.
- Klik op Code uitgeven. Het paneel toont de exacte regel voor de andere machine, met een kopieerknop en een aflopende geldigheid:
corecp-panel connect --code corecpf1.eyJ2IjoxLCJwIjoicGFuZWwyIiwi…De code wordt één keer getoond. Alleen een hash ervan is bewaard, dus dit is de enige plek waar hij ooit staat. Kwijt? Geef gewoon een nieuwe uit voor hetzelfde paneel — verder hoeft er niets opnieuw. Koppelcode intrekken maakt hem meteen waardeloos.
- Draai die regel op de andere machine (stap 3 hieronder is hetzelfde commando, uitgebreid). Het scherm springt vanzelf van Wacht op koppeling naar Gekoppeld, en toont dan de versie, de gezondheid en de vingerafdruk van de eigen node-CA van de replica.
Daarna toont de lijst elk gekoppeld paneel met versie, gezondheid, kanaal, golf en licentie. Een klik op een rij opent het: kanaal toewijzen, golf toewijzen, update starten, updates vasthouden, en — pas nadat je de naam van het paneel hebt getypt — de licentie intrekken.
Wat het scherm nooit doet. Het toont de vingerafdruk van de fleet-CA naast de node-CA van dit paneel, zodat je met eigen ogen ziet dat het twee verschillende autoriteiten zijn. Het maakt, roteert of exporteert er geen van beide: dat zijn root-handelingen in een terminal (corecp-panel panels ca). En er is nergens een knop die bij de klanten van dat andere paneel komt — de agent aan de andere kant kent geen enkele opdracht die dat zou kunnen beantwoorden.
De lange weg: in een terminal
Alles wat het scherm doet, is ook een commando — wat je wilt bij tien panelen in plaats van één. De rest van deze pagina is die weg.
Stap 1 — maak het paneel aan op de primary
$ corecp-panel panels add panel2 --name "Tweede merk" --channel beta --wave 2 \
--config /etc/corecp-panel/panel.yaml
managed panel panel2 created (beta, wave 2)
Next: corecp-panel panels code panel2 --config /etc/corecp-panel/panel.yamlDe naam panel2 is een korte code die je zelf kiest. Hij komt terug in het certificaat en in de apt-inlognaam, dus houd hem kort en laat hem staan.
--channel is het releasekanaal (edge, beta, stable, steady) en --wave de golf waarin dit paneel updates krijgt. Panelen zijn de buitenste ring van hetzelfde golfsysteem dat de servers gebruiken.
Stap 2 — vraag een koppelcode
$ corecp-panel panels code panel2 --ip 185.117.226.123 --ttl 15m \
--config /etc/corecp-panel/panel.yaml
Run this on panel2, within 15m0s:
corecp-panel connect --code corecpf1.eyJ2IjoxLCJwIjoicGFuZWwyIiwi…
valid until 2026-08-09T17:10:24Z
pinned to 185.117.226.123 — a connect from any other address is refused
The code is single use and is burned on the first attempt that gets past the address check.Gebruik --ip. Zonder dat vlaggetje werkt de code vanaf elke machine; met dat vlaggetje werkt hij alleen vanaf de server die je bedoelt. Een code die iemand over je schouder meeleest is dan waardeloos.
De code is één keer te gebruiken en vervalt vanzelf. Er zit géén wachtwoord in: het apt-wachtwoord komt pas terug in het antwoord, over een verbinding die de replica al gecontroleerd heeft. Een code in een chatvenster is dus geen wachtwoord in een chatvenster.
Stap 3 — plak de regel op de replica
$ corecp-panel connect --code corecpf1.eyJ2IjoxLCJwIjoicGFuZWwyIiwi… \
--config /etc/corecp-panel/panel.yaml
connected as panel2
channel beta (wave 2)
fleet CA 739d876dc5d26c76
its node CA c4430ea564db75b6
our node CA ed466a89fea08858 (verified different — neither panel signs for the other's nodes)
apt login panel-panel2 at packages.corecp.dev
Restart the panel to start reporting: systemctl restart corecp-panelDie vierde regel is de belangrijkste van deze hele pagina. De twee panelen hebben elkaar hun eigen node-CA laten zien en vastgesteld dat het er twee zijn. Waren ze gelijk geweest, dan was er geen certificaat uitgegeven en had er niets gewerkt — zo hoort het.
Daarna:
$ systemctl restart corecp-panel
$ corecp-panel connect status --config /etc/corecp-panel/panel.yaml
connected to panel1.corecp.dev:8443 as panel2
since 2026-08-09T16:45:23Z
channel beta (wave 2)
entitlement installed
last contact 9s agoHet duurt tot een minuut voordat apt op de replica werkt: de buildserver haalt de lijst met geldige inloggegevens elke minuut op bij de primary.
Stap 4 — kijk vanaf de primary
$ corecp-panel panels list --config /etc/corecp-panel/panel.yaml
ID STATE CHANNEL WAVE HOLD VERSION HEALTH LICENCE LAST SEEN
panel2 connected beta 2 no 0.14.0 ok live 9s agoWat je kunt doen met een gekoppeld paneel
$ corecp-panel panels channel panel2 stable --config … # ander releasekanaal
$ corecp-panel panels wave panel2 1 --config … # andere golf
$ corecp-panel panels upgrade panel2 --config … # nu bijwerken
$ corecp-panel panels hold panel2 --config … # even geen updates
$ corecp-panel panels resume panel2 --config … # weer wel
$ corecp-panel panels revoke panel2 --config … # licentie intrekken
$ corecp-panel panels reinstate panel2 --config … # licentie terugElk van deze is ook een bedieningselement in Instellingen → Gekoppelde panelen, op dezelfde API — een vloot van veertig panelen blijft scriptbaar, en één paneel blijft een klik.
Een opdracht wordt in de wachtrij gezet en uitgevoerd zodra de replica zich weer meldt (elke 15 tot 30 seconden). Wat er echt gebeurd is, zie je terug — in de terminal, en in de lijst Openstaande opdrachten op het scherm zelf:
$ corecp-panel panels show panel2 --config … | tail -3
DIRECTIVE VERB STATE DETAIL
1 update.apply done upgraded: corecp-agent 0.30.12 -> corecp-agent 0.32.7En dat is de hele lijst. Er is geen panels accounts, geen panels sql, geen panels shell — niet omdat ze vergeten zijn, maar omdat de agent aan de andere kant er geen antwoord op heeft.
Wat "licentie intrekken" doet, en wat niet
panels revoke haalt de apt-inloggegevens weg en sluit de fleet-toegang af. Binnen een minuut kan dat paneel niets meer installeren.
Het raakt geen data. De klanten van dat paneel blijven bediend, de database blijft staan, de certificaten blijven vernieuwen, de back-ups blijven lopen. Een licentie die afloopt is een paneel dat geen updates meer krijgt — niet een paneel dat stopt.
Weer loskoppelen
Op de replica:
$ corecp-panel connect leave --config /etc/corecp-panel/panel.yaml
left the fleet of panel1.corecp.dev:8443 (was panel2)
A running panel notices within one poll interval and stops reporting; there is
nothing to restart.De apt-inloggegevens blijven staan tot je ze zelf weghaalt (rm -f /etc/apt/auth.conf.d/corecp-fleet.conf).
Waarom een eigen CA
Elk paneel heeft een eigen certificaatautoriteit voor zijn servers. Die mag je nóóit delen tussen twee merken. Deelden ze er één, dan zou een replica die gekraakt wordt certificaten kunnen uitgeven die de servers van de primary vertrouwen — en dan is het tweede merk een sleutel tot het eerste.
Er zijn er dus drie: de node-CA van de primary, de node-CA van de replica, en een derde autoriteit alleen voor de koppeling zelf (de fleet-CA). Beide kanten controleren dit bij het koppelen en weigeren als er twee gelijk zijn.
$ corecp-panel panels planes --config /etc/corecp-panel/panel.yaml | head -8
PLANE SHARED THING WHY
build SHARED apt repository one pool of packages: …
build SHARED release channels (edge/beta/stable/steady) a channel is a view of …
…
data per panel node CA NEVER shared: a compromised replica …Zie ook: docs/architecture.md, "Primary and replica panels (three planes)", en docs/research/ui-vs-cli.md voor waarom koppelen een scherm is en sleutelbeheer niet.