@@ -5,6 +5,8 @@ services:
55 followers_server:
66 image: "{ { followers_server_image } }:{ { followers_server_image_tag } }"
77 container_name: "followers_server"
8+ ports:
9+ - "127.0.0.1:3001:3001" # 127.0.0.1 ensures it's only open locally, not exposed to the network
810 environment:
911 - APP__followers__neo4j_password={ { neo4j_password } }
1012 - APP__ENVIRONMENT=production
@@ -19,9 +21,24 @@ services:
1921 - { { followers_server_dir } }/config/settings.production.yml:/app/config/settings.production.yml
2022 labels:
2123 - "traefik.enable=true"
24+
25+ # HTTP routing to port 3000
2226 - "traefik.http.routers.followers_server.rule=Host(`{ { domain } }`)"
2327 - "traefik.http.routers.followers_server.entrypoints=websecure"
2428 - "traefik.http.services.followers_server.loadbalancer.server.port=3000"
29+
30+ # TCP routing to port 3001
31+ - "traefik.tcp.routers.tcp_followers_server.rule=HostSNI(`{ { domain } }`)"
32+ - "traefik.tcp.routers.tcp_followers_server.entrypoints=tcp-3001"
33+ #- "traefik.tcp.routers.tcp_followers_server.tls=true"
34+ - "traefik.tcp.services.tcp_followers_server.loadbalancer.server.port=3001"
35+
36+ # Whitelist only IP of relay.nos.social. This was not working when the
37+ # 3001 port was exposed, don't know why
38+ - "traefik.tcp.middlewares.tcp_ipwhitelist.ipwhitelist.sourcerange=104.236.196.139/32"
39+ - "traefik.tcp.routers.tcp_followers_server.middlewares=tcp_ipwhitelist"
40+
41+
2542 depends_on:
2643 db:
2744 condition: service_healthy
@@ -30,7 +47,8 @@ services:
3047 - proxy
3148
3249 db:
33- image: neo4j:5.22 # 5.23 has no graph-data-science plugin yet
50+ # 5.23 has no graph-data-science plugin yet
51+ image: neo4j:5.22
3452 platform: linux/amd64
3553 environment:
3654 - NEO4J_AUTH=neo4j/{ { neo4j_password } }
@@ -47,21 +65,22 @@ services:
4765 - db-plugins:/plugins
4866 labels:
4967 - "traefik.enable=true"
68+
69+ # HTTP routing for Neo4j Browser (port 7474)
5070 - "traefik.http.routers.neo4j.entrypoints=websecure"
51- - "traefik.http.routers.neo4j.rule=Host(`{ { domain } }`) && PathPrefix(`/neo4j`)|| PathPrefix(`/browser`)"
71+ - "traefik.http.routers.neo4j.rule=Host(`{ { domain } }`) && (( PathPrefix(`/neo4j`) || PathPrefix(`/browser`)) )"
5272 - "traefik.http.routers.neo4j.tls=true"
53- - "traefik.http.routers.neo4j.service=neo4j"
5473 - "traefik.http.routers.neo4j.middlewares=neo4j_strip"
5574 - "traefik.http.middlewares.neo4j_strip.stripprefix.prefixes=/neo4j"
5675 - "traefik.http.services.neo4j.loadbalancer.server.port=7474"
5776
58- - "traefik.http.routers.neo4jdb.entrypoints=websecure"
59- - "traefik.http.routers.neo4jdb.rule=Host(` { { domain } }`) && PathPrefix(`/neo4jdb`)"
60- - "traefik.http.routers.neo4j.middlewares=neo4jdb_strip"
61- - "traefik.http.middlewares.neo4jdb_strip.stripprefix.prefixes=/neo4jdb "
62- - "traefik.http .routers.neo4jdb.tls=true "
63- - "traefik.http .routers.neo4jdb.service=neo4jdb "
64- - "traefik.http .services.neo4jdb.loadbalancer.server.port=7687"
77+ # TCP routing for Neo4j Bolt (port 7687). TLS is not working for this
78+ # port, I think that's the reason the conection from the browser is not
79+ # working
80+ - "traefik.tcp.routers.neo4jdb.entrypoints=tcp-7687 "
81+ - "traefik.tcp .routers.neo4jdb.rule=HostSNI(` { { domain } }`) "
82+ - "traefik.tcp .routers.neo4jdb.tls=true "
83+ - "traefik.tcp .services.neo4jdb.loadbalancer.server.port=7687"
6584
6685 healthcheck:
6786 test: wget http://localhost:7474 || exit 1
0 commit comments