This project provides a Docker image for running the Internxt CLI and launching a WebDAV server backed by your Internxt cloud storage. It is designed for secure, automated deployments and supports two-factor authentication (TOTP), non-root execution, and flexible configuration via environment variables or secret files.
- Features
- Prerequisites
- Environment Variables
- Docker images
- Usage
- Docker Compose Example
- Security Notes
- Development
- References
- License
- Secure login to Internxt with email, password, and optional TOTP (2FA).
- Automatic WebDAV server activation if no command is passed.
- Flexible environment variable management (direct or via secret files).
- Run any Internxt CLI command inside the container.
- Non-root user execution for improved security.
- Configurable WebDAV protocol, port, and logging level.
- Configurable TimeZone.
- Multi-arch builds for
amd64,arm64andarmv7.
You can configure the container using the following environment variables:
| Variable | Description | Required | Default |
|---|---|---|---|
INTERNXT_EMAIL |
Internxt login email. | Yes | |
INTERNXT_PASSWORD |
Internxt login password. | Yes | |
INTERNXT_TOTP_CODE |
TOTP code for two-factor authentication. | No | |
INTERNXT_TOTP_SECRET |
TOTP secret for 2FA (INTERNXT_TOTP_CODE have priority) | No | |
WEBDAV_HOST |
Listening host for WebDAV | No | 127.0.0.1 |
WEBDAV_PROTO |
Protocol for WebDAV (http or https). |
No | https |
WEBDAV_PORT |
WebDAV listening port. | No | 3005 |
WEBDAV_LOGS |
Log level (error or debug). |
No | error |
PUID |
User ID for running processes. | No | 1000 |
PGID |
Group ID for running processes. | No | 1000 |
TZ |
TimeZone for tzdata | No | Etc/UTC |
Tip: For any
INTERNXT_*variable above, you can use a corresponding*_FILEvariable to load its value from a file (useful for secrets).
| Registry | Address ( tag : latest ) |
|---|---|
| Docker Hub | docker pull debben80/internxt-cli:latest |
| GitHub Container Registry | docker pull ghcr.io/debben80/internxt-cli:latest |
docker run -d \
-e INTERNXT_EMAIL=my@email.com \
-e INTERNXT_PASSWORD=mypassword \
-e INTERNXT_TOTP_SECRET=myTOTPsecret \
debben80/internxt-cliYou can run any Internxt CLI command by passing it as arguments:
docker run --rm \
-e INTERNXT_EMAIL=my@email.com \
-e INTERNXT_PASSWORD=mypassword \
-e INTERNXT_TOTP_CODE=myTOTPcode \
debben80/internxt-cli internxt listTo use secrets, mount files and set the corresponding *_FILE environment variable:
docker run -d \
-e INTERNXT_EMAIL_FILE=/run/secrets/email \
-e INTERNXT_PASSWORD_FILE=/run/secrets/password \
-v /run/secrets:/run/secrets:ro \
debben80/internxt-cliservices:
internxt-webdav:
image: debben80/internxt-cli:latest
environment:
INTERNXT_EMAIL: your@email.com
INTERNXT_PASSWORD: yourpassword
ports:
- "3005:3005"
restart: unless-stopped- The container runs as a non-root user (
appuser). - Secrets can be injected via files for improved security.
- Always use secure passwords and enable TOTP if possible.
- The Docker image is built using Alpine Linux.
- The Internxt CLI is installed via npm.
- Entrypoint and helper scripts are located in
app/entrypoint.sh,app/functions.sh, andapp/webdav.sh.
This project is licensed under the MIT License - see the LICENSE file for details.