`
1. `8080:8080`: Museum (Ente's server)
diff --git a/docs/docs/self-hosting/guides/Tailscale.md b/docs/docs/self-hosting/guides/Tailscale.md
index 1f0a7593ed..ba31ac5f8f 100644
--- a/docs/docs/self-hosting/guides/Tailscale.md
+++ b/docs/docs/self-hosting/guides/Tailscale.md
@@ -2,39 +2,63 @@
title: Self Hosting with Tailscale (Community)
description: Guides for self-hosting Ente Photos and/or Ente Auth with Tailscale
---
+
# Guide
-This guide aims to achieve self-hosting Ente photos or Ente-Auth with tailscale (TSDPROXY) without exposing any port OR if someone is behind CGNAT and cannot open any port on the internet but want to run their own selfhosted service for themselves, friends and family only.
+This guide aims to achieve self-hosting Ente photos or Ente-Auth with tailscale
+(TSDPROXY) without exposing any port OR if someone is behind CGNAT and cannot
+open any port on the internet but want to run their own selfhosted service for
+themselves, friends and family only.
Before getting start keep the following NOTE in mind.
-> [!NOTE]
-> If someone is behind double or triple CGNAT; must install tailscale system wide by running `curl -fsSL https://tailscale.com/install.sh | sh` in your linux terminal and `sudo tailscale up` otherwise dns resolver will fail and uploading will not work. This is not necessary for those who are not behing CGNAT.
-> This guide also work on docker rootless and normal.
+> [!NOTE] If someone is behind double or triple CGNAT; must install tailscale
+> system wide by running `curl -fsSL https://tailscale.com/install.sh | sh` in
+> your linux terminal and `sudo tailscale up` otherwise dns resolver will fail
+> and uploading will not work. This is not necessary for those who are not
+> behing CGNAT. This guide also work on docker rootless and normal.
-> [!CAUTION]
-Remember that current docker update 28.0.0 has some bug and cannot connect to external network. Make sure to install docker-ce 27.5.0, docker-ce-rootless-extras 27.5.0 and docker-ce-cli 27.5.0. Hopefully docker 28.1.0 will resolve this issue in next week. Refrence links are [Moby Github Repo Issues 49511](https://github.com/moby/moby/issues/49511) and [Moby Github Repo Issues 49519](https://github.com/moby/moby/issues/49519)
+> [!CAUTION] Remember that current docker update 28.0.0 has some bug and cannot
+> connect to external network. Make sure to install docker-ce 27.5.0,
+> docker-ce-rootless-extras 27.5.0 and docker-ce-cli 27.5.0. Hopefully docker
+> 28.1.0 will resolve this issue in next week. Refrence links are
+> [Moby Github Repo Issues 49511](https://github.com/moby/moby/issues/49511) and
+> [Moby Github Repo Issues 49519](https://github.com/moby/moby/issues/49519)
-> [!IMPORTANT]
-> For Docker rootless, the user must have local permissions for all directories required by the Ente-photos self-hosted server. This can be achieved by running `sudo chown -R 1000:1000 /home/ubuntu/docker/ente`. In the Linux terminal, you can check the UID with `id -u` or simply `id`. The first user typically has UID 1000.
-> To allow listening and pinging on any port without root privileges, create a file called `/etc/sysctl.d/99-rootless.conf` with the following content:
+> [!IMPORTANT] For Docker rootless, the user must have local permissions for all
+> directories required by the Ente-photos self-hosted server. This can be
+> achieved by running `sudo chown -R 1000:1000 /home/ubuntu/docker/ente`. In the
+> Linux terminal, you can check the UID with `id -u` or simply `id`. The first
+> user typically has UID 1000. To allow listening and pinging on any port
+> without root privileges, create a file called `/etc/sysctl.d/99-rootless.conf`
+> with the following content:
+>
> ```
> net.ipv4.ip_unprivileged_port_start=0
> net.ipv4.ping_group_range = 0 2147483647
> ```
-> than run `sudo sysctl --system`.
-> Create `~/.config/systemd/user/docker.service.d/override.conf` with the following content:
+>
+> than run `sudo sysctl --system`. Create
+> `~/.config/systemd/user/docker.service.d/override.conf` with the following
+> content:
+>
> ```
> [Service]
> Environment="DOCKERD_ROOTLESS_ROOTLESSKIT_NET=slirp4netns"
> Environment="DOCKERD_ROOTLESS_ROOTLESSKIT_PORT_DRIVER=slirp4netns"
> ```
-> and Restart the docker daemon
-> `systemctl --user restart docker`
-> Instead of `--volume /var/run/docker.sock:/var/run/docker.sock` in TSDPROXY compose.yaml, use `--volume $XDG_RUNTIME_DIR/docker.sock:/var/run/docker.sock`
+>
+> and Restart the docker daemon `systemctl --user restart docker` Instead of
+> `--volume /var/run/docker.sock:/var/run/docker.sock` in TSDPROXY compose.yaml,
+> use `--volume $XDG_RUNTIME_DIR/docker.sock:/var/run/docker.sock`
+
+## GETTING START WITH SETUP
+
+First of all create a directory
+`sudo mkdir -p /home/ubuntu/docker/tsdproxy/config` than `cd docker/tsdproxy`
+and create compose.yaml file by running `sudo nano compose.yaml`. Populate it
+with the following:
-## GETTING START WITH SETUP ##
-First of all create a directory `sudo mkdir -p /home/ubuntu/docker/tsdproxy/config` than `cd docker/tsdproxy` and create compose.yaml file by running `sudo nano compose.yaml`. Populate it with the following:
```
services:
tsdproxy:
@@ -62,9 +86,18 @@ networks:
proxy:
name: proxy
```
-Now login into your tailscale account admin counsle > settings > keys > Generate authkey. Give any description and must select resuable, because the key get purged if not selected after rebooting machine. It is advisable to create **Tags** in **ACLs settings** `tag: tsdproxy` `tag: ente` `tag: minio` as well. This will create a tag nodes with no key expirory. One is safe to reboot restart docker or machine.
-> Copy the generated authkey as it is shown only once.
-Make tsdproxy.yaml file in `cd docker/tsdproxy/config` by running `sudo nano tsdproxy.yaml` and pupolate it with the following contant:
+
+Now login into your tailscale account admin counsle > settings > keys > Generate
+authkey. Give any description and must select resuable, because the key get
+purged if not selected after rebooting machine. It is advisable to create
+**Tags** in **ACLs settings** `tag: tsdproxy` `tag: ente` `tag: minio` as well.
+This will create a tag nodes with no key expirory. One is safe to reboot restart
+docker or machine.
+
+> Copy the generated authkey as it is shown only once. Make tsdproxy.yaml file
+> in `cd docker/tsdproxy/config` by running `sudo nano tsdproxy.yaml` and
+> pupolate it with the following contant:
+
```
defaultproxyprovider: default
docker:
@@ -87,12 +120,20 @@ log:
json: false
proxyaccesslog: true
```
-In the same directory run `sudo nano authkey` and paste the authkey just copied earlier from tailscale admin counsel.
-> Here Tailscale (TSDPROXY) setup is complet in all respect. Just run `docker compose up -d`. Check your tailscale amdin counsel and you will see tsdproxy node up and running. Make sure that **HTTPS** is enabled in tailscale DNS settings.
-> You can visit the TSDPROXY web GUI by https://tsdproxy.xyz.ts.net. (xyz is change value for everyone)
-## ente Part ##
+In the same directory run `sudo nano authkey` and paste the authkey just copied
+earlier from tailscale admin counsel.
+
+> Here Tailscale (TSDPROXY) setup is complet in all respect. Just run
+> `docker compose up -d`. Check your tailscale amdin counsel and you will see
+> tsdproxy node up and running. Make sure that **HTTPS** is enabled in tailscale
+> DNS settings. You can visit the TSDPROXY web GUI by
+> https://tsdproxy.xyz.ts.net. (xyz is change value for everyone)
+
+## ente Part
+
First make the following necessary files/directories:
+
```
sudo mkdir -p /home/ubuntu/docker/ente/custom-logs
sudo mkdir -p /home/ubuntu/docker/ente/data
@@ -100,9 +141,14 @@ sudo mkdir -p /home/ubuntu/docker/ente/minio-data
sudo mkdir -p /home/ubuntu/docker/ente/postgres-data
sudo mkdir -p /home/ubuntu/docker/ente/scripts/compose
```
-Than give user permission for each of the above directory. `sudo chown -R 1000:1000 /home/ubuntu/docker/ente/custom-logs` etc etc. Make sure not to skip `/home/ubuntu/docker/tsdproxy/config`
-`cd docker/ente/script/compose` and run `sudo nano credentials.yaml` than populate it with the following:
+Than give user permission for each of the above directory.
+`sudo chown -R 1000:1000 /home/ubuntu/docker/ente/custom-logs` etc etc. Make
+sure not to skip `/home/ubuntu/docker/tsdproxy/config`
+
+`cd docker/ente/script/compose` and run `sudo nano credentials.yaml` than
+populate it with the following:
+
```
db:
host: postgres
@@ -134,7 +180,9 @@ s3:
bucket: scw-eu-fr-v3
```
-In the same directory run `sudo nano minio-provision.sh` and populate it with the following contant:
+In the same directory run `sudo nano minio-provision.sh` and populate it with
+the following contant:
+
```
#!/bin/sh
@@ -154,7 +202,9 @@ mc mb -p wasabi-eu-central-2-v3
mc mb -p scw-eu-fr-v3
```
-Now `cd docker/ente` and run `sudo nano docker-compose.yaml` and populate it with the following:
+Now `cd docker/ente` and run `sudo nano docker-compose.yaml` and populate it
+with the following:
+
```
services:
museum:
@@ -255,32 +305,52 @@ services:
networks:
ente:
name: ente
-
+
proxy:
external: true
```
-> Thats it. Run `docker compose up -d`. Wait till every container become healthy. Open web browser. Make sure tailscale is installed on the machine. Visit https://ente.xyz.ts.net/ping. It will pong. All good if you see it. First time it will take minute or two to get SSL cert. Downnload Desktop or mobile app. Tap 7 time on the screen, which will prompt developer mode. Add https://ente.xyz.ts.net. Add new user. When asked for OTP. Just go to linux terminal and run `docker logs ente-museum-1`. Search for userauth. Feed the six digit and Done.
+> Thats it. Run `docker compose up -d`. Wait till every container become
+> healthy. Open web browser. Make sure tailscale is installed on the machine.
+> Visit https://ente.xyz.ts.net/ping. It will pong. All good if you see it.
+> First time it will take minute or two to get SSL cert. Downnload Desktop or
+> mobile app. Tap 7 time on the screen, which will prompt developer mode. Add
+> https://ente.xyz.ts.net. Add new user. When asked for OTP. Just go to linux
+> terminal and run `docker logs ente-museum-1`. Search for userauth. Feed the
+> six digit and Done.
+
+> For getting 100TB (limitless) storage. Just Install ente-cli for windows.
+> Extract it and add folder. Name it **export**. Add config.yaml file along and
+> populate it with the following:
-> For getting 100TB (limitless) storage. Just Install ente-cli for windows. Extract it and add folder. Name it **export**. Add config.yaml file along and populate it with the following:
```
endpoint:
api: "https://ente.xyz.ts.net"
accounts: "http://localhost:3001"
-
+
log: false
```
-Right-Click in the directory where you have extracted ente-cli. Select `open in terminal`. Run
+
+Right-Click in the directory where you have extracted ente-cli. Select
+`open in terminal`. Run
+
```
.\ente.exe account bob # change bob to yours
```
-Hit Enter twice.
-For export directory, just write export. As already created **export** folder earlier.
-**Write email. The one which is already used befor when creating ente account in ente desktop app.**
-Type the same Password used before for the account.Run
+
+Hit Enter twice. For export directory, just write export. As already created
+**export** folder earlier. **Write email. The one which is already used befor
+when creating ente account in ente desktop app.** Type the same Password used
+before for the account.Run
+
```
.\ente.ext account list
```
+
This will list all account details. Copy Acount ID.
-> Navigate to museum.yaml file. `cd docker/ente`. Run `sudo nano museum.yaml` and add the account ID under Admins. Delete any previous entries.
-Restart ente-museum-1 container from linux terminal. Run `docker restart ente-museum-1`. All well, now you will have 100TB storage. Repeat if for any other accounts you want to give unlimited storage access.
+
+> Navigate to museum.yaml file. `cd docker/ente`. Run `sudo nano museum.yaml`
+> and add the account ID under Admins. Delete any previous entries. Restart
+> ente-museum-1 container from linux terminal. Run
+> `docker restart ente-museum-1`. All well, now you will have 100TB storage.
+> Repeat if for any other accounts you want to give unlimited storage access.
diff --git a/docs/docs/self-hosting/guides/admin.md b/docs/docs/self-hosting/guides/admin.md
index 3f80d1478e..10d05fb4d0 100644
--- a/docs/docs/self-hosting/guides/admin.md
+++ b/docs/docs/self-hosting/guides/admin.md
@@ -14,7 +14,7 @@ explicit whitelist of admins.
> [!NOTE]
>
-> The first user is only treated as the admin if the list of admins in the
+> The first user is only treated as the admin if the list of admins in the
> configuration is empty.
>
> Also, if at some point you delete the first user, then you will need to define
@@ -54,11 +54,10 @@ command to find the user id of any account.
# Administering your custom server
-> [!NOTE]
-> For the first user (admin) to perform administrative actions using the CLI, their
-> userID must be whitelisted in the `museum.yaml` configuration file under
-> `internal.admins`. While the first user is automatically granted admin privileges
-> on the server, this additional step is required for CLI operations.
+> [!NOTE] For the first user (admin) to perform administrative actions using the
+> CLI, their userID must be whitelisted in the `museum.yaml` configuration file
+> under `internal.admins`. While the first user is automatically granted admin
+> privileges on the server, this additional step is required for CLI operations.
You can use
[Ente's CLI](https://github.com/ente-io/ente/releases?q=tag%3Acli-v0) to
diff --git a/docs/docs/self-hosting/guides/configuring-s3.md b/docs/docs/self-hosting/guides/configuring-s3.md
index f4095db2eb..55f2f3b356 100644
--- a/docs/docs/self-hosting/guides/configuring-s3.md
+++ b/docs/docs/self-hosting/guides/configuring-s3.md
@@ -29,7 +29,7 @@ A file upload flows as follows:
The upshot of this is that _both_ the client and museum should be able to reach
your S3 bucket.
-## Configuring S3
+## Configuring S3
The URL for the S3 bucket is configured in
[scripts/compose/credentials.yaml](https://github.com/ente-io/ente/blob/main/server/scripts/compose/credentials.yaml#L10).
@@ -38,9 +38,8 @@ You can edit this file directly while testing, though it is more robust to
create a `museum.yaml` (in the same folder as the Docker compose file) and to
setup your custom configuration there.
-> [!TIP]
-> For more details about these configuration objects, see the documentation for
-> the `s3` object in
+> [!TIP] For more details about these configuration objects, see the
+> documentation for the `s3` object in
> [configurations/local.yaml](https://github.com/ente-io/ente/blob/main/server/configurations/local.yaml).
By default, you only need to configure the endpoint for the first bucket.
@@ -56,13 +55,14 @@ components of the setup to communicate with each other seamlessly.
The same principle applies if you're deploying to your custom domain.
-## Replication
+## Replication

+
Community contributed diagram of Ente's replication process
> [!IMPORTANT]
->
+>
> As of now, replication works only if all the 3 storage type needs are
> fulfilled (1 hot, 1 cold and 1 glacier storage).
>
@@ -72,10 +72,10 @@ If you're wondering why there are 3 buckets on the MinIO UI - that's because our
production instance uses these to perform
[replication](https://ente.io/reliability/).
-If you're also wondering about why the bucket names are specifically what they are,
-it's because that is exactly what we are using on our production instance.
-We use `b2-eu-cen` as hot, `wasabi-eu-central-2-v3` as cold (also the secondary hot)
-and `scw-eu-fr-v3` as glacier storage. As of now, all of this is hardcoded.
+If you're also wondering about why the bucket names are specifically what they
+are, it's because that is exactly what we are using on our production instance.
+We use `b2-eu-cen` as hot, `wasabi-eu-central-2-v3` as cold (also the secondary
+hot) and `scw-eu-fr-v3` as glacier storage. As of now, all of this is hardcoded.
Hence, the same hardcoded configuration is applied when you self host Ente.
In a self hosted Ente instance replication is turned off by default. When
@@ -84,16 +84,15 @@ other two are ignored. Only the names here are specifically fixed, but in the
configuration body you can put any other keys. It does not have any relation
with `b2`, `wasabi` or even `scaleway`.
-Use the `s3.hot_storage.primary` option if you'd like to set one of the other
+Use the `s3.hot_storage.primary` option if you'd like to set one of the other
predefined buckets as the primary bucket.
-## SSL Configuration
+## SSL Configuration
> [!NOTE]
>
> If you need to configure SSL, you'll need to turn off `s3.are_local_buckets`
> (which disables SSL in the default starter compose template).
->
Disabling `s3.are_local_buckets` also switches to the subdomain style URLs for
the buckets. However, not all S3 providers support these. In particular, MinIO
@@ -121,4 +120,4 @@ s3:
endpoint: http://:3200
region: eu-central-2
bucket: b2-eu-cen
-```
\ No newline at end of file
+```
diff --git a/docs/docs/self-hosting/guides/custom-server/index.md b/docs/docs/self-hosting/guides/custom-server/index.md
index 86060ba909..63ba371eb8 100644
--- a/docs/docs/self-hosting/guides/custom-server/index.md
+++ b/docs/docs/self-hosting/guides/custom-server/index.md
@@ -111,5 +111,5 @@ network, you need to use the public IP or hostname.
> [!TIP]
>
> If you're having trouble uploading from your mobile app, it is likely that
-> museum is not able to connect to your S3 storage. See the [Configuring
-> S3](/self-hosting/guides/configuring-s3) guide for more details.
+> museum is not able to connect to your S3 storage. See the
+> [Configuring S3](/self-hosting/guides/configuring-s3) guide for more details.
diff --git a/docs/docs/self-hosting/guides/from-source.md b/docs/docs/self-hosting/guides/from-source.md
index df3ec7e5fb..4284124487 100644
--- a/docs/docs/self-hosting/guides/from-source.md
+++ b/docs/docs/self-hosting/guides/from-source.md
@@ -3,13 +3,12 @@ title: Ente from Source
description: Getting started self hosting Ente Photos and/or Ente Auth
---
-
# Ente from Source
-> [!WARNING] NOTE
-> The below documentation will cover instructions about self-hosting the web app manually. If you
-> want to deploy Ente hassle free, use the [one line](https://ente.io/blog/self-hosting-quickstart/)
-> command to setup Ente. This guide might be deprecated in the near future.
+> [!WARNING] NOTE The below documentation will cover instructions about
+> self-hosting the web app manually. If you want to deploy Ente hassle free, use
+> the [one line](https://ente.io/blog/self-hosting-quickstart/) command to setup
+> Ente. This guide might be deprecated in the near future.
## Installing Docker
@@ -63,8 +62,9 @@ apps and configure them to use your
## Web app with Docker and Compose
-The instructoins in previous section were just a temporary way to run the web app locally.
-To run the web apps as services, the user has to build a docker image manually.
+The instructoins in previous section were just a temporary way to run the web
+app locally. To run the web apps as services, the user has to build a docker
+image manually.
> [!IMPORTANT]
>
@@ -144,7 +144,7 @@ docker build -t : --no-cache --progress plain .
You can always edit the Dockerfile and remove the steps for apps which you do
not intend to install on your system (like auth or cast) and opt out of those.
-Regarding Albums App, take a note that they are not apps with navigable pages,
+Regarding Albums App, take a note that they are not apps with navigable pages,
if accessed on the web-browser they will simply redirect to ente.web.io.
## compose.yaml
@@ -175,17 +175,17 @@ docker compose up -d # --build
docker compose logs
```
-## Configure App Endpoints
+## Configure App Endpoints
-> [!NOTE]
-> Previously, this was dependent on the env variables `NEXT_ENTE_PUBLIC_ACCOUNTS_ENDPOINT`
-> and etc. Please check the below documentation to update your setup configurations
+> [!NOTE] Previously, this was dependent on the env variables
+> `NEXT_ENTE_PUBLIC_ACCOUNTS_ENDPOINT` and etc. Please check the below
+> documentation to update your setup configurations
-You can configure the web endpoints for the other apps including Accounts, Albums
-Family and Cast in your `museum.yaml` configuration file. Checkout
+You can configure the web endpoints for the other apps including Accounts,
+Albums Family and Cast in your `museum.yaml` configuration file. Checkout
[`local.yaml`](https://github.com/ente-io/ente/blob/543411254b2bb55bd00a0e515dcafa12d12d3b35/server/configurations/local.yaml#L76-L89)
-to configure the endpoints. Make sure to setup up your DNS Records accordingly to the
-similar URL's you set up in `museum.yaml`.
+to configure the endpoints. Make sure to setup up your DNS Records accordingly
+to the similar URL's you set up in `museum.yaml`.
Next part is to configure the web server.
diff --git a/docs/docs/self-hosting/guides/web-app.md b/docs/docs/self-hosting/guides/web-app.md
index 015cb7d986..a3061e3004 100644
--- a/docs/docs/self-hosting/guides/web-app.md
+++ b/docs/docs/self-hosting/guides/web-app.md
@@ -5,22 +5,20 @@ description:
server
---
-
-> [!WARNING] NOTE
-> This page covers documentation around self-hosting the web app manually. If you
-> want to deploy Ente hassle free, please use the [one line](https://ente.io/blog/self-hosting-quickstart/)
-> command to setup Ente. This guide might be deprecated in the near future.
+> [!WARNING] NOTE This page covers documentation around self-hosting the web app
+> manually. If you want to deploy Ente hassle free, please use the
+> [one line](https://ente.io/blog/self-hosting-quickstart/) command to setup
+> Ente. This guide might be deprecated in the near future.
# Web app
The getting started instructions mention using `yarn dev` (which is an alias of
`yarn dev:photos`) to serve your web app.
->[!IMPORTANT]
-> Please note that Ente's Web App supports the Yarn version 1.22.xx or 1.22.22 specifically.
-> Make sure to install the right version or modify your yarn installation to meet the requirements.
-> The user might end up into unknown version and dependency related errors if yarn
-> is on different version.
+> [!IMPORTANT] Please note that Ente's Web App supports the Yarn version 1.22.xx
+> or 1.22.22 specifically. Make sure to install the right version or modify your
+> yarn installation to meet the requirements. The user might end up into unknown
+> version and dependency related errors if yarn is on different version.
```sh
cd ente/web
@@ -146,15 +144,15 @@ docker compose logs
## Configure App Endpoints
-> [!NOTE]
-> Previously, this was dependent on the env variables `NEXT_ENTE_PUBLIC_ACCOUNTS_ENDPOINT`
-> and etc. Please check the below documentation to update your setup configurations
+> [!NOTE] Previously, this was dependent on the env variables
+> `NEXT_ENTE_PUBLIC_ACCOUNTS_ENDPOINT` and etc. Please check the below
+> documentation to update your setup configurations
-You can configure the web endpoints for the other apps including Accounts, Albums
-Family and Cast in your `museum.yaml` configuration file. Checkout
+You can configure the web endpoints for the other apps including Accounts,
+Albums Family and Cast in your `museum.yaml` configuration file. Checkout
[`local.yaml`](https://github.com/ente-io/ente/blob/543411254b2bb55bd00a0e515dcafa12d12d3b35/server/configurations/local.yaml#L76-L89)
-to configure the endpoints. Make sure to setup up your DNS Records accordingly to the
-similar URL's you set up in `museum.yaml`.
+to configure the endpoints. Make sure to setup up your DNS Records accordingly
+to the similar URL's you set up in `museum.yaml`.
Next part is to configure the web server.
diff --git a/docs/docs/self-hosting/museum.md b/docs/docs/self-hosting/museum.md
index 515616ac32..cb5263104f 100644
--- a/docs/docs/self-hosting/museum.md
+++ b/docs/docs/self-hosting/museum.md
@@ -16,10 +16,10 @@ If you used our quickstart script, your `my-ente` directory will include a
PostgreSQL and MinIO.
> [!TIP]
->
+>
> Always do `docker compose down` inside your `my-ente` directory. If you've
-> made changes to `museum.yaml`, restart the containers with `docker compose up
-> -d ` to see your changes in action.
+> made changes to `museum.yaml`, restart the containers with
+> `docker compose up -d ` to see your changes in action.
## S3 buckets
@@ -33,19 +33,20 @@ Check out [Configuring S3](/self-hosting/guides/configuring-s3.md) to understand
more about configuring S3 buckets.
MinIO uses the port `3200` for API Endpoints and their web app runs over
-`:3201`. You can login to MinIO Web Console by opening `localhost:3201` in your browser.
+`:3201`. You can login to MinIO Web Console by opening `localhost:3201` in your
+browser.
-If you face any issues related to uploads then checkout [Troubleshooting bucket
-CORS](/self-hosting/troubleshooting/bucket-cors) and [Frequently encountered S3
-errors](/self-hosting/guides/configuring-s3#frequently-encountered-errors).
+If you face any issues related to uploads then checkout
+[Troubleshooting bucket CORS](/self-hosting/troubleshooting/bucket-cors) and
+[Frequently encountered S3 errors](/self-hosting/guides/configuring-s3#frequently-encountered-errors).
## Web apps
The web apps for Ente Photos is divided into multiple sub-apps like albums,
-cast, auth, etc. These endpoints are configurable in the museum.yaml under the
+cast, auth, etc. These endpoints are configurable in `museum.yaml` under the
`apps.*` section.
-For example,
+For example,
```yaml
apps:
@@ -55,17 +56,16 @@ apps:
family: https://family.myente.xyz
```
->[!IMPORTANT]
->By default, all the values redirect to our publicly hosted production services.
->For example, if `public-albums` is not configured your shared album will
->use the `albums.ente.io` URL.
+> [!IMPORTANT] By default, all the values redirect to our publicly hosted
+> production services. For example, if `public-albums` is not configured your
+> shared album will use the `albums.ente.io` URL.
After you are done with filling the values, restart museum and the app will
start utilizing those endpoints instead of Ente's production instances.
Once you have configured all the necessary endpoints, `cd` into `my-ente` and
stop all the Docker containers with `docker compose down` and restart them with
-`docker compose up -d`.
+`docker compose up -d`.
Similarly, you can use the default
[`local.yaml`](https://github.com/ente-io/ente/tree/main/server/configurations/local.yaml)
diff --git a/docs/docs/self-hosting/reverse-proxy.md b/docs/docs/self-hosting/reverse-proxy.md
index 7ef79ac412..5ee0ca97fd 100644
--- a/docs/docs/self-hosting/reverse-proxy.md
+++ b/docs/docs/self-hosting/reverse-proxy.md
@@ -22,28 +22,25 @@ server on your machine.
Setting up a reverse proxy with Caddy is easy and straightforward.
-Firstly, install Caddy on your server.
+Firstly, install Caddy on your server.
```sh
sudo apt install caddy
-```
+```
After the installation is complete, a `Caddyfile` is created on the path
`/etc/caddy/`. This file is used to configure reverse proxies among other
things.
-```yaml
+```yaml
# Caddyfile - myente.xyz is just an example.
-api.myente.xyz {
- reverse_proxy http://localhost:8080
-}
-ente.myente.xyz {
- reverse_proxy http://localhost:3000
-}
+api.myente.xyz { reverse_proxy http://localhost:8080 } ente.myente.xyz {
+reverse_proxy http://localhost:3000 }
#...and so on for other endpoints
```
-After a hard-reload, the Ente Photos web app should be up on https://ente.myente.xyz.
+After a hard-reload, the Ente Photos web app should be up on
+https://ente.myente.xyz.
If you are using a different tool for reverse proxy (like nginx), please check
out their documentation.
diff --git a/docs/docs/self-hosting/troubleshooting/bucket-cors.md b/docs/docs/self-hosting/troubleshooting/bucket-cors.md
index 19c1dbff47..8bab1f7012 100644
--- a/docs/docs/self-hosting/troubleshooting/bucket-cors.md
+++ b/docs/docs/self-hosting/troubleshooting/bucket-cors.md
@@ -37,13 +37,21 @@ aws s3api put-bucket-cors --bucket YOUR_S3_BUCKET --cors-configuration /path/to/
## For Self-hosted Minio Instance
-> Important: MinIO does not take JSON CORS file as the input, instead you will
-> have to build a CORS.xml file or just convert the above `cors.json` to XML.
+::: warning
+
+- MinIO does not support bucket CORS in the community edition which is used by
+ default. For more information, check
+ [this discussion](https://github.com/minio/minio/discussions/20841). However,
+ global CORS configuration is possible.
+- MinIO does not take JSON CORS file as the input, instead you will have to
+ build a CORS.xml file or just convert the above `cors.json` to XML.
+
+:::
A minor requirement here is the tool `mc` for managing buckets via command line
interface. Checkout the `mc set alias` document to configure alias for your
instance and bucket. After this you will be prompted for your AccessKey and
-Secret, which is your username and password, go ahead and enter that.
+Secret, which is your username and password.
```sh
mc cors set // api cors_allow_origin="*"
You can create also `.csv` file and dump the list of origins you would like to
allow and replace the `*` with `path` to the CSV file.
-Now, uploads should be working fine.
\ No newline at end of file
+Now, uploads should be working fine.
diff --git a/docs/docs/self-hosting/troubleshooting/docker.md b/docs/docs/self-hosting/troubleshooting/docker.md
index 6c80070b34..902e8c9cfd 100644
--- a/docs/docs/self-hosting/troubleshooting/docker.md
+++ b/docs/docs/self-hosting/troubleshooting/docker.md
@@ -1,5 +1,5 @@
---
-title: Docker errors
+title: Docker Errors
description: Fixing docker related errors when trying to self host Ente
---
@@ -34,30 +34,30 @@ perform the same configuration by removing the "post_start" hook, and adding a
new service definition:
```yaml
- minio-provision:
+minio-provision:
image: minio/mc
depends_on:
- - minio
+ - minio
volumes:
- - minio-data:/data
+ - minio-data:/data
networks:
- - internal
+ - internal
entrypoint: |
- sh -c '
- #!/bin/sh
+ sh -c '
+ #!/bin/sh
- while ! mc config host add h0 http://minio:3200 changeme changeme1234
- do
- echo "waiting for minio..."
- sleep 0.5
- done
+ while ! mc config host add h0 http://minio:3200 changeme changeme1234
+ do
+ echo "waiting for minio..."
+ sleep 0.5
+ done
- cd /data
+ cd /data
- mc mb -p b2-eu-cen
- mc mb -p wasabi-eu-central-2-v3
- mc mb -p scw-eu-fr-v3
- '
+ mc mb -p b2-eu-cen
+ mc mb -p wasabi-eu-central-2-v3
+ mc mb -p scw-eu-fr-v3
+ '
```
## start_interval
@@ -114,7 +114,7 @@ volumes.
If you're sure of what you're doing, the volumes can be deleted by
-```
+```sh
docker volume ls
```
@@ -124,6 +124,13 @@ to list them, and then delete the ones that begin with `my-ente` using
that'll delete all volumes (Ente or otherwise) on your machine that are not
currently in use by a running docker container.
+An alternative way is to delete the volumes along with removal of cluster's
+containers using `docker compose` inside `my-ente` directory.
+
+```sh
+docker compose down --volumes
+```
+
If you're unsure about removing volumes, another alternative is to rename your
`my-ente` folder. Docker uses the folder name to determine the volume name
prefix, so giving it a different name will cause Docker to create a volume
diff --git a/docs/docs/self-hosting/troubleshooting/keyring.md b/docs/docs/self-hosting/troubleshooting/keyring.md
index 399595ba3f..56a5807fa5 100644
--- a/docs/docs/self-hosting/troubleshooting/keyring.md
+++ b/docs/docs/self-hosting/troubleshooting/keyring.md
@@ -5,8 +5,8 @@ description: A quick hotfix for keyring errors while running Ente CLI.
# Ente CLI Secrets
-Ente CLI makes use of keyring for storing sensitive information like your
-passwords. And running the cli straight out of the box might give you some
+Ente CLI makes use of system keyring for storing sensitive information like your
+passwords. And running the CLI straight out of the box might give you some
errors related to keyrings in some case.
Follow the below steps to run Ente CLI and also avoid keyrings errors.
diff --git a/docs/docs/self-hosting/troubleshooting/misc.md b/docs/docs/self-hosting/troubleshooting/misc.md
index 65c1e7ffd1..ff6ceda762 100644
--- a/docs/docs/self-hosting/troubleshooting/misc.md
+++ b/docs/docs/self-hosting/troubleshooting/misc.md
@@ -3,14 +3,14 @@ title: General troubleshooting cases
description: Fixing various errors when trying to self host Ente
---
-## Functionality not working on self hosted
+## Functionality not working on self hosted instance
If some specific functionality (e.g. album listing, video playback) does not
work on your self hosted instance, it is possible that you have set _some_, but
not _all_ needed CSP headers (by default, CSP is not enabled).
To expand on it - by default, currently the generated build does not enable CSP
-headers. The generated build includes a _headers file that Cloudflare will use
+headers. The generated build includes a \_headers file that Cloudflare will use
to set HTTP response headers, but even these do not enable CSP, it is set to a
report only mode.
@@ -18,7 +18,7 @@ However, your web server might be setting some CSP policy. If so, then you will
need to ensure that all necessary CSP headers are set.
You can see the current
-[_headers](https://github.com/ente-io/ente/blob/main/web/apps/photos/public/_headers)
+[\_headers](https://github.com/ente-io/ente/blob/main/web/apps/photos/public/_headers)
file contents to use a template for your CSP policy. The
`Content-Security-Policy-Report-Only` value will show you the CSP headers in
"dry run" report-only mode we're setting - you can use that as a template,
@@ -28,8 +28,8 @@ How do you know if this is the problem you're facing? The browser console
_might_ be giving you errors when you try to open the page and perform the
corresponding function.
-> Refused to load https://subdomain.example.org/... because it does not appear
-> in the script-src directive of the Content Security Policy.
+> Refused to load https://subdomain.example.org/... because it does not appear
+> in the script-src directive of the Content Security Policy.
This is not guaranteed, each browsers handles CSP errors differently, and some
may silently swallow it.
diff --git a/docs/docs/self-hosting/troubleshooting/uploads.md b/docs/docs/self-hosting/troubleshooting/uploads.md
index 3dbc7454f4..6cad97f201 100644
--- a/docs/docs/self-hosting/troubleshooting/uploads.md
+++ b/docs/docs/self-hosting/troubleshooting/uploads.md
@@ -10,27 +10,27 @@ context and potential fixes.
Fundamentally in most situations, the problem is because of minor mistakes or
misconfiguration. Please make sure to reverse proxy museum and MinIO API
-endpoint to a domain and check your S3 credentials and whole configuration
-file for any minor misconfigurations.
+endpoint to a domain and check your S3 credentials and whole configuration file
+for any minor misconfigurations.
-It is also suggested that the user setups bucket CORS on MinIO or any external
-S3 service provider they are connecting to. To setup bucket CORS, please [read
-this](/self-hosting/troubleshooting/bucket-cors).
+It is also suggested that the user setups bucket CORS or global CORS on MinIO or
+any external S3 service provider they are connecting to. To setup bucket CORS,
+please [read this](/self-hosting/troubleshooting/bucket-cors).
## What is S3 and how is it incorporated in Ente ?
-S3 is an cloud storage protocol made by Amazon (specifically AWS). S3 is designed to store
-files and data as objects inside Buckets and it is mostly used for Online
-Backups and storing different types of files.
+S3 is an cloud storage protocol made by Amazon (specifically AWS). S3 is
+designed to store files and data as objects inside buckets and it is mostly used
+for online backups and storing different types of files.
-Ente's Docker setup is shipped with [MinIO](https://min.io/) as its default S3 provider.
-MinIO supports the Amazon S3 protocol and leverages your disk storage to
-dump all the uploaded files as encrypted object blobs.
+Ente's Docker setup is shipped with [MinIO](https://min.io/) as its default S3
+provider. MinIO supports the Amazon S3 protocol and leverages your disk storage
+to dump all the uploaded files as encrypted object blobs.
## 403 Forbidden
-If museum is able to make a network connection to your S3 bucket but
-uploads are still failing, it could be a credentials or permissions issue.
+If museum is able to make a network connection to your S3 bucket but uploads are
+still failing, it could be a credentials or permissions issue.
A telltale sign of this is that in the museum logs you can see `403 Forbidden`
errors about it not able to find the size of a file even though the
@@ -41,14 +41,15 @@ This could be because
1. The bucket CORS rules do not allow museum to access these objects. For
uploading files from the browser, you will need to set `allowedOrigins` to
`*`, and allow the `X-Auth-Token`, `X-Client-Package`, `X-Client-Version`
- headers configuration too. [Here is an example of a working
- configuration](https://github.com/ente-io/ente/discussions/1764#discussioncomment-9478204).
+ headers configuration too.
+ [Here is an example of a working configuration](https://github.com/ente-io/ente/discussions/1764#discussioncomment-9478204).
2. The credentials are not being picked up (you might be setting the correct
credentials, but not in the place where museum reads them from).
## Mismatch in file size
-The "Mismatch in file size" error mostly occurs in a situation where the client is re-uploading a file which is already in the bucket with a different
-file size. The reason for re-upload could be anything including network issue,
-sudden killing of app before the upload is complete and etc.
+The "Mismatch in file size" error mostly occurs in a situation where the client
+is re-uploading a file which is already in the bucket with a different file
+size. The reason for re-upload could be anything including network issue, sudden
+killing of app before the upload is complete and etc.
diff --git a/docs/docs/self-hosting/troubleshooting/yarn.md b/docs/docs/self-hosting/troubleshooting/yarn.md
index b4205beb0e..4cc62c405b 100644
--- a/docs/docs/self-hosting/troubleshooting/yarn.md
+++ b/docs/docs/self-hosting/troubleshooting/yarn.md
@@ -5,8 +5,8 @@ description: Fixing yarn install errors when trying to self host Ente
# Yarn
-If your `yarn install` is failing, make sure you are using Yarn v1 (also known
-as "Yarn Classic"):
+If `yarn install` is failing, make sure you are using Yarn v1 (also known as
+"Yarn Classic"):
- https://classic.yarnpkg.com/lang/en/docs/install