# Kom igång

> Handbok · 2026-10-30 · https://groovy.simplo.dev/handbok/kom-igang

Sajter, hur man skapar dem och en Admin per sajt.

Installationen består av en grundsajt (`/`) och en eller flera **sajter**
under den, till exempel `/produkt-a/`. Alla använder dokumentationstemat
**groovy-docs**.

> [!SUBPAGES 1 descriptions]

## Sajter

Grundsajten och en sajt per dokumentation.

| Adress | Vad det är |
|---|---|
| `/` | **Grundsajten.** Här ska portalen ligga (listan över dokumentationer). Dess inställningar är **grunden för alla sajter**. |
| `/produkt-a/`, `/handbok/`, … | **En sajt per dokumentation.** Har egna sidor, egna filer, egen sökning och egen papperskorg. |

- **Varje sajt har sina egna sidor och filer.** Sökningen hittar bara sidor
  i den sajt man står i.
- **Inställningarna ärvs:** en sajt har grundsajtens inställningar och
  ändrar bara det som ska skilja sig åt. Oftast är det titeln.
- **Utseendet ärvs inte:** varje sajt har sin egen preset (se
  [Utseende](https://groovy.simplo.dev/handbok/utseende)).
- **Funktionerna ärvs inte:** utkast, sidhistorik, versioner, taggar,
  sidinfo och grenexport väljer varje sajt själv. De är av i en ny sajt
  (se [Editors och site-admins → Inställningar](https://groovy.simplo.dev/handbok/atkomst/redaktorer)).
  Vem som får läsa sajten ärvs inte heller.
- **Detta är gemensamt för alla sajter:** plugins, temat, presets och
  användarkonton. Hur användare och behörigheter ska fungera per sajt är
  ännu inte bestämt.
- **En inloggning på webbplatsen gäller alla sajter.** Admin kan däremot be
  om en inloggning per sajt.
- **Alla sajter på ett ställe:** registret på grundsajten visar varje
  sajts status, åtkomst, preset, taggar och egna inställningar (se
  [Skapa en sajt → Registret](https://groovy.simplo.dev/handbok/kom-igang/skapa-en-sajt)).

### Sajtväljaren
En kompass i headern som listar sajterna, så att läsaren kan gå från en
dokumentation till en annan. Sajterna hittas själva: grundsajten och alla
sajter, med namnet från respektive sajts titel. Under *Extra sites* kan man
lägga till fler länkar, till exempel till en dokumentation på en annan
server. Väljaren visas bara när det finns fler än en sajt att visa. Är
sajterna fler än 8 får menyn ett sökfält: skriv en del av namnet,
beskrivningen eller en tagg, välj med pilarna eller tryck Enter för den
första träffen.

**Läsaren ser bara sajter den får läsa**, är editor i eller
administrerar. En gäst ser bara sajter som är öppna för alla. En sajt som
läsaren inte får se finns inte någonstans i sidan. Länkarna under *Extra
sites* visas för alla.

**Gruppering per tagg.** Har sajterna gemensamma taggar (se
[Taggar → Taggar på sajter](https://groovy.simplo.dev/handbok/skriva/taggar)), och är *Common tags*
på, grupperas menyn per tagg:

- en rubrik per tagg, i den gemensamma listans ordning;
- en sajt med flera taggar står under var och en;
- sajter utan tagg står sist, under *Andra sajter*;
- bara sajter läsaren får se räknas. En tagg utan sådana sajter får ingen
  rubrik;
- sökfältet döljer en grupp utan träffar.

Den ställs in av super-admin, i två steg:

| Inställning | Var | Vad |
|---|---|---|
| *Site switcher for all sites* | **System-Admin** → *Temainställningar* → *Whole installation* | **Av** (vinner alltid) · **På för alla sajter** (tvingat, ingen sajt kan stänga av) · **På om inte sajten säger av** · **Bara där sajten säger på** |
| *Site switcher on this site* | för alla sajter: *Temainställningar* → *Header — links*; för en sajt: sajtens **Site-Admin** → *Inställningar* → *Övriga inställningar* | **Ärv** · **På** · **Av**, inom läget ovan |

Det första fältet gäller hela installationen: ingen sajt kan ändra det.
Det andra fältets värde i *Temainställningar* ärvs av alla sajter som inte
väljer själva. I Admin finns båda under **Header — links → Site
switcher**, och bara grundsajtens värde för det första gäller.

## Skapa en sajt

Registret över alla sajter: skapa en sajt, se status, åtkomst, preset och egna inställningar, ändra en sajt, kontrollera sajternas hälsa, och byta namn på, ta bort och återställa en sajt.

En sajt skapas i **sajtregistret** på grundsajten, av system-admin
(eller super-admin): **System-Admin** i sidhuvudet → *Sajter* →
**Ny sajt**. Där anger
du namn, titel, beskrivning och den första editorns adress. Sajten
fungerar direkt på `/<namn>/`, med en tom startsida; webbservern och Admin
behöver ingen ändring. Den första editorn får ett konto om hen saknar
ett och ett inloggningsmejl med länk till den nya sajten. **Den nya sajten
är stängd:** bara de som arbetar i den (och super-admin) läser den tills
en site-admin väljer vem som får läsa den (**Site-Admin** → *Ã
tkomst* i den
nya sajten, där läget heter *Bara editorer (välj vem som får läsa)*). Registret skriver
regeln i sajtens `config/themes/<tema>.yaml`
(`site_access: groups` utan grupper). Den som skapar sajten är dess
första site-admin. Fler utses i sajtens *Members* (se [Medlemmar och
grupper](../../atkomst/medlemmar)).

**Den nya sajten har alla valfria funktioner av:** utkast, sidhistorik,
versioner, taggar, sidinfo och export med undersidor. De ärvs inte från
grundsajten. Sajtens site-admin slår på dem i **Site-Admin** → *Inställningar*
(se [Editors och site-admins → Inställningar](https://groovy.simplo.dev/handbok/atkomst/redaktorer)).
Sajtens preset ärvs inte heller. En ny sajt får den preset som
super-admin valt för nya sajter (Admin2 på grundsajten → Plugins →
Subsites → *Preset for new sites*), eller ingen. Sajtens site-admin
byter den sedan i *Inställningar*.

**Den första sajten** skapas på samma sätt: System-Admin och registret
finns också när grundsajten är ensam. Är installationen ännu inte
förberedd för flera sajter (`setup.php` i webbroten och webbserverns
regel) står det i *Sajter* vad som saknas, och **Ny sajt** visas inte.

**Gränser:** högst 20 nya sajter per system-admin och timme (bara de som
faktiskt skapas räknas) och högst 60 nekade försök (upptaget namn, fel
adress). Högst 10 nya editors åt gången, och varje ny editor räknas
mot samma tak för inbjudningar som i *Members* (30 per timme, för den som
lägger till). Tar du bort en adress och lägger tillbaka den inom en timme
får den inget nytt mejl.

### System-admin
System-admin skapar sajter och ändrar registret: titel, beskrivning,
låst och editors för alla sajter. Hen läser och redigerar dessutom
alla sajter, utan att stå som editor i dem, och har site-adminens
avsnitt i varje sajts Site-Admin. Ikonen **System-Admin** i
sidhuvudet leder till registret från vilken sajt som helst. Den som
skapar en sajt står som sajtens första site-admin.

System-admin är en grupp. Super-admin utser system-admin med en egen
grupp i Admin (Accounts → Groups) med behörigheten *Sites → Manage the
register of sites* (`site.sites.manage`), eller i
`user/config/groups.yaml`:

```yaml
system-admins:
  readableName: 'System-admins'
  access:
    site:
      login: true
      sites:
        manage: true
```

Lägg sedan system-adminens konto i gruppen. Behörigheten direkt på
kontot ger ingenting: hälsokontrollen säger till om ett konto har den
så.

I System-Admin sköter system-admin också **Reading groups**: de
läsgrupper som alla sajter kan välja (grupper utan sajtnamn först). Där
skapas de, får ny etikett och tas bort. Vem som är med i en sådan grupp
bestäms i grundsajtens *Members*.

### Registret
Registret är installationens kontrollpanel: alla sajter på ett ställe.

- **Var:** **System-Admin** i sidhuvudet, på vilken sajt som helst, och
  avsnittet *Sajter*. System-Admin ligger på grundsajten (`/system-admin`).
  Ikonen vid en sajt öppnar den sajtens **Site-Admin**, när du får öppna
  den: super-admin och system-admin för alla sajter. En sajt där
  *Show Site-Admin* är av har ingen ikon, inte heller för super-admin.
- **Vem:** system-admin och super-admin. Hälsokontrollen av
  sajterna (nedan) ser bara super-admin.
- **Varför:** för att se hur alla sajter är inställda utan att öppna varje
  sajt, och för att hitta den sajt som skiljer sig från de andra.

#### Vad listan visar
Varje sajt står på en rad, med titel, adress, beskrivning och antal
editors. Under står små etiketter:

| Etikett | Vad den säger |
|---|---|
| *Låst* | Sajten är ett arkiv. |
| *Borttagning begärd* | En site-admin har begärt att sajten tas bort (nedan). |
| Ögat | Vem som får läsa sajten: *Alla*, *Inloggade besökare*, *Grupper: …*, *Bara editorer* eller *Domänregistret*. |
| Paletten | Sajtens preset. *(ärvt)* betyder att sajten har grundsajtens. En preset som inte finns står i rött med *(saknas)*. |
| *N egna inställningar* | Inställningar som sajten gör själv. Klicka för att se vilka (nedan). |
| Hjärtat | Sajtens hälsokontroll, bara för super-admin (nedan). |

Överst står en summering: hur många sajter det finns, hur många som är
låsta, öppna för alla, har en egen preset och avviker. Fältet *Filtrera
sajter* söker i namn, titel, beskrivning, åtkomst, preset och editors.

#### Egna inställningar
En sajt ärver grundsajtens inställningar. *N egna inställningar* listar det
sajten ändå sätter i sin egen konfig, med ett av tre lägen:

- **skiljer sig:** sajten har ett annat värde än alla sajter. En ändring för
  alla sajter når därför inte den här sajten.
- **samma:** samma värde som alla sajter. Raden kan tas bort ur sajtens
  konfig utan att något ändras.
- **ignoreras:** bara grundsajten får sätta det. Grundsajtens värde gäller
  ändå.

Bara namnen på inställningarna visas, aldrig värdena. Konfig kan innehålla
hemligheter. Titeln, sajtens preset och det som alltid gäller en sajt
för sig (vem som får läsa den, och funktionerna i sajtens *Inställningar*)
räknas inte.

#### Ändra en sajt
**Ändra** vid en sajt ändrar:

- **titeln** (skrivs i sajtens `config/site.yaml`, bara titeln);
- **beskrivningen** (visas i sajtväljaren och i listan över sajterna, se
  [Innehåll → Listan över sajterna](https://groovy.simplo.dev/handbok/skriva/innehall));
- **editors**, en adress per rad. En ny editor får konto och
  inloggningsmejl om det behövs; den som tas bort kan inte längre redigera
  sajten (kontot finns kvar). Rollen är sajtens grupp `<namn>--editors`
  (se [Editors och site-admins](https://groovy.simplo.dev/handbok/atkomst/redaktorer));
- **Låst**: sajten blir ett arkiv (se
  [Editors och site-admins → Låst sajt](https://groovy.simplo.dev/handbok/atkomst/redaktorer));
- **Preset:** sajtens utseende. *Ingen* ger temats eget utseende
  (Default). Presets är gemensamma för alla sajter, så valet ändrar bara
  vilken preset sajten använder, inte själva presetet. Efter en ändring
  har meddelandet **Ã
ngra**, som sätter tillbaka det sajten hade. Samma
  val finns i sajtens **Site-Admin** → *Inställningar* (se
  [Lagren](https://groovy.simplo.dev/handbok/utseende/lagren)).
- **Taggar:** sajtens gemensamma taggar. Sajtväljaren grupperar sajterna
  per tagg. Efter en ändring har meddelandet **Ã
ngra**. Se
  [Taggar → Taggar på sajter](https://groovy.simplo.dev/handbok/skriva/taggar).

#### Begäran om att en sajt tas bort
En site-admin kan inte ta bort sin sajt, men kan begära det i sajtens
**Site-Admin** → *Site*. Sajten får då etiketten *Borttagning begärd* i
registret. Håll muspekaren över den för att se vem som begärde och när.
Inget mejl skickas, så titta i registret.

- **Super-admin** tar bort sajten med **Ändra** → **Ta bort …** (se
  Byta namn på eller ta bort en sajt, nedan).
- **Avvisa** i etiketten tar bort begäran utan att röra sajten. Det gör
  system-admin eller super-admin, efter en bekräftelse.
- Site-admin kan själv ta tillbaka begäran i sajten.
- En sajt som återställs ur sajternas papperskorg har ingen begäran
  kvar.

#### Hälsokontrollen för alla sajter
Bara för super-admin. Varje sajt har en egen hälsokontroll (se
[Hälsokontroll](https://groovy.simplo.dev/handbok/drift/halsokontroll)). I registret kan du köra hela
kontrollen för alla sajter på en gång.

- **Kontrollera alla** kör kontrollen för varje sajt. **Kontrollera hälsan** vid en
  sajt kör den bara för den sajten.
- Etiketten visar sedan resultatet: *Inga varningar* eller *N varningar*.
  Klicka på den för att se raderna. **Kontrollera igen** kör kontrollen igen.
- Kontrollen körs bara när du ber om den, aldrig när listan öppnas. Två
  sajter kontrolleras åt gången, så med många sajter tar det en stund.
- Raderna är hela listan för sajten, inte bara urvalet som sajtens
  site-admin ser i Site-Admin. *Inte kontrollerad* med
  ett meddelande betyder att sajten inte svarade.

### Namnet
- **Namnet blir adressen:** `produkt-c` ger `/produkt-c/`. Bara en
  super-admin kan byta det senare (nedan).
- **Tillåtna tecken:** gemener a–z, siffror och enkla bindestreck, högst 40
  tecken, inte bindestreck sist. Inga punkter.
- **Upptagna namn:** mappar och filer i webbroten (`assets`, `system`,
  `user`, `vendor` …), `admin`, `api`, `login`, `default` och grundsajtens
  toppsidors adresser: mappnamnet utan nummer och en `slug:` i sidhuvudet.
- **Ett namn kan inte återanvändas** så länge något finns kvar av en
  tidigare sajt med det namnet: grupper som börjar med `<namn>--`, konton
  i sådana grupper, sajten i sajternas papperskorg eller namnet i
  domänregistret (`domains.json`). Registret säger vad som finns kvar.
  Samma gäller det gamla namnet efter ett namnbyte.
- **Ã
t andra hållet:** en ny toppsida på grundsajten får aldrig samma
  adress som en sajt. **Ny sida här** på startsidan ger då `-2` på
  slutet, flytt och kopia till toppnivån gör likadant, och Admin nekar en
  sådan sida, också när den flyttas, kopieras eller får en ny slug.

### Mappen
En sajt är en mapp: `public/user/env/<namn>/`. Registret skapar den så
här, och den kan också skapas för hand:

```
public/user/env/produkt-c/
  pages/            sajtens sidor (samma uppbyggnad som user/pages/)
    01.home/home.md
  config/
    site.yaml       title: Produkt C
  site-meta.yaml    beskrivning, låst, taggar (se nedan)
```

- **Det som gör mappen till en sajt är `pages/`.** Syns en sajt som
  skapats för hand inte direkt: töm cachen med `php bin/grav cache`, från
  `public/`.
- **Temainställningar för sajten** görs i sajtens **Site-Admin** →
  *Inställningar*, i sajtens Admin, eller läggs i `config/themes/groovy-docs.yaml`
  i mappen. Utseendet står inte där: det är sajtens preset
  (`preset_site`).

### Beskrivning, lås och taggar: `site-meta.yaml`
Det som hör till sajten men inte är inställningar står i `site-meta.yaml`
direkt i sajtens mapp (inte i `config/`, så att det inte går att ändra
från sajtens Admin). Registret skriver den; den kan också skrivas för hand.
Vem som arbetar i sajten står inte här utan i sajtens grupper (se
[Editors och site-admins](https://groovy.simplo.dev/handbok/atkomst/redaktorer)).

```yaml
description: 'Installation och drift av produkt C'
locked: false
tags:
  - installation
removal_requested:
  by: bo@example.com
  at: '2026-09-30T10:00:00+00:00'
```

- **`description`** visas när man håller muspekaren över sajten i
  sajtväljaren, och sökfältet där hittar den.
- **`locked: true`** gör sajten till ett arkiv. Grundsajten har
  samma fil direkt i `public/user/`.
- **`tags`** är sajtens gemensamma taggar, som nycklar. En tagg som inte
  står i den gemensamma listan syns inte i sajtväljaren.
- **`removal_requested`** finns bara när en site-admin har begärt att
  sajten tas bort: vem och när. Den skrivs från sajtens *Site*.
- **Titeln står kvar i `config/site.yaml`.**
- En fil som inte går att läsa räknas som tom, och ett fel skrivs i
  loggen. Registret visas också med `php bin/plugin subsites sites`, från
  `public/`.

### Byta namn på eller ta bort en sajt
Bara en **super-admin** gör det, i registret (**System-Admin** → *Sajter*). Varje åtgärd visar
först allt som berörs. Läs listan, kryssa i rutan och bekräfta; har något
ändrats sedan listan visades får du granska igen.

- **Byta namn:** öppna sajten med **Ändra** och välj **Byt namn …**, skriv
  det nya namnet och **Granska**. Sajtens mapp byter namn med allt i den
  (sidor, filer, papperskorg, historik, inställningar), och
  sajtens grupper följer med, också `gammal--editors` och
  `gammal--site-admins`: `gammal--läsare` blir `ny--läsare` i
  gruppfilen, på medlemmarnas konton, i sajtens regel och i sidornas
  åtkomst. Den gamla adressen slutar fungera direkt och **ingenting
  omdirigerar**: bokmärken och länkar från andra ställen går sönder. Admin
  finns på `/<nytt namn>/admin` (logga in där igen). Under några sekunder
  medan mappen flyttas går sajten inte att ändra.
- **Läsare via domänregistret** stängs ute från den nya adressen tills
  `domains.json` (som skrivs av n8n) har det nya namnet. Granskningen
  säger när det gäller.
- **Om något inte hann ändras** säger meddelandet vad (det står också i
  loggen). Sajten fungerar då under det nya namnet men släpper in färre,
  aldrig fler. Kör `php bin/plugin subsites rename-groups <gammalt> <nytt>`
  från `public/` för att göra klart.
- **Ta bort:** **Ändra** → **Ta bort …**. Sajten flyttas till sajternas
  papperskorg (`user/.sites-trash/`, nås aldrig från webben); inget
  raderas. Grupper, konton och domänregistret lämnas som de är: sajtens
  editors och site-admins står kvar i sina grupper men kan inte arbeta i
  sajten. Namnet är upptaget så länge sajten ligger där, eller dess
  grupper finns. Grundsajten kan inte tas bort.
- **Ã
terställ:** under **Borttagna sajter** längst ner i listan,
  **Ã
terställ …**. Sajten kommer tillbaka på sin adress, med sina grupper och
  sin regel; dess editors och site-admins arbetar i den igen. Är namnet upptaget nu (en ny sajt eller toppsida) anger du
  ett nytt namn; det är då ett namnbyte, med allt ovan.
- **Tömma sajternas papperskorg** görs för hand på servern: radera mappen
  i `public/user/.sites-trash/`.

## Admin: en per sajt

Varje sajt har sin egen Admin, och väljaren Env byter mellan dem.

| Adress | Du arbetar med |
|---|---|
| `/admin` | grundsajten: dess sidor och filer, och **inställningarna som gäller alla sajter** |
| `/produkt-a/admin` | bara produkt-a: dess sidor, filer och egna inställningar |

- **Allt i en Admin gäller den sajt adressen visar.** Det gäller sidor,
  filer, konfiguration, plugininställningar och temainställningar.
- **Väljaren *Env* överst är en sajtväljare.** Den listar `/ (all sites)`,
  `/produkt-a`, `/handbok`, … Väljer du en sajt öppnas samma sida i den
  sajtens Admin; från Pages i `/admin` kommer du alltså till Pages i
  `/produkt-a/admin`. På grundsajten står det *Default* på knappen.
- **Temainställningarna kräver inte Admin.** En super-admin ändrar det
  som gäller alla sajter i **System-Admin** → *Temainställningar* (se
  [Temainställningar](https://groovy.simplo.dev/handbok/utseende/installningar)). En sajts egna
  inställningar ändras i sajtens **Site-Admin** → *Inställningar* (se
  [Editors och site-admins](https://groovy.simplo.dev/handbok/atkomst/redaktorer)). Admin har samma
  inställningar och är reservvägen.
- **Utseendet ändras inte i Admin.** Det är sajtens preset, och ändras i
  **System-Admin** → *Presets* (se [Presets](https://groovy.simplo.dev/handbok/utseende/presets)).
- **Överst på varje flik i temainställningarna** (Themes → Groovy Docs)
  står var inställningarna också ändras, och vad en sparning påverkar:
  - i `/admin`: det alla sajter bygger på finns i **System-Admin** →
    *Theme settings*, och grundsajtens egna (preset, funktioner,
    identitet) i dess **Site-Admin** → *Settings*. Sedan *You are
    changing: All sites*;
  - i en sajts Admin: sajtens inställningar finns i dess **Site-Admin** →
    *Settings*. Sedan *You are changing: only produkt-a. Everything else
    is inherited from All sites*.
- **Ladda upp loggan i Site-Admin,** inte i Admin. En logga som laddas
  upp i Admin hamnar i temats gemensamma mapp, inte i sajtens egen. En
  logga från Site-Admin visas i Admin med filens namn och står kvar när
  du sparar där.
- **Sajter skapas och tas bort i filsystemet,** inte från Admin (se
  [Skapa en sajt](https://groovy.simplo.dev/handbok/kom-igang/skapa-en-sajt)).
