Skip to content
VoidedKN0XPublic

About

File manager with NFS, SMB, SFTP, FTP and WebDAV built in. Google-free, telemetry-free Android app, part of the VKNXWorks Ctrl series.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

FilesCtrl

A file manager that opens your network shares.

Latest release Android 13+ License: GPL-3.0 Telemetry-free Sponsor

FilesCtrl is a high-contrast file manager for Android, in the spirit of Material Files, with network storage built in: NFS, SMB, SFTP, FTP and WebDAV. No root needed.

Part of the Ctrl series by VKNXWorks.

Get it on Obtainium Get it from our F-Droid repo

Features

  • Local storage: internal storage, SD cards and USB drives
  • Network storage from one Add network button: NFS (v3 and v4), SMB (2/3), SFTP, FTP/FTPS and WebDAV (Nextcloud, ownCloud and others)
  • Open network files in any app: videos stream and can be skipped through without downloading first; Edit with lets an app save changes back
  • Your servers in the system file picker, so other apps can open and save files on them
  • Copy, move, rename and delete between your phone and any server, in the background
  • Archives: open ZIP, 7z, RAR (RAR4), TAR (.tar.gz, .tar.xz, .tar.zst, .tar.bz2 and more), CPIO, AR/DEB and single compressed files (.gz, .xz, .zst, .bz2 …) like folders, extract them, and compress to ZIP, 7z or TAR.* with optional AES-256 passwords
  • Tabs, restored when you open the app again, and dual pane on tablets, foldables and in landscape: two folders side by side, with copy and move from one to the other in one tap
  • Built-in picture viewer for JPEG, PNG, WebP, GIF, HEIC and AVIF, also on servers and in archives: swipe through the folder, pinch to zoom, rotate, photo info (camera, date, exposure), share, delete or open in another app
  • Save to FilesCtrl from any app's share sheet: files of any type, and text as a .txt file, saved into any folder on your phone or a server, in the background. The last folder you used is offered first
  • Checksums: MD5, SHA-1, SHA-256, SHA-512 and CRC32 of any file, also on servers, with Compare with for a pasted hash
  • Home screen shortcuts to folders and bookmarks, and your first bookmarks on the app icon
  • Multi-select, search (also in subfolders), bookmarks, properties and permissions
  • Thumbnails for photos and videos on the phone, and for photos on servers (can be turned off), list and grid views, sorting and hidden files
  • Built-in text editor for config files and notes, also offered to other apps
  • Read-only servers: switch it on and FilesCtrl hides every option that would change something there, and refuses writes from other apps
  • Checked connections: SFTP host keys and self-signed WebDAV/FTPS certificates are only trusted after you confirm their fingerprint; SMB signing is on by default, with optional encryption
  • WebDAV over HTTPS by default; plain HTTP only for your own server, after a one-time warning, and marked Not encrypted (HTTP) in Places
  • Passwords and keys are stored encrypted; app lock with its own PIN and optional fingerprint unlock, which keeps saved passwords and keys encrypted while the app is locked
  • The Ctrl / Signal look shared by every Ctrl app: dark and light modes that follow your phone's dark theme, one violet accent, Space Grotesk and JetBrains Mono, and a tablet layout

Screenshots

Coming soon.

Requirements

  • Android 13 or newer, on a 64-bit ARM phone (nearly every phone from the last several years)
  • All files access, to browse your phone's own storage. Network shares work without it
  • Google-free and de-Googled: no Google Play services, Firebase or other Google services, and the app never contacts Google. It works the same on de-Googled phones (GrapheneOS, CalyxOS, /e/OS, LineageOS without Google apps).

Install

  1. Download the latest .apk file from the Releases page.
  2. Open it on your phone. Android may ask you to allow installing apps from your browser or file manager.
  3. Updates install over the old version. Your settings and login are kept.

Automatic updates: on your phone, tap one of the buttons below.

  • Obtainium: install Obtainium first. The button adds FilesCtrl and installs every new release for you.
  • F-Droid: adds the CtrlF-Droid repo to F-Droid, Droid-ify or Neo Store, with every Ctrl app and automatic updates.

Get it on Obtainium Get it from our F-Droid repo

If the Obtainium button doesn't open the app, add https://github.com/VoidedKN0X/FilesCtrl in Obtainium by hand.

Getting started

  1. Open the Places tab and tap Add network.
  2. Choose the type (NFS, SMB, SFTP, FTP or WebDAV) and enter your server's address and login.
  3. Your server now appears next to your phone's storage.

Settings and About are behind your profile picture at the top right of the Files and Places tabs: tap it to open the You page, then Settings.

Tips and troubleshooting

NFS server setup. Android apps can't use privileged ports, so your NFS export must allow them:

  • Linux: add insecure to the export, e.g. /srv/share 192.168.1.0/24(rw,insecure,no_subtree_check)
  • Synology: Shared Folder → Edit → NFS Permissions → allow connections from non-privileged ports
  • TrueNAS: turn on Allow non-root mount for the share

Set the share's uid/gid in FilesCtrl to the owner of your files on the server (often 1000 on Linux, 1026 or higher on Synology).

App lock

