- Drop --init so the image supervisor stays namespace PID 1, as the runtime handoff requires; add --memory-swap=1g and nosuid,nodev tmpfs options to match the runtime's tested launch flags. - Mount only frontend css/, js/ and vendor/ at the root origin so index.html's relative asset paths resolve; dev/tests are not exposed. - Add X-Content-Type-Options: nosniff to every response. - Add CONFLUENCE_WEB_CONFLUENCE_PROXY (socks5/http, Confluence only) and CONFLUENCE_WEB_MODEL_TIMEOUT_SECONDS; disable environment proxy inheritance for both upstream clients; add socksio dependency.
Confluence Crawler (PAT)
Crawls Confluence Data Center pages into Markdown files, authenticated with a
personal access token (PAT) from .env.
⚠️ PATs only work on Confluence Data Center / Server 7.9+. Confluence Cloud does not support PATs — use an API token (basic auth) there instead.
Setup
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # then fill in your values
.env:
CONFLUENCE_URL=https://collab.lge.com
CONFLUENCE_PAT=<your personal access token>
Create the PAT in Confluence: avatar (top right) → Settings → Personal access tokens → Create token. The token inherits your permissions — you can only crawl pages you can see.
Usage
python main.py --space KEY --out output/KEY # one space
python main.py --all --out output # all visible spaces
python main.py --all --max-spaces 3 --verbose # limit + debug logging
Each page becomes output/<space>/<page_id>_<slug>.md with YAML front matter
(title, page id, space, URL, version, last modified) and the body converted
from Confluence storage format to Markdown.
Tests
pytest # unit tests + live tests (live uses the PAT from .env)
pytest -m "not live" # unit tests only, no network
pytest -m live # live tests only
Live tests are skipped automatically when .env lacks credentials.
Description
Languages
Python
52%
JavaScript
26.9%
TypeScript
15.3%
CSS
3.2%
HTML
1.1%
Other
1.5%