server-up/docs/installeren.md
Ramon 2862f7844c
Some checks failed
Deploy server-up (dev) / deploy (push) Failing after 35s
Deploy server-up (prod) / deploy (push) Failing after 40s
v0.7.30-beta - installatiescript voor Linux
curl -fsSL https://git.ramonbesselink.nl/bes-r/server-up/raw/branch/main/install.sh | sh

install.sh controleert het systeem, biedt aan Docker te installeren als dat
ontbreekt, kloont de repo (of pakt het tar-archief uit als git ontbreekt), maakt
.env aan, bouwt en start, wacht op /healthz en toont waar je terecht kunt met de
waarschuwing meteen een account aan te maken.

- Opties: --dir, --port, --bind, --branch, --token, --update, --uninstall,
  --yes, --dry-run.
- --update haalt nieuwe code op en herstart; .env, stacks en gegevens blijven.
- --uninstall stopt de container maar laat gegevens staan, en vertelt hoe je
  die alsnog opruimt.
- Gebruikt alleen sudo waar nodig: kun je zelf in de doelmap schrijven en
  docker aanroepen, dan blijft alles onder je eigen account.

Tijdens het testen gevonden en verholpen:
- `docker compose --project-directory` zoekt zonder -f het compose-bestand in de
  huidige map; bij `curl | sh` is dat je thuismap. Nu altijd -f erbij.
- De wachtlus gaf anderhalve minuut geen teken van leven; nu een punt per
  poging en 90 in plaats van 120 seconden.
- Bij --dry-run braken ontbrekende Docker-onderdelen de voorvertoning af; nu
  waarschuwingen zodat je de hele gang van zaken ziet.
- De versie-uitlezing uit /healthz tolereert nu ook json met spaties.

Documentatie: docs/installeren.md met alle opties, bijwerken, verwijderen en een
probleemoplostabel; README verwijst ernaar.

Tests: syntaxis onder sh/dash/bash, geen bashismen, --help noemt alle opties,
ongeldige invoer stopt, een proefdraai maakt niets aan, en de installatieregel
in README en docs is identiek.

958 tests groen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C7oLCRYzY5ixJ5Sv8Y8EFb
2026-07-27 19:30:45 +02:00

149 lines
4.3 KiB
Markdown

# Installeren
## In één regel
```bash
curl -fsSL https://git.ramonbesselink.nl/bes-r/server-up/raw/branch/main/install.sh | sh
```
Dat installeert Server Up in `/opt/server-up`, bereikbaar op
`http://localhost:5000`.
**Liever eerst zien wat je uitvoert?** Verstandig — je haalt een script binnen
dat root-rechten gebruikt:
```bash
curl -fsSL https://git.ramonbesselink.nl/bes-r/server-up/raw/branch/main/install.sh -o install.sh
less install.sh
sh install.sh
```
Wil je alleen weten wát het zou doen, zonder dat er iets verandert:
```bash
sh install.sh --dry-run
```
---
## Wat het script doet
1. Controleert of je op Linux zit en of `curl` en `tar` aanwezig zijn
2. Kijkt of Docker draait — zo niet, biedt het aan die te installeren via het
officiële script van docker.com (het vraagt eerst)
3. Kloont de repo naar `/opt/server-up` (of pakt het tar-archief uit als git
ontbreekt)
4. Maakt `.env` aan op basis van `.env.example`, met jouw poort en bind-adres
5. Bouwt het image en start de container
6. Wacht tot `/healthz` antwoordt en toont waar je terecht kunt
Het gebruikt alleen `sudo` waar dat nodig is. Kun je zelf al in de doelmap
schrijven én `docker` aanroepen, dan blijft alles onder je eigen account.
---
## Opties
```
--dir PAD Installatiemap (standaard: /opt/server-up)
--port POORT Poort voor de webinterface (standaard: 5000)
--bind ADRES Waarop de poort luistert (standaard: 127.0.0.1)
--branch NAAM Branch om te installeren (standaard: main)
--token TOKEN Toegangstoken, als je repo niet openbaar is
--update Bijwerken naar de nieuwste versie
--uninstall Stoppen en verwijderen (gegevens blijven staan)
--yes Niets vragen
--dry-run Alleen tonen wat er zou gebeuren
```
### Voorbeelden
```bash
# Standaard, alleen bereikbaar vanaf de server zelf
sh install.sh
# Bereikbaar op je netwerk, andere poort
sh install.sh --bind 0.0.0.0 --port 8080
# Ergens anders neerzetten
sh install.sh --dir /srv/server-up
# De beta-branch, zonder vragen
sh install.sh --branch dev --yes
# Uit een repo die niet openbaar is
sh install.sh --token jouw-forgejo-token
```
---
## Meteen na het installeren
**Maak een beheerdersaccount aan.** Server Up beheert de Docker-daemon, en wie
containers kan starten kan willekeurige mappen van de host mounten. Zolang er
nog geen account is, kan iedereen die de pagina bereikt het claimen.
De poort staat standaard op `127.0.0.1`, dus alleen bereikbaar vanaf de server
zelf. Wil je er van buitenaf bij, zet dan eerst een reverse proxy met TLS ervoor
en pas daarna `BIND` aan:
```bash
sed -i 's/^BIND=.*/BIND=0.0.0.0/' /opt/server-up/.env
docker compose -f /opt/server-up/docker-compose.yml up -d
```
Zie [beveiliging.md](beveiliging.md) voor de reverse proxy, rollen en SSO.
---
## Bijwerken
```bash
sh /opt/server-up/install.sh --update
```
Haalt de nieuwste versie op, bouwt opnieuw en herstart. Je `.env` blijft staan,
net als je stacks en gegevens.
Draait Server Up vanaf een registry-image, dan kun je ook bijwerken vanuit de
interface zelf — zie [updates.md](updates.md).
---
## Verwijderen
```bash
sh /opt/server-up/install.sh --uninstall
```
Stopt en verwijdert de container. **Je gegevens blijven staan**: het
docker-volume `su-data` (instellingen, accounts, auditlog) en je stackmappen
onder `/opt/serverup`. Het script vertelt daarna hoe je die alsnog opruimt.
---
## Handmatig, zonder script
```bash
git clone https://git.ramonbesselink.nl/bes-r/server-up.git /opt/server-up
cd /opt/server-up
cp .env.example .env
$EDITOR .env
docker compose up -d --build
```
---
## Als er iets misgaat
| Melding | Wat er aan de hand is |
|---|---|
| `Geen root en geen sudo` | Draai als root, of kies met `--dir` een map waar je zelf in mag schrijven |
| `Docker is geïnstalleerd maar de daemon reageert niet` | `systemctl start docker` |
| `De docker-compose-plugin ontbreekt` | Installeer `docker-compose-plugin` via je pakketbeheerder |
| `Ophalen mislukt. Is de repo openbaar?` | Gebruik `--token` met een Forgejo-token dat de repo mag lezen |
| Reageert niet binnen anderhalve minuut | `docker compose -f /opt/server-up/docker-compose.yml logs --tail=50` |
Laadt de interface zonder opmaak, dan is het downloaden van de front-end-
bestanden tijdens de build misgegaan. Server Up meldt dat bij het opstarten in
zijn eigen log; opnieuw bouwen lost het meestal op.