docs
GitHubEN
Aan de slag

Snelstart

Draai Appsweet in ongeveer vijf minuten op je eigen infrastructuur.

Appsweet wordt geleverd als één container. Wijs die naar een Postgres-database en een OIDC-issuer, en de werkplek draait op hardware die jij beheert.

Wat je eerst nodig hebt

Twee dingen, allebei vereist terwijl het proces nog aan het opstarten is:

  • Postgres met de vector-extensie beschikbaar. Appsweet heeft geen ingebouwde database, en de eerste migratie voert CREATE EXTENSION IF NOT EXISTS vector uit. De standaard postgres-image heeft die niet aan boord; pgvector/pgvector:pg16 wel.
  • Een Zitadel-instantie. APPSWEET_OIDC_ISSUER en APPSWEET_OIDC_CLIENT_ID worden tijdens het opstarten gelezen, niet pas bij de eerste aanmelding. Zonder die twee stopt de container voordat hij een poort opent, en antwoordt /ready dus helemaal nooit. Zitadel is de enige provider die werkt: de backend vraagt om een Zitadel-specifieke scope en leest de organisatieclaims van Zitadel om een werkplek te bepalen, dus bij een andere OIDC-provider logt de gebruiker wel in en loopt het daarna vast op /v1/me. Docker Compose beschrijft dat in detail.

Heb je wel Postgres maar geen issuer, dan legt Docker Compose uit waar je Appsweet naartoe wijst en wat de stack uit de repository voor je meebrengt — het voorbeeld met twee services start Appsweet en Postgres, maar geen identity provider. Lees die pagina dus voordat je aanneemt dat het een complete deployment is.

Starten

Met een database en een issuer in handen is de container zelf één commando.

terminal
# exact version + digest from the release manifest — there is no :latest tag
docker run -p 3000:3000 \
  --add-host host.docker.internal=host-gateway \
  -e APPSWEET_DATABASE_URL=postgres://appsweet:secret@host.docker.internal:5432/appsweet \
  -e APPSWEET_BIND_ADDR=0.0.0.0:3000 \
  -e APPSWEET_PUBLIC_BASE_URL=http://localhost:3000 \
  -e APPSWEET_OIDC_ISSUER=https://auth.example.com \
  -e APPSWEET_OIDC_CLIENT_ID=your-client-id \
  ghcr.io/blendable-dev/appsweet-backend:0.1.0-beta.1@sha256:<digest-from-the-release-manifest>

Images worden gekozen op exacte versie plus digest, overgenomen uit het gevalideerde release-manifest voor die versie. Er is geen latest-tag, en geen enkele veranderlijke tag geldt als bron van waarheid — vul de versie en digest in van de release die je uitrolt.

LET OP

Het pakket appsweet-backend is privé zolang de gesloten bèta loopt. Om het te pullen heb je een registry-credential nodig met leesrechten op packages — zolang je Docker-daemon niet met zo'n credential is ingelogd op ghcr.io, mislukt de pull alsof de image niet bestaat.

APPSWEET_BIND_ADDR doet ertoe: de standaardwaarde is 127.0.0.1:3000, en binnen een container betekent dat de poortmapping niets bereikt.

--add-host host.docker.internal=host-gateway is wat dat database-adres laat resolven. Het alias host.docker.internal wordt op macOS en Windows automatisch door Docker Desktop geleverd, maar niet door Docker Engine op Linux — en daar draaien de meeste self-hosted installaties. Zonder de vlag resolvet de naam daar niet, mislukt de verbinding terwijl het proces nog opstart, en stopt de container. Op Docker Desktop is de vlag ongevaarlijk, dus het commando hierboven werkt overal hetzelfde. Staat je Postgres ergens anders dan op de Docker-host — een managed dienst, een andere machine — gebruik dan de echte hostnaam en laat de vlag weg.

LET OP

Dat adres gaat er ook van uit dat Postgres luistert op een interface die de container kan bereiken, en niet alleen op localhost. Een distributiestandaard van listen_addresses = 'localhost' weigert de verbinding zelfs als de naam wél resolvet.

Controleren of hij opkwam

Appsweet voert zijn migraties uit bij het opstarten en meldt zich pas gereed zodra de databasepool is aangesloten.

terminal
curl http://localhost:3000/ready

Volgende stappen

TIP

Het commando hierboven laat objectopslag weg, dus bestandsuploads staan uit — prima om Appsweet uit te proberen, niet iets om uit te rollen. De meegeleverde stack uit de repository zet opslag voor je klaar; Configuratie somt de variabelen op als je het zelf samenstelt.

Terug naar appsweet.appBewerk deze pagina op GitHub