From acaaffb9821977b1eae2ceb836560a3a4e650a61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Reynir=20Bj=C3=B6rnsson?= Date: Sat, 15 Feb 2025 16:30:05 +0100 Subject: [PATCH] WIP nodebb --- roles/docker/defaults/main.yml | 5 +++ roles/docker/tasks/pre_deploy/nodebb.yml | 7 +++ .../templates/compose-files/nodebb.yml.j2 | 45 +++++++++++++++++++ .../templates/nodebb/mongodb-user-init.js.j2 | 1 + roles/docker/templates/nodebb/setup.json.j2 | 23 ++++++++++ 5 files changed, 81 insertions(+) create mode 100644 roles/docker/tasks/pre_deploy/nodebb.yml create mode 100644 roles/docker/templates/compose-files/nodebb.yml.j2 create mode 100644 roles/docker/templates/nodebb/mongodb-user-init.js.j2 create mode 100644 roles/docker/templates/nodebb/setup.json.j2 diff --git a/roles/docker/defaults/main.yml b/roles/docker/defaults/main.yml index 1bee79d..8a12d09 100644 --- a/roles/docker/defaults/main.yml +++ b/roles/docker/defaults/main.yml @@ -226,6 +226,11 @@ services: volume_folder: "{{ volume_root_folder }}/uptime_kuma" pre_deploy_tasks: true version: "latest" + nodebb: + domain: "forum.{{ base_domain }}" + version: "4.x" + pre_deploy_tasks: true + volume_folder: "{{ volume_root_folder }}/nodebb" services_exclude: [] services_include: "{{ services | dict2items | map(attribute='key') | list | difference(services_exclude) }}" diff --git a/roles/docker/tasks/pre_deploy/nodebb.yml b/roles/docker/tasks/pre_deploy/nodebb.yml new file mode 100644 index 0000000..664af8c --- /dev/null +++ b/roles/docker/tasks/pre_deploy/nodebb.yml @@ -0,0 +1,7 @@ +# vim: ft=yaml.ansible +--- +- name: Upload setup.json + template: + src: nodebb/setup.json.j2 + dest: "{{ services.nodebb.volume_folder }}/setup.json" +# should we create directories?! diff --git a/roles/docker/templates/compose-files/nodebb.yml.j2 b/roles/docker/templates/compose-files/nodebb.yml.j2 new file mode 100644 index 0000000..8aed6a8 --- /dev/null +++ b/roles/docker/templates/compose-files/nodebb.yml.j2 @@ -0,0 +1,45 @@ +services: + nodebb: + image: ghcr.io/nodebb/nodebb:{{ services.nodebb.version }} + restart: unless-stopped + ports: + # - '4567:4567' # comment this out if you don't want to expose NodeBB to the host, or change the first number to any port you want + volumes: + - ./nodebb-build:/usr/src/app/build + - ./nodebb-uploads:/usr/src/app/public/uploads + - ./nodebb-config:/opt/config + - ./setup.json:/usr/src/app/setup.json + + mongo: + image: 'mongo:7-jammy' + restart: unless-stopped + ports: + - '27017:27017' + environment: + MONGO_INITDB_ROOT_USERNAME: nodebb + MONGO_INITDB_ROOT_PASSWORD: nodebb + MONGO_INITDB_DATABASE: nodebb + volumes: + - ./mongo-data:/data/db + - ./mongodb-user-init.js:/docker-entrypoint-initdb.d/user-init.js + redis: + image: redis:7.4.2-alpine + restart: unless-stopped + command: ['redis-server', '--appendonly', 'yes', '--loglevel', 'warning'] + # command: ['redis-server', '--save', '60', '1', '--loglevel', 'warning'] # uncomment if you want to use snapshotting instead of AOF + volumes: + - ./redis-data:/data + profiles: + - redis + + postgres: + image: postgres:17.2-alpine + restart: unless-stopped + environment: + POSTGRES_USER: nodebb + POSTGRES_PASSWORD: nodebb + POSTGRES_DB: nodebb + volumes: + - ./postgres-data:/var/lib/postgresql/data + profiles: + - postgres diff --git a/roles/docker/templates/nodebb/mongodb-user-init.js.j2 b/roles/docker/templates/nodebb/mongodb-user-init.js.j2 new file mode 100644 index 0000000..36b7079 --- /dev/null +++ b/roles/docker/templates/nodebb/mongodb-user-init.js.j2 @@ -0,0 +1 @@ +db.createUser( { user: 'nodebb', pwd: 'nodebb', roles: [ { role: 'readWrite', db: 'nodebb' }, { role: 'clusterMonitor', db: 'admin' } ] } ) \ No newline at end of file diff --git a/roles/docker/templates/nodebb/setup.json.j2 b/roles/docker/templates/nodebb/setup.json.j2 new file mode 100644 index 0000000..a9fa901 --- /dev/null +++ b/roles/docker/templates/nodebb/setup.json.j2 @@ -0,0 +1,23 @@ +{ + "defaults": { + "mongo": { + "host": "mongo", + "port": 27017, + "database": "nodebb", + "username": "nodebb", + "password": "nodebb" + }, + "redis": { + "host": "redis", + "port": 6379, + "database": 0 + }, + "postgres": { + "host": "postgres", + "port": 5432, + "database": "nodebb", + "username": "nodebb", + "password": "nodebb" + } + } +} \ No newline at end of file