-
Notifications
You must be signed in to change notification settings - Fork 905
Revise Siren documentation #6553
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 12 commits
Commits
Show all changes
21 commits
Select commit
Hold shift + click to select a range
ce0581e
revise Siren doc
chong-he 647b11e
Fix broken links
chong-he 2e5d9ab
Fix broken links
chong-he 58dbf22
broken links
chong-he a4ad26c
mdlint
chong-he 3d83d06
mdlint
chong-he d085315
mdlint again
chong-he c54a557
Merge branch 'unstable' into book-siren
chong-he bc52513
test whether I have the required privs :-)
antondlr 2c6cd76
revise
chong-he 638ee11
some minor siren related changes for the book
antondlr 6ce575a
updates re: `--net=host`
antondlr 605a867
lint
antondlr 9e99202
Minor revision
chong-he a3f3110
Add note
chong-he e3f1bfd
mdlint
chong-he ac972cb
Merge branch 'unstable' into book-siren
chong-he 6651963
Merge branch 'unstable' into book-siren
chong-he 495382c
Merge remote-tracking branch 'origin/unstable' into book-siren
chong-he c36f2f2
Fix spellcheck
chong-he d06c457
Capital letters SSL
chong-he File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,37 +1,116 @@ | ||
# Configuration | ||
# 📦 Installation | ||
|
||
Siren requires a connection to both a Lighthouse Validator Client and a Lighthouse Beacon Node. | ||
To enable connection, you must generate .env file based on the provided .env.example | ||
Siren supports any operating system that supports container runtimes and/or NodeJS 18, this includes Linux, MacOS, and Windows. The recommended way of running Siren is by launching the [docker container](https://hub.docker.com/r/sigp/siren). | ||
|
||
## Version Requirement | ||
|
||
To ensure proper functionality, the Siren app requires Lighthouse v4.3.0 or higher. You can find these versions on the [releases](https://github.com/sigp/lighthouse/releases) page of the Lighthouse repository. | ||
|
||
## Connecting to the Clients | ||
## Configuration | ||
|
||
Siren requires a connection to both a Lighthouse Validator Client and a Lighthouse Beacon Node. | ||
|
||
Both the Beacon node and the Validator client need to have their HTTP APIs enabled. | ||
These ports should be accessible from Siren. | ||
These ports should be accessible from Siren. This means adding the flag `--http` on both beacon node and validator client. | ||
|
||
To enable the HTTP API for the beacon node, utilize the `--gui` CLI flag. This action ensures that the HTTP API can be accessed by other software on the same machine. | ||
|
||
> The Beacon Node must be run with the `--gui` flag set. | ||
|
||
If you require accessibility from another machine within the network, configure the `--http-address` to match the local LAN IP of the system running the Beacon Node and Validator Client. | ||
## Running the Docker container (Recommended) | ||
|
||
We recommend running Siren's container next to your beacon node (on the same server), as it's essentially a webapp that you can access with any browser. | ||
|
||
1. Create a directory to run Siren: | ||
|
||
```bash | ||
cd ~ | ||
mkdir Siren | ||
cd Siren | ||
``` | ||
|
||
1. Create a configuration file in the `Siren` directory: `nano .env` and insert the following fields to the `.env` file. The field values are given here as an example, modify the fields as necessary. For example, the `API_TOKEN` can be obtained from [`Validator Authorization`](./api-vc-auth-header.md) | ||
|
||
A full example with all possible configuration options can be found [here](https://github.com/sigp/siren/blob/stable/.env.example). | ||
|
||
``` | ||
BEACON_URL=http://localhost:5052 | ||
VALIDATOR_URL=http://localhost:5062 | ||
API_TOKEN=R6YhbDO6gKjNMydtZHcaCovFbQ0izq5Hk | ||
SESSION_PASSWORD=your_password | ||
``` | ||
|
||
1. You can now start Siren with: | ||
|
||
```bash | ||
docker run --rm -ti --name siren --env-file $PWD/.env --net host sigp/siren | ||
``` | ||
Note that, due to the `--net=host` flag, this will expose Siren on ports 3000, 80, and 443. Preferrably, only the latter should be accessible. Adjust your firewall and/or skip the flag wherever possible. | ||
|
||
If it fails to start, an error message will be shown. For example, the error | ||
|
||
``` | ||
http://localhost:5062 unreachable, check settings and connection | ||
``` | ||
|
||
means that the validator client is not running, or the `--http` flag is not provided, or otherwise unaccessible from within the container. Another common error is: | ||
|
||
``` | ||
validator api issue, server response: 403 | ||
``` | ||
|
||
which means that the API token is incorrect. Check that you have provided the correct token in the field `API_TOKEN` in `.env`. | ||
|
||
When Siren has successfully started, you should see the log `LOG [NestApplication] Nest application successfully started +118ms`, indicating that Siren has started. | ||
|
||
4. Siren is now accessible at `https://<the-servers-ip>` (when used with `--net=host`. Power users can choose not to do that and expose Siren on any other port; internally it will be running on port 80 (plain, behind nginx), port 3000 (plain, direct) and port 443 (with SSL, behind nginx)). | ||
You will get a warning about an invalid certificate, this can be safely ignored. | ||
|
||
Advanced users can mount their own certificates or disable SSL altogether, see the `SSL Certificates` section below. | ||
|
||
## Building From Source | ||
|
||
### Docker | ||
|
||
The docker image can be built with the following command: | ||
`docker build -f Dockerfile -t siren .` | ||
|
||
### Building locally | ||
|
||
To build from source, ensure that your system has `Node v18.18` and `yarn` installed. | ||
|
||
#### Build and run the backend | ||
|
||
Navigate to the backend directory `cd backend`. Install all required Node packages by running `yarn`. Once the installation is complete, compile the backend with `yarn build`. Deploy the backend in a production environment, `yarn start:production`. This ensures optimal performance. | ||
|
||
#### Build and run the frontend | ||
|
||
After initializing the backend, return to the root directory. Install all frontend dependencies by executing `yarn`. Build the frontend using `yarn build`. Start the frontend production server with `yarn start`. | ||
|
||
This will allow you to access siren at `http://localhost:3000` by default. | ||
|
||
## Advanced configuration | ||
|
||
### About self-signed SSL certificates | ||
|
||
By default, Siren will generate and use a self-signed certificate on startup. | ||
This will generate a security warning when you try to access the interface. | ||
We recommend to only disable SSL if you would access Siren over a local LAN or otherwise highly trusted or encrypted network (i.e. VPN). | ||
|
||
#### Generating persistent SSL certificates and installing them to your system | ||
|
||
> To access from another machine on the same network (192.168.0.200) set the Beacon Node and Validator Client `--http-address` as `192.168.0.200`. When this is set, the validator client requires the flag `--beacon-nodes http://192.168.0.200:5052` to connect to the beacon node. | ||
[mkcert](https://github.com/FiloSottile/mkcert) is a tool that makes it super easy to generate a self-signed certificate that is trusted by your browser. | ||
chong-he marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
In a similar manner, the validator client requires activation of the `--http` flag, along with the optional consideration of configuring the `--http-address` flag. If `--http-address` flag is set on the Validator Client, then the `--unencrypted-http-transport` flag is required as well. These settings will ensure compatibility with Siren's connectivity requirements. | ||
To use it for `siren`, install it following the instructions. Then, run `mkdir certs; mkcert -cert-file certs/cert.pem -key-file certs/key.pem 127.0.0.1 localhost` (add or replace any IP or hostname that you would use to access it at the end of this command). | ||
To use these generated certificates, add this to to your `docker run` command: `-v $PWD/certs:/certs` | ||
|
||
If you run the Docker container, it will fail to startup if your BN/VC are not accessible, or if you provided a wrong API token. | ||
The nginx SSL config inside Siren's container expects 3 files: `/certs/cert.pem` `/certs/key.pem` `/certs/key.pass`. If `/certs/cert.pem` does not exist, it will generate a self-signed certificate as mentioned above. If `/certs/cert.pem` does exist, it will attempt to use your provided or persisted certificates. | ||
|
||
## API Token | ||
### Configuration through environment variables | ||
|
||
The API Token is a secret key that allows you to connect to the validator | ||
client. The validator client's HTTP API is guarded by this key because it | ||
contains sensitive validator information and the ability to modify | ||
validators. Please see [`Validator Authorization`](./api-vc-auth-header.md) | ||
for further details. | ||
For those who prefer to use environment variables to configure Siren instead of using an `.env` file, this is fully supported. In some cases this may even be preferred. | ||
|
||
Siren requires this token in order to connect to the Validator client. | ||
The token is located in the default data directory of the validator | ||
client. The default path is | ||
`~/.lighthouse/<network>/validators/api-token.txt`. | ||
#### Docker installed through `snap` | ||
|
||
The contents of this file for the desired validator client needs to be | ||
entered. | ||
If you installed Docker through a snap (i.e. on Ubuntu), Docker will have trouble accessing the `.env` file. In this case it is highly recommended to pass the config to the container with environment variables. | ||
Note that the defaults in `.env.example` will be used as fallback, if no other value is provided. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.