tutorial on setting up a lyphe instance
This commit is contained in:
parent
2c98a3aebb
commit
8efd27d3fd
1 changed files with 108 additions and 0 deletions
108
lyphe_setup_tutorial.txt
Normal file
108
lyphe_setup_tutorial.txt
Normal file
|
@ -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 <postgres url>`
|
||||||
|
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=<log level> (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=<path to a pem keyfile> (used for nats tls, see below)
|
||||||
|
NATS_CERT=<path to a pem 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=<same postgres url as before>
|
||||||
|
SMTP_DISABLE=1 (or, see below)
|
||||||
|
SMTP_URL=<smtp url> (server must support starttls)
|
||||||
|
SMTP_USERNAME=<smtp username>
|
||||||
|
SMTP_PASSWORD=<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
|
Loading…
Add table
Reference in a new issue