stack-orchestrator/stack_orchestrator/data/stacks/uniswap-urbit-app
prathamesh0 6bef0c5b2f
Separate out GQL proxy server from uniswap-urbit stack (#681)
* Separate out uniswap gql proxy in a stack

* Use proxy server from watcher-ts

* Add a flag to enable/disable the proxy server

* Update env configuratoin for uniswap urbit app stack

* Update stack file for uniswap urbit app stack

* Fix env variables in instructions
2023-12-06 10:41:10 +05:30
..
README.md Separate out GQL proxy server from uniswap-urbit stack (#681) 2023-12-06 10:41:10 +05:30
stack.yml Separate out GQL proxy server from uniswap-urbit stack (#681) 2023-12-06 10:41:10 +05:30

Self-hosted Uniswap Frontend

Instructions to setup and deploy Uniswap app on Urbit

Build and deploy:

  • Urbit
  • Uniswap app

Setup

Clone required repositories:

laconic-so --stack uniswap-urbit-app setup-repositories --pull

# If this throws an error as a result of being already checked out to a branch/tag in a repo, remove the repositories mentioned below and re-run the command

Build the container images:

laconic-so --stack uniswap-urbit-app build-containers

Create a deployment

First, create a spec file for the deployment, which will map the stack's ports and volumes to the host:

laconic-so --stack uniswap-urbit-app deploy init --output uniswap-urbit-app-spec.yml

Ports

Edit network in spec file to map container ports to same ports in host

...
network:
  ports:
    urbit-fake-ship:
      - '8080:80'
    proxy-server:
      - '4000:4000'
    ipfs-glob-host:
      - '8081:8080'
      - '5001:5001'
...

Data volumes

Container data volumes are bind-mounted to specified paths in the host filesystem. The default setup (generated by laconic-so deploy init) places the volumes in the ./data subdirectory of the deployment directory. The default mappings can be customized by editing the "spec" file generated by laconic-so deploy init.


Once you've made any needed changes to the spec file, create a deployment from it:

laconic-so --stack uniswap-urbit-app deploy create --spec-file uniswap-urbit-app-spec.yml --deployment-dir uniswap-urbit-app-deployment

Set env variables

Inside the deployment directory, open the file config.env and set the following env variables:

# External RPC endpoints
# https://docs.infura.io/getting-started#2-create-an-api-key
CERC_INFURA_KEY=

# Uniswap API GQL Endpoint
# Set this to GQL proxy server endpoint for uniswap app
# (Eg. http://localhost:4000/v1/graphql)
# (Eg. https://abc.xyz.com/v1/graphql)
CERC_UNISWAP_GQL=

# Optional

# Whether to run the proxy GQL server
# (Disable only if proxy not required to be run) (Default: true)
ENABLE_PROXY=

# Proxy server configuration
# Used only if proxy is enabled

# Upstream API URL
# (Eg. https://api.example.org)
CERC_PROXY_UPSTREAM=https://api.uniswap.org

# Origin header to be used in the proxy
# (Eg. https://app.example.org)
CERC_PROXY_ORIGIN_HEADER=https://app.uniswap.org

# IPFS configuration

# IFPS endpoint to host the glob file on
# (Default: http://ipfs-glob-host:5001 pointing to in-stack IPFS node)
CERC_IPFS_GLOB_HOST_ENDPOINT=

# IFPS endpoint to fetch the glob file from
# (Default: http://ipfs-glob-host:8080 pointing to in-stack IPFS node)
CERC_IPFS_SERVER_ENDPOINT=

Start the stack

Start the deployment:

laconic-so deployment --dir uniswap-urbit-app-deployment start
  • List and check the health status of all the containers using docker ps and wait for them to be healthy

  • Run the following to get login password for Urbit web interface:

    laconic-so deployment --dir uniswap-urbit-app-deployment exec urbit-fake-ship "curl -s --data '{\"source\":{\"dojo\":\"+code\"},\"sink\":{\"stdout\":null}}' http://localhost:12321"
    
    # Expected output: "<PASSWORD>\n"%
    
  • Open the Urbit web UI at http://localhost:8080 and use the PASSWORD from previous step to login

  • The uniswap app is not available when starting stack for the first time. Check urbit-fake-ship logs to see that app has installed

    laconic-so deployment --dir uniswap-urbit-app-deployment logs -f
    
    # Expected output:
    # laconic-3ccf7ee79bdae874-urbit-fake-ship-1    | docket: fetching %http glob for %uniswap desk
    # laconic-3ccf7ee79bdae874-urbit-fake-ship-1    | ">="">="Uniswap app installed
    
  • The uniswap app will be now visible at http://localhost:8080

Clean up

To stop all uniswap-urbit-app services running in the background, while preserving data:

laconic-so deployment --dir uniswap-urbit-app-deployment stop

To stop all uniswap-urbit-app services and also delete data:

laconic-so deployment --dir uniswap-urbit-app-deployment stop --delete-volumes