Email domain bug (would have caused all provisioning to fail):
- Cloudron email default was tsys-cloudron.knel.net (the dashboard host)
instead of turnsys.com (the actual identity domain). Fixed in 3 places.
- Added explicit cloudron_email field to all agents in agents.yaml.example.
Other fixes:
- STATE_DIR.mkdir() moved from module level to main() so --dry-run and
--help work outside the container.
- IndexError guard: password_inputs[0] crashes if zero fields found.
- State file save moved to finally block so partial results survive
provisioning failures.
- Exception in provision_agent no longer re-raised (was preventing state
file write and summary reporting).
- BW item_exists no longer swallows network/session errors as 'not found'
(was causing duplicate credential creation).
- Redundant -u flag in bw generate (-uluns → -ulns).
- Dockerfile: npx install with || true → npm install -g (silent failure
would cause runtime 'bw: command not found').
- Added .dockerignore to prevent .env/agents.yaml/state from entering image.
💘 Generated with Crush
Assisted-by: Crush:glm-5.2
22 lines
484 B
Docker
22 lines
484 B
Docker
FROM mcr.microsoft.com/playwright:v1.52.0-noble
|
|
|
|
RUN apt-get update && \
|
|
apt-get install -y --no-install-recommends \
|
|
jq \
|
|
unzip \
|
|
libzbar0 \
|
|
libzbar-dev \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Install Bitwarden CLI
|
|
RUN npm install -g @bitwarden/cli@2025.6.0
|
|
|
|
# Install Python dependencies
|
|
COPY requirements.txt /tmp/
|
|
RUN pip install --no-cache-dir -r /tmp/requirements.txt
|
|
|
|
WORKDIR /app
|
|
COPY . .
|
|
|
|
ENTRYPOINT ["python3", "/app/provision-agent.py"]
|