Skip to content

v2.1.4

Choose a tag to compare

@amiantos amiantos released this 26 Aug 14:39
· 175 commits to main since this release
0363e42

What's Changed

With this release, a fully optional decoupling of the IRC connections and the lurker server is possible. If you choose to set this up, this means when you docker compose pull && docker compose up -d for lurker updates in the future, it will not disconnect your users from IRC during the update. Instead, their connections will be persisted, and Lurker will re-attach to them when the update is complete.

If you do not want this, you do not need to do anything. Lurker will continue working just as it always has, no changes required from you. This update effectively does nothing in this case.

There is a migration guide, similar to when inline link previews were released, over here: MIGRATION_ENGINE.md. The migration guide is a little elaborate, so as an simpler example of a personal, self-hosted setup, without identd, here is what my docker-compose file looks like with previews and the engine added. Note that LURKER_ENGINE_SECRET goes in two places!

services:
  lurker-engine:
    image: ghcr.io/amiantos/lurker:engine-1
    container_name: lurker-engine
    restart: unless-stopped
    command: ['node_modules/.bin/tsx', 'server/engine.ts']
    environment:
      - LURKER_ENGINE_SECRET=<insert-your-own>
      - LURKER_ENGINE_LISTEN=0.0.0.0:8016
    healthcheck:
      test:
        [
          'CMD',
          'node',
          '-e',
          "require('http').get('http://127.0.0.1:8016/healthz',r=>process.exit(r.statusCode===200?0:1)).on('error',()=>process.exit(1))",
        ]
      interval: 10s
      timeout: 3s
      retries: 3
      start_period: 5s
    logging:
      options:
        max-size: 20m
        max-file: '3'
  lurker-previews:
    image: ghcr.io/amiantos/lurker-previews:latest
    restart: unless-stopped
    environment:
      - LURKER_PREVIEWS_ALLOW_PRIVATE=1
  lurker:
    image: ghcr.io/amiantos/lurker:staging
    container_name: lurker
    ports:
      - "8015:8015"
    volumes:
      - ./data:/app/data
    environment:
      - NODE_ENV=production
      - PORT=8015
      - DATABASE_PATH=/app/data/lurker.db
      - WEBAUTHN_RP_ID=irc.bradroot.me
      - WEBAUTHN_RP_NAME=Lurker
      - WEBAUTHN_ORIGIN=https://irc.bradroot.me
      - PUBLIC_BASE_URL=https://irc.bradroot.me
      - VAPID_SUBJECT=mailto:bradroot@me.com
      - CORS_ORIGIN=https://irc.bradroot.me
      - SESSION_SECRET=<insert-your-own>=
      - COOKIE_SECURE=true
      - LURKER_PREVIEW_CACHE_MODE=s3
      - LURKER_PREVIEW_CACHE_S3_ENDPOINT=<insert-your-own>
      - LURKER_PREVIEW_CACHE_S3_BUCKET=<insert-your-own>
      - LURKER_PREVIEW_CACHE_S3_ACCESS_KEY_ID=<insert-your-own>
      - LURKER_PREVIEW_CACHE_S3_SECRET_ACCESS_KEY=<insert-your-own>
      - LURKER_PREVIEW_CACHE_S3_PUBLIC_BASE_URL=<insert-your-own>
      - LURKER_PREVIEW_CACHE_S3_PREFIX=previews
      - LURKER_PREVIEWS_URL=http://lurker-previews:8030
      - LURKER_ENGINE_URL=tcp://lurker-engine:8016
      - LURKER_ENGINE_SECRET=<insert-your-own-same-as-above>
    restart: unless-stopped

For a more fully featured set up, including working identd, please refer to the Digital Ocean Setup script: digitalocean-cloud-init.sh.

What's Changed - Detailed

  • Update README with more user testimonials for Lurker by @amiantos in #833
  • Add code of conduct by @amiantos in #834
  • Add the IRC engine: a standalone holder for IRC sockets (#386, 1/3) by @amiantos in #828
  • Attach the app to the engine: transport, restore gates, and the flag (#386, 2/3) by @amiantos in #829
  • Self-host topology for the engine: compose overlay, docs, engine-1 tag (#386, 3/3) by @amiantos in #830
  • Docs: a walkthrough for switching an existing instance to the engine by @amiantos in #837
  • Lurker 2.1.4 — the IRC engine release by @amiantos in #838

Full Changelog: v2.1.3...v2.1.4