@@PRODUCT@@

Je eigen hostingmerk voeren

Als reseller verkoop je hosting onder je eigen naam. Je klanten zien jouw adres, jouw logo en jouw kleur — nooit CoreCP, en nooit elkaar. Deze pagina beschrijft wat je zelf inricht en waar de grens ligt.

Geschreven voor: Reseller, Beheerder

Als reseller verkoop je hosting onder je eigen naam. Je klanten zien jouw adres, jouw logo en jouw kleur — nooit CoreCP, en nooit elkaar. Deze pagina beschrijft wat je zelf inricht en waar de grens ligt.

Je eigen adres en huisstijl

Onder Huisstijl stel je per merk in wat je klanten zien: de naam, het logo, de accentkleur en het adres waarop ze aanmelden. Dat adres is niet cosmetisch — het is waar het paneel werkelijk draait voor jouw klanten:

  • het aanmeldscherm draagt jouw naam;
  • uitnodigings- en herstelmail gaat uit onder jouw merk, via jouw SMTP als je die hebt ingesteld;
  • passkeys horen bij jouw adres, dus een klant die bij jou een passkey registreert, gebruikt die alleen hier;
  • installeert een klant het paneel op zijn telefoon, dan staat jouw app op het beginscherm, met jouw naam en icoon.

Kies je merk in de balk bovenaan de huisstijlpagina. Bij meer dan een handvol klanten is dat een zoekveld en geen lijst — dat is de bedoeling.

Je huisstijl is een scherm, geen opdracht. De assistent kan je merk niet lezen en niet aanpassen, en een API-sleutel of gekoppelde AI-client evenmin. Dat is met opzet: kleuren, een logo en de pagina's die je klanten aan bezoekers laten zien zijn dingen waar je naar kíjkt terwijl je ze verandert. Wil je iets aanpassen, doe dat hier — of op de server met corectl brand set, als je liever op de opdrachtregel werkt.

Je klanten

Klanten is jouw lijst. Per klant zie je het pakket, de websites, het verbruik en wie er toegang heeft. Je maakt een klant aan, geeft hem een pakket en nodigt de eigenaar uit; de eigenaar nodigt daarna zelf zijn eigen mensen uit (zie "Iemand toegang geven").

Wat je klant zelf mag doen, is een bewuste grens: mailboxen aanmaken en wijzigen, DNS-records, certificaten aanvragen. Wat daaromheen ligt — doorstuuradressen, de zone zelf, websites toevoegen, PHP-versies — blijft bij jou. Dat is geen toeval maar een besluit per handeling.

Pakketten

Een pakket bepaalt de limieten: domeinen, mailboxen, databases, schijfruimte. Onder Pakketten maak je ze aan en wijs je ze toe. Een limiet is zichtbaar voor de klant als een balk met een drempel — bij 80% amber, bij 95% rood — zodat "vol" nooit als verrassing komt.

De pagina's die je klanten aan bezoekers laten zien

Niet elke website is altijd in de lucht. Er is een nieuw domein waar nog niets op staat, er is een klant die niet betaalt, en er is af en toe een site die stukloopt. Op die momenten ziet een bezoeker van je klant een pagina — en die pagina draagt jouw merk, niet dat van ons.

Er zijn er vier:

WanneerWat de bezoeker ziet
Website nog leeg"Hier komt binnenkort een website"
Account opgeschort"Deze website is tijdelijk niet beschikbaar"
Pagina bestaat niet"Deze pagina bestaat niet"
Er gaat iets mis"Er ging iets mis op deze website"

Je stelt ze niet apart in. Ze worden gemaakt uit wat je onder Huisstijl invult: je naam, je tagline, je accentkleur, je logo en je supportadres. Verander je je kleur, dan veranderen de vier pagina's mee — je hoeft niets opnieuw te publiceren.

Wat ze bewust niet zijn: een pagina die je zelf als HTML kunt uploaden. Dat klinkt vrijer, maar zo'n pagina draait op het adres van je klant, en een script dat daar terechtkomt leest de bezoekers van je klant mee. De vaste opmaak met jouw merkgegevens levert hetzelfde resultaat zonder dat risico.

De pagina's laden verder niets: geen lettertype van internet, geen afbeelding van een andere server, geen statistiekscript. Ze moeten het namelijk juist doen op het moment dat er iets stuk is.

Een opgeschorte website

