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

4.3 KiB

Installeren

In één regel

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:

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:

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

# 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:

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 voor de reverse proxy, rollen en SSO.


Bijwerken

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.


Verwijderen

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

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.