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
|
Reference in a new issue