Latest commit

History

148 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

GitHub package.json prod dependency versionReleaseArchitectureGitHub Actions Workflow StatusDocker PullsGitHub Container RegistryGitHub License

Internxt CLI Docker Image

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.


Table of Contents


Features

  • 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 , arm64 and armv7.

Prerequisites


Environment Variables

You can configure the container using the following environment variables:

VariableDescriptionRequiredDefault
INTERNXT_EMAILInternxt login email.Yes
INTERNXT_PASSWORDInternxt login password.Yes
INTERNXT_TOTP_CODETOTP code for two-factor authentication.No
INTERNXT_TOTP_SECRETTOTP secret for 2FA (INTERNXT_TOTP_CODE have priority)No
WEBDAV_HOSTListening host for WebDAVNo127.0.0.1
WEBDAV_PROTOProtocol for WebDAV (http or https).Nohttps
WEBDAV_PORTWebDAV listening port.No3005
WEBDAV_LOGSLog level (error or debug).Noerror
PUIDUser ID for running processes.No1000
PGIDGroup ID for running processes.No1000
TZTimeZone for tzdataNoEtc/UTC

Tip: For any INTERNXT_* variable above, you can use a corresponding *_FILE variable to load its value from a file (useful for secrets).


Docker Images

RegistryAddress ( tag : latest )
Docker Hubdocker pull debben80/internxt-cli:latest
GitHub Container Registrydocker pull ghcr.io/debben80/internxt-cli:latest

Usage

Start the WebDAV Server

docker run -d \
-e INTERNXT_EMAIL=my@email.com \
-e INTERNXT_PASSWORD=mypassword \
-e INTERNXT_TOTP_SECRET=myTOTPsecret \
debben80/internxt-cli

Run Internxt CLI Commands

You 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 list

Using Secrets

To 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-cli

Docker Compose Example

services:
internxt-webdav:
image: debben80/internxt-cli:latestenvironment:
INTERNXT_EMAIL: your@email.comINTERNXT_PASSWORD: yourpasswordports:
- "3005:3005"restart: unless-stopped

Security Notes

  • 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.

Development


References


License

This project is licensed under the MIT License - see the LICENSE file for details.

About

Internxt CLI Docker Image

Topics

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

148 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

GitHub package.json prod dependency versionReleaseArchitectureGitHub Actions Workflow StatusDocker PullsGitHub Container RegistryGitHub License

Internxt CLI Docker Image

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.


Table of Contents


Features

  • 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 , arm64 and armv7.

Prerequisites


Environment Variables

You can configure the container using the following environment variables:

VariableDescriptionRequiredDefault
INTERNXT_EMAILInternxt login email.Yes
INTERNXT_PASSWORDInternxt login password.Yes
INTERNXT_TOTP_CODETOTP code for two-factor authentication.No
INTERNXT_TOTP_SECRETTOTP secret for 2FA (INTERNXT_TOTP_CODE have priority)No
WEBDAV_HOSTListening host for WebDAVNo127.0.0.1
WEBDAV_PROTOProtocol for WebDAV (http or https).Nohttps
WEBDAV_PORTWebDAV listening port.No3005
WEBDAV_LOGSLog level (error or debug).Noerror
PUIDUser ID for running processes.No1000
PGIDGroup ID for running processes.No1000
TZTimeZone for tzdataNoEtc/UTC

Tip: For any INTERNXT_* variable above, you can use a corresponding *_FILE variable to load its value from a file (useful for secrets).


Docker Images

RegistryAddress ( tag : latest )
Docker Hubdocker pull debben80/internxt-cli:latest
GitHub Container Registrydocker pull ghcr.io/debben80/internxt-cli:latest

Usage

Start the WebDAV Server

docker run -d \
-e INTERNXT_EMAIL=my@email.com \
-e INTERNXT_PASSWORD=mypassword \
-e INTERNXT_TOTP_SECRET=myTOTPsecret \
debben80/internxt-cli

Run Internxt CLI Commands

You 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 list

Using Secrets

To 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-cli

Docker Compose Example

services:
internxt-webdav:
image: debben80/internxt-cli:latestenvironment:
INTERNXT_EMAIL: your@email.comINTERNXT_PASSWORD: yourpasswordports:
- "3005:3005"restart: unless-stopped

Security Notes

  • 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.

Development


References


License

This project is licensed under the MIT License - see the LICENSE file for details.

About

Internxt CLI Docker Image

