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