Manual setup (without Docker)
If you wish to run Ente from source without using Docker, follow the steps described below:
Requirements
Go: Install Go on your system. This is needed for building Museum (Ente's server)
shellsudo apt update && sudo apt upgrade sudo apt install golang-go
Alternatively, you can also download the latest binaries from the official website.
PostgreSQL and
libsodium
: Install PostgreSQL (database) andlibsodium
(high level API for encryption) via package manager.shellsudo apt install postgresql sudo apt install libsodium23 libsodium-dev
Start the database using
systemd
automatically when the system starts.shellsudo systemctl enable postgresql sudo systemctl start postgresql
Ensure the database is running using
shellsudo systemctl status postgresql
pkg-config
: Installpkg-config
for dependency handling.shellsudo apt install pkg-config
yarn, npm and Node.js: Needed for building the web application.
Install npm and Node using your package manager.
shellsudo apt install npm nodejs
Install yarn by following the official documentation
Git: Needed for cloning the repository and pulling in latest changes
Caddy: Used for setting reverse proxy and file servers
Object Storage: Ensure you have an object storage configured for usage, needed for storing files. You can choose to run MinIO or Garage locally without Docker, however, an external bucket will be reliable and suited for long-term storage.
Step 1: Clone the repository
Start by cloning Ente's repository from GitHub to your local machine.
git clone https://github.com/ente-io/ente
Step 2: Configure Museum (Ente's server)
Install all the needed dependencies for the server.
shell# Change into server directory, where the source code for Museum is # present inside the repo cd ente/server # Install the needed dependencies go mod tidy
Build the server. The server binary should be available as
./main
relative toserver
directoryshellgo build cmd/museum/main.go
Create
museum.yaml
file insideserver
for configuring the needed variables. You can copy the templated configuration file for editing with ease.shellcp config/example.yaml ./museum.yaml
TIP
Make sure to enter the correct values for the database and object storage.
You should consider generating values for JWT and encryption keys for emails if you intend to use for long-term needs.
You can do by running the following command inside
ente/server
, assuming you cloned the repository toente
:shell# Change into the ente/server cd ente/server # Generate secrets go run tools/gen-random-keys/main.go
Run the server
shell./main
Museum should be accessible at
http://localhost:8080
Step 3: Configure Web Application
Install the dependencies for web application. Enable corepack if prompted.
shell# Change into web directory, this is where all the applications # will be managed and built cd web # Install dependencies yarn install
Configure the environment variables in your corresponding shell's configuration file (
.bashrc
,.zshrc
)shell# Replace this with actual endpoint for Museum export NEXT_PUBLIC_ENTE_ENDPOINT=http://localhost:8080 # Replace this with actual endpoint for Albums export NEXT_PUBLIC_ENTE_ALBUMS_ENDPOINT=http://localhost:3002
Build the needed applications (Photos, Accounts, Auth, Cast) as per your needs:
shell# These commands are executed inside web directory # Build photos. Build output to be served is present at apps/photos/out yarn build # Build accounts. Build output to be served is present at apps/accounts/out yarn build:accounts # Build auth. Build output to be served is present at apps/auth/out yarn build:auth # Build cast. Build output to be served is present at apps/cast/out yarn build:cast
Copy the output files to
/var/www/ente/apps
for easier management.shellmkdir -p /var/www/ente/apps # Photos sudo cp -r apps/photos/out /var/www/ente/apps/photos # Accounts sudo cp -r apps/accounts/out /var/www/ente/apps/accounts # Auth sudo cp -r apps/auth/out /var/www/ente/apps/auth # Cast sudo cp -r apps/cast/out /var/www/ente/apps/cast
Set up file server using Caddy by editing
Caddyfile
, present at/etc/caddy/Caddyfile
.groovy# Replace the ports with domain names if you have subdomains configured and need HTTPS :3000 { root * /var/www/ente/apps/out/photos file_server try_files {path} {path}.html /index.html } :3001 { root * /var/www/ente/apps/out/accounts file_server try_files {path} {path}.html /index.html } :3002 { root * /var/www/ente/apps/out/photos file_server try_files {path} {path}.html /index.html } :3003 { root * /var/www/ente/apps/out/auth file_server try_files {path} {path}.html /index.html } :3004 { root * /var/www/ente/apps/out/cast file_server try_files {path} {path}.html /index.html }
The web application for Ente Photos should be accessible at http://localhost:3000, check out the default ports for more information.
TIP
Check out post-installations steps for further usage.