stack-orchestrator/stack_orchestrator/data/stacks/vega-urbit-app
2024-03-29 21:50:32 -07:00
..
README.md Add vega stack 2024-03-29 21:50:32 -07:00
stack.yml Add vega stack 2024-03-29 21:50:32 -07:00

Self-hosted Vega Frontend

Instructions to setup and deploy Vega app on Urbit

Build and deploy:

  • Urbit
  • Vega app

Setup

Clone required repositories:

laconic-so --stack vega-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 and re-run the command

Build the container images:

laconic-so --stack vega-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 vega-urbit-app deploy init --output vega-urbit-app-spec.yml

Ports

Edit vega-urbit-app-spec.yml such that it looks like:

stack: vega-urbit-app
deploy-to: compose
network:
  ports:
    urbit-fake-ship:
      - '8080:80'
    ipfs:
     - '4001'
     - '8081:8080'
     - 0.0.0.0:5001:5001
volumes:
  urbit_app_builds: ./data/urbit_app_builds
  urbit_data: ./data/urbit_data
  ipfs-import: ./data/ipfs-import
  ipfs-data: ./data/ipfs-data

Note: Skip the ipfs ports if using an externally running IPFS node, set via config.env, below.

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 vega-urbit-app deploy create --spec-file vega-urbit-app-spec.yml --deployment-dir vega-urbit-app-deployment

Set env variables

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

# App to be installed (Do not change)
CERC_URBIT_APP=vega

Start the stack

Start the deployment:

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

Clean up

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

# Only stop the docker containers
laconic-so deployment --dir vega-urbit-app-deployment stop

# Run 'start' to restart the deployment

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

# Stop the docker containers
laconic-so deployment --dir vega-urbit-app-deployment stop --delete-volumes

# Remove deployment directory (deployment will have to be recreated for a re-run)
rm -r vega-urbit-app-deployment