{ "type": 1, "title": "LibreDB Studio", "name": "libredb-studio", "description": "Self-hosted database IDE you use from a browser, covering twenty-nine engines - PostgreSQL, MySQL, Oracle, SQL Server, MongoDB, Redis, ClickHouse, Cassandra, Elasticsearch and more - with a schema browser and query history on all of them, and ER diagrams and EXPLAIN plans wherever the engine declares keys or returns a plan. Source: https://github.com/libredb/libredb-studio", "categories": [ "Database", "Tools", "Development" ], "platform": "linux", "logo": "https://raw.githubusercontent.com/libredb/libredb-studio/main/public/logo.svg", "image": "ghcr.io/libredb/libredb-studio:latest", "restart_policy": "unless-stopped", "ports": [ "3006:3000/tcp" ], "volumes": [ { "container": "/app/data" } ], "env": [ { "name": "AUTH_COOKIE_SECURE", "label": "Reached over plain HTTP, with no HTTPS in front", "description": "Leave it false to reach the app at http://your-host:3006. Without it the session cookie is marked Secure, the browser throws it away over plain HTTP, and sign-in returns you to the login page while the container stays healthy. The cookie then travels in cleartext, so keep it to a trusted network and set this to true once a reverse proxy puts HTTPS in front.", "default": "false" }, { "name": "STORAGE_PROVIDER", "label": "Where saved connections are kept", "description": "sqlite keeps them in the volume below, so they survive the container being recreated. The alternatives are local, which keeps them in the browser instead, so a volume backup holds none of them, and postgres for a shared server.", "default": "sqlite", "preset": true }, { "name": "STORAGE_SQLITE_PATH", "label": "Path of that SQLite file", "description": "Inside the volume, so it persists.", "default": "/app/data/libredb-storage.db", "preset": true } ], "note": "Open http://<your-host>:3006. On the first start the app creates the admin account admin@libredb.org, generates its password and its signing secret, and prints the password to the container log, so read the log before signing in. Both are kept in /app/data and reused on later starts, which is why setting ADMIN_PASSWORD on its own afterwards does not change the stored one: to replace it, set ADMIN_PASSWORD to the new value and ADMIN_PASSWORD_RESET=true together for one start, then remove the flag. Saved connections, query history and the app's SQLite file all live under /app/data, which the volume covers. The databases you connect to are not part of this template, which runs LibreDB Studio alone. MIT licensed, no paid tier. Docs: libredb.org" }