Requirements: rustc (>=1.56.1), cargo, openssl, and a PostgreSQL database
Set these environment variables:
https://example.com
)https://example.com/api
true
to make signatures work with the proxy setup.true
to make ratelimiting work with the proxy setup.Optionally (but recommended):
smtps://username:password@smtp.example.com
)To build lotide, run cargo build --release
in the lotide directory. A lotide
binary will appear in ./target/release
.
hitide can be built in the same way.
To set up the database, run lotide migrate setup
, then lotide migrate
.
This is written for Nginx, but it should be possible to adapt it to other proxy servers. Replace c_backend_1
and c_hitide_1
with your actual hostnames.
client_max_body_size 1G;
proxy_set_header X-Forwarded-For $remote_addr;
location /api {
proxy_pass http://c_backend_1:3333;
}
location /apub {
proxy_pass http://c_backend_1:3333;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Path $request_uri;
}
location /.well-known {
proxy_pass http://c_backend_1:3333;
}
location / {
if ($http_accept ~* "application/activity\+json") {
rewrite ^(.*)$ /apub$1;
}
if ($http_content_type = application/activity+json) {
rewrite ^(.*)$ /apub$1;
}
proxy_pass http://c_hitide_1:4333;
}
Requirements: rustc, cargo, openssl, and a PostgreSQL database
The following environment variables are required (An environment variable manager like direnv is recommended in order to avoid these variables interfering with other programs.)
http://localhost:3333/apub
for dev instanceshttp://localhost:3333/api
for dev instancesRun cargo run -- migrate setup
, then cargo run -- migrate
to update the database schema.
To build and run lotide, run cargo run
in the lotide directory.
To show debug logging, set the environment variable RUST_LOG=lotide=debug
. See the env-logger docs for more details.
Note that lotide itself does not contain a frontend, so you probably want to also setup hitide.