how to run constellation

You will need Rust installed, and also some way to run a web server. I like Caddy for things that I can just reverse_proxy to because it's really easy. This is oriented toward people using Ubuntu/Debian, and I kind of assume if you're using another distro you probably know the equivalent commands on that distro.

You can see my running version at constellation.smallbird.social ! I'd still recommend for general use using the microcosm.blue server, since it has a much fuller database and therefore a better network picture, but you can in fact hit mine for

Building and Installing Constellation

So for starters, clone the microcosm-rs project to your server wherever and then cd microcosm-rs/constellation. From there you are going to do cargo build --release, which will take a long hecking time on most computers because rocksdb (its database backend) for whatever reason takes a stupid long time to compile.

Note that despite the general running requirements of constellation, rocksdb may take a lot of memory to compile, so it may hog your entire system memory for a bit.

Anyway once that happens your compiled programs will be in the microcosm-rs/target folder (not in the constellation folder!!) under release. there are actually three programs, which are named main, rocks-links-stats, and rocks-restore-from-backup. Copy those to /usr/bin/local and while renaming main to constellation.

Awesome. Anyway, after you do that you can run constellation from command line, but we don't want to do that. We want a system service. So this is a decent template:

[Unit]
Description=Runs the constellation service
After=network.target

[Service]
Type=simple
ExecStart=constellation --jetstream wss://jetstream.fire.hose.cam/subscribe
Restart=on-failure

[Install]
WantedBy=multi-user.target

Here you can replace the jetstream URL with whatever jetstream you prefer to subscribe to—whether that's an official one or an independent one.

So make a constellation.service file in /etc/system.d/system, save it, and then do systemctl enable constellation.service. Assuming that's all good, then do systemctl start constellation.service and it'll run.

Great! We have it running! So where do we look at it? This means it's time to set up a web server.

Serving Constellation

So for this I use Caddy because it makes reverse proxying very easy, but the main thrust is that whatever server you're using, you're going to be using its reverse proxy functionality. You literally need three lines in your Caddyfile (look in /etc/caddy/ after installing Caddy) and they are:

your.constellation.domain {
reverse_proxy localhost:6789
}

your.constellation.domain should be pointed at the server's IP address via A-record, so make sure you do that.

6789 is the default port, so if you did anything to change that, you'll want to change it here. Assuming you've installed Caddy already, you can generally just run systemctl restart caddy. Once you do that, Constellation should be running on your.constellation.domain and will start collecting and serving backlink data.

Yay!

I realize this is kind of informally written so if you have any questions/something is unclear please let me know so I can update it 👍 I think it's really cool for people to be able to host extra infrastructure on their own so I'd love to help people who are interested.