Een opgeschorte website antwoordt met code 503 en de mededeling dat het tijdelijk is. Dat is belangrijk voor Google: een site die tijdelijk offline is met code 503 blijft in de index staan, een site die "gewoon" een pagina teruggeeft niet. Zet een account dus niet maanden op opgeschort — voor een paar dagen is het precies goed.

Een reden bij het opschorten

Schort je een klant op, dan vraagt het paneel waarom. Je kiest uit een vaste lijst — niet betaald, misbruik, schending van de voorwaarden, op verzoek van de klant, onderhoud, anders — en je kunt er een notitie bij zetten.

Die reden en die notitie zijn voor jou. Een bezoeker van de website ziet ze nooit. Eén ding verandert wel: kies je niet betaald, dan verwijst de publieke pagina naar facturatie in plaats van naar support. Bij elke andere reden staat er dezelfde neutrale tekst.

Je ziet ze terug op de pagina van het account, onder Pakket → Beschikbaarheid: de reden, je notitie, wie het gedaan heeft en wanneer.

Op de commandoregel kan hetzelfde:

ssh root@stck1.corecp.dev
corectl account suspend klant1 --reason payment --note 'factuur 2026-0421'
corectl account unsuspend klant1

Waar de spullen van je klant staan, zie je niet

Op welke machine een website, database of mailbox draait, is een beslissing van de platformbeheerder. Jij en je klanten zien die verdeling nooit; jullie zien websites die werken. Dat is expres: capaciteit verschuiven mag geen gesprek met klanten worden.

In het account van een klant kijken

Heb je het recht inloggen als, dan kun je binnen je eigen merk als een klant aanmelden om te helpen. Dat is zichtbaar (een balk boven in beeld voor allebei), duurt maximaal een uur, en een aantal dingen is geblokkeerd: wachtwoorden, tweestapsverificatie, geheimen, facturatie en het toevoegen van mensen. Alles komt onder beide namen in het logboek.

Het recht staat standaard uit en wordt op de paneelserver toegekend:

ssh root@panel1.corecp.dev
corecp-panel admin impersonation allow support@jouwmerk.nl

Wat je niet kunt zien

De scheiding tussen merken is geen instelling maar een eigenschap van het systeem. Een sessie hoort bij het adres waarop hij is gemaakt; er is geen doorkijkje naar een ander merk, ook niet voor dezelfde persoon met hetzelfde e-mailadres. Twee resellers met dezelfde klant weten niets van elkaar.

Wat je verandert, zie je meteen — in beide standen tegelijk

Bovenaan de huisstijlpagina staat je merk zoals je klanten het krijgen. Niet één kleurvlakje, maar zes echte schermpjes:

LichtDonker
Aanmeldschermjouw logo, jouw naam, jouw drie zinnen, jouw linksidem, in de donkere stand
Dashboardhet zijmenu met jouw kleur en jouw logo, een kaart met knoppenidem
Tabbladstrookje favicon tussen twee andere tabbladenidem

Alles daaronder werkt er direct op door: typ je een andere productnaam, dan verandert hij in beide aanmeldschermen terwijl je typt. Je hoeft niet op te slaan om te kijken. Pas als het klopt druk je op Opslaan; tot dat moment is er niets veranderd voor je klanten.

De balk onderaan is waar je opslaat

Opslaan doe je vanaf een balk die onderaan het scherm blijft staan. Daar stond ooit een knop rechtsboven, en die was het probleem: deze pagina is ruim een scherm lang, dus die knop was het grootste deel van de tijd niet te zien.

De balk noemt de huisstijl die je aan het bewerken bent, zegt of er nog iets openstaat, en meldt vooraf dat er om een bevestiging gevraagd wordt als dat voor dit record geldt. Wordt je opslag geweigerd, dan staat de reden meteen naast de knop in plaats van ergens bovenaan de pagina.

Ga je weg met wijzigingen die je niet hebt opgeslagen, dan waarschuwt de pagina. Drie dingen zijn de uitzondering: logo's, favicon en het certificaat werken onmiddellijk — een bestand dat je kiest, is al verstuurd.

Dit is de reden dat de pagina zo is opgebouwd: een huisstijl is iets waar je naar kijkt, niet iets wat je invult en dan hoopt.

De waarschuwing bij een kleur die niet werkt

Kies je een accentkleur die te weinig verschilt van de achtergrond, dan komt er een gele melding onder de kleurvelden — met het thema erbij en het gemeten verschil, bijvoorbeeld "Thema Licht: het accent en de achtergrond verschillen maar 1,09:1". Er staat ook bij wanneer de tekst óp je knoppen omslaat van wit naar bijna-zwart, want dan verandert élke knop in het paneel tegelijk.