Topics

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

148 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

GitHub package.json prod dependency versionReleaseArchitectureGitHub Actions Workflow StatusDocker PullsGitHub Container RegistryGitHub License

Internxt CLI Docker Image

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.


Table of Contents


Features

  • 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 , arm64 and armv7.

Prerequisites


Environment Variables

You can configure the container using the following environment variables:

VariableDescriptionRequiredDefault
INTERNXT_EMAILInternxt login email.Yes
INTERNXT_PASSWORDInternxt login password.Yes
INTERNXT_TOTP_CODETOTP code for two-factor authentication.No
INTERNXT_TOTP_SECRETTOTP secret for 2FA (INTERNXT_TOTP_CODE have priority)No
WEBDAV_HOSTListening host for WebDAVNo127.0.0.1
WEBDAV_PROTOProtocol for WebDAV (http or https).Nohttps
WEBDAV_PORTWebDAV listening port.No3005
WEBDAV_LOGSLog level (error or debug).Noerror
PUIDUser ID for running processes.No1000
PGIDGroup ID for running processes.No1000
TZTimeZone for tzdataNoEtc/UTC

Tip: For any INTERNXT_* variable above, you can use a corresponding *_FILE variable to load its value from a file (useful for secrets).


Docker Images

RegistryAddress ( tag : latest )
Docker Hubdocker pull debben80/internxt-cli:latest
GitHub Container Registrydocker pull ghcr.io/debben80/internxt-cli:latest

Usage

Start the WebDAV Server

docker run -d \
-e INTERNXT_EMAIL=my@email.com \
-e INTERNXT_PASSWORD=mypassword \
-e INTERNXT_TOTP_SECRET=myTOTPsecret \
debben80/internxt-cli

Run Internxt CLI Commands

You 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 list

Using Secrets

To 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-cli

Docker Compose Example

services:
internxt-webdav:
image: debben80/internxt-cli:latestenvironment:
INTERNXT_EMAIL: your@email.comINTERNXT_PASSWORD: yourpasswordports:
- "3005:3005"restart: unless-stopped

Security Notes

  • 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.

Development


References


License

This project is licensed under the MIT License - see the LICENSE file for details.

About

Internxt CLI Docker Image

Topics

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

148 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

GitHub package.json prod dependency versionReleaseArchitectureGitHub Actions Workflow StatusDocker PullsGitHub Container RegistryGitHub License

Internxt CLI Docker Image

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.


Table of Contents


Features

  • 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 , arm64 and armv7.

Prerequisites


Environment Variables

You can configure the container using the following environment variables:

VariableDescriptionRequiredDefault
INTERNXT_EMAILInternxt login email.Yes
INTERNXT_PASSWORDInternxt login password.Yes
INTERNXT_TOTP_CODETOTP code for two-factor authentication.No
INTERNXT_TOTP_SECRETTOTP secret for 2FA (INTERNXT_TOTP_CODE have priority)No
WEBDAV_HOSTListening host for WebDAVNo127.0.0.1
WEBDAV_PROTOProtocol for WebDAV (http or https).Nohttps
WEBDAV_PORTWebDAV listening port.No3005
WEBDAV_LOGSLog level (error or debug).Noerror
PUIDUser ID for running processes.No1000
PGIDGroup ID for running processes.No1000
TZTimeZone for tzdataNoEtc/UTC

Tip: For any INTERNXT_* variable above, you can use a corresponding *_FILE variable to load its value from a file (useful for secrets).


Docker Images

RegistryAddress ( tag : latest )
Docker Hubdocker pull debben80/internxt-cli:latest
GitHub Container Registrydocker pull ghcr.io/debben80/internxt-cli:latest

Usage

Start the WebDAV Server

docker run -d \
-e INTERNXT_EMAIL=my@email.com \
-e INTERNXT_PASSWORD=mypassword \
-e INTERNXT_TOTP_SECRET=myTOTPsecret \
debben80/internxt-cli

Run Internxt CLI Commands

You 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 list

Using Secrets

To 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-cli

Docker Compose Example

services:
internxt-webdav:
image: debben80/internxt-cli:latestenvironment:
INTERNXT_EMAIL: your@email.comINTERNXT_PASSWORD: yourpasswordports:
- "3005:3005"restart: unless-stopped

Security Notes

  • 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.

Development


References


License

This project is licensed under the MIT License - see the LICENSE file for details.

About

Internxt CLI Docker Image

