mirror of
https://github.com/philomena-dev/philomena.git
synced 2024-11-23 12:08:00 +01:00
Migrate to OpenSearch (#186)
* Migrate to OpenSearch * opensearch security is stupid * forgor --------- Co-authored-by: byte[] <byteslice@airmail.cc>
This commit is contained in:
parent
ee12e0aaad
commit
194b2686f6
5 changed files with 31 additions and 13 deletions
|
@ -15,7 +15,7 @@ config :philomena,
|
||||||
anonymous_name_salt: System.fetch_env!("ANONYMOUS_NAME_SALT"),
|
anonymous_name_salt: System.fetch_env!("ANONYMOUS_NAME_SALT"),
|
||||||
hcaptcha_secret_key: System.fetch_env!("HCAPTCHA_SECRET_KEY"),
|
hcaptcha_secret_key: System.fetch_env!("HCAPTCHA_SECRET_KEY"),
|
||||||
hcaptcha_site_key: System.fetch_env!("HCAPTCHA_SITE_KEY"),
|
hcaptcha_site_key: System.fetch_env!("HCAPTCHA_SITE_KEY"),
|
||||||
elasticsearch_url: System.get_env("ELASTICSEARCH_URL", "http://localhost:9200"),
|
opensearch_url: System.get_env("OPENSEARCH_URL", "https://admin:admin@localhost:9200"),
|
||||||
advert_file_root: System.fetch_env!("ADVERT_FILE_ROOT"),
|
advert_file_root: System.fetch_env!("ADVERT_FILE_ROOT"),
|
||||||
avatar_file_root: System.fetch_env!("AVATAR_FILE_ROOT"),
|
avatar_file_root: System.fetch_env!("AVATAR_FILE_ROOT"),
|
||||||
badge_file_root: System.fetch_env!("BADGE_FILE_ROOT"),
|
badge_file_root: System.fetch_env!("BADGE_FILE_ROOT"),
|
||||||
|
@ -91,6 +91,10 @@ config :philomena, :s3_secondary_options,
|
||||||
|
|
||||||
config :philomena, :s3_secondary_bucket, System.get_env("ALT_S3_BUCKET")
|
config :philomena, :s3_secondary_bucket, System.get_env("ALT_S3_BUCKET")
|
||||||
|
|
||||||
|
# Don't bail on OpenSearch's self-signed certificate
|
||||||
|
config :elastix,
|
||||||
|
httpoison_options: [ssl: [verify: :verify_none]]
|
||||||
|
|
||||||
config :ex_aws, :hackney_opts,
|
config :ex_aws, :hackney_opts,
|
||||||
timeout: 180_000,
|
timeout: 180_000,
|
||||||
recv_timeout: 180_000,
|
recv_timeout: 180_000,
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
version: '3'
|
version: '3'
|
||||||
volumes:
|
volumes:
|
||||||
postgres_data: {}
|
postgres_data: {}
|
||||||
elastic_data: {}
|
opensearch_data: {}
|
||||||
app_cargo_data: {}
|
app_cargo_data: {}
|
||||||
app_build_data: {}
|
app_build_data: {}
|
||||||
app_deps_data: {}
|
app_deps_data: {}
|
||||||
|
@ -31,7 +31,7 @@ services:
|
||||||
- IMAGE_URL_ROOT=/img
|
- IMAGE_URL_ROOT=/img
|
||||||
- BADGE_URL_ROOT=/badge-img
|
- BADGE_URL_ROOT=/badge-img
|
||||||
- TAG_URL_ROOT=/tag-img
|
- TAG_URL_ROOT=/tag-img
|
||||||
- ELASTICSEARCH_URL=http://elasticsearch:9200
|
- OPENSEARCH_URL=http://opensearch:9200
|
||||||
- REDIS_HOST=valkey
|
- REDIS_HOST=valkey
|
||||||
- DATABASE_URL=ecto://postgres:postgres@postgres/philomena_dev
|
- DATABASE_URL=ecto://postgres:postgres@postgres/philomena_dev
|
||||||
- CDN_HOST=localhost
|
- CDN_HOST=localhost
|
||||||
|
@ -54,7 +54,7 @@ services:
|
||||||
- app_native_data:/srv/philomena/priv/native
|
- app_native_data:/srv/philomena/priv/native
|
||||||
depends_on:
|
depends_on:
|
||||||
- postgres
|
- postgres
|
||||||
- elasticsearch
|
- opensearch
|
||||||
- valkey
|
- valkey
|
||||||
ports:
|
ports:
|
||||||
- '5173:5173'
|
- '5173:5173'
|
||||||
|
@ -68,14 +68,13 @@ services:
|
||||||
logging:
|
logging:
|
||||||
driver: "none"
|
driver: "none"
|
||||||
|
|
||||||
elasticsearch:
|
opensearch:
|
||||||
image: elasticsearch:7.9.3
|
image: opensearchproject/opensearch:2.14.0
|
||||||
volumes:
|
volumes:
|
||||||
- elastic_data:/usr/share/elasticsearch/data
|
- opensearch_data:/usr/share/opensearch/data
|
||||||
|
- ./docker/opensearch/opensearch.yml:/usr/share/opensearch/config/opensearch.yml
|
||||||
logging:
|
logging:
|
||||||
driver: "none"
|
driver: "none"
|
||||||
environment:
|
|
||||||
- discovery.type=single-node
|
|
||||||
ulimits:
|
ulimits:
|
||||||
nofile:
|
nofile:
|
||||||
soft: 65536
|
soft: 65536
|
||||||
|
|
|
@ -34,11 +34,11 @@ npm install
|
||||||
# Always install mix dependencies
|
# Always install mix dependencies
|
||||||
(cd /srv/philomena && mix deps.get)
|
(cd /srv/philomena && mix deps.get)
|
||||||
|
|
||||||
# Sleep to allow Elasticsearch to finish initializing
|
# Sleep to allow OpenSearch to finish initializing
|
||||||
# if it's not done doing whatever it does yet
|
# if it's not done doing whatever it does yet
|
||||||
echo -n "Waiting for Elasticsearch"
|
echo -n "Waiting for OpenSearch"
|
||||||
|
|
||||||
until wget -qO - elasticsearch:9200; do
|
until wget --no-check-certificate -qO - http://opensearch:9200; do
|
||||||
echo -n "."
|
echo -n "."
|
||||||
sleep 2
|
sleep 2
|
||||||
done
|
done
|
||||||
|
|
15
docker/opensearch/opensearch.yml
Normal file
15
docker/opensearch/opensearch.yml
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
---
|
||||||
|
cluster.name: docker-cluster
|
||||||
|
|
||||||
|
# Bind to all interfaces because we don't know what IP address Docker will assign to us.
|
||||||
|
network.host: 0.0.0.0
|
||||||
|
|
||||||
|
# Setting network.host to a non-loopback address enables the annoying bootstrap checks. "Single-node" mode disables them again.
|
||||||
|
discovery.type: single-node
|
||||||
|
|
||||||
|
# Disable security. We don't need it for dev environment.
|
||||||
|
# Also, whoever thought it's a GREAT IDEA TO ENFORCE SECURITY FEATURES
|
||||||
|
# BY DEFAULT IN A FREAKING DOCKER CONTAINER should be forced to play
|
||||||
|
# the password game every time they would like to create a new account
|
||||||
|
# anywhere whatsoever.
|
||||||
|
plugins.security.disabled: true
|
|
@ -30,7 +30,7 @@ defmodule Philomena.Elasticsearch do
|
||||||
defp index_for(Filter), do: FilterIndex
|
defp index_for(Filter), do: FilterIndex
|
||||||
|
|
||||||
defp elastic_url do
|
defp elastic_url do
|
||||||
Application.get_env(:philomena, :elasticsearch_url)
|
Application.get_env(:philomena, :opensearch_url)
|
||||||
end
|
end
|
||||||
|
|
||||||
def create_index!(module) do
|
def create_index!(module) do
|
||||||
|
|
Loading…
Reference in a new issue