From b83e727d66b25dc63a7c90bbc18f56dcfa51ad3e Mon Sep 17 00:00:00 2001 From: jzunigax2 <125698953+jzunigax2@users.noreply.github.com> Date: Wed, 21 Jan 2026 09:46:11 -0600 Subject: [PATCH 1/2] internxt: update Internxt documentation to reflect service name change and enhance configuration instructions --- docs/content/_index.md | 4 +- docs/content/internxt.md | 118 ++++++++++++++++++++++++--------------- 2 files changed, 74 insertions(+), 48 deletions(-) diff --git a/docs/content/_index.md b/docs/content/_index.md index 391f9e51a958b..2ff6c82d0fe51 100644 --- a/docs/content/_index.md +++ b/docs/content/_index.md @@ -31,8 +31,8 @@ mv, mount, ls, ncdu, tree, rm, and cat. Rclone's familiar syntax includes shell pipeline support, and `--dry-run` protection. It is used at the command line, in scripts or via its [API](/rc). -Users call rclone _"The Swiss army knife of cloud storage"_, and -_"Technology indistinguishable from magic"_. +Users call rclone *"The Swiss army knife of cloud storage"*, and +*Technology indistinguishable from magic"*. Rclone really looks after your data. It preserves timestamps and verifies checksums at all times. Transfers over limited bandwidth; diff --git a/docs/content/internxt.md b/docs/content/internxt.md index 0d2277e1d4fe1..dc61eba70309c 100644 --- a/docs/content/internxt.md +++ b/docs/content/internxt.md @@ -1,22 +1,20 @@ --- -title: "Internxt.com" -description: "Rclone docs for Internxt.com" -versionIntroduced: "TODO" +title: "Internxt Drive" +description: "Rclone docs for Internxt Drive" +versionIntroduced: "v1.69" --- -# {{< icon "fas fa-angle-double-down" >}} Internxt.com +# {{< icon "fas fa-cloud" >}} Internxt Drive + +[Internxt Drive](https://internxt.com) is a zero-knowledge encrypted cloud storage service. Paths are specified as `remote:path` Paths may be as deep as required, e.g. `remote:directory/subdirectory`. -The initial setup for Internxt.com involves filling in the user credentials. -`rclone config` walks you through it. - ## Configuration -You can configure it as a remote like this with `rclone config` too if -you want to: +Internxt uses browser-based authentication. Run `rclone config` and follow the prompts: ``` No remotes found, make a new one? @@ -24,72 +22,100 @@ n) New remote s) Set configuration password q) Quit config n/s/q> n -name> remote +name> internxt Type of storage to configure. -Enter a string value. Press Enter for the default (""). Choose a number from below, or type in your own value [snip] -XX / Internxt +XX / Internxt Drive \ "internxt" [snip] Storage> internxt -** See help for internxt backend at: https://rclone.org/internxt/ ** - -Remote config - -Option email. -The email of the user to operate as. -Enter a value. Press Enter to leave empty. -email> abc@gmail.com -Option password. -The password for the user. -Choose an alternative below. Press Enter for the default (n). -y) Yes, type in my own password -g) Generate random password -n) No, leave this optional password blank (default) -y/g/n> y +If your browser doesn't open automatically, visit this URL: +https://drive.internxt.com/login?universalLink=true&redirectUri=... -Enter the password: -password: -Confirm the password: -password: +Log in and authorize rclone for access +Waiting for authentication... -Edit advanced config? -y) Yes -n) No (default) -y/n> n +Authentication successful! Configuration complete. Options: - type: internxt -- email: abc@gmail.com -- password: *** ENCRYPTED *** -Keep this "remote" remote? +Keep this "internxt" remote? y) Yes this is OK (default) e) Edit this remote d) Delete this remote y/e/d> y ``` -Because the internxt backend isn't persistent it is most useful for -testing or with an rclone server or rclone mount, e.g. +Your default web browser will open automatically. Log in to your Internxt account to authorize rclone. + +### Headless/Remote Machine Setup + +If you're configuring rclone on a remote or headless machine (such as a server or NAS), the Internxt backend requires browser-based authentication. + +See the [rclone remote setup documentation](/remote_setup/) for detailed instructions on how to configure remotes on machines without a browser. The documentation covers: + +- Using `rclone authorize` to run authorization on a local machine and transfer the token +- SSH tunneling to forward the authentication port +- Copying the config file from a configured machine + +### Security Considerations + +The authentication process stores your mnemonic and JWT token in the rclone configuration file. It is **strongly recommended** to encrypt your rclone config to protect these sensitive credentials: + +``` +rclone config password +``` + +This will prompt you to set a password that encrypts your entire configuration file. - rclone mount :internxt: /mnt/tmp - rclone serve webdav :internxt: - rclone serve sftp :internxt: +## Usage Examples + +``` +# List files +rclone ls internxt: + +# Copy files to Internxt +rclone copy /local/path internxt:remote/path + +# Sync local directory to Internxt +rclone sync /local/path internxt:remote/path + +# Mount Internxt Drive as a local filesystem +rclone mount internxt: /path/to/mountpoint + +# Check storage usage +rclone about internxt: +``` ### Modification times and hashes -The internxt backend supports no hashes and modification times accurate to 1 second. +The Internxt backend does not support hashes. + +Modification times are read from the server but cannot be set. The backend reports `ModTimeNotSupported` precision, so modification times will not be used for sync comparisons. ### Restricted filename characters -The internxt backend replaces the [default restricted characters +The Internxt backend replaces the [default restricted characters set](/overview/#restricted-characters). {{< rem autogenerated options start" - DO NOT EDIT - instead edit fs.RegInfo in backend/internxt/internxt.go then run make backenddocs" >}} ### Advanced options -There are no Advanced options specific to internxt (In internxt object storage system). +Here are the Advanced options specific to internxt (Internxt Drive). + +#### --internxt-skip-hash-validation + +Skip hash validation when downloading files. + +By default, hash validation is disabled. Set this to false to enable validation. + +Properties: + +- Config: skip_hash_validation +- Env Var: RCLONE_INTERNXT_SKIP_HASH_VALIDATION +- Type: bool +- Default: true From a35d725c55e478ad99b871a79250172e63ff4e1c Mon Sep 17 00:00:00 2001 From: jzunigax2 <125698953+jzunigax2@users.noreply.github.com> Date: Wed, 21 Jan 2026 10:43:09 -0600 Subject: [PATCH 2/2] internxt: fix linter errors Remove unused mnemonic check in refreshJWTToken since the mnemonic is not needed for token refresh operations. Explicitly ignore error return from pacer.Call in restoreBackupFile cleanup function. --- backend/internxt/auth.go | 14 +------------- backend/internxt/internxt.go | 2 +- 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/backend/internxt/auth.go b/backend/internxt/auth.go index 9ab3a64d2c384..e555bd0fe9f7c 100644 --- a/backend/internxt/auth.go +++ b/backend/internxt/auth.go @@ -1,4 +1,4 @@ -// Authentication handling for Internxt +// Package internxt provides authentication handling package internxt import ( @@ -17,7 +17,6 @@ import ( internxtconfig "github.com/internxt/rclone-adapter/config" "github.com/rclone/rclone/fs" "github.com/rclone/rclone/fs/config/configmap" - "github.com/rclone/rclone/fs/config/obscure" "github.com/rclone/rclone/lib/oauthutil" "github.com/tyler-smith/go-bip39" "golang.org/x/oauth2" @@ -278,17 +277,6 @@ func refreshJWTToken(ctx context.Context, name string, m configmap.Mapper) error return fmt.Errorf("failed to get current token: %w", err) } - mnemonic, ok := m.Get("mnemonic") - if !ok || mnemonic == "" { - return errors.New("mnemonic is missing from configuration") - } - - // Reveal the obscured mnemonic - mnemonic, err = obscure.Reveal(mnemonic) - if err != nil { - return fmt.Errorf("failed to reveal mnemonic: %w", err) - } - cfg := internxtconfig.NewDefaultToken(currentToken.AccessToken) resp, err := internxtauth.RefreshToken(ctx, cfg) if err != nil { diff --git a/backend/internxt/internxt.go b/backend/internxt/internxt.go index 1387fb48b9129..2555bd2c783f5 100644 --- a/backend/internxt/internxt.go +++ b/backend/internxt/internxt.go @@ -932,7 +932,7 @@ func (o *Object) restoreBackupFile(ctx context.Context, backupUUID, origName, or return } - o.f.pacer.Call(func() (bool, error) { + _ = o.f.pacer.Call(func() (bool, error) { err := files.RenameFile(ctx, o.f.cfg, backupUUID, o.f.opt.Encoding.FromStandardName(origName), origType) return shouldRetry(ctx, err)