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.
Launch the app using a pre-compiled binary from the latest release:
wget -c https://github.com/zer0tonin/Mikochi/releases/download/1.2.3/mikochi-linux-amd64.tar.gz -O - | tar -xz
HOST=127.0.0.1:8080 USERNAME=zer0tonin PASSWORD=horsebatterysomething ./mikochi
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:latest
(For arm/v7 users, use the latest-armv7
or 1.2.3-armv7
tag)
For Kubernetes users, Mikochi is installable using a helm chart:
helm repo add zer0tonin https://zer0tonin.github.io/helm-charts/
helm --kubeconfig kubeconfig install mikochi zer0tonin/mikochi \
--version 1.2.3 --set mikochi.username=zer0tonin \
--set mikochi.password=my_super_password --set persistence.enabled=true
Mikochi 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 |
It is encouraged to use Mikochi behind a reverse proxy (ie. nginx), and use it to configure TLS. This will stop any attackers from being able to replay requests and access your files. Additionally, using rate limits can help slow down bruteforce and DDoS attacks.
I welcome any PRs aimed at improving or fixing existing features, especially on the following subjects:
- making a non-hacky linux/arm/v7 docker build (npm seems to have trouble with this architecture)
- making a smarter cache refresh
- improving accessibility
- s3/minio support
The development environment and build pipeline rely on Docker/docker-compose.
Run the dockerized development environment with:
make dev
It will start a frontend container (listening on 5000), a backend container (listening on 4000) and an nginx to wire both (listening on 8080).
Use make build
to run a production build in a single container.