All checks were successful
Deploy server-up (dev) / deploy (push) Successful in 1m13s
Defect (v0.7.00): add_shared_network() hing elke service aan het gedeelde
netwerk, ook services met network_mode. Docker compose weigert die combinatie
("declares mutually exclusive network_mode and networks"), waardoor Homebridge,
Scrypted, Beszel en de ARR-stack met Gluetun niet te installeren waren met de
standaardkeuze "Verbinden met andere apps". Die services worden nu overgeslagen;
blijft er niets over, dan ook geen netwerkblok. Test over alle 96 apps.
Instellingen wijzigen na installatie:
- De gemaakte keuzes worden bij installatie opgeslagen in .serverup.json
(values + format); zonder die waarden viel het formulier niet te heropenen.
- GET /api/stacks/<naam>/config geeft de opgeslagen waarden plus het actuele
veldschema; POST /reconfigure maakt een backup, rendert opnieuw, past netwerk
en eigen IP opnieuw toe, valideert en herstart. Mislukt het valideren, dan
wordt de backup teruggezet.
- Knop Instellingen op de stackkaart opent dezelfde modal in wijzigen-stand,
met een waarschuwing dat handmatige compose-wijzigingen verloren gaan.
- Stacks van voor deze versie: knop uit met uitleg.
Bestaande stacks koppelen:
- POST /api/stacks/<naam>/connect zet een bestaande stack op het gedeelde
netwerk, valideert en herstart; wordt de compose ongeldig, dan wordt de
wijziging teruggedraaid.
Audit-log:
- audit.query()/count() accepteren filters op bron, actie, status, periode en
vrije tekst; facets() levert de keuzelijsten. /api/audit ondersteunt die als
queryparameters plus doorbladeren. Filterbalk in de UI.
Documentatie:
- README.md (bestond niet), docs/apps-maken.md met het volledige
templateformaat, docs/README.md als index.
- Changelog-secties voor v0.5.44/45/46 aangevuld; release.yml haalt de notes
daaruit, dus een tag daarop gaf een lege release. Test die afdwingt dat het
huidige VERSION een sectie heeft.
941 tests groen.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C7oLCRYzY5ixJ5Sv8Y8EFb
104 lines
4.3 KiB
Markdown
104 lines
4.3 KiB
Markdown
# Server Up
|
|
|
|
Zelfgehoste beheerinterface voor Docker: apps installeren uit een catalogus,
|
|
stacks starten en stoppen, backups maken en terugzetten, en containers een eigen
|
|
IP-adres in je netwerk geven.
|
|
|
|
> ⚠️ **Toegang tot Server Up staat gelijk aan root op de host.** De applicatie
|
|
> beheert de Docker-daemon, en wie containers kan starten kan willekeurige mappen
|
|
> van de host mounten. Behandel de interface navenant: maak direct een account
|
|
> aan, zet hem niet zonder reverse proxy met TLS op internet, en lees
|
|
> [docs/beveiliging.md](docs/beveiliging.md).
|
|
|
|
---
|
|
|
|
## Wat het doet
|
|
|
|
| | |
|
|
|---|---|
|
|
| **App-catalogus** | 96 kant-en-klare apps, ingedeeld in categorieën met kleur. Zoeken, filteren en installeren met een formulier in plaats van YAML. |
|
|
| **Stacks beheren** | Starten, stoppen, bijwerken en herstarten — per stack of per losse container, met logs en live CPU-/geheugengebruik. |
|
|
| **Apps koppelen** | Stacks komen op een gedeeld netwerk, zodat ze elkaar op naam bereiken. Een veld dat naar een andere app verwijst toont een keuzelijst met wat je al draait. |
|
|
| **Eigen IP per stack** | Met macvlan of ipvlan krijgt een app een eigen adres in je LAN in plaats van poorten op de host. |
|
|
| **Backups** | Handmatig, gepland, en automatisch vóór een update of verwijdering. Met terugzetten en een bewaarbeleid. |
|
|
| **Updates** | Voor Server Up zelf (stable of beta) en voor de images van je geïnstalleerde stacks. |
|
|
| **Toegang** | Lokale accounts met rollen (beheerder, operator, alleen lezen), of SSO via een reverse proxy. |
|
|
|
|
## Wat je nodig hebt
|
|
|
|
- Een Linux-server met Docker en de compose-plugin
|
|
- Toegang tot `/var/run/docker.sock`
|
|
- Ongeveer 300 MB schijfruimte voor de applicatie zelf
|
|
|
|
## Installeren
|
|
|
|
```bash
|
|
git clone https://github.com/bes-r/server-up.git
|
|
cd server-up
|
|
cp .env.example .env # instellingen; zie hieronder
|
|
docker compose up -d --build
|
|
```
|
|
|
|
Open daarna `http://localhost:5000` en **maak meteen een beheerdersaccount aan.**
|
|
Zolang dat niet gebeurd is, kan iedereen die de pagina bereikt het account
|
|
claimen — de container waarschuwt daar bij het opstarten ook voor.
|
|
|
|
### Instellingen
|
|
|
|
Alles staat met uitleg in [`.env.example`](.env.example). De twee die je
|
|
waarschijnlijk meteen nodig hebt:
|
|
|
|
```bash
|
|
BIND=127.0.0.1 # 0.0.0.0 om er van buiten de server bij te kunnen
|
|
PORT=5000
|
|
```
|
|
|
|
De poort bindt standaard op `127.0.0.1`. Zet hem pas open als er een reverse
|
|
proxy met TLS voor staat.
|
|
|
|
## Documentatie
|
|
|
|
| Document | Waarover |
|
|
|---|---|
|
|
| [docs/beveiliging.md](docs/beveiliging.md) | Accounts, rollen, SSO, reverse proxy, wat wel en niet is afgedekt |
|
|
| [docs/apps-maken.md](docs/apps-maken.md) | Eigen apps toevoegen: het volledige templateformaat |
|
|
| [docs/netwerken.md](docs/netwerken.md) | Stacks een eigen IP geven met macvlan of ipvlan |
|
|
| [docs/backups.md](docs/backups.md) | Wat er wél en niet in een backup zit, terugzetten, bewaarbeleid |
|
|
| [docs/updates.md](docs/updates.md) | Update-kanalen en de Forgejo-registry inrichten |
|
|
| [docs/synchroniseren.md](docs/synchroniseren.md) | Code van je apparaat naar de server via Forgejo |
|
|
| [docs/forgejo-actions-setup.md](docs/forgejo-actions-setup.md) | Runners instellen |
|
|
|
|
## Eigen apps toevoegen
|
|
|
|
Wijs Server Up naar je eigen git-repo met app-sjablonen (Instellingen → App
|
|
Store → Repository), of voeg een map toe onder `apps/`:
|
|
|
|
```
|
|
apps/mijn-app/
|
|
├── template.json metadata en de vragen bij het installeren
|
|
└── files/
|
|
└── compose.yaml het compose-bestand met << variabelen >>
|
|
```
|
|
|
|
Het volledige formaat staat in [docs/apps-maken.md](docs/apps-maken.md).
|
|
|
|
## Ontwikkelen
|
|
|
|
```bash
|
|
python3 -m venv venv && venv/bin/pip install -r server-up/requirements.txt pytest
|
|
venv/bin/python -m pytest tests -q # de volledige suite
|
|
cd server-up && SU_DEV=1 python app.py # lokaal draaien op poort 5000
|
|
```
|
|
|
|
De testsuite draait ook over alle app-sjablonen: elke app moet renderen naar
|
|
geldige compose-YAML, met gedeclareerde volumes en zonder onvervangen
|
|
variabelen. Voeg je een app toe, dan wordt die automatisch meegenomen.
|
|
|
|
De deploy-workflows draaien de tests in een container (`python:3.12-slim`), dus
|
|
op de runner is verder niets nodig dan Docker.
|
|
|
|
## Licentie en bijdragen
|
|
|
|
Zie `CHANGELOG.md` voor de geschiedenis. Werk op de `dev`-branch en bump
|
|
`VERSION` bij elke wijziging; een test bewaakt dat er een changelog-sectie bij
|
|
hoort.
|