Mikochi is a remote file browser, for use in self-hosted servers / NAS. It allows you to browse remote folders, upload files, delete, rename, download and stream files to VLC/mpv.
It comes with a web interface powered by JavaScript/Preact, and an API built in Go/Gin.
mikochi.mp4
- Browse files on you remote server
- Fuzzy search
- Upload new files and create folders
- Rename and delete files
- Download files and directories (in .tar.gz)
- Stream files to VLC/MPV
Launch the app using docker:
docker run \
-p 8080:8080 -v $(PWD)/data:/data \
-e DATA_DIR="/data" -e USERNAME=zer0tonin \
-e PASSWORD=horsebatterysomething zer0tonin/mikochi:latestYou'll find a complete tutorial on installing Mikochi securely with Docker and Traefik here.
For Kubernetes users, Mikochi is installable using a helm chart:
helm repo add zer0tonin https://zer0tonin.github.io/helm-charts/
helm install mikochi zer0tonin/mikochi \
--version 1.10.0 --set mikochi.username=zer0tonin \
--set mikochi.password=my_super_password --set persistence.enabled=trueInstall the app using a .deb package from the latest release.
wget -c https://github.com/zer0tonin/Mikochi/releases/download/1.10.0/mikochi-1.10.0-linux-amd64.deb
sudo chmod +x mikochi-1.10.0-linux-amd64.deb
sudo apt install mikochi-1.10.0-linux-amd64.deb
sudo mkdir /data
PASSWORD=horsebatterysomething mikochiInstall the app using a .rpm package from the latest release.
wget -c https://github.com/zer0tonin/Mikochi/releases/download/1.10.0/mikochi-1.10.0-linux-amd64.rpm
sudo chmod +x mikochi-1.10.0-linux-amd64.rpm
sudo rpm -ivh mikochi-1.10.0-linux-amd64.rpm
sudo mkdir /data
PASSWORD=horsebatterysomething mikochiLaunch the app using a pre-compiled binary from the latest release:
wget -c https://github.com/zer0tonin/Mikochi/releases/download/1.10.0/mikochi-1.10.0-linux-amd64.tar.gz -O - | tar -xz
sudo mkdir /data
sudo mkdir /usr/share/mikochi
sudo mv ./mikochi-1.10.0/mikochi /usr/bin/mikochi
sudo mv ./mikochi-1.10.0/static /usr/share/mikochi/static
PASSWORD=horsebatterysomething mikochiMikochi is configured using environment variables
| Key | Description | Default |
|---|---|---|
| HOST | The ip:port mikochi will listen on | 0.0.0.0:80 |
| DATA_DIR | The directory accessed by mikochi | /data |
| JWT_SECRET | A secret string for jwt validation | [Random] |
| USERNAME | The username to login with | root |
| PASSWORD | The password to login with | pass |
| CERT_CA | The path to a TLS certificate | null |
| CERT_KEY | The path to the key associated with CERT_CA | null |
| NO_AUTH | If true, disables all authentication | false |
| GZIP | If true, enables gzip compression | false |
| FRONTEND_FILES | The location of the frontend static files | /usr/share/mikochi/static |
Note: it is recommended to not manually set JWT_SECRET, as getting a new randomly generated secret everytime when mikochi starts let's you invalidate authentication tokens by restarting the process.
The development environment and build pipeline rely on Docker/docker-compose.
Run the dockerized development environment with:
make devIt will start a frontend container (listening on 5000), a backend container (listening on 4000) and an nginx to wire both (listening on 8080).