Het is een waarschuwing, geen blokkade. Je kunt gewoon opslaan; het paneel houdt de tekst op je knoppen altijd leesbaar. Wij vertellen je alleen wat we zien, want jij kijkt naar deze pagina in één stand en je klanten zitten in de andere.

Dezelfde bewaking geldt voor je logo: uploadt je een donker merkteken, dan meten we de gemiddelde helderheid ervan tegen de kleur van het zijmenu waarop het komt te staan. Verdwijnt het daarin, dan zeggen we dat — met vermelding van welk thema het betreft.

Twee logo's: één voor licht, één voor donker

Je paneel heeft een lichte en een donkere stand, en je klant kiest zelf welke. Eén logo dat op allebei goed staat bestaat vaak niet: een donker woordmerk verdwijnt in het donkere zijmenu, en een wit logo is onzichtbaar op wit.

Daarom kun je er twee uploaden:

  • Logo (licht) — wordt overal gebruikt, en is ook de terugval.
  • Logo (donker) — wordt alleen gebruikt als je klant het paneel in de donkere stand heeft staan.

Upload je alleen het lichte logo, dan verandert er niets: dat wordt in beide standen getoond. Haal je het donkere weer weg, dan valt het paneel netjes terug op het lichte — je klant ziet nooit een kapot plaatje.

Wil je vanaf de opdrachtregel controleren wat er staat:

curl -s https://paneel.jouwmerk.nl/api/v1/branding | python3 -m json.tool
{
  "product_name": "Van Eijk Hosting",
  "logo_url": "/brand/logo/6b1f…",
  "logo_dark_url": "/brand/logo/9c4a…",
  "favicon_url": "/brand/favicon/22e7…/icon-32"
}

Staat logo_dark_url er niet, dan heb je alleen het lichte logo — en dat is prima.

Je eigen icoon in het tabblad

Het kleine plaatje in het browsertabblad heet een favicon. Je uploadt er één, en het paneel maakt zelf de maten die een browser en een telefoon nodig hebben: een vierkantje van 32 pixels voor het tabblad en één van 180 pixels voor het beginscherm van een iPhone.

Wat je kunt uploaden:

BestandWat er gebeurt
PNG of JPEGHet paneel schaalt hem naar 32 en 180 pixels. Lever hem het liefst vierkant en minstens 180 pixels groot aan.
ICOWordt gebruikt zoals hij is — dat bestandsformaat bevat zelf al meerdere maten.
SVGWordt gebruikt zoals hij is; moderne browsers tonen dat scherp op elk scherm.

Maximaal 128 KB. Een SVG wordt net zo streng gecontroleerd als je logo: staat er script in, dan wordt het bestand geweigerd en niet "schoongemaakt".

Upload je niets, dan gebruikt het paneel je logo als tabbladicoon. Dat werkt, maar een logo dat op 32 pixels een grijze vlek wordt, is precies waarom dit veld bestaat.

Wat je klanten op het aanmeldscherm lezen

Het aanmeldscherm is het eerste dat een klant van jou ziet. Je vult er zelf in:

  • Drie zinnen waarmee je vertelt wat je levert. Elke zin heeft een Nederlandse en een Engelse versie, want je klanten kiezen zelf hun taal. Laat je ze leeg, dan staan onze eigen drie zinnen er — maar dan alle drie, nooit een mengsel.
  • Hulp en Documentatie: twee adressen van jezelf.
  • Maximaal vier eigen links onder het formulier, bijvoorbeeld je statuspagina en je voorwaarden.

Elk adres moet met https:// beginnen. Een http://-adres wordt geweigerd, en alles wat geen gewone link is (javascript:, data:) ook — die zouden in de pagina van je klant terechtkomen, en daar hoort alleen een link te staan.

Vul je niets in, dan staat er niets. Wij zetten er met opzet niet onze eigen helppagina neer: jouw klant hoort bij jou aan te kloppen, niet bij ons.

Je merk in de mail die wij namens jou sturen

Systeemmail — een uitnodiging, een wachtwoordherstel, een waarschuwing dat een schijf vol loopt — gaat uit onder jouw merk. Drie velden bepalen hoe:

