+++ /dev/null
-#!/bin/bash
-set -e
-
-sudo docker-compose --file ../federation/docker-compose.yml --project-directory . down
-sudo rm -rf volumes
-
-pushd ../../server/
-cargo build
-popd
-
-pushd ../../ui
-yarn
-popd
-
-mkdir -p volumes/pictrs_{alpha,beta,gamma,delta,epsilon}
-sudo chown -R 991:991 volumes/pictrs_{alpha,beta,gamma,delta,epsilon}
-
-sudo docker build ../../ --file ../federation/Dockerfile --tag lemmy-federation:latest
-
-sudo docker-compose --file ../federation/docker-compose.yml --project-directory . up
+++ /dev/null
-#!/bin/bash
-set -xe
-
-pushd ../../ui
-echo "Waiting for Lemmy to start..."
-while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8540/api/v1/site')" != "200" ]]; do sleep 1; done
-while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8550/api/v1/site')" != "200" ]]; do sleep 1; done
-while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8560/api/v1/site')" != "200" ]]; do sleep 1; done
-while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8570/api/v1/site')" != "200" ]]; do sleep 1; done
-while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8580/api/v1/site')" != "200" ]]; do sleep 1; done
-yarn api-test || true
-popd
+++ /dev/null
-FROM ekidd/rust-musl-builder:1.42.0-openssl11
-
-USER root
-RUN mkdir /app/dist/documentation/ -p \
- && addgroup --gid 1001 lemmy \
- && adduser --gecos "" --disabled-password --shell /bin/sh -u 1001 --ingroup lemmy lemmy
-
-# Copy resources
-COPY server/config/defaults.hjson /app/config/defaults.hjson
-COPY ui/dist /app/dist
-COPY server/target/debug/lemmy_server /app/lemmy
-
-RUN chown lemmy:lemmy /app/ -R
-USER lemmy
-EXPOSE 8536
-WORKDIR /app
-CMD ["/app/lemmy"]
- "8570:8570"
- "8580:8580"
volumes:
- # Hack to make this work from both docker/federation/ and docker/federation-test/
- - ../federation/nginx.conf:/etc/nginx/nginx.conf
+ - ./nginx.conf:/etc/nginx/nginx.conf
restart: on-failure
depends_on:
- pictrs
+++ /dev/null
-#!/bin/bash
-set -e
-
-# already start rust build in the background
-pushd ../../server/ || exit
-cargo build &
-popd || exit
-
-if [ "$1" != "--no-yarn-build" ]; then
- pushd ../../ui/ || exit
- yarn
- yarn build
- popd || exit
-fi
-
-# wait for rust build to finish
-pushd ../../server/ || exit
-cargo build
-popd || exit
-
-sudo docker build ../../ --file Dockerfile -t lemmy-federation:latest
-
-for Item in alpha beta gamma delta epsilon ; do
- sudo mkdir -p volumes/pictrs_$Item
- sudo chown -R 991:991 volumes/pictrs_$Item
-done
-
-sudo docker-compose up
set -e
# make sure there are no old containers or old data around
-sudo docker-compose --file ../federation/docker-compose.yml --project-directory . down
+sudo docker-compose down
sudo rm -rf volumes
-pushd ../../server/
-cargo build
-popd
-
-pushd ../../ui
-yarn
-popd
-
mkdir -p volumes/pictrs_{alpha,beta,gamma,delta,epsilon}
sudo chown -R 991:991 volumes/pictrs_{alpha,beta,gamma,delta,epsilon}
-sudo docker build ../../ --file ../federation/Dockerfile --tag lemmy-federation:latest
+sudo docker build ../../ --file ../dev/Dockerfile --tag lemmy-federation:latest
sudo mkdir -p volumes/pictrs_alpha
sudo chown -R 991:991 volumes/pictrs_alpha
-sudo docker-compose --file ../federation/docker-compose.yml --project-directory . up -d
+sudo docker-compose up -d
pushd ../../ui
echo "Waiting for Lemmy to start..."
yarn api-test || true
popd
-sudo docker-compose --file ../federation/docker-compose.yml --project-directory . down
+sudo docker-compose down
-sudo rm -r volumes/
+sudo rm -r volumes
--- /dev/null
+#!/bin/bash
+set -e
+
+sudo docker build ../../ --file ../dev/Dockerfile -t lemmy-federation:latest
+
+for Item in alpha beta gamma delta epsilon ; do
+ sudo mkdir -p volumes/pictrs_$Item
+ sudo chown -R 991:991 volumes/pictrs_$Item
+done
+
+sudo docker-compose up
- docker
- docker-compose
-- cargo
-- yarn
Then run the following
```bash
cd docker/federation
-./run-federation-test.bash -yarn
+./start-local-instances.bash
```
-The federation test sets up 3 instances:
+The federation test sets up 5 instances:
-Instance / Username | Location
---- | ---
-lemmy_alpha | [127.0.0.1:8540](http://127.0.0.1:8540)
-lemmy_beta | [127.0.0.1:8550](http://127.0.0.1:8550)
-lemmy_gamma | [127.0.0.1:8560](http://127.0.0.1:8560)
+Instance | Username | Location | Notes
+--- | --- | --- | ---
+lemmy-alpha | lemmy_alpha | [127.0.0.1:8540](http://127.0.0.1:8540) | federated with all other instances
+lemmy-beta | lemmy_beta | [127.0.0.1:8550](http://127.0.0.1:8550) | federated with all other instances
+lemmy-gamma | lemmy_gamma | [127.0.0.1:8560](http://127.0.0.1:8560) | federated with all other instances
+lemmy-delta | lemmy_delta | [127.0.0.1:8570](http://127.0.0.1:8570) | only allows federation with lemmy-beta
+lemmy-epsilon | lemmy_epsilon | [127.0.0.1:8580](http://127.0.0.1:8580) | uses blocklist, has lemmy-alpha blocked
You can log into each using the instance name, and `lemmy` as the password, IE (`lemmy_alpha`, `lemmy`).
+To start federation between instances, visit one of them and search for a user, community or post, like this:
+- `!main@lemmy-alpha:8540`
+- `http://lemmy-beta:8550/post/3`
+- `@lemmy-gamma@lemmy-gamma:8560`
+
Firefox containers are a good way to test them interacting.
## Integration tests
To run a suite of suite of federation integration tests:
```bash
-cd docker/federation-test
-./run-tests.sh
+cd docker/federation
+./run-tests.bash
```
## Running on a server