Logto

Logto is an open-source identity and access management (IAM) solution.

Self-Hosting Setup

Create Database

sudo -i -u postgres psql
CREATE USER logto WITH PASSWORD '<your_password>';
CREATE DATABASE logto OWNER logto;
GRANT ALL PRIVILEGES ON DATABASE logto TO logto;
ALTER USER logto WITH CREATEROLE;
\q

Create Files

sudo mkdir -p /opt/quadlet/logto
sudo nano /opt/quadlet/logto/.env
DB_URL=postgresql://logto:<your_password>@localhost:5432/logto
TRUST_PROXY_HEADER=1
ENDPOINT=https://auth.yourdomain.com
ADMIN_ENDPOINT=https://auth-admin.yourdomain.com
PORT=50000
ADMIN_PORT=50001

Create Quadlet

sudo nano /etc/containers/systemd/logto.container
[Unit]
Description=Logto Service
After=network.target postgresql.service
Requires=postgresql.service
 
[Container]
Image=docker.io/svhd/logto:latest
ContainerName=logto
Network=host
EnvironmentFile=/opt/quadlet/logto/.env
 
[Service]
Restart=always
RestartSec=10
TimeoutStartSec=300
 
[Install]
WantedBy=multi-user.target

Seed Database & Start

podman run --rm \
  --network host \
  --env-file /opt/quadlet/logto/.env \
  --entrypoint /bin/sh \
  docker.io/svhd/logto:latest \
  -c "npm run cli -- db seed"
 
sudo systemctl daemon-reload
sudo systemctl start logto
sudo journalctl -u logto -f