URL: https://source.atlas.engineer/public/nyxt-site

Nyxt Site



Updating Source Documents

Sometimes it is necessary to update the manual from the official repository sources. Simply use the Makefile to execute make sync_files and the files will be automatically downloaded and synchronized from GitHub.

FreeBSD Deployment

The following instructions pertain to FreeBSD deployment, however, the Nginx configuration, Common Lisp application configuration, and other instructions can be generalized across different operating systems.

Install Packages

Install SBCL via Ports

  1. kill -9 SBCL PID Figure out the PID of SBCL, and Kill it if it is stuck on the aforementioned test.
  2. Manually touch obj/asdf-cache/sb-concurrency/test-passed.test-report
  3. Manually invoke install.sh

Installing Quicklisp

The official quicklisp website can provide updated links to downloads, and instructions:


To install quicklisp:

more detailed instructions and other resources are readily available on the quicklisp website.

Configuring Nginx

#user  nobody;
worker_processes  1;

# This default error log path is compiled-in to make sure configuration parsing
# errors are logged somewhere, especially during unattended boot when stderr
# isn't normally logged anywhere. This path will be touched on every nginx
# start regardless of error log location configured here. See
# https://trac.nginx.org/nginx/ticket/147 for more info.
#error_log  /var/log/nginx/error.log;

#pid        logs/nginx.pid;

events {
    worker_connections  1024;

http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  nyxt.atlas.engineer;
        return       301 https://$host$request_uri;

    # HTTPS server
    server {
        listen       443 ssl;
        server_name  nyxt.atlas.engineer;

        ssl_certificate      /usr/local/etc/letsencrypt/live/nyxt.atlas.engineer/fullchain.pem;
        ssl_certificate_key  /usr/local/etc/letsencrypt/live/nyxt.atlas.engineer/privkey.pem;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location /static/ {
            root /root/nyxt-site/;
            autoindex off;

        location / {



To use FCGI configuration instead:

location / {
    include /usr/local/etc/nginx/fastcgi_params;

Managing the SSL Certificate

  1. Create a SSL Certificate

    • Stop Nginx service nginx stop
    • sudo certbot certonly --standalone -d nyxt.atlas.engineer
    • It will tell you where it has dumped the certificates, these are to be used in the Nginx configuration
    • Start Nginx service nginx start
  2. Renew the SSL Certificate

    • make sure to stop Nginx
    • sudo certbot renew --dry-run
    • restart Nginx
  3. Set-Up Automatic Renewal

    • service nginx stop && certbot renew --quiet && service nginx start

    Edit the crontab, and run monthly.

    • @weekly service nginx stop && certbot renew --quiet && service nginx start

Running/updating the Application

Execute the following from an SSH connection to the server:

  1. screen to create a new screen, or screen -r to re-attach to an existing screen session.
  2. Navigate to the nyxt-site project directory.
  3. Execute service nginx start.
  4. Execute make fcgi to start nyxt-site in a new Lisp process.
  5. Execute C-a d to detach from screen.
  6. Close the SSH session.


All contributions and patches are accepted via email. You can use git send-email to create patches and send them to patch@atlas.engineer. To find out more about git email patches please view the official documentation: