.. | ||
README.md | ||
stack.yml |
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 behealthy
-
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