Topics

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

148 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

GitHub package.json prod dependency versionReleaseArchitectureGitHub Actions Workflow StatusDocker PullsGitHub Container RegistryGitHub License

Internxt CLI Docker Image

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.


Table of Contents


Features

  • 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 , arm64 and armv7.

Prerequisites


Environment Variables

You can configure the container using the following environment variables:

VariableDescriptionRequiredDefault
INTERNXT_EMAILInternxt login email.Yes
INTERNXT_PASSWORDInternxt login password.Yes
INTERNXT_TOTP_CODETOTP code for two-factor authentication.No
INTERNXT_TOTP_SECRETTOTP secret for 2FA (INTERNXT_TOTP_CODE have priority)No
WEBDAV_HOSTListening host for WebDAVNo127.0.0.1
WEBDAV_PROTOProtocol for WebDAV (http or https).Nohttps
WEBDAV_PORTWebDAV listening port.No3005
WEBDAV_LOGSLog level (error or debug).Noerror
PUIDUser ID for running processes.No1000
PGIDGroup ID for running processes.No1000
TZTimeZone for tzdataNoEtc/UTC

Tip: For any INTERNXT_* variable above, you can use a corresponding *_FILE variable to load its value from a file (useful for secrets).


Docker Images

RegistryAddress ( tag : latest )
Docker Hubdocker pull debben80/internxt-cli:latest
GitHub Container Registrydocker pull ghcr.io/debben80/internxt-cli:latest

Usage

Start the WebDAV Server

docker run -d \
-e INTERNXT_EMAIL=my@email.com \
-e INTERNXT_PASSWORD=mypassword \
-e INTERNXT_TOTP_SECRET=myTOTPsecret \
debben80/internxt-cli

Run Internxt CLI Commands

You 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 list

Using Secrets

To 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-cli

Docker Compose Example

services:
internxt-webdav:
image: debben80/internxt-cli:latestenvironment:
INTERNXT_EMAIL: your@email.comINTERNXT_PASSWORD: yourpasswordports:
- "3005:3005"restart: unless-stopped

Security Notes

  • 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.

Development


References


License

This project is licensed under the MIT License - see the LICENSE file for details.

About

Internxt CLI Docker Image

Topics

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

148 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

GitHub package.json prod dependency versionReleaseArchitectureGitHub Actions Workflow StatusDocker PullsGitHub Container RegistryGitHub License

Internxt CLI Docker Image

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.


Table of Contents


Features

  • 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 , arm64 and armv7.

Prerequisites


Environment Variables

You can configure the container using the following environment variables:

VariableDescriptionRequiredDefault
INTERNXT_EMAILInternxt login email.Yes
INTERNXT_PASSWORDInternxt login password.Yes
INTERNXT_TOTP_CODETOTP code for two-factor authentication.No
INTERNXT_TOTP_SECRETTOTP secret for 2FA (INTERNXT_TOTP_CODE have priority)No
WEBDAV_HOSTListening host for WebDAVNo127.0.0.1
WEBDAV_PROTOProtocol for WebDAV (http or https).Nohttps
WEBDAV_PORTWebDAV listening port.No3005
WEBDAV_LOGSLog level (error or debug).Noerror
PUIDUser ID for running processes.No1000
PGIDGroup ID for running processes.No1000
TZTimeZone for tzdataNoEtc/UTC

Tip: For any INTERNXT_* variable above, you can use a corresponding *_FILE variable to load its value from a file (useful for secrets).


Docker Images

RegistryAddress ( tag : latest )
Docker Hubdocker pull debben80/internxt-cli:latest
GitHub Container Registrydocker pull ghcr.io/debben80/internxt-cli:latest

Usage

Start the WebDAV Server

docker run -d \
-e INTERNXT_EMAIL=my@email.com \
-e INTERNXT_PASSWORD=mypassword \
-e INTERNXT_TOTP_SECRET=myTOTPsecret \
debben80/internxt-cli

Run Internxt CLI Commands

You 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 list

Using Secrets

To 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-cli

Docker Compose Example

services:
internxt-webdav:
image: debben80/internxt-cli:latestenvironment:
INTERNXT_EMAIL: your@email.comINTERNXT_PASSWORD: yourpasswordports:
- "3005:3005"restart: unless-stopped

Security Notes

  • 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.

Development


References


License

This project is licensed under the MIT License - see the LICENSE file for details.

About

Internxt CLI Docker Image

Topics

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

