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) shell- sudo 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) and- libsodium(high level API for encryption) via package manager.shell- sudo apt install postgresql sudo apt install libsodium23 libsodium-dev- Start the database using - systemdautomatically when the system starts.shell- sudo systemctl enable postgresql sudo systemctl start postgresql- Ensure the database is running using shell- sudo systemctl status postgresql
- pkg-config: Install- pkg-configfor dependency handling.shell- sudo apt install pkg-config
- yarn, npm and Node.js: Needed for building the web application. - Install npm and Node using your package manager. shell- sudo 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/enteStep 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 - ./mainrelative to- serverdirectoryshell- go build cmd/museum/main.go
- Create - museum.yamlfile inside- serverfor configuring the needed variables. You can copy the templated configuration file for editing with ease.shell- cp 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 to- ente: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/appsfor easier management.shell- mkdir -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.
