De meeste problemen met zelf hosten komen neer op een handvol verkeerde instellingen. Begin hier voordat je een issue opent.
Appsweet stopt meteen bij het starten
Drie variabelen worden gelezen terwijl het proces opstart, en één die ontbreekt legt hem stil voordat hij iets opent:
APPSWEET_DATABASE_URL— de logregel isAPPSWEET_DATABASE_URL is required. Een database die nog geen verbindingen accepteert ziet er van buitenaf ongeveer hetzelfde uit.APPSWEET_OIDC_ISSUERenAPPSWEET_OIDC_CLIENT_ID—APPSWEET_OIDC_ISSUER is required, of hetzelfde voor de client-ID. Dit zijn geen instellingen voor het moment van inloggen: de OIDC-configuratie wordt tijdens het opstarten geladen, dus een container die alleen een database-URL meekrijgt stopt hier, in plaats van te starten en later bij het inlogscherm te falen.
Kijk eerst in de containerlogs; de fout noemt de variabele met naam en toenaam.
Migraties mislukken op een verse database
Stoppen de logs bij CREATE EXTENSION IF NOT EXISTS vector — meestal gemeld als
extension "vector" is not available — dan kan de Postgres waar je naar wees pgvector niet
installeren. Dat is de eerste migratie die Appsweet uitvoert, dus de rest komt niet aan bod.
De standaard postgres-image levert de extensie niet mee. Gebruik
pgvector/pgvector:pg16, of zet bij een managed provider de vector-extensie voor die
database aan voordat je Appsweet start.
De poort is gemapt maar er antwoordt niets
APPSWEET_BIND_ADDR staat standaard op 127.0.0.1:3000, en dat is binnen een container de
loopback van de container zelf — de gepubliceerde poort bereikt niets. Zet hem op
0.0.0.0:3000 en laat de container-runtime of je proxy bepalen wat er naar buiten komt.
Inloggen komt nooit terug
De redirect-URI's worden afgeleid van APPSWEET_PUBLIC_BASE_URL, dus als die niet
overeenkomt met de URL waar de browser werkelijk op zit, eindigt de rondgang ergens
onbereikbaars. Zet hem op de publieke URL, en zorg dat APPSWEET_OIDC_ISSUER en
APPSWEET_OIDC_CLIENT_ID allebei naar de identity provider wijzen die je echt gebruikt.
Bestandsuploads mislukken
Objectopslag is vereist voor een echte deployment, maar de backend weigert niet te starten
zonder: hij komt op met bestanden uitgeschakeld en al het andere werkend, en logt daar niets
over. Zijn bestanden dus het enige dat kapot is, dan is de waarschijnlijke oorzaak dat
APPSWEET_S3_ENDPOINT nooit is ingesteld. Een endpoint zonder accesskey, zonder secretkey
of met een onleesbare APPSWEET_S3_PRESIGN_TTL_SECS schakelt bestanden ook uit, maar dat
geval logt wél — storage configuration is invalid; files disabled. Credentials die er wel
zijn maar niet kloppen, falen later, bij de upload zelf. Kunnen clients het interne endpoint
niet bereiken, stel dan ook APPSWEET_S3_PUBLIC_ENDPOINT in, want presigned URL's worden
daartegen aangemaakt.
De image wil niet pullen
Het pakket appsweet-backend is privé zolang de gesloten bèta loopt. Zonder een
ghcr.io-credential met leesrechten op packages meldt het register de image als niet
gevonden in plaats van als verboden — wat leest als een typefout in de verwijzing, maar dat
niet is.