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
Ente - MinIO S3 screenshot 1: Phone appEnte - MinIO S3 screenshot 2: End-to-end encryptedEnte - MinIO S3 screenshot 3: Ente PhotosEnte - MinIO S3 screenshot 4: Ente is open source

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

  1. Open Ente - MinIO S3 from your dashboard.
  2. Sign up with your email and a password.
  3. Open the mail viewer at http://your-zimaos-ip: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.

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

VariableDefault valueDescription
TZ$TZYour time zone. It is filled in from your ZimaOS time zone. Leave it unless you need another.
PUBLIC_URLhttp://localhost:6630The 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

VariableDefault valueDescription
ENTE_API_URL—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_APPS_PUBLIC_ALBUMS—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_S3_URL—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_APPS_ACCOUNTS—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_APPS_CAST—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_APPS_PUBLIC_LOCKER—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_APPS_EMBED_ALBUMS—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_APPS_PUBLIC_PASTE—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_APPS_PUBLIC_MEMORIES—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_APPS_FAMILYhttps://family.ente.ioThe Family web app address. It is not in this image, so it stays Ente's unless you host your own copy.
ENTE_APPS_SPACEhttps://ente.spaceThe Space web app address. It is not in this image, so it stays Ente's unless you host your own copy.
ENTE_APPS_LEGACYhttps://legacy.ente.comThe Legacy recovery web app address. It is not in this image, so it stays Ente's unless you host your own copy.
ENTE_APPS_ACCOUNTS_LEGACYhttps://accounts.ente.ioThe old Accounts address, only used to move passkeys made there. Most people leave it out.
ENTE_WEBAUTHN_RPID—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

VariableDefault valueDescription
ENTE_INTERNAL_DISABLE_REGISTRATIONfalseSet to true so nobody new can sign up. Make your own account first.
ENTE_INTERNAL_ADMIN—The user id of the admin account, for the Ente command-line tool.

Storage

VariableDefault valueDescription
ENTE_AIO_STORAGE_GB102400Storage for every account in GB (102400 is 100 TB). Set to 0 to keep Ente's normal 10 GB plan.

Email (SMTP)

VariableDefault valueDescription
ENTE_SMTP_HOST—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_SMTP_PORT587The mail server port. Usually 587, or 465 for SSL.
ENTE_SMTP_USERNAME—The user name for your mail server.
ENTE_SMTP_PASSWORD—The password for your mail server.
ENTE_SMTP_EMAIL[email protected]The sender address. Your mail server may only accept its own address.
ENTE_SMTP_SENDER_NAMEEnteThe sender name on the emails.
ENTE_SMTP_ENCRYPTION—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

VariableDefault valueDescription
MP_UI_AUTH—Your own mail viewer login as user:password. Leave it out to use admin with the password from the app log.
docker-compose.yml
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/"