Turn it on under Settings > Privacy and security > App lock (tap your profile picture at the top right, then Settings). It's off until you turn it on.

  • Its own app PIN of at least 6 digits, separate from your phone's screen lock. Very obvious PINs such as 111111 or 123456 are refused.
  • Unlock with fingerprint (optional) only accepts strong biometrics, such as the fingerprint sensor, checked by the phone's secure hardware. Face unlock that only uses the camera isn't accepted. The PIN is still needed after the phone restarts and at least every 72 hours, and adding a new fingerprint to the phone turns fingerprint unlock off until you turn it on again.
  • The saved passwords and keys of your network locations are encrypted with the PIN while FilesCtrl is locked. The key only exists in memory while the app is unlocked and is wiped the moment it locks. The PIN itself is never stored: it's stretched with 600,000 rounds of PBKDF2 and mixed with a key held in the phone's secure hardware, so a copy of the app's files isn't enough to guess it on a computer.
  • Wrong PINs: after 5 tries you wait 30 seconds, doubling up to 15 minutes. Restarting the app or the phone, or changing the clock, doesn't skip the wait.
  • Lock again: as soon as you leave the app (the default), after 1, 5 or 15 minutes or 1 hour away, or only when the app restarts. Opening a file in another app, sharing, picking a file or folder, choosing an SFTP key and opening Android's settings from FilesCtrl don't count as leaving, unless you stay away for more than 5 minutes.
  • Change app PIN asks for your current PIN first, and turning the app lock off asks for the PIN too.
  • Forgot your PIN? It can't be recovered, because it encrypts the saved passwords and keys. The lock screen offers to turn the app lock off and forget those passwords and keys; your network locations stay, and you enter their passwords again.
  • With the app lock on, the recent-apps screen always shows a blank card, your servers don't show in other apps' file pickers while FilesCtrl is locked, and copies and moves that are already running finish but nothing new can connect until you unlock. The file browser and the text editor lock and unlock together.

Hide in screenshots and Hide in recent apps are in the same section, work without the app lock too, and are both off by default. The first keeps FilesCtrl out of screenshots and screen recordings; the second shows a blank card in the recent-apps view instead of the app. Adding or editing a network location (where you type passwords and key passphrases), the lock screen and the PIN screens are always kept out of screenshots, whatever the switches say.

Privacy

Telemetry-free. FilesCtrl has no analytics, crash reporting, usage stats or tracking of any kind. It only talks to the servers you add: your NFS, SMB, SFTP, FTP/FTPS and WebDAV servers.

  • Files on your phone never leave it unless you copy, move or share them yourself.
  • WebDAV uses HTTPS by default. Plain HTTP is only used for your own server after you accept a warning that your password and files then travel unencrypted, and FilesCtrl never switches a server from HTTPS to HTTP or follows a redirect to HTTP.
  • The Support, Report a bug, Source code and Licence links on the You page (tap your profile picture) open in your browser, only when you tap them.

Build from source

You need Android Studio, or JDK 17 and the Android SDK.

  1. Clone the repo:
    git clone https://github.com/VoidedKN0X/FilesCtrl.git
    cd FilesCtrl
  2. Build the app:
    ./gradlew assembleDebug
    On Windows, use gradlew.bat assembleDebug.
  3. The APK is in app/build/outputs/apk/debug/. Copy it to your phone and install it.

Or open the folder in Android Studio and press Run with your phone connected.

Gradle downloads the Android NDK and CMake it needs automatically on the first build, so the first build takes a little longer.

Support the project

FilesCtrl is free and open source. If it's useful to you, you can support development on GitHub Sponsors. In the app, tap your profile picture: the You page has Report a bug under About and a Support FilesCtrl button at the bottom, which opens the issue tracker. Starring the repo helps too.

The Ctrl series

Native Android apps for self-hosted services and everyday tools, all with the same Material You design.

App What it's for
AdCtrl Control your AdGuard Home DNS server
ArrCtrl Radarr, Sonarr, Prowlarr, Bazarr, qBittorrent, autobrr and Cleanuparr in one app
BeamCtrl TV remote for phones with an IR blaster
CraftyCtrl Manage Minecraft servers on Crafty Controller
ElementCtrl Matrix chat client for matrix.org and self-hosted Synapse
FilesCtrl (this app) File manager with NFS, SMB, SFTP, FTP and WebDAV
FrigateCtrl Watch and review your Frigate NVR cameras
ImmichCtrl Photos and backup for your Immich server
JellyCtrl Movies, shows, music and Live TV from Jellyfin
MemoCtrl Notes on your Memos server
NaviCtrl Music player for Navidrome servers
PaperCtrl Scan and browse documents on Paperless-ngx
PrintCtrl Bambu Lab printers through Bambuddy, and Spoolman spools
ProxCtrl Manage your Proxmox VE server
SeerrCtrl Request movies and shows on Seerr / Jellyseerr
TrueCtrl Monitor and manage your TrueNAS server

License

FilesCtrl is licensed under the GNU General Public License v3.0. © VKNXWorks

The interface uses the Space Grotesk and JetBrains Mono fonts, both under the SIL Open Font License 1.1 (their licence texts are bundled in the app under assets/licenses/).

Archive support uses Apache Commons Compress, zip4j and zstd-jni's Java parts under their own licences (Apache-2.0, Apache-2.0, BSD-2-Clause), XZ for Java (public domain / 0BSD), Brotli (MIT) and junrar (unRAR licence: it may only be used to extract RAR archives, not to create them).

FilesCtrl uses libnfs (LGPL-2.1), smbj, sshj and Apache Commons Net (Apache-2.0).

About

File manager with NFS, SMB, SFTP, FTP and WebDAV built in. Google-free, telemetry-free Android app, part of the VKNXWorks Ctrl series.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages