Installation
Install LogNorth on a Linux server with one command: HTTPS, live database backups, and an update each night.
LogNorth runs on your own server with Chasen: HTTPS, live backups of the database, and an update each night. Pick where you start.
On your server
Section titled “On your server”On a fresh Ubuntu or Debian server, as root:
curl -fsSL lognorth.com/install | sudo bash -s logs.example.comPut your domain in place of logs.example.com. It installs Chasen (and Docker, when the server has none) and runs LogNorth. Run it again to update LogNorth now.
From your computer
Section titled “From your computer”If you deploy other apps with Chasen, or you prefer your own terminal:
curl -fsSL https://chasenhq.com/cli | shchasen deploy karloscodes/lognorth --server root@203.0.113.5 --domain logs.example.com --auto-updateThe first deploy installs Chasen on the server through SSH. --auto-update gives the same nightly update. Without it, run the line again to update.
After the install
Section titled “After the install”- The server needs Ubuntu or Debian, ports 80 and 443 open, and an A record for your domain. HTTPS comes on the first request.
- Create your account. Open
https://logs.example.comright after the install: the first visitor creates the owner account, so do it before anyone else can. - Then create an app on the Apps page and copy its key for your SDK: see Getting Started.
- No settings needed. Chasen gives LogNorth its private key, keeps
/app/storageacross deploys, and updates it each night. Updates, backups, alerts, and the everyday commands are in Manage.
Using an AI coding assistant? Install the LogNorth plugin after setup and your agent can read the logs while it debugs.
Run the image yourself
Section titled “Run the image yourself”LogNorth is one Docker image for amd64 and arm64, on two registries with the same tags: karloscodes/lognorth on Docker Hub, and ghcr.io/karloscodes/lognorth-releases on GitHub. Use latest, or a version like 0.27.0.
Docker
Section titled “Docker”docker run -d \ --name lognorth \ -p 8080:8080 \ -v lognorth_data:/app/storage \ -e LOGNORTH_PRIVATE_KEY=$(openssl rand -hex 32) \ karloscodes/lognorth:latestLogNorth is now running at http://localhost:8080
The container does not start without LOGNORTH_PRIVATE_KEY. It signs the login sessions, so keep the same value when you recreate the container. The data lives in /app/storage; mount a volume there or it is lost with the container.
The login cookie is sent over HTTPS only. On another host than localhost, put LogNorth behind a reverse proxy with HTTPS before you log in. The health path is /up (also /_health).
Docker Compose
Section titled “Docker Compose”services: lognorth: image: karloscodes/lognorth:latest ports: - "8080:8080" environment: LOGNORTH_PRIVATE_KEY: "paste the output of: openssl rand -hex 32" volumes: - lognorth_data:/app/storage restart: unless-stopped
volumes: lognorth_data:Environment Variables
Section titled “Environment Variables”| Variable | Description | Default |
|---|---|---|
LOGNORTH_PRIVATE_KEY |
Signs login sessions. Required. At least 32 characters. Falls back to PRIVATE_KEY, which Chasen sets. |
none |
LOGNORTH_PORT |
HTTP port | 8080 |
LOGNORTH_STORAGE_PATH |
Data directory | /app/storage |
LOGNORTH_DOMAIN |
The domain, for the links in alerts. Falls back to BASE_URL, which Chasen sets. |
none |
LOGNORTH_LOGS_DIR |
Rotated log files. Every line also goes to stdout, so docker logs shows them. |
/app/logs |
LogNorth reads these from the environment only. It does not read a .env file.
Reverse Proxy
Section titled “Reverse Proxy”Put LogNorth behind nginx or Caddy for HTTPS:
server { server_name logs.yoursite.com;
location / { proxy_pass http://localhost:8080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; }}Cloudflare (Recommended)
Section titled “Cloudflare (Recommended)”We strongly recommend putting your LogNorth instance behind Cloudflare in proxied mode (orange cloud icon). This filters out bot scanners, vulnerability probes, and automated attacks before they reach your server. That keeps your error logs clean and your data meaningful.
Without Cloudflare, expect 90%+ of your logged requests to be bot noise (.env probes, .git/config scans, WordPress exploits, etc.).
Setup:
- Add your domain to Cloudflare (free plan works)
- Point the DNS A record to your server IP
- Ensure the proxy toggle is enabled (orange cloud)
- SSL mode: Full (strict)
Security
Section titled “Security”LogNorth does not harden your server. Server security is your responsibility. chasen alerts lists what is missing on a server, each with its fix.
Before exposing LogNorth to the internet:
- Use a non-root user with sudo privileges
- Enable SSH key authentication (disable password login)
- Configure a firewall (only open ports 80/443)
- Enable automatic OS security updates
See DigitalOcean’s Ubuntu Server Setup Guide for a solid baseline.
The installer (existing servers)
Section titled “The installer (existing servers)”Servers that the older installer set up keep working as they are: the nightly update and the lognorth commands. Running the install line again on them changes nothing. To move one to Chasen, see Move to Chasen.