Neverkin
★ 21About
Community Ratings
No ratings yetNew this week
Read recap →Features
- interactive mindmap
- rich text editing
- wiki pages
- character pages
- @mention relations
- real-time collaboration
- multi-track timelines
- custom calendars
Details
- Last Updated
- Oct 28, 2026
- Created
- Oct 18, 2022
- Install Methods
- dockerdocker-composesource
- Requirements
- NodeDockerPostgreSQLRedisNginx
- Authentication
- local
- Backup & Export
- database-dumpfile-backup
- Runtime / Stack
- NodejsDocker
- Privacy & Independence
- No Cloud Required
- User Model
- Multi-User
- Deployment
Deployment: Docker Compose ✓9 Containers — heavy hosting footprintRuns as 9 containers
Run Neverkin yourself
Pick how much you want to manage.
HetznerBest match
Full control
A small server, then Docker Compose.
About 20 minutes with Docker
DigitalOcean
Full control
A small server, then Docker Compose.
About 20 minutes with Docker
OVHcloud
Full control
A small server, then Docker Compose.
About 20 minutes with Docker
Is this your project? Sponsor a listing
Run Neverkin with Docker Compose
Compose file from the Neverkin project repository.
9 services
no resource limits declared
needs persistent storage (6 volumes)
docker-compose.prod.yml · @ 77746ad · scanned Oct 12, 2026
version: '3.8'
services:
gatekeeper:
image: tenebrie/timelines-gatekeeper:${VERSION}
build:
context: ./app/gatekeeper-proxy
dockerfile: ./Dockerfile.prod
ports:
- target: 80
published: 80
mode: host
- target: 443
published: 443
mode: host
deploy:
endpoint_mode: dnsrr
replicas: 1
placement:
constraints:
- node.role == manager
update_config:
order: stop-first
parallelism: 1
delay: 10s
failure_action: pause
secrets:
- environment
volumes:
- /mnt/volume_secrets/certs:/etc/letsencrypt:cached
logging:
driver: json-file
options:
max-size: '50m'
max-file: '10'
styx:
image: tenebrie/timelines-styx:${VERSION}
build:
context: ./
dockerfile: ./app/styx-frontend/Dockerfile.prod
args:
VERSION: ${VERSION}
ASSET_STORE_URL: ${ASSET_STORE_URL:-}
deploy:
replicas: 2
update_config:
order: start-first
parallelism: 2
delay: 10s
failure_action: pause
secrets:
- environment
healthcheck:
test: ["CMD", "wget", "-q", "--spider", "http://localhost:8080/health"]
interval: 15s
timeout: 30s
retries: 3
start_period: 30s
rhea:
image: tenebrie/timelines-rhea:${VERSION}
build:
context: ./
dockerfile: ./app/rhea-backend/Dockerfile.prod
environment:
NODE_ENV: production # Prod or staging
DATABASE_URL: postgresql://docker:docker@rhea-postgres:5432/db?schema=public
command: node dist/src/index.js
stop_grace_period: 30s
deploy:
replicas: 2
update_config:
order: start-first
parallelism: 1
delay: 10s
failure_action: pause
volumes:
- /mnt/volume_rhea_postgres:/mnt/volume_rhea_postgres:ro
secrets:
- jwt-secret
- environment
- s3-bucket-id
- s3-endpoint
- s3-access-key-id
- s3-access-key-secret
- webhook-contact-form-url
- imagen-google-api-key
calliope:
image: tenebrie/timelines-calliope:${VERSION}
build:
context: ./
dockerfile: ./app/calliope-websockets/Dockerfile.prod
environment:
NODE_ENV: production # Prod or staging
command: node dist/index.js
stop_grace_period: 30s
deploy:
replicas: 2
update_config:
order: start-first
parallelism: 1
delay: 10s
failure_action: pause
secrets:
- jwt-secret
- environment
healthcheck:
test: ["CMD", "wget", "-q", "--spider", "http://localhost:3001/calliope/health"]
interval: 15s
timeout: 30s
retries: 3
start_period: 30s
orpheus:
image: tenebrie/timelines-orpheus:${VERSION}
build:
context: ./
dockerfile: ./app/orpheus-mcp/Dockerfile.prod
environment:
NODE_ENV: production # Prod or staging
REQUIRE_OAUTH: "true"
command: npm run prod
deploy:
replicas: 1
update_config:
order: start-first
parallelism: 1
delay: 10s
failure_action: pause
secrets:
- jwt-secret
- environment
healthcheck:
test: ["CMD", "wget", "-q", "--spider", "http://localhost:3002/orpheus/health"]
interval: 30s
timeout: 30s
retries: 3
start_period: 60s
thetis:
image: tenebrie/timelines-thetis:${VERSION}
build:
context: ./
dockerfile: ./app/thetis-landing/Dockerfile.prod
deploy:
replicas: 1
update_config:
order: start-first
parallelism: 1
delay: 10s
failure_action: pause
healthcheck:
test: ["CMD", "wget", "-q", "--spider", "http://localhost:8081/health"]
interval: 15s
timeout: 30s
retries: 3
start_period: 30s
rhea-postgres:
deploy:
placement:
constraints:
- node.role == manager
volumes:
- /mnt/volume_rhea_postgres/data:/var/lib/postgresql/data/:cached
redis:
deploy:
placement:
constraints:
- node.role == manager
chronos:
image: tenebrie/timelines-chronos:${VERSION}
build:
context: ./app/chronos-backups
dockerfile: ./Dockerfile
environment:
BACKREST_DATA: /data
BACKREST_CONFIG: /config/config.json
XDG_CACHE_HOME: /cache
deploy:
replicas: 1
placement:
constraints:
- node.role == manager
update_config:
order: stop-first
parallelism: 1
delay: 10s
failure_action: pause
secrets:
- s3-bucket-id
- s3-endpoint
- s3-access-key-id
- s3-access-key-secret
volumes:
- /mnt/volume_rhea_postgres/backrest/data:/data:cached
- /mnt/volume_rhea_postgres/backrest/config:/config:cached
- /mnt/volume_rhea_postgres/backrest/cache:/cache:cached
depends_on:
- rhea-postgres
healthcheck:
test: ["CMD", "wget", "-q", "--spider", "http://localhost:9898"]
interval: 15s
timeout: 30s
retries: 3
start_period: 30s
secrets:
jwt-secret:
external: true
environment:
external: true
s3-bucket-id:
external: true
s3-endpoint:
external: true
s3-access-key-id:
external: true
s3-access-key-secret:
external: true
webhook-contact-form-url:
external: true
imagen-google-api-key:
external: true
This file may be out of date. Check the Neverkin documentation for current setup steps.
Tags
Track your self-hosted stack
Bookmark software to try, rate tools you've used, and keep your collection in one place.