Run Ente locally in minutes with Docker or Podman.
This repository is a local self-host deployment wrapper for Ente. It uses the official server image and does not modify Ente itself.
- Ente image:
ghcr.io/ente-io/server:latest - Runtime support: Docker and Podman
- Target: Linux (Ubuntu/Debian first)
git clone https://github.com/subhangadirli/ente-docker.git
cd ente-docker
./install.shAfter install, the stack is up and managed with:
./ente start
./ente stop
./ente logs
./ente reset --yes- Docker support
- Podman support (preferred when available)
- Zero-config default mode
- Optional interactive setup (
./install.sh --interactive) - Secure auto-generated secrets
- Persistent local data directory (
~/.ente-docker)
flowchart LR
Client[Local Client / Browser] -->|HTTP| Ente[Ente Server]
Ente --> Postgres[(PostgreSQL)]
Ente --> MinIO[(MinIO S3 Storage)]
- Detects runtime in this order: Podman, then Docker.
- Installs Docker automatically on Debian/Ubuntu when no runtime exists.
- Creates local working directory (
~/.ente-dockerby default). - Generates secure secrets and writes
.envautomatically. - Copies compose files into the working directory.
- Starts the stack using the right compose command.
- Prints URLs and management commands.
Installer and CLI automatically choose the correct compose command:
- Docker:
docker compose(ordocker-composefallback) - Podman:
podman compose(orpodman-composefallback)
Default install is non-interactive and requires no manual edits.
Optional flags:
./install.sh --interactive
./install.sh --engine podman
./install.sh --engine docker
./install.sh --data-dir ~/.ente-docker
./install.sh --minio-console yesEnvironment template is available in .env.example.
Generated runtime .env is stored in ~/.ente-docker/.env.
- Exposed by default:
127.0.0.1:8080-> Ente API
- Not exposed by default:
- PostgreSQL
- MinIO API
- MinIO Console (optional)
Internal services communicate on a private compose network.
Both are supported. Podman is preferred automatically when available.
Only for pulling container images (and package installation if Docker must be installed).
Yes. Data is stored on your machine under ~/.ente-docker unless you choose a different path.
-
Check runtime selection:
./ente config
-
View logs:
./ente logs
-
Recreate stack:
./ente stop ./ente start
-
Reset all local data (destructive):
./ente reset --yes
After ./install.sh the installer attempts a basic smoke test against the API (localhost:8080) if curl is available. If the smoke test fails, check service logs with:
./ente logsInstaller state and generated runtime artifacts are persisted under the data directory (default ~/.ente-docker). The state file is .ente.state in that directory.
- Secrets are generated locally by the installer.
- The default bind address is localhost.
- Review firewall rules if you expose services beyond localhost.