Baserow boilerplate plugin issue - Dev environnement - baserow_docker_group issue

I have started fresh baserow-dev installation and everything is working well except http://localhost:8000 that return 404 error.

And when I follow the steps documentation to install plugin using boilerplate and run docker-compose -f docker-compose.dev.yml up -d --build I got this error again :
=> ERROR [my-baserow-plugin stage-1 3/7] RUN groupmod -g 1000 baserow_docker_group && usermod -u 1000 baserow_docker_user 0.6s

[my-baserow-plugin stage-1 3/7] RUN groupmod -g 1000 baserow_docker_group && usermod -u 1000 baserow_docker_user:
[+] Running 0/1 group ‘baserow_docker_group’ does not exist
⠹ Service my-baserow-plugin Building 2.1s
failed to solve: process “/bin/bash -o pipefail -c groupmod -g $PLUGIN_BUILD_GID baserow_docker_group && usermod -u $PLUGIN_BUILD_UID $DOCKER_USER” did not complete successfully: exit code: 6

Thanks for help

Regards

### Bug 6: Permission errors on `/baserow/web-frontend/node_modules`

When trying to rebuild the web-frontend module after fixing `module.js`:

```markdown

error Error: EACCES: permission denied, mkdir ‘/baserow/web-frontend/node_modules’

su-exec: /baserow/web-frontend/docker/docker-entrypoint.sh: No such file or directory

The file /baserow/web-frontend/docker/docker-entrypoint.sh does not exist in the baserow/baserow:2.1.2 all-in-one image.

Status: blocking - not resolved

```

## Current state

Backend plugin loads correctly :white_check_mark:

Baserow starts and is accessible at localhost :white_check_mark:

Demo page localhost/starting/ returns 404 :cross_mark:

Web-frontend module not loaded due to Nuxt 2/3 incompatibility :cross_mark:

## Questions for the team

Is the plugin boilerplate officially supported for Baserow 2.1.2 ?

What is the correct module.js syntax for Nuxt 3 ?

Why does install_plugin.sh use system pip3 instead of the venv pip ?

Is /baserow/web-frontend/docker/docker-entrypoint.sh supposed to exist in the all-in-one image ?

### Bug 4: install_plugin.sh uses system pip instead of venv pip

Inside install_plugin.sh, the backend plugin installation uses:

```markdown

bashrun_as_docker_user pip3 install -e “$PLUGIN_BACKEND_FOLDER”

```

This installs into the system Python, not the Baserow venv, causing ModuleNotFoundError: No module named ‘my_baserow_plugin’ at runtime.

**Fix applied**: Patched the script in dev.Dockerfile to replace pip3 with the venv python:

```markdown

dockerfileRUN sed -i ‘s|run_as_docker_user pip3 install -e|/baserow/venv/bin/python -m pip install -e|g’ /baserow/plugins/install_plugin.sh && \

sed -i 's|run_as_docker_user pip3 install |/baserow/venv/bin/python -m pip install |g' /baserow/plugins/install_plugin.sh

```

### Bug 5: module.js uses Nuxt 2 syntax, Baserow 2.1.2 uses Nuxt 3

The generated module.js uses Nuxt 2 API:

```markdown

jsthis.extendRoutes(…)

this.appendPlugin(…)

Baserow 2.1.2 uses Nuxt 3, which requires:

jsimport { defineNuxtModule, addPlugin, extendPages } from ‘nuxt/kit’

extendPages(…)

addPlugin(…)

```

This causes the `/starting` demo page to return 404.

**Status: not yet fixed** - fixing this caused new permission errors on `node_modules`.

-–

Hi,

I resume with Claude code all I have done trying to implement plugin boilerplate unsuccessfully.
Hope this help.

Title: Plugin boilerplate (cookiecutter) not working with Baserow 2.1.2 - Multiple bugs found

Environment:

Baserow version: 2.1.2
OS: Windows 11 with WSL2 Ubuntu
Docker Desktop with WSL2 backend
Following official documentation: Boilerplate

Summary

I tried to follow the official plugin boilerplate documentation to create a simple plugin. I encountered multiple bugs that prevented the plugin from working. Here is a detailed list.

Bug 1: baserow_docker_group does not exist in Docker images

In dev.Dockerfile and backend-dev.Dockerfile, the following line fails:
RUN groupmod -g $PLUGIN_BUILD_GID baserow_docker_group && usermod -u $PLUGIN_BUILD_UID $DOCKER_USER
Error: group ‘baserow_docker_group’ does not exist
The actual group name in the image is baserow_docker_user, not baserow_docker_group. Verified with:
bashdocker run --rm --entrypoint=“” baserow/baserow:2.1.2 cat /etc/group

Fix applied: Commented out the groupmod/usermod lines.


Bug 2: dj-database-url==2.1.1 does not exist on PyPI**

In plugins/my_baserow_plugin/backend/requirements/dev.txt, the pinned version dj-database-url==2.1.1 does not exist on PyPI. Available versions jump from 2.1.0 to 2.2.0.

The file header says it was compiled for Python 3.11 but the Docker image runs Python 3.14, causing many other incompatibilities in the 912-line generated file.

Fix applied: Replaced dev.txt content with an empty file.


Bug 3: pip not installed in Baserow venv**

The dev.Dockerfile activates the venv and calls pip3:

RUN . /baserow/venv/bin/activate && pip3 install -r /tmp/plugin-dev-requirements.txt
pip3 points to /usr/local/bin/pip3 (system pip), not the venv pip. The venv pip does not exist:
bashdocker run --rm --entrypoint="" baserow/baserow:2.1.2 /baserow/venv/bin/python -m pip --version

Result: No module named pip

Fix applied: Added ensurepip before pip install:

dockerfileRUN /baserow/venv/bin/python -m ensurepip --upgrade
RUN /baserow/venv/bin/python -m pip install -r /tmp/plugin-dev-requirements.txt

Hello @LECARROU

The boilerplate was recently removed from the main Baserow repository in this PR specifically because it had fallen out of date. It was moved to a standalone repository at https://github.com/baserow/plugin-boilerplate, but with an important caveat: it is currently only compatible with Baserow 2.0.6 and earlier.

If you want to experiment with plugin system you have few options:

  1. Pin to Baserow 2.0.6 if you just need to get something working quickly and don’t need the latest features.

  2. Watch https://github.com/baserow/plugin-boilerplate for updates - when the boilerplate is brought up to date with Nuxt 3 and the current Docker/Python environment, that repo is where the fix will land.

  3. Build against the main repo manually — if you’re comfortable, you can skip the boilerplate and structure your plugin directly, using the main Baserow repo’s develop branch as a reference for how the frontend and backend are wired together.

Note that it’s not recommended to use dev environment as we cannot guarantee full stability there.
Out of curiosity what is your reason to go with dev branch instead of stable one?