Running Thingport on CasaOS
Thingport is a 4-container stack (Postgres, FlareSolverr, backend, frontend) that talk to
each other by container name — the frontend’s nginx config, for example, proxies /api/*
straight to http://backend:8000. CasaOS’s App Store is built around single-container
“customized apps” with a compose editor underneath, so the easiest paths are either pasting
the full stack into that editor or running compose yourself over SSH.
Option A: Install a customized app
- App Store -> Install a customized app (the ”+” / custom install button, wording varies slightly by CasaOS version) -> switch to the Docker Compose / YAML editor.
- Paste in
docker-compose.ymlfrom this folder. - Copy
.env.exampleinto the environment variables section and fill in:AUTH_SECRET— any random string, e.g.openssl rand -hex 32from a terminalPOSTGRES_PASSWORD— any password
- Install/submit the form.
Option B: Plain docker compose over SSH
- SSH into CasaOS and create a folder for the stack, e.g. under
/DATA/AppData/thingport. - Copy
docker-compose.ymland.env.exampleinto it, renaming the latter to.envand filling in the same values listed in Option A. - From inside that folder, run:
docker compose up -d
Either way, Thingport creates two folders on first start:
/DATA/AppData/thingport/postgres (database) and /DATA/AppData/thingport/storage (your
imported models) — CasaOS’s conventional appdata location, so they show up in the Files
app alongside your other apps’ data.
Open it
Once all 4 containers show healthy/running, open http://<your-casaos-ip>:<WEB_PORT>
(default port 80). If you used Option A, CasaOS should also pick up the exposed port and
add a dashboard tile for it automatically; if not, add one manually from the app’s
settings. The first account you register becomes the admin account.
Notes
- Do not rename the
backendservice/container. The frontend’s nginx config resolves it by that exact name over the compose network; renaming it breaks/api/*requests. - If the backend can’t write to
/DATA/AppData/thingport/storage, check that folder’s owning uid/gid and setPUID/PGIDin your.envto match. - Provider setup (MakerWorld / Thingiverse credentials) works the same as any other install
— see
docs/PROVIDER_SETUP.mdin the main repo. - To pin a specific build instead of
:latest, see the tagging note indocker-compose.deploy.ymland setBACKEND_IMAGE/FRONTEND_IMAGEaccordingly (add those two env vars to the stack and swap theimage:lines to${BACKEND_IMAGE:-...}/${FRONTEND_IMAGE:-...}if you want that flexibility).