148 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

GitHub package.json prod dependency versionReleaseArchitectureGitHub Actions Workflow StatusDocker PullsGitHub Container RegistryGitHub License

Internxt CLI Docker Image

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.


Table of Contents


Features

  • 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 , arm64 and armv7.

Prerequisites


Environment Variables

You can configure the container using the following environment variables:

VariableDescriptionRequiredDefault
INTERNXT_EMAILInternxt login email.Yes
INTERNXT_PASSWORDInternxt login password.Yes
INTERNXT_TOTP_CODETOTP code for two-factor authentication.No
INTERNXT_TOTP_SECRETTOTP secret for 2FA (INTERNXT_TOTP_CODE have priority)No
WEBDAV_HOSTListening host for WebDAVNo127.0.0.1
WEBDAV_PROTOProtocol for WebDAV (http or https).Nohttps
WEBDAV_PORTWebDAV listening port.No3005
WEBDAV_LOGSLog level (error or debug).Noerror
PUIDUser ID for running processes.No1000
PGIDGroup ID for running processes.No1000
TZTimeZone for tzdataNoEtc/UTC

Tip: For any INTERNXT_* variable above, you can use a corresponding *_FILE variable to load its value from a file (useful for secrets).


Docker Images

RegistryAddress ( tag : latest )
Docker Hubdocker pull debben80/internxt-cli:latest
GitHub Container Registrydocker pull ghcr.io/debben80/internxt-cli:latest

Usage

Start the WebDAV Server

docker run -d \
-e INTERNXT_EMAIL=my@email.com \
-e INTERNXT_PASSWORD=mypassword \
-e INTERNXT_TOTP_SECRET=myTOTPsecret \
debben80/internxt-cli

Run Internxt CLI Commands

You 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 list

Using Secrets

To 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-cli

Docker Compose Example

services:
internxt-webdav:
image: debben80/internxt-cli:latestenvironment:
INTERNXT_EMAIL: your@email.comINTERNXT_PASSWORD: yourpasswordports:
- "3005:3005"restart: unless-stopped

Security Notes

  • 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.

Development


References


License

This project is licensed under the MIT License - see the LICENSE file for details.

About

Internxt CLI Docker Image

Topics

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

148 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

GitHub package.json prod dependency versionReleaseArchitectureGitHub Actions Workflow StatusDocker PullsGitHub Container RegistryGitHub License

Internxt CLI Docker Image

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.


Table of Contents


Features

  • 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 , arm64 and armv7.

Prerequisites


Environment Variables

You can configure the container using the following environment variables:

VariableDescriptionRequiredDefault
INTERNXT_EMAILInternxt login email.Yes
INTERNXT_PASSWORDInternxt login password.Yes
INTERNXT_TOTP_CODETOTP code for two-factor authentication.No
INTERNXT_TOTP_SECRETTOTP secret for 2FA (INTERNXT_TOTP_CODE have priority)No
WEBDAV_HOSTListening host for WebDAVNo127.0.0.1
WEBDAV_PROTOProtocol for WebDAV (http or https).Nohttps
WEBDAV_PORTWebDAV listening port.No3005
WEBDAV_LOGSLog level (error or debug).Noerror
PUIDUser ID for running processes.No1000
PGIDGroup ID for running processes.No1000
TZTimeZone for tzdataNoEtc/UTC

Tip: For any INTERNXT_* variable above, you can use a corresponding *_FILE variable to load its value from a file (useful for secrets).


Docker Images

RegistryAddress ( tag : latest )
Docker Hubdocker pull debben80/internxt-cli:latest
GitHub Container Registrydocker pull ghcr.io/debben80/internxt-cli:latest

Usage

Start the WebDAV Server

docker run -d \
-e INTERNXT_EMAIL=my@email.com \
-e INTERNXT_PASSWORD=mypassword \
-e INTERNXT_TOTP_SECRET=myTOTPsecret \
debben80/internxt-cli

Run Internxt CLI Commands

You 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 list

Using Secrets

To 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-cli

Docker Compose Example

services:
internxt-webdav:
image: debben80/internxt-cli:latestenvironment:
INTERNXT_EMAIL: your@email.comINTERNXT_PASSWORD: yourpasswordports:
- "3005:3005"restart: unless-stopped

Security Notes

  • 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.

Development


References


License

This project is licensed under the MIT License - see the LICENSE file for details.

About

Internxt CLI Docker Image

Topics

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages