2023-08-17 02:09:36 -04:00
|
|
|
# NEODB Docker Compose File
|
|
|
|
#
|
2023-08-17 18:54:00 -04:00
|
|
|
# Note: may not be secure for production usage, use at your own risk
|
|
|
|
#
|
|
|
|
# The following env variable are expected from .env or command line
|
|
|
|
# - NEODB_SECRET_KEY
|
|
|
|
# - NEODB_SITE_DOMAIN
|
|
|
|
# - NEODB_SITE_NAME
|
|
|
|
# - NEODB_DATA
|
2023-08-17 02:09:36 -04:00
|
|
|
|
|
|
|
x-shared:
|
|
|
|
neodb-service: &neodb-service
|
|
|
|
build: .
|
2023-11-29 21:00:09 -05:00
|
|
|
image: ${NEODB_IMAGE:-neodb/neodb:latest}
|
2023-08-17 02:09:36 -04:00
|
|
|
environment:
|
2023-09-25 19:47:46 +00:00
|
|
|
NEODB_DEBUG:
|
|
|
|
NEODB_SECRET_KEY:
|
2023-08-21 21:46:51 +00:00
|
|
|
NEODB_SITE_NAME:
|
|
|
|
NEODB_SITE_DOMAIN:
|
2023-10-20 21:04:31 +00:00
|
|
|
NEODB_SITE_INTRO:
|
2023-12-01 18:09:49 -05:00
|
|
|
NEODB_SITE_HEAD:
|
2023-08-21 21:46:51 +00:00
|
|
|
NEODB_SITE_LOGO:
|
2023-09-25 19:47:46 +00:00
|
|
|
NEODB_SITE_ICON:
|
|
|
|
NEODB_USER_ICON:
|
|
|
|
NEODB_SITE_LINKS:
|
2023-12-06 19:40:23 -05:00
|
|
|
NEODB_SITE_DESCRIPTION:
|
2024-04-06 11:53:31 -04:00
|
|
|
NEODB_ALTERNATIVE_DOMAINS:
|
|
|
|
NEODB_LANGUAGE:
|
2023-08-21 21:46:51 +00:00
|
|
|
NEODB_ADMIN_USERNAMES:
|
2023-09-03 20:11:46 +00:00
|
|
|
NEODB_INVITE_ONLY:
|
2023-09-25 19:47:46 +00:00
|
|
|
NEODB_LOGIN_MASTODON_WHITELIST:
|
|
|
|
NEODB_MASTODON_CLIENT_SCOPE:
|
2023-09-03 21:25:30 +00:00
|
|
|
NEODB_DISABLE_DEFAULT_RELAY:
|
2023-12-28 22:12:07 -05:00
|
|
|
NEODB_DISABLE_CRON_JOBS:
|
2024-07-05 21:19:33 -04:00
|
|
|
NEODB_SEARCH_PEERS:
|
2024-01-14 13:12:43 -05:00
|
|
|
NEODB_MIN_MARKS_FOR_DISCOVER:
|
2023-11-21 00:49:42 -05:00
|
|
|
NEODB_SENTRY_DSN:
|
|
|
|
TAKAHE_SENTRY_DSN:
|
2024-05-12 22:39:44 -04:00
|
|
|
NEODB_SENTRY_SAMPLE_RATE:
|
2023-11-25 00:26:16 -05:00
|
|
|
NEODB_DB_URL: ${NEODB_DB_URL:-postgres://neodb:aubergine@neodb-db/neodb}
|
|
|
|
TAKAHE_DB_URL: ${TAKAHE_DB_URL:-postgres://takahe:aubergine@takahe-db/takahe}
|
|
|
|
NEODB_REDIS_URL: ${NEODB_REDIS_URL:-redis://redis:6379/0}
|
|
|
|
NEODB_SEARCH_URL: ${NEODB_SEARCH_URL:-typesense://user:eggplant@typesense:8108/catalog}
|
2023-09-25 19:47:46 +00:00
|
|
|
NEODB_EMAIL_URL:
|
2023-09-25 23:22:34 +00:00
|
|
|
NEODB_EMAIL_FROM: no-reply@${NEODB_SITE_DOMAIN}
|
2023-12-10 19:14:32 -05:00
|
|
|
NEODB_ENABLE_LOCAL_ONLY:
|
2024-07-04 00:17:12 -04:00
|
|
|
NEODB_ENABLE_LOGIN_BLUESKY:
|
|
|
|
NEODB_ENABLE_LOGIN_THREADS:
|
2023-12-23 23:55:33 -05:00
|
|
|
NEODB_EXTRA_APPS:
|
2023-11-26 17:23:53 -05:00
|
|
|
NEODB_FANOUT_LIMIT_DAYS:
|
|
|
|
TAKAHE_FANOUT_LIMIT_DAYS:
|
2023-08-24 05:48:14 +00:00
|
|
|
NEODB_DOWNLOADER_PROXY_LIST:
|
|
|
|
NEODB_DOWNLOADER_BACKUP_PROXY:
|
2023-09-25 19:47:46 +00:00
|
|
|
NEODB_DOWNLOADER_SAVE_DIR:
|
2023-08-22 17:13:52 +00:00
|
|
|
NEODB_MEDIA_ROOT: /www/m
|
2023-08-23 22:18:15 +00:00
|
|
|
NEODB_VENV: /neodb-venv
|
2023-08-21 21:46:51 +00:00
|
|
|
TAKAHE_SECRET_KEY: ${NEODB_SECRET_KEY}
|
|
|
|
TAKAHE_MAIN_DOMAIN: ${NEODB_SITE_DOMAIN}
|
|
|
|
TAKAHE_MEDIA_URL: https://${NEODB_SITE_DOMAIN}/media/
|
|
|
|
TAKAHE_EMAIL_FROM: no-reply@${NEODB_SITE_DOMAIN}
|
2023-11-25 00:26:16 -05:00
|
|
|
TAKAHE_DATABASE_SERVER: ${TAKAHE_DATABASE_SERVER:-postgres://takahe:aubergine@takahe-db/takahe}
|
|
|
|
TAKAHE_CACHES_DEFAULT: ${TAKAHE_CACHES_DEFAULT:-redis://redis:6379/0}
|
2023-08-21 21:46:51 +00:00
|
|
|
TAKAHE_MEDIA_BACKEND: local://www/media/
|
2023-08-22 17:13:52 +00:00
|
|
|
TAKAHE_MEDIA_ROOT: /www/media
|
2023-08-21 21:46:51 +00:00
|
|
|
TAKAHE_USE_PROXY_HEADERS: true
|
2024-06-10 17:28:20 -04:00
|
|
|
TAKAHE_ALLOW_USER_MIGRATION: true
|
2023-11-26 17:23:53 -05:00
|
|
|
TAKAHE_STATOR_CONCURRENCY: ${TAKAHE_STATOR_CONCURRENCY:-4}
|
|
|
|
TAKAHE_STATOR_CONCURRENCY_PER_MODEL: ${TAKAHE_STATOR_CONCURRENCY_PER_MODEL:-2}
|
2023-12-07 10:14:08 -05:00
|
|
|
TAKAHE_VAPID_PUBLIC_KEY:
|
|
|
|
TAKAHE_VAPID_PRIVATE_KEY:
|
2023-12-12 22:11:22 -05:00
|
|
|
TAKAHE_DEBUG: ${NEODB_DEBUG:-False}
|
2023-08-23 22:18:15 +00:00
|
|
|
TAKAHE_VENV: /takahe-venv
|
2024-07-03 00:07:07 -04:00
|
|
|
THREADS_APP_ID:
|
|
|
|
THREADS_APP_SECRET:
|
2023-09-25 19:47:46 +00:00
|
|
|
SPOTIFY_API_KEY:
|
|
|
|
TMDB_API_V3_KEY:
|
|
|
|
GOOGLE_API_KEY:
|
|
|
|
DISCOGS_API_KEY:
|
2023-09-25 23:22:34 +00:00
|
|
|
IGDB_API_CLIENT_ID:
|
|
|
|
IGDB_API_CLIENT_SECRET:
|
2023-09-25 19:47:46 +00:00
|
|
|
DISCORD_WEBHOOKS:
|
|
|
|
SLACK_API_TOKEN:
|
2023-11-24 20:41:28 -05:00
|
|
|
SSL_ONLY:
|
2023-08-17 02:09:36 -04:00
|
|
|
restart: "on-failure"
|
|
|
|
volumes:
|
2023-08-17 18:54:00 -04:00
|
|
|
- ${NEODB_DATA:-../data}/neodb-media:/www/m
|
|
|
|
- ${NEODB_DATA:-../data}/takahe-media:/www/media
|
|
|
|
- ${NEODB_DATA:-../data}/takahe-cache:/www/cache
|
|
|
|
- ${NEODB_DATA:-../data}/www-root:/www/root
|
2023-08-17 02:09:36 -04:00
|
|
|
depends_on:
|
2023-08-17 18:54:00 -04:00
|
|
|
- redis
|
2023-08-17 02:09:36 -04:00
|
|
|
- neodb-db
|
2023-08-17 18:54:00 -04:00
|
|
|
- typesense
|
|
|
|
- takahe-db
|
2023-08-21 21:46:51 +00:00
|
|
|
profiles:
|
|
|
|
- production
|
|
|
|
|
|
|
|
dev-neodb-service: &dev-neodb-service
|
|
|
|
<<: *neodb-service
|
|
|
|
# environment:
|
|
|
|
# NEODB_DEBUG: True
|
|
|
|
volumes:
|
|
|
|
- ${NEODB_DATA:-../data}/www-root:/www/root
|
|
|
|
- ${NEODB_DATA:-../data}/neodb-media:/www/m
|
|
|
|
- ${NEODB_DATA:-../data}/takahe-media:/www/media
|
|
|
|
- ${NEODB_DATA:-../data}/takahe-cache:/www/cache
|
|
|
|
- ${NEODB_DATA:-../data}/nginx-log:/var/log/nginx
|
|
|
|
- ${NEODB_SRC:-.}:/neodb
|
|
|
|
- ${TAKAHE_SRC:-./neodb-takahe}:/takahe
|
|
|
|
profiles:
|
|
|
|
- dev
|
2022-11-09 13:56:50 -05:00
|
|
|
|
|
|
|
services:
|
2023-08-17 18:54:00 -04:00
|
|
|
redis:
|
2022-11-09 13:56:50 -05:00
|
|
|
image: redis:alpine
|
2023-08-17 18:54:00 -04:00
|
|
|
command: redis-server --save 60 1 --loglevel warning
|
|
|
|
volumes:
|
|
|
|
- ${NEODB_DATA:-../data}/redis:/data
|
2022-11-09 13:56:50 -05:00
|
|
|
|
2023-08-17 18:54:00 -04:00
|
|
|
typesense:
|
2024-01-09 17:18:45 -05:00
|
|
|
image: typesense/typesense:0.25.2
|
2023-08-17 02:09:36 -04:00
|
|
|
restart: "on-failure"
|
2023-08-17 18:54:00 -04:00
|
|
|
# healthcheck:
|
|
|
|
# test: ['CMD', 'curl', '-vf', 'http://127.0.0.1:8108/health']
|
2023-08-17 02:09:36 -04:00
|
|
|
# ports:
|
|
|
|
# - "18108:8108"
|
2022-11-09 13:56:50 -05:00
|
|
|
environment:
|
2023-08-17 02:09:36 -04:00
|
|
|
GLOG_minloglevel: 2
|
|
|
|
volumes:
|
|
|
|
- ${NEODB_DATA:-../data}/typesense:/data
|
|
|
|
command: '--data-dir /data --api-key=eggplant'
|
2022-11-09 13:56:50 -05:00
|
|
|
|
2023-08-17 02:09:36 -04:00
|
|
|
neodb-db:
|
|
|
|
image: postgres:14-alpine
|
|
|
|
healthcheck:
|
|
|
|
test: ['CMD', 'pg_isready', '-U', 'neodb']
|
2022-11-09 13:56:50 -05:00
|
|
|
volumes:
|
2023-08-17 18:54:00 -04:00
|
|
|
- ${NEODB_DATA:-../data}/neodb-db:/var/lib/postgresql/data
|
2022-11-09 13:56:50 -05:00
|
|
|
environment:
|
2023-08-17 02:09:36 -04:00
|
|
|
- POSTGRES_DB=neodb
|
|
|
|
- POSTGRES_USER=neodb
|
|
|
|
- POSTGRES_PASSWORD=aubergine
|
|
|
|
|
2023-08-17 18:54:00 -04:00
|
|
|
takahe-db:
|
|
|
|
image: postgres:14-alpine
|
|
|
|
healthcheck:
|
|
|
|
test: ['CMD', 'pg_isready', '-U', 'takahe']
|
|
|
|
volumes:
|
|
|
|
- ${NEODB_DATA:-../data}/takahe-db:/var/lib/postgresql/data
|
|
|
|
environment:
|
|
|
|
- POSTGRES_DB=takahe
|
|
|
|
- POSTGRES_USER=takahe
|
|
|
|
- POSTGRES_PASSWORD=aubergine
|
|
|
|
|
2023-08-17 02:09:36 -04:00
|
|
|
migration:
|
|
|
|
<<: *neodb-service
|
|
|
|
restart: "no"
|
2023-08-20 04:27:23 +00:00
|
|
|
command: /bin/neodb-init
|
2023-08-17 02:09:36 -04:00
|
|
|
depends_on:
|
|
|
|
neodb-db:
|
|
|
|
condition: service_healthy
|
2023-08-17 18:54:00 -04:00
|
|
|
typesense:
|
2023-08-17 02:09:36 -04:00
|
|
|
condition: service_started
|
2023-08-17 18:54:00 -04:00
|
|
|
redis:
|
2023-08-17 02:09:36 -04:00
|
|
|
condition: service_started
|
2023-08-17 18:54:00 -04:00
|
|
|
takahe-db:
|
|
|
|
condition: service_healthy
|
2023-08-17 02:09:36 -04:00
|
|
|
|
|
|
|
neodb-web:
|
|
|
|
<<: *neodb-service
|
2024-06-22 11:16:20 -04:00
|
|
|
command: ${NEODB_VENV:-/neodb-venv}/bin/gunicorn boofilsic.wsgi -w ${NEODB_WEB_WORKER_NUM:-8} --preload --max-requests 2000 --timeout 60 -b 0.0.0.0:8000
|
2023-08-17 18:54:00 -04:00
|
|
|
healthcheck:
|
2023-12-18 09:09:43 -05:00
|
|
|
test: ['CMD', 'wget', '-qO/tmp/test', '--header', 'X-Forwarded-Proto: https', 'http://127.0.0.1:8000/nodeinfo/2.0/']
|
2023-08-17 02:09:36 -04:00
|
|
|
depends_on:
|
|
|
|
migration:
|
|
|
|
condition: service_completed_successfully
|
|
|
|
|
2024-01-28 10:17:11 -05:00
|
|
|
neodb-web-api:
|
|
|
|
<<: *neodb-service
|
2024-06-22 11:16:20 -04:00
|
|
|
command: ${NEODB_VENV:-/neodb-venv}/bin/gunicorn boofilsic.wsgi -w ${NEODB_API_WORKER_NUM:-4} --preload --max-requests 2000 --timeout 30 -b 0.0.0.0:8000
|
2024-01-28 10:17:11 -05:00
|
|
|
healthcheck:
|
|
|
|
test: ['CMD', 'wget', '-qO/tmp/test', '--header', 'X-Forwarded-Proto: https', 'http://127.0.0.1:8000/nodeinfo/2.0/']
|
|
|
|
depends_on:
|
|
|
|
migration:
|
|
|
|
condition: service_completed_successfully
|
|
|
|
|
2023-08-17 02:09:36 -04:00
|
|
|
neodb-worker:
|
|
|
|
<<: *neodb-service
|
2023-10-21 05:41:38 +00:00
|
|
|
command: neodb-manage rqworker --with-scheduler import export mastodon fetch crawl ap cron
|
2022-11-09 13:56:50 -05:00
|
|
|
depends_on:
|
2023-08-17 02:09:36 -04:00
|
|
|
migration:
|
|
|
|
condition: service_completed_successfully
|
|
|
|
|
2023-08-17 18:54:00 -04:00
|
|
|
neodb-worker-extra:
|
2023-08-17 02:09:36 -04:00
|
|
|
<<: *neodb-service
|
2024-06-01 01:52:22 -04:00
|
|
|
command: neodb-manage rqworker-pool --num-workers ${NEODB_RQ_WORKER_NUM:-4} mastodon fetch crawl ap
|
2023-08-17 02:09:36 -04:00
|
|
|
depends_on:
|
|
|
|
migration:
|
|
|
|
condition: service_completed_successfully
|
|
|
|
|
2023-08-17 18:54:00 -04:00
|
|
|
takahe-web:
|
2023-08-17 02:09:36 -04:00
|
|
|
<<: *neodb-service
|
2024-06-22 11:16:20 -04:00
|
|
|
command: ${TAKAHE_VENV:-/takahe-venv}/bin/gunicorn --chdir /takahe takahe.wsgi -w ${TAKAHE_WEB_WORKER_NUM:-8} --max-requests 2000 --timeout 60 --preload -b 0.0.0.0:8000
|
2023-08-17 18:54:00 -04:00
|
|
|
healthcheck:
|
2023-12-18 09:09:43 -05:00
|
|
|
test: ['CMD', 'wget', '-qO/tmp/test', '--header', 'X-Forwarded-Proto: https', 'http://127.0.0.1:8000/api/v1/instance']
|
2023-08-17 02:09:36 -04:00
|
|
|
depends_on:
|
2023-08-17 18:54:00 -04:00
|
|
|
migration:
|
|
|
|
condition: service_completed_successfully
|
|
|
|
|
|
|
|
takahe-stator:
|
|
|
|
<<: *neodb-service
|
2023-08-23 22:18:15 +00:00
|
|
|
command: takahe-manage runstator
|
2024-05-09 08:44:59 -04:00
|
|
|
stop_signal: SIGINT
|
2023-08-17 18:54:00 -04:00
|
|
|
depends_on:
|
|
|
|
migration:
|
|
|
|
condition: service_completed_successfully
|
|
|
|
|
|
|
|
nginx:
|
|
|
|
<<: *neodb-service
|
|
|
|
user: "root:root"
|
2023-08-20 04:27:23 +00:00
|
|
|
command: nginx-start
|
2023-08-21 21:46:51 +00:00
|
|
|
environment:
|
|
|
|
NEODB_WEB_SERVER: neodb-web:8000
|
2024-01-28 10:17:11 -05:00
|
|
|
NEODB_API_SERVER: neodb-web-api:8000
|
2023-08-21 21:46:51 +00:00
|
|
|
TAKAHE_WEB_SERVER: takahe-web:8000
|
|
|
|
NGINX_CONF: /neodb/misc/nginx.conf.d/neodb.conf
|
2023-08-17 18:54:00 -04:00
|
|
|
depends_on:
|
|
|
|
takahe-web:
|
|
|
|
condition: service_started
|
2023-08-17 02:09:36 -04:00
|
|
|
neodb-web:
|
|
|
|
condition: service_started
|
|
|
|
ports:
|
|
|
|
- "${NEODB_PORT:-8000}:8000"
|
2023-08-17 18:54:00 -04:00
|
|
|
|
|
|
|
shell:
|
|
|
|
<<: *neodb-service
|
|
|
|
command: bash
|
|
|
|
profiles: ["tools"]
|
|
|
|
|
|
|
|
root:
|
|
|
|
<<: *neodb-service
|
|
|
|
command: bash
|
|
|
|
profiles: ["tools"]
|
|
|
|
user: "root:root"
|
2023-08-21 21:46:51 +00:00
|
|
|
|
|
|
|
dev-neodb-web:
|
|
|
|
<<: *dev-neodb-service
|
|
|
|
command: neodb-manage runserver 0.0.0.0:8000
|
2024-05-09 08:44:59 -04:00
|
|
|
stop_signal: SIGINT
|
2023-08-21 21:46:51 +00:00
|
|
|
|
|
|
|
dev-neodb-worker:
|
|
|
|
<<: *dev-neodb-service
|
2024-05-20 23:17:47 -04:00
|
|
|
command: neodb-manage rqworker-pool --num-workers 4 import export mastodon fetch crawl ap cron
|
|
|
|
# command: neodb-manage rqworker --with-scheduler import export mastodon fetch crawl ap cron
|
2023-08-21 21:46:51 +00:00
|
|
|
|
|
|
|
dev-takahe-web:
|
|
|
|
<<: *dev-neodb-service
|
|
|
|
command: takahe-manage runserver 0.0.0.0:8000
|
2024-05-09 08:44:59 -04:00
|
|
|
stop_signal: SIGINT
|
2023-08-21 21:46:51 +00:00
|
|
|
|
|
|
|
dev-takahe-stator:
|
|
|
|
<<: *dev-neodb-service
|
|
|
|
command: takahe-manage runstator
|
2024-05-09 08:44:59 -04:00
|
|
|
stop_signal: SIGINT
|
2023-08-21 21:46:51 +00:00
|
|
|
|
|
|
|
dev-nginx:
|
|
|
|
<<: *dev-neodb-service
|
|
|
|
user: "root:root"
|
|
|
|
command: nginx-start
|
|
|
|
environment:
|
|
|
|
NEODB_WEB_SERVER: dev-neodb-web:8000
|
|
|
|
TAKAHE_WEB_SERVER: dev-takahe-web:8000
|
|
|
|
NGINX_CONF: /neodb/misc/nginx.conf.d/neodb-dev.conf
|
|
|
|
depends_on:
|
|
|
|
dev-takahe-web:
|
|
|
|
condition: service_started
|
|
|
|
dev-neodb-web:
|
|
|
|
condition: service_started
|
|
|
|
ports:
|
|
|
|
- "${NEODB_PORT:-8000}:8000"
|
|
|
|
|
|
|
|
dev-shell:
|
|
|
|
<<: *dev-neodb-service
|
|
|
|
command: bash
|
|
|
|
profiles: ["tools"]
|
|
|
|
|
|
|
|
dev-root:
|
|
|
|
<<: *dev-neodb-service
|
|
|
|
command: bash
|
|
|
|
profiles: ["tools"]
|
|
|
|
user: "root:root"
|