diff --git a/lyphe_setup_tutorial.txt b/lyphe_setup_tutorial.txt new file mode 100644 index 0000000..5689e89 --- /dev/null +++ b/lyphe_setup_tutorial.txt @@ -0,0 +1,108 @@ +HOW TO HOST UR OWN LYPHE INSTANCE!! :D +niko vcs - real microsoft llc founder + +asklyphe is structured in a way that should hopefully promote easy scaling +in the future, i.e. we can easily add more machines or better hardware to +our pre-existing machines and lyphe just becomes faster without any changes +to code. + +because of this, we're using a stateless microservice architecture. that means +that core functionality is split into "services" which all do one kind of +task. + +authservice handles authentication (and also anything that touches the postgres +database, might be changed in the future) + +searchservice handles requests for searches, then compiles the results from the +search database and returns them. + +etc. + +the "stateless" part means that ideally, any service can be restarted and act +the exact same as if it were running continuously. +we don't store state in memory, and everything goes in databases. + +all of this is to say that there's a reason that the architecture may at first +look a little complicated. + +== MINIMUM VIABLE SETUP == +this setup will get you an asklyphe setup that you can log into. you won't be +able to search for anything, but the website will generally start up and show +stuff. + +you'll need: +- rust compiler +- nats-server binary (https://nats.io/) +- postgres server +- caddy (https://caddyserver.com/) + (alternatively, some other webserver with reverse-proxy + static file hosting + and willingness to convert our caddyfiles) + +and the asklyphe services: +- authservice + (https://forge.voremicrocomputers.com/asklyphe-public/authservice) +- asklyphe-frontend + (https://forge.voremicrocomputers.com/asklyphe-public/asklyphe-frontend) +- asklyphe-auth-frontend + (https://forge.voremicrocomputers.com/asklyphe-public/asklyphe-auth-frontend) + +first, compile all the asklyphe services. should be as simple as running +`cargo build --release` (or without the --release flag if you want to debug) + +secondly, you'll want to start up your postgres server and run the migrations +go to authservice/migration and run `cargo run -- up -u ` +e.g. `cargo run -- up -u postgres://postgres:postgres@127.0.0.1/postgres` + +thirdly, you'll want to start the nats server. just go to the directory +where you put nats-server and run `./nats-server -js` + +finally, you can run each of the asklyphe service binaries you built. +they'll all need to have the following environment variables set: + +RUST_LOG= (something like info or debug is good, this is optional) +NATS_URL="127.0.0.1:4222" (or whereever your nats server is) +NATS_KEY= (used for nats tls, see below) +NATS_CERT= (used for nats tls, see below) + +KEY AND CERT ARE REQUIRED!!! however, you can use a dummy key and cert if you +don't feel like setting up tls on nats. + +certain services need extra environment variables: + +-- authservice -- +DB_URL= +SMTP_DISABLE=1 (or, see below) +SMTP_URL= (server must support starttls) +SMTP_USERNAME= +SMTP_PASSWORD= + +-- asklyphe-auth-frontend -- +ASKLYPHE_URL="http://127.0.0.1:8002" (alternatively, whatever url your instance + is on) + +-- asklyphe-frontend -- +AUTH_URL="http://127.0.0.1:8001" (alternatively, whatever url your + auth-frontend is on) + +finally, you can run caddy with the caddyfile provided in the +asklyphe-auth-frontend git tree, and run all the services + +you *hopefully* *should* be able to connect to https://127.0.0.1:8002 and see +the asklyphe homepage! insert an invite code into the database and you can +create an account! + +== ADDING SOME SEARCH SERVICES == + +bingservice and googleservice should be fine by just compiling and running +without anything other than the NATS_* environment variables, however +running searchservice will take a bit more work + +searchservice requires a foundationdb instance be running, specifically version +7.1.3 (will be changed in the future once we move to our own database system) + +once you follow the setup instructions at https://www.foundationdb.org/ you +should be good to go (foundationdb uses a file in /etc to authenticate, +no envvars needed) + +that should be all that's needed! there's probably stuff i'm forgetting so i'll +update this file as needed