VeldWat het doet
AfzendernaamDe naam vóór het e-mailadres, bijvoorbeeld "Van Eijk Support". Leeg = je productnaam.
Logo in de mailLicht (standaard) of donker. Een mailbericht heeft een lichte achtergrond, dus het lichte logo klopt bijna altijd.
Accentkleur in de mailDe kleur van de knop in het bericht. Leeg = je gewone accentkleur.

Het adres waar de mail vandaan komt regel je niet hier: dat hangt aan je eigen SMTP-instellingen, omdat een afzenderadres dat wij niet mogen ondertekenen in de spammap belandt. De naam ervoor is wél helemaal van jou.

Een beheerder kan op de paneelserver bekijken hoe zo'n bericht er met jouw merk uitziet, zonder dat er iets verstuurd wordt:

ssh root@panel1.corecp.dev \
  'corecp-panel mail preview --realm <groep-id> --kind quota.disk --out /tmp/preview'
realm 4f1c…: product "Van Eijk Hosting", sender "Van Eijk Support" <notifications@…>,
             logo "https://paneel.jouwmerk.nl/brand/logo/6b1f…", accent #5b3df5
wrote 2 files to /tmp/preview

Vul je een van de drie niet in, dan neemt het paneel dat ene veld over van de platformhuisstijl — per veld, niet per merk. Zo staat er nooit een half merk in de inbox van je klant.

Terug naar standaard

Onderaan de pagina staat een gevarenzone met één knop: Terug naar standaard. Die zet de huisstijl van deze groep in één keer terug naar het standaard uiterlijk van het paneel. Naam, ondertitel, kleuren, kaderinstellingen, logo's, favicon, aanmeldteksten, links en mail-instellingen worden gewist. De app-iconen van dat merk vervallen mee, dus wie het paneel op zijn beginscherm had staan, ziet het daarna weer onder het standaardmerk.

Twee dingen blijven staan: je eigen paneel-hostname en het certificaat daarvoor. Dat is met opzet — een adres weghalen is een andere beslissing met een andere prijs (bestaande links en bladwijzers van je klanten). Wil je die óók kwijt, maak dan het hostnameveld leeg en sla op.

De knop vraagt om de naam van de huisstijl voordat hij iets doet, want dit is niet terug te draaien vanuit het paneel. In het logboek komt er één regel voor, met de hostname die is blijven staan.

# De regel die het terugzetten heeft achtergelaten, met de hostname die bleef
ssh root@panel1.voorbeeld.nl \
  'corecp-panel audit export --since 0 --limit 5000' | grep branding.reset

Zie ook

  • Iemand toegang geven
  • Wat je zelf kunt regelen
  • Je account beveiligen

Je eigen logo uploaden — wat er wel en niet in mag

Je mag een SVG uploaden, want dat schaalt scherp op elk scherm. Een SVG is alleen geen plaatje maar een klein document, en een document kan meer dan tekenen. Daarom wordt er bij het uploaden gekeken, en niet pas als een bezoeker de pagina opvraagt.

Geweigerd wordt:

Wat er in staatWaarom het niet mag
Een <script>-elementDat draait code op de pagina van elke bezoeker.
Een attribuut als onload= of onclick=Hetzelfde, alleen korter opgeschreven.
Een verwijzing naar een ander adres (http://…)Dan haalt de pagina van je bezoeker iets op bij een derde partij.
ssh root@stck1.corecp.dev 'corectl brand set vaneijk --logo-svg /tmp/logo.svg'
refused: the SVG carries an event handler attribute (onload)

Werkt je bestand niet, open het dan in een teksteditor en haal die regels eruit — of exporteer opnieuw met "geen interactiviteit" aangevinkt. Lukt dat niet, gebruik dan een PNG; die kan per definitie niets anders dan een plaatje zijn.

Je accentkleur wordt op dezelfde manier bekeken: het is een kleurcode van de vorm #rrggbb of het merk wordt niet opgeslagen. Er is geen ruimte tussen die twee, juist omdat die kleur letterlijk in de opmaak van je pagina's terechtkomt.

En daarna nog een keer, bij het uitserveren. Het weigeren bij het opslaan is de eerste helft; de tweede is dat je logo en je tabbladicoon worden uitgeserveerd met de mededeling aan de browser dat het een plaatje is en verder niets. Zou iemand het bestand rechtstreeks in een tabblad openen, dan mag die pagina geen code uitvoeren, niets ophalen en niets versturen. Een andere website mag de bytes bovendien niet uit jouw paneel lezen. Je hoeft daar niets voor in te stellen; het staat hier omdat een tweede slot op dezelfde deur het vermelden waard is.