Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/misterunknown/ifm
Improved File Manager
https://github.com/misterunknown/ifm
filemanager html ifm javascript php
Last synced: 16 days ago
JSON representation
Improved File Manager
- Host: GitHub
- URL: https://github.com/misterunknown/ifm
- Owner: misterunknown
- License: mit
- Created: 2013-12-16T13:20:50.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2024-01-26T23:19:03.000Z (10 months ago)
- Last Synced: 2024-01-27T00:29:12.693Z (10 months ago)
- Topics: filemanager, html, ifm, javascript, php
- Language: JavaScript
- Size: 4.92 MB
- Stars: 321
- Watchers: 13
- Forks: 67
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# IFM - improved file manager
## Contents
* [about](#about)
* [features](#features)
* [requirements](#requirements)
* [installation](#installation)
* [security information](#security-information)
* [keybindings](#keybindings)
* [configuration](#configuration)
* [docker](#docker)
* [screenshots](#screenshots)
* [issues](#issues)## About
The IFM is a web-based filemanager, which comes as a single file solution using HTML5, CSS3, JavaScript and PHP. You can test a [demo here](https://ifmdemo.gitea.de/).
[![IFM](https://img.youtube.com/vi/owJepSas19Y/hqdefault.jpg)](https://youtu.be/owJepSas19Y)
The IFM uses the following resources:
* [ACE Editor](https://ace.c9.io)
* [Bootstrap v4](https://getbootstrap.com)
* custom icon set generated with [Fontello](http://fontello.com/)
* [jQuery](https://jquery.com)
* [Mustache](https://mustache.github.io/)## Features
* create/edit files and directories
* copy/move files and directories
* download files and directories
* upload files directly, remotely via URL or per drag & drop
* extract archives (tar, tgz, tar.gz, tar.bz2, zip)
* change permissions
* image preview
* simple authentication (LDAP via `ldap_bind` possible)## Requirements
* Client
+ HTML5 and CSS3 compatible browser
+ activated javascript
* Server
+ PHP >= 7.0
+ extensions
- bz2
- curl (for remote upload)
- fileinfo
- json
- ldap (only if LDAP based authentication is used)
- mbstring
- openssl (for remote uploads from https sources)
- phar
- posix
- zip
- zlib## Installation
Just download the latest release of the IFM. You can find it [here](https://github.com/misterunknown/ifm/releases/latest). You can choose between the CDN version (dependencies like bootstrap, jquery etc. are loaded via CDN) or the "simple" version, which bundles all these dependencies.
The minified versions (`*.min.php`) are zipped via gzip. These versions are not recommended; if the filesize of the IFM is an issue for you, consider using the CDN versions.
## Security information
The IFM is usually locked to it's own directory, so you are not able to go above. You can change that by setting the `root_dir` in the scripts [configuration](https://github.com/misterunknown/ifm/wiki/Configuration).
By default, it is not allowed to show or edit the `.htaccess` file. This is because you can configure the IFM via environment variables. Thus if anyone has the ability to edit the `.htaccess` file, he could overwrite the active
configuration. [See also](https://github.com/misterunknown/ifm/wiki/Configuration).## Keybindings
* e - edit / extract current file
* hjkl - vim-style navigation (alternative to arrow keys)
* g - focus the path input field (i.e. "goto")
* r - refresh file table
* u - upload a file
* o - remote upload a file
* a - show ajax request dialog
* F - new file
* D - new directory
* cm - show copy/move dialog
* / - search
* a - ajax request
* n - rename file
* Space - select a highlighted item
* Del - delete selected files
* Enter - open a file or change to the directory
* Ctrl-Shift-f - toggle fullscreen ace editor## Configuration
See [configuration](https://github.com/misterunknown/ifm/wiki/Configuration).
### Authentication
See [authentication](https://github.com/misterunknown/ifm/wiki/Authentication).
## Docker
The docker image is based on the official php docker images (alpine version)
and exposes port 80.### Quickstart
Build the image with this command in the top source dir:
```bash
docker build -t ifm .
```Afterwards you can start the docker container as follows:
```bash
docker run --rm -d --name ifm -p 8080:80 -v /path/to/data:/var/www ifm:latest
```### Specify user/group
By default IFM runs as user www-data (uid/gid 33). If you need to change that, you can set the UID and GID with the following environment variables:
```bash
docker run ... -e IFM_DOCKER_UID=1000 -e IFM_DOCKER_GID=100 ifm:latest
```### Other configuration
The script is located at `/usr/local/share/webapps/ifm/index.php`. By default the `root_dir` is set to /var/www, so you can mount any directory at this location. If you want to bind the corresponding host directory, you can do the following:
```bash
docker run --rm -i -p "8080:80" -v "/var/www:/var/www" ifm
```The scripts configuration can be changed by adjusting the corresponding environment variables. For example:
```bash
docker run --rm -i -p "8080:80" -v /var/www:/var/www \
-e IFM_AUTH=1 -e IFM_AUTH \
-e IFM_AUTH_SOURCE="inline;admin:$2y$05$LPdE7u/5da/TCE8ZhqQ1o.acuV50HqB3OrHhNwxbXYeWmmZKdQxrC" \
ifm
```You can get a complete list of environment variables [here](https://github.com/misterunknown/ifm/wiki/Configuration#configuration-options).
## Screenshots
## Issues
If you happen to find an error or miss a feature, you can create an issue on Github.