113 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Deploying Browsertrix Cloud
 | |
| 
 | |
| Browsertrix Cloud can be deployed anywhere from single-node isolated environments, multi-machine setups and cloud-native Kubernetes!
 | |
| 
 | |
| Browsertrix Cloud currently supports three deployment methods:
 | |
| - Rootless deployment with podman on a single-machine (no Docker required)
 | |
| - Docker Swarm for single or multi-machine deployments
 | |
| - Kubernetes Cluster deployment.
 | |
| 
 | |
| Some basic instructions are provided below, we plan to expand this into more detail tutorial in the future.
 | |
| 
 | |
| (All shell scripts can be found in the `./scripts` directory)
 | |
| 
 | |
| ## Deploying with Docker Swarm
 | |
| 
 | |
| For local deployments, using Docker Swarm is recommended. Docker Swarm can be used in a single-machine mode as well
 | |
| as with multi-machine setups. Docker Swarm is part of Docker, so if you have Docker installed, you can use this method.
 | |
| 
 | |
| 1. Run the `init-configs.sh` which will copy the sample config `configs/config.sample.env` to `configs/config.env` if it doesn't already exist.
 | |
| 
 | |
| 2. You can edit `configs/config.env` to set all settings for Browsertrix Cloud including, default passwords for superadmin, minio and mongodb.
 | |
| 
 | |
| 2.5. Optionally: Run `build-swarm.sh` to build images locally, such as if you've made any changes, otherwise can skip.
 | |
| 
 | |
| 3. Run `run-swarm.sh` to initialize the cluster.
 | |
| 
 | |
| 4. Load `http://localhost:9871/` to see the Browsertrix Cloud login page. (The API is also available at: `http://localhost:9871/api/docs`).
 | |
| 
 | |
| You can stop the deployment with `stop-swarm.sh` and restart again with `run-swarm.sh`
 | |
| 
 | |
| 
 | |
| Note: Currently, unless email settings are configured, you will need to look at the logs to get the invite code for invites. You can do this by running:
 | |
| `docker service logs btrix_backend`
 | |
| 
 | |
| 
 | |
| ## Deploying with Podman
 | |
| 
 | |
| Browsertrix Cloud can now also be used with Podman for environments that don't support Docker.
 | |
| 
 | |
| Podman allows Browsertrix Cloud to be deployed locally by a non-root user.
 | |
| 
 | |
| Podman deployment also requires either docker-compose or podman-compose.
 | |
| 
 | |
| 
 | |
| ### Initial Installation
 | |
| 
 | |
| To run with Podman as a non-root user, there's a few initial installation
 | |
| 
 | |
| 1. Ensure the podman service over a socket is running with: `systemctl --user start podman.socket`. Podman does not require a service, but Browsertrix Cloud requires access to the socket to worker.
 | |
| 
 | |
| 2. Ensure podman [can set cpu limits](https://github.com/containers/podman/blob/main/troubleshooting.md#26-running-containers-with-cpu-limits-fails-with-a-permissions-error) as Browsertrix Cloud uses cpu and memory limits for each crawl. After following instructions above, also run `sudo systemctl daemon-reload` to reload the delegate settings.
 | |
| 
 | |
| 3. Ensure podman-compose is installed via `pip install podman-compose`.
 | |
| 
 | |
| 4. Run `build-podman.sh` to build the local images.
 | |
| 
 | |
| 5. Run the `init-configs.sh` which will copy the sample config `configs/config.sample.env` to `configs/config.env` if it doesn't already exist.
 | |
| 
 | |
| 6. You can edit `configs/config.env` to set all settings for Browsertrix Cloud including, default passwords for superadmin, minio and mongodb.
 | |
| 
 | |
| 6.5. Optionally: Run `build-podman.sh` to build images locally, such as if you've made any changes, otherwise can skip.
 | |
| 
 | |
| 7. Run `run-podman.sh` to run Browsertrix Cloud using podman.
 | |
| 
 | |
| 8. Load `http://localhost:9871/` to see the Browsertrix Cloud login page. (The API is also available at: `http://localhost:9871/api/docs`).
 | |
| 
 | |
| 
 | |
| You can stop the deployment with `stop-podman.sh` and restart again with `run-podman.sh`
 | |
| 
 | |
| Note: Currently, unless email settings are configured, you will need to look at the logs to get the invite code for invites. You can do this by running:
 | |
| `podman logs -f browsertrix-cloud_backend_1`
 | |
| 
 | |
| It's also possible to use Docker Compose with podman by setting `export DOCKER_HOST=unix://$XDG_RUNTIME_DIR/podman/podman.sock`. You can change the setting
 | |
| in `run-podman.sh` and `stop-podman.sh` to use docker-compose instead if desired.
 | |
| 
 | |
| 
 | |
| ### Enabling Signing (for Swarm and Podman Deployments)
 | |
| 
 | |
| Browsertrix Cloud can optionally sign WACZ files with the same key used to generate an SSL cert.
 | |
| 
 | |
| To use this functionality, the machine running Browsertrix Cloud must be associated with a domain and must have port 80 available on that domain,
 | |
| or another port forwarding to port 80.
 | |
| 
 | |
| The `docker-compose.signing.yml` adds the capability for signing with the `authsign` module.
 | |
| 
 | |
| To enable signing in the Docker-based deployment:
 | |
| 
 | |
| 1. Copy `configs/signing.sample.yaml` to `configs/signing.yaml` and set the domain and email fields in the config. Set `staging` to false to generate real certificates.
 | |
| 
 | |
| 2. In `docker-compose.signing.yaml`, set an optional signing token.
 | |
| 
 | |
| 3. In `run-swarm.sh`, uncomment the option for running with signing.
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| ## Deploying to Kubernetes
 | |
| 
 | |
| For deploying in the cloud, the Kubernetes (k8s) deployment is recommended.
 | |
| Browsertrix Cloud uses `helm` to deploy to K8s.
 | |
| 
 | |
| 
 | |
| 1. Ensure `helm` is installed locally and `kubectl` is configured for your k8s cluster.
 | |
| 
 | |
| 2. Edit `chart/values.yaml` to configure your deployment. The `ingress` section contains the domain the service will be deployed in, and `signing` can be used to enable WACZ signing.
 | |
| 
 | |
| 3. Run: `helm upgrade --install -f ./chart/values.yaml btrix ./chart/` to deploy or upgrade an existing deployment.
 | |
| 
 | |
| 
 | |
| To stop, run `helm uninstall btrix`.
 | |
| 
 | |
| *Additional info coming soon*
 |