Add WebDataStudio - #1033
Open
fgilde wants to merge 2 commits into
Open
Conversation
A browser database studio for PostgreSQL, MySQL/MariaDB, SQL Server, SQLite, Oracle, DuckDB, ClickHouse, MongoDB and Redis. One service on 8095, data under /DATA/AppData/$AppID/data, and a default admin login because the app serves without a login screen when none is set.
A password every install shares is one a scanner flags and an attacker already knows. The values are still in a public file, and the before_install tip still asks the user to replace them.
|
| environment: | ||
| TZ: $TZ | ||
| WDS_USER: admin | ||
| WDS_PASSWORD: 90g37hghc8cxzpvxbsmq |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.




New app: WebDataStudio
What it is: a database client that runs on the server instead of on one laptop. PostgreSQL,
MySQL/MariaDB, SQL Server, SQLite, Oracle, DuckDB, ClickHouse, MongoDB and Redis in one container:
schema explorer, SQL editor with completion and history, a visual query builder, result charts, ER
diagrams drawn from the foreign keys, schema editing, a column-by-column comparison between two
connections, saved and scheduled queries with file export, and an MCP endpoint for AI agents.
ghcr.io/fgilde/webdatastudio(GHCR, public,linux/amd64+linux/arm64)What is in the PR
Apps/WebDataStudio/docker-compose.yml8095→ container8080, data under/DATA/AppData/$AppID/dataicon.svg,icon.pngthumbnail.png,screenshot-1..3.pngMetadata:
id: org.gilde.webdatastudio,main: webdatastudio, category Developer,index: /,port_map: "8095", architecturesamd64+arm64,version: 1.3.0,title,taglineanddescriptioninen_USandde_DE, atips.before_install, andwebsite/repo/support/docs.The login screen is not optional here
With neither
WDS_USERnorWDS_PASSWORDset, the studio serves without a login screen at all —wrong default for a database client. The package therefore ships
adminand a password generatedfor this package, and the
before_installtip asks the user to replace it in the install dialog. Avalue like
casaoswould be the same on every install; this one is at least not shared, though itis still in a public file.
WDS_READONLY=trueis documented in the env descriptionsfor anyone who wants every connection read-only, enforced in the driver rather than only in the UI.
Validation
docker compose config -qon the app: clean../scripts/build_dist.shwith the app added: builds, anddist/index.jsongainsorg.gilde.webdatastudiowith the expected title, tagline, category, architectures, icon,thumbnail and version;
dist/apps/org.gilde.webdatastudio/has the per-arch compose files andmeta.json+meta.de_DE.json.and the login screen appears with the packaged credentials.
Multi-arch
linux/amd64andlinux/arm64come from the project's CI, and the arm64 image is smoke-tested on anative arm64 runner on every push.
About the SonarCloud check
SonarCloud marks the credential in the compose file as a hardcoded secret. It is right that the
value is in a public file, and there is no way around that here: CasaOS has no generator for install
time, and the app needs the value to start with a login rather than without one. The apps already in
this store solve it the same way (ArchiveBox ships
ADMIN_PASSWORD=casaos, Docmost a literalPOSTGRES_PASSWORDandAPP_SECRET). Thebefore_installtip asks the user to replace it, and thefield is editable in the install dialog. Happy to change the approach if you would rather have it
some other way.