Automatically download timelapse videos from your Bambu Lab 3D printer and upload them to Immich.
This project is unofficial and is not affiliated with Bambu Lab or Immich.
- Connects to your Bambu Lab printer via MQTT (port 8883)
- Listens for print completion events
- Downloads the timelapse video via FTPS (port 990)
- Uploads to Immich via API
- Optionally sends a Telegram notification
No Home Assistant required. Runs as a standalone Docker container.
Any Bambu Lab printer with MQTT and FTPS support:
- A1 / A1 Mini
- P1P / P1S
- X1 / X1C / X1E
Enable LAN mode on the printer (Settings → Network) so MQTT and FTPS are reachable on your LAN.
mkdir -p bambu2immich/data
cd bambu2immich
curl -o docker-compose.yml https://raw.githubusercontent.com/eugene-bert/bambu2immich/main/docker-compose.yml
curl -o .env https://raw.githubusercontent.com/eugene-bert/bambu2immich/main/.env.example
# Edit .env with your printer and Immich details
docker compose up -dNo build step needed — pulls the pre-built image from ghcr.io/eugene-bert/bambu2immich.
The container runs as uid 1000. Make sure ./data is writable by that user (mkdir -p data && chown 1000:1000 data on Linux).
git clone https://github.com/eugene-bert/bambu2immich.git
cd bambu2immich
cp .env.example .env
# Edit .env with your printer and Immich details
docker compose up -d --buildCompose attaches to an external network named immich_default so IMMICH_URL=http://immich_server:2283 resolves. That is the default network created by the official Immich compose project named immich.
If docker compose up fails with network immich_default not found:
docker network ls | grep immichEdit docker-compose.yml and replace immich_default with the network you found.
Alternatively, remove the networks: block and point Immich at a published port:
IMMICH_URL=http://host.docker.internal:2283host.docker.internal is mapped via extra_hosts / host-gateway so this also works on Linux.
| Variable | Required | Description |
|---|---|---|
BAMBU_IP |
Yes | Printer IP address |
BAMBU_ACCESS_CODE |
Yes | LAN access code (printer LCD: Settings → Network) |
BAMBU_SERIAL |
Yes | Printer serial number |
BAMBU_NAME |
No | Label used in Immich description and local filenames (default: bambu-a1) |
IMMICH_URL |
Yes | Immich server URL (e.g. http://immich_server:2283) |
IMMICH_API_KEY |
Yes | Immich API key (Immich → Account Settings → API Keys) |
TELEGRAM_BOT_TOKEN |
No | Telegram bot token for notifications |
TELEGRAM_CHAT_ID |
No | Telegram chat ID for notifications |
KEEP_LOCAL |
No | Keep local copies after upload (default: false) |
DOWNLOAD_DIR |
No | Download directory (default: /data/timelapses) |
- On the printer LCD: Settings → Device Info
- In Bambu Studio: Device tab
- On the sticker on the printer
- Keep
.envprivate. It holds the printer access code, Immich API key, and optional Telegram token. - MQTT and FTPS skip TLS certificate verification. Bambu printers present a self-signed X.509 v1 certificate that standard verification rejects. Traffic stays on your LAN; a machine on the same network could intercept the access code. Do not expose printer MQTT/FTPS to the internet.
- Report vulnerabilities privately — see SECURITY.md.
See CONTRIBUTING.md. This project follows a Code of Conduct.
MIT