Ente - MinIO S3
End-to-end encrypted photo storage, with Silo for the files
- ghcr.io/hsinghhira/ente-minio:latest
- port 6630
- port 6631
- port 6632
- port 6633
- port 6634
- port 6635
- port 6636
- port 6637
- port 6638
- port 6639
- port 6640
- port 6641
- port 6642
- Media




Web App
/http://localhost:6630/ API Server
:6631/http://localhost:6631/ Public Albums
:6632/http://localhost:6632/ Mail Server
:6634/mail/http://localhost:6634/mail/ Accounts
:6635/http://localhost:6635/ Auth
:6636/http://localhost:6636/ Cast
:6637/http://localhost:6637/ Public Locker
:6638/http://localhost:6638/ Embed
:6639/http://localhost:6639/ Paste
:6640/http://localhost:6640/ Locker
:6641/http://localhost:6641/ Public Memories
:6642/http://localhost:6642/ Ente is a self-hosted, end-to-end encrypted place to store, share and rediscover your photos and videos on all your devices. This is Ente in a single container, with PostgreSQL, Silo, the community fork of MinIO that is still open source, and a mail viewer for sign-up codes inside. Secret keys and passwords are made for you on first start.
Features
- End-to-end encryption for every photo and video
- All ten Ente web apps, each on its own port: Photos, Public Albums, Accounts, Auth, Cast, Locker, Public Locker, Embed, Paste and Public Memories
- Works with the Ente phone and desktop apps
- Silo (the open-source fork of MinIO) for S3-compatible photo storage
- Built-in mail viewer on port 6634 for sign-up codes, or use your own email server
- No 10 GB limit: every account gets 100 TB by default
How to use
- Open Ente - MinIO S3 from your dashboard.
- Sign up with your email and a password.
- Open the mail viewer at
http://your-zimaos-ip:6634to read your sign-up code. - Type the code to finish signing up.
- In the Ente phone app, tap the first screen 7 times and set the server to
http://your-zimaos-ip:6631. - Upload photos and share albums.
Server address for the apps
The Ente phone and desktop apps need the API address: http://your-zimaos-ip:6631. On the first screen of the app, tap 7 times, then type that address as the server. If you set ENTE_API_URL (your own domain), use that instead.
Ports
Every app has its own port on your ZimaOS address, counted up from the Web App's port (6630):
| Port | App |
|---|---|
| 6630 | Web App (Ente Photos). The mail viewer also answers at /mail/ here |
| 6631 | Ente API - the server address for the phone and desktop apps |
| 6632 | Public Albums (shared album links) |
| 6633 | Photo storage (Silo S3) |
| 6634 | Mail viewer for sign-up codes and other Ente emails |
| 6635 | Accounts app (passkeys and family invites) |
| 6636 | Ente Auth web app (your two-factor codes) |
| 6637 | Cast app (show albums on a TV) |
| 6638 | Public Locker (shared Locker links) |
| 6639 | Embed app (albums inside other web pages) |
| 6640 | Ente Paste (share text that deletes itself) |
| 6641 | Ente Locker web app (store important documents) |
| 6642 | Public Memories (shared memory links) |
The Family, Space and Legacy web apps are not in this image. Ente's own copies are used unless you set ENTE_APPS_FAMILY, ENTE_APPS_SPACE or ENTE_APPS_LEGACY to your own.
Passkeys need the Accounts app on https with a domain name; browsers refuse them on a plain IP address.
Before you install
Change localhost in PUBLIC_URL to your ZimaOS IP, like http://192.168.1.20:6630; phones cannot use localhost. The other apps use the next ports on that address (see Ports above); the phone and desktop apps need the API on 6631. The first start takes about three minutes. Sign-up codes go to the mail viewer on port 6634: open the app logs, scroll to the top and find the line that says "mail viewer login" for its password. To send real email instead, and for the other settings, see the Variables tab; add them in the app settings. If you put Ente behind your own domains, set ENTE_API_URL, ENTE_S3_URL and the ENTE_APPS_* addresses too.
Updating from the old ports (6129-6132)? Your install keeps working as it is. To get the new apps' ports, reinstall the app, or change the ports and PUBLIC_URL to 6630 and up.
The settings in the first table are already in the app settings. To use any other one, open the app settings, add the variable with your value, save, and the app restarts with it. A setting you leave out uses its default.
In the app settings
| Variable | Default value | Description |
|---|---|---|
TZ | $TZ | Your time zone. It is filled in from your ZimaOS time zone. Leave it unless you need another. |
PUBLIC_ | http://localhost:6630 | The address of the Web App, like http://your-zimaos-ip:6630. Change localhost to your ZimaOS IP, or phones and other computers cannot use Ente. The other apps use the same address with the next ports: 6631 API, 6632 Public Albums, 6633 photo storage, 6634 mail viewer, and 6635 to 6642 for Accounts, Auth, Cast, Public Locker, Embed, Paste, Locker and Public Memories. |
Addresses
| Variable | Default value | Description |
|---|---|---|
ENTE_ | — | The API address, if you put it behind your own domain, like https://api.photos.example.com. Leave it out to use PUBLIC_URL's host with port 6631. |
ENTE_ | — | The Public Albums address for shared links, if you put it behind your own domain, like https://albums.example.com. Leave it out to use PUBLIC_URL's host with port 6632. |
ENTE_ | — | The photo storage address, like https://s3.example.com. Phones upload here, so it must be reachable from them. Leave it out to use PUBLIC_URL's host with port 6633. |
ENTE_ | — | The Accounts app address (passkeys, family invites), if you put it behind your own domain, like https://accounts.example.com. Leave it out to use PUBLIC_URL's host with port 6635. |
ENTE_ | — | The Cast app address, if you put it behind your own domain, like https://cast.example.com. Leave it out to use PUBLIC_URL's host with port 6637. |
ENTE_ | — | The Public Locker address for shared Locker links, if you put it behind your own domain, like https://share.example.com. Leave it out to use PUBLIC_URL's host with port 6638. |
ENTE_ | — | The Embed app address, if you put it behind your own domain, like https://embed.example.com. Leave it out to use PUBLIC_URL's host with port 6639. |
ENTE_ | — | The Ente Paste address, if you put it behind your own domain, like https://paste.example.com. Leave it out to use PUBLIC_URL's host with port 6640. |
ENTE_ | — | The Public Memories address for shared memories, if you put it behind your own domain, like https://memories.example.com. Leave it out to use PUBLIC_URL's host with port 6642. |
ENTE_ | https://family.ente.io | The Family web app address. It is not in this image, so it stays Ente's unless you host your own copy. |
ENTE_ | https://ente.space | The Space web app address. It is not in this image, so it stays Ente's unless you host your own copy. |
ENTE_ | https://legacy.ente.com | The Legacy recovery web app address. It is not in this image, so it stays Ente's unless you host your own copy. |
ENTE_ | https://accounts.ente.io | The old Accounts address, only used to move passkeys made there. Most people leave it out. |
ENTE_ | — | The domain passkeys belong to, like example.com. Leave it out to use the Accounts app's host. Passkeys only work on https with a domain, not an IP address. |
Sign-up and accounts
| Variable | Default value | Description |
|---|---|---|
ENTE_ | false | Set to true so nobody new can sign up. Make your own account first. |
ENTE_ | — | The user id of the admin account, for the Ente command-line tool. |
Storage
| Variable | Default value | Description |
|---|---|---|
ENTE_ | 102400 | Storage for every account in GB (102400 is 100 TB). Set to 0 to keep Ente's normal 10 GB plan. |
Email (SMTP)
| Variable | Default value | Description |
|---|---|---|
ENTE_ | — | Your mail server, like smtp.gmail.com, to send sign-up codes by real email. Leave it out to use the built-in mail viewer at /mail/. |
ENTE_ | 587 | The mail server port. Usually 587, or 465 for SSL. |
ENTE_ | — | The user name for your mail server. |
ENTE_ | — | The password for your mail server. |
ENTE_ | [email protected] | The sender address. Your mail server may only accept its own address. |
ENTE_ | Ente | The sender name on the emails. |
ENTE_ | — | Set to ssl for a mail server that uses SSL from the start (port 465 sets this for you). Leave it out for 587. |
Mail viewer
| Variable | Default value | Description |
|---|---|---|
MP_ | — | Your own mail viewer login as user:password. Leave it out to use admin with the password from the app log. |
name: ente-minio
services:
ente-minio:
image: ghcr.io/hsinghhira/ente-minio:latest
container_name: ente-minio
restart: unless-stopped
stop_grace_period: 90s
privileged: true
environment:
- TZ=$TZ
- PUBLIC_URL=http://localhost:6630
ports:
- target: 8080
published: "6630"
protocol: tcp
- target: 8081
published: "6631"
protocol: tcp
- target: 8082
published: "6632"
protocol: tcp
- target: 8083
published: "6633"
protocol: tcp
- target: 8104
published: "6634"
protocol: tcp
- target: 8105
published: "6635"
protocol: tcp
- target: 8106
published: "6636"
protocol: tcp
- target: 8107
published: "6637"
protocol: tcp
- target: 8108
published: "6638"
protocol: tcp
- target: 8109
published: "6639"
protocol: tcp
- target: 8110
published: "6640"
protocol: tcp
- target: 8111
published: "6641"
protocol: tcp
- target: 8112
published: "6642"
protocol: tcp
volumes:
- type: bind
source: /DATA/AppData/$AppID/data
target: /data
bind:
create_host_path: true
healthcheck:
test: ["CMD", "curl", "-fsS", "-o", "/dev/null", "http://127.0.0.1:8080/ping"]
interval: 30s
timeout: 10s
retries: 5
start_period: 180s
deploy:
resources:
limits:
cpus: "2.00"
memory: 3072M
reservations:
cpus: "0.25"
memory: 512M
labels:
icon: https://cdn.jsdelivr.net/gh/HSinghHira/IceStore@main/Apps/ente-minio/icon.png
x-casaos:
id: com.icestore.ente-minio
envs:
- container: TZ
description:
en_US: >-
Your time zone. It is filled in from your ZimaOS time zone.
Leave it unless you need another.
- container: PUBLIC_URL
description:
en_US: >-
The address of the Web App, like
http://your-zimaos-ip:6630. Change localhost to your ZimaOS
IP, or phones and other computers cannot use Ente. The other
apps use the same address with the next ports: 6631 API,
6632 Public Albums, 6633 photo storage, 6634 mail viewer,
and 6635 to 6642 for Accounts, Auth, Cast, Public Locker,
Embed, Paste, Locker and Public Memories.
ports:
- container: "8080"
description:
en_US: Web App (Ente Photos), published on host as 6630
- container: "8081"
description:
en_US: Ente API - the server address for the phone and desktop apps, published on host as 6631
- container: "8082"
description:
en_US: Public Albums (shared album links), published on host as 6632
- container: "8083"
description:
en_US: >-
Photo storage (Silo S3). Phones and browsers upload and
download your encrypted files here, published on host as 6633
- container: "8104"
description:
en_US: Mail viewer for sign-up codes and other Ente emails, published on host as 6634
- container: "8105"
description:
en_US: Accounts app (passkeys and family invites), published on host as 6635
- container: "8106"
description:
en_US: Ente Auth web app (your two-factor codes), published on host as 6636
- container: "8107"
description:
en_US: Cast app (show albums on a TV), published on host as 6637
- container: "8108"
description:
en_US: Public Locker (shared Locker links), published on host as 6638
- container: "8109"
description:
en_US: Embed app (albums inside other web pages), published on host as 6639
- container: "8110"
description:
en_US: Ente Paste (share text that deletes itself), published on host as 6640
- container: "8111"
description:
en_US: Ente Locker web app (store important documents), published on host as 6641
- container: "8112"
description:
en_US: Public Memories (shared memory links), published on host as 6642
volumes:
- container: /data
description:
en_US: >-
Your encrypted photos and videos (Silo), the database,
secret keys and settings.
x-casaos:
id: com.icestore.ente-minio
architectures:
- amd64
- arm64
main: ente-minio
author: HSinghHira
category: Media
developer: ente-io
icon: https://cdn.jsdelivr.net/gh/HSinghHira/IceStore@main/Apps/ente-minio/icon.png
thumbnail: https://cdn.jsdelivr.net/gh/HSinghHira/IceStore@main/Apps/ente-minio/screenshot-1.png
screenshot_link:
- https://cdn.jsdelivr.net/gh/HSinghHira/IceStore@main/Apps/ente-minio/screenshot-1.png
- https://cdn.jsdelivr.net/gh/HSinghHira/IceStore@main/Apps/ente-minio/screenshot-2.png
- https://cdn.jsdelivr.net/gh/HSinghHira/IceStore@main/Apps/ente-minio/screenshot-3.png
- https://cdn.jsdelivr.net/gh/HSinghHira/IceStore@main/Apps/ente-minio/screenshot-4.png
title:
en_US: Ente - MinIO S3
tagline:
en_US: End-to-end encrypted photo storage, with Silo for the files
description:
en_US: >-
Ente is a self-hosted, end-to-end encrypted place to store, share and
rediscover your photos and videos on all your devices. This is Ente in
a single container, with PostgreSQL, Silo, the community fork of MinIO that is still open source, and a mail viewer
for sign-up codes inside. Secret keys and passwords are made for you on
first start.
**Features**
- End-to-end encryption for every photo and video
- All ten Ente web apps, each on its own port: Photos, Public
Albums, Accounts, Auth, Cast, Locker, Public Locker, Embed,
Paste and Public Memories
- Works with the Ente phone and desktop apps
- Silo (the open-source fork of MinIO) for S3-compatible photo storage
- Built-in mail viewer on port 6634 for sign-up codes, or use your
own email server
- No 10 GB limit: every account gets 100 TB by default
**How to use?**
1. Open Ente - MinIO S3 from the Zima OS dashboard.
2. Sign up with your email and a password.
3. Open the mail viewer on port 6634 to read your sign-up code.
4. Type the code to finish signing up.
5. In the Ente phone app, tap the first screen 7 times and set the
server to http://your-zimaos-ip:6631.
6. Upload photos and share albums.
tips:
before_install:
en_US: >-
1. Open the app configuration before you install.
2. Find PUBLIC_URL. Change localhost to your ZimaOS IP, for example
http://192.168.1.20:6630 (your own IP will differ). Phones
cannot use localhost.
3. More settings, like your own email server and sign-up, are listed
on the Ente - MinIO S3 page at
https://icestore.hsinghhira.me/app/ente-minio/ (Variables tab). You
can add them now or later in the app settings.
4. Start the installation.
5. Wait about three minutes. The first start sets up the database.
6. Open the app logs and scroll to the top. Find the line that says
"mail viewer login". Write down the password.
7. Open http://your-zimaos-ip:6630 in your browser. Sign up with
your email and a password.
8. Open http://your-zimaos-ip:6634 in a new tab. Sign in
as admin with the mail password. Copy the code from the email.
9. Type the code in Ente to finish signing up.
10. For the phone app: tap the first screen 7 times. Set the server
to http://your-zimaos-ip:6631 and sign in.
index: /
port_map: "6630"
scheme: http
is_uncontrolled: false
version: "20fb631"
update_at: "2026-10-27"
release_notes:
en_US: |-
- New ports: 6630 Web App, 6631 API, 6632 Public Albums, 6633 photo storage,
6634 mail viewer, 6635-6642 the other web apps
- Adds the Accounts (passkeys), Auth, Cast, Public Locker, Embed, Paste, Locker
and Public Memories apps, and tells the Ente server where each one is
- Mail viewer has its own port; /mail/ on the Web App still works
- Old installs on 6129-6132 keep working: every address counts up from
PUBLIC_URL's port. Reinstall to get the new apps' ports
- New settings ENTE_APPS_* (Ente's own names); ENTE_ALBUMS_URL still works
- Single-container Ente with Silo storage and one data folder
- Database, storage and museum keys are made on first start, so each install gets its own
- Sign-up codes go to the built-in mail viewer unless you set your own email server
- Every account gets 100 TB instead of Ente's 10 GB (ENTE_AIO_STORAGE_GB)
- server 20fb631, web 817ce84 (Ente only publishes commit tags; they follow latest)
- silo RELEASE.2026-10-18T00-00-00Z, mailpit v1.32.0, PostgreSQL 15
repo: "https://github.com/ente/ente"
support: "https://github.com/ente/ente/issues"
docs: "https://ente.com/help/self-hosting/"