From 689f5c13064f8000e387fafc6d1b1dab3e7b8873 Mon Sep 17 00:00:00 2001 From: Dessalines Date: Mon, 11 Jan 2021 20:41:10 -0500 Subject: [PATCH 1/6] Removing docker/federation and docker/travis folders. --- README.md | 2 +- docker/federation/docker-compose.yml | 237 ------------------- docker/federation/nginx.conf | 230 ------------------ docker/federation/run-tests.bash | 31 --- docker/federation/start-local-instances.bash | 21 -- docker/prod/deploy.sh | 6 - docker/travis/docker-compose.yml | 159 ------------- docker/travis/docker_push.sh | 5 - docker/travis/run-tests.bash | 28 --- lemmy_apub/src/fetcher.rs | 2 +- 10 files changed, 2 insertions(+), 719 deletions(-) delete mode 100644 docker/federation/docker-compose.yml delete mode 100644 docker/federation/nginx.conf delete mode 100755 docker/federation/run-tests.bash delete mode 100755 docker/federation/start-local-instances.bash delete mode 100644 docker/travis/docker-compose.yml delete mode 100644 docker/travis/docker_push.sh delete mode 100755 docker/travis/run-tests.bash diff --git a/README.md b/README.md index 211759e1f..6d1aede68 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@
![GitHub tag (latest SemVer)](https://img.shields.io/github/tag/LemmyNet/lemmy.svg) -[![Build Status](https://travis-ci.org/LemmyNet/lemmy.svg?branch=main)](https://travis-ci.org/LemmyNet/lemmy) +![Build Status](https://cloud.drone.io/api/badges/LemmyNet/lemmy/status.svg) [![GitHub issues](https://img.shields.io/github/issues-raw/LemmyNet/lemmy.svg)](https://github.com/LemmyNet/lemmy/issues) [![Docker Pulls](https://img.shields.io/docker/pulls/dessalines/lemmy.svg)](https://cloud.docker.com/repository/docker/dessalines/lemmy/) [![Translation status](http://weblate.yerbamate.ml/widgets/lemmy/-/lemmy/svg-badge.svg)](http://weblate.yerbamate.ml/engage/lemmy/) diff --git a/docker/federation/docker-compose.yml b/docker/federation/docker-compose.yml deleted file mode 100644 index dc015a289..000000000 --- a/docker/federation/docker-compose.yml +++ /dev/null @@ -1,237 +0,0 @@ -version: '3.3' - -services: - nginx: - image: nginx:1.17-alpine - ports: - - "8540:8540" - - "8550:8550" - - "8560:8560" - - "8570:8570" - - "8580:8580" - volumes: - - ./nginx.conf:/etc/nginx/nginx.conf - restart: on-failure - depends_on: - - pictrs - - iframely - - lemmy-alpha-ui - - lemmy-beta-ui - - lemmy-gamma-ui - - lemmy-delta-ui - - lemmy-epsilon-ui - - pictrs: - restart: always - image: asonix/pictrs:v0.2.5-r0 - user: 991:991 - volumes: - - ./volumes/pictrs_alpha:/mnt - - lemmy-alpha-ui: - image: dessalines/lemmy-ui:v0.8.10 - environment: - - LEMMY_INTERNAL_HOST=lemmy-alpha:8541 - - LEMMY_EXTERNAL_HOST=localhost:8541 - - LEMMY_HTTPS=false - depends_on: - - lemmy-alpha - lemmy-alpha: - image: lemmy-federation:latest - environment: - - LEMMY_HOSTNAME=lemmy-alpha:8541 - - LEMMY_DATABASE_URL=postgres://lemmy:password@postgres_alpha:5432/lemmy - - LEMMY_JWT_SECRET=changeme - - LEMMY_FEDERATION__ENABLED=true - - LEMMY_TLS_ENABLED=false - - LEMMY_FEDERATION__ALLOWED_INSTANCES=lemmy-beta,lemmy-gamma,lemmy-delta,lemmy-epsilon - - LEMMY_PORT=8541 - - LEMMY_SETUP__ADMIN_USERNAME=lemmy_alpha - - LEMMY_SETUP__ADMIN_PASSWORD=lemmy - - LEMMY_SETUP__SITE_NAME=lemmy-alpha - - LEMMY_RATE_LIMIT__POST=99999 - - LEMMY_RATE_LIMIT__REGISTER=99999 - - LEMMY_CAPTCHA__ENABLED=false - - LEMMY_TEST_SEND_SYNC=1 - - RUST_BACKTRACE=1 - - RUST_LOG=debug - depends_on: - - postgres_alpha - ports: - - "8541:8541" - postgres_alpha: - image: postgres:12-alpine - environment: - - POSTGRES_USER=lemmy - - POSTGRES_PASSWORD=password - - POSTGRES_DB=lemmy - volumes: - - ./volumes/postgres_alpha:/var/lib/postgresql/data - - lemmy-beta-ui: - image: dessalines/lemmy-ui:v0.8.10 - environment: - - LEMMY_INTERNAL_HOST=lemmy-beta:8551 - - LEMMY_EXTERNAL_HOST=localhost:8551 - - LEMMY_HTTPS=false - depends_on: - - lemmy-beta - lemmy-beta: - image: lemmy-federation:latest - environment: - - LEMMY_HOSTNAME=lemmy-beta:8551 - - LEMMY_DATABASE_URL=postgres://lemmy:password@postgres_beta:5432/lemmy - - LEMMY_JWT_SECRET=changeme - - LEMMY_FEDERATION__ENABLED=true - - LEMMY_TLS_ENABLED=false - - LEMMY_FEDERATION__ALLOWED_INSTANCES=lemmy-alpha,lemmy-gamma,lemmy-delta,lemmy-epsilon - - LEMMY_PORT=8551 - - LEMMY_SETUP__ADMIN_USERNAME=lemmy_beta - - LEMMY_SETUP__ADMIN_PASSWORD=lemmy - - LEMMY_SETUP__SITE_NAME=lemmy-beta - - LEMMY_RATE_LIMIT__POST=99999 - - LEMMY_RATE_LIMIT__REGISTER=99999 - - LEMMY_CAPTCHA__ENABLED=false - - LEMMY_TEST_SEND_SYNC=1 - - RUST_BACKTRACE=1 - - RUST_LOG=debug - depends_on: - - postgres_beta - ports: - - "8551:8551" - postgres_beta: - image: postgres:12-alpine - environment: - - POSTGRES_USER=lemmy - - POSTGRES_PASSWORD=password - - POSTGRES_DB=lemmy - volumes: - - ./volumes/postgres_beta:/var/lib/postgresql/data - - lemmy-gamma-ui: - image: dessalines/lemmy-ui:v0.8.10 - environment: - - LEMMY_INTERNAL_HOST=lemmy-gamma:8561 - - LEMMY_EXTERNAL_HOST=localhost:8561 - - LEMMY_HTTPS=false - depends_on: - - lemmy-gamma - lemmy-gamma: - image: lemmy-federation:latest - environment: - - LEMMY_HOSTNAME=lemmy-gamma:8561 - - LEMMY_DATABASE_URL=postgres://lemmy:password@postgres_gamma:5432/lemmy - - LEMMY_JWT_SECRET=changeme - - LEMMY_FEDERATION__ENABLED=true - - LEMMY_TLS_ENABLED=false - - LEMMY_FEDERATION__ALLOWED_INSTANCES=lemmy-alpha,lemmy-beta,lemmy-delta,lemmy-epsilon - - LEMMY_PORT=8561 - - LEMMY_SETUP__ADMIN_USERNAME=lemmy_gamma - - LEMMY_SETUP__ADMIN_PASSWORD=lemmy - - LEMMY_SETUP__SITE_NAME=lemmy-gamma - - LEMMY_RATE_LIMIT__POST=99999 - - LEMMY_RATE_LIMIT__REGISTER=99999 - - LEMMY_CAPTCHA__ENABLED=false - - LEMMY_TEST_SEND_SYNC=1 - - RUST_BACKTRACE=1 - - RUST_LOG=debug - depends_on: - - postgres_gamma - ports: - - "8561:8561" - postgres_gamma: - image: postgres:12-alpine - environment: - - POSTGRES_USER=lemmy - - POSTGRES_PASSWORD=password - - POSTGRES_DB=lemmy - volumes: - - ./volumes/postgres_gamma:/var/lib/postgresql/data - - # An instance with only an allowlist for beta - lemmy-delta-ui: - image: dessalines/lemmy-ui:v0.8.10 - environment: - - LEMMY_INTERNAL_HOST=lemmy-delta:8571 - - LEMMY_EXTERNAL_HOST=localhost:8571 - - LEMMY_HTTPS=false - depends_on: - - lemmy-delta - lemmy-delta: - image: lemmy-federation:latest - environment: - - LEMMY_HOSTNAME=lemmy-delta:8571 - - LEMMY_DATABASE_URL=postgres://lemmy:password@postgres_delta:5432/lemmy - - LEMMY_JWT_SECRET=changeme - - LEMMY_FEDERATION__ENABLED=true - - LEMMY_TLS_ENABLED=false - - LEMMY_FEDERATION__ALLOWED_INSTANCES=lemmy-beta - - LEMMY_PORT=8571 - - LEMMY_SETUP__ADMIN_USERNAME=lemmy_delta - - LEMMY_SETUP__ADMIN_PASSWORD=lemmy - - LEMMY_SETUP__SITE_NAME=lemmy-delta - - LEMMY_RATE_LIMIT__POST=99999 - - LEMMY_RATE_LIMIT__REGISTER=99999 - - LEMMY_CAPTCHA__ENABLED=false - - LEMMY_TEST_SEND_SYNC=1 - - RUST_BACKTRACE=1 - - RUST_LOG=debug - depends_on: - - postgres_delta - ports: - - "8571:8571" - postgres_delta: - image: postgres:12-alpine - environment: - - POSTGRES_USER=lemmy - - POSTGRES_PASSWORD=password - - POSTGRES_DB=lemmy - volumes: - - ./volumes/postgres_delta:/var/lib/postgresql/data - - # An instance who has a blocklist, with lemmy-alpha blocked - lemmy-epsilon-ui: - image: dessalines/lemmy-ui:v0.8.10 - environment: - - LEMMY_INTERNAL_HOST=lemmy-epsilon:8581 - - LEMMY_EXTERNAL_HOST=localhost:8581 - - LEMMY_HTTPS=false - depends_on: - - lemmy-epsilon - lemmy-epsilon: - image: lemmy-federation:latest - environment: - - LEMMY_HOSTNAME=lemmy-epsilon:8581 - - LEMMY_DATABASE_URL=postgres://lemmy:password@postgres_epsilon:5432/lemmy - - LEMMY_JWT_SECRET=changeme - - LEMMY_FEDERATION__ENABLED=true - - LEMMY_TLS_ENABLED=false - - LEMMY_FEDERATION__BLOCKED_INSTANCES=lemmy-alpha - - LEMMY_PORT=8581 - - LEMMY_SETUP__ADMIN_USERNAME=lemmy_epsilon - - LEMMY_SETUP__ADMIN_PASSWORD=lemmy - - LEMMY_SETUP__SITE_NAME=lemmy-epsilon - - LEMMY_RATE_LIMIT__POST=99999 - - LEMMY_RATE_LIMIT__REGISTER=99999 - - LEMMY_CAPTCHA__ENABLED=false - - LEMMY_TEST_SEND_SYNC=1 - - RUST_BACKTRACE=1 - - RUST_LOG=debug - depends_on: - - postgres_epsilon - ports: - - "8581:8581" - postgres_epsilon: - image: postgres:12-alpine - environment: - - POSTGRES_USER=lemmy - - POSTGRES_PASSWORD=password - - POSTGRES_DB=lemmy - volumes: - - ./volumes/postgres_epsilon:/var/lib/postgresql/data - - iframely: - image: dogbin/iframely:latest - volumes: - - ../iframely.config.local.js:/iframely/config.local.js:ro - restart: always diff --git a/docker/federation/nginx.conf b/docker/federation/nginx.conf deleted file mode 100644 index 357b87c90..000000000 --- a/docker/federation/nginx.conf +++ /dev/null @@ -1,230 +0,0 @@ -events { - worker_connections 1024; -} - -http { - upstream lemmy-alpha { - server "lemmy-alpha:8541"; - } - upstream lemmy-alpha-ui { - server "lemmy-alpha-ui:1234"; - } - server { - listen 8540; - server_name 127.0.0.1; - access_log off; - - # Upload limit for pictshare - client_max_body_size 50M; - - location ~ ^/(api|docs|pictrs|feeds|nodeinfo|.well-known) { - proxy_pass http://lemmy-alpha; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - } - location / { - set $proxpass http://lemmy-alpha-ui; - if ($http_accept = "application/activity+json") { - set $proxpass http://lemmy-alpha; - } - if ($http_accept = "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"") { - set $proxpass http://lemmy-alpha; - } - proxy_pass $proxpass; - - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header Host $host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - - # Cuts off the trailing slash on URLs to make them valid - rewrite ^(.+)/+$ $1 permanent; - } - location /iframely/ { - proxy_pass http://iframely:80/; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header Host $host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - } - } - - upstream lemmy-beta { - server "lemmy-beta:8551"; - } - upstream lemmy-beta-ui { - server "lemmy-beta-ui:1234"; - } - server { - listen 8550; - server_name 127.0.0.1; - access_log off; - - # Upload limit for pictshare - client_max_body_size 50M; - - location ~ ^/(api|docs|pictrs|feeds|nodeinfo|.well-known) { - proxy_pass http://lemmy-beta; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - } - location / { - set $proxpass http://lemmy-beta-ui; - if ($http_accept = "application/activity+json") { - set $proxpass http://lemmy-beta; - } - if ($http_accept = "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"") { - set $proxpass http://lemmy-beta; - } - proxy_pass $proxpass; - - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header Host $host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - - # Cuts off the trailing slash on URLs to make them valid - rewrite ^(.+)/+$ $1 permanent; - } - location /iframely/ { - proxy_pass http://iframely:80/; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header Host $host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - } - } - - upstream lemmy-gamma { - server "lemmy-gamma:8561"; - } - upstream lemmy-gamma-ui { - server "lemmy-gamma-ui:1234"; - } - server { - listen 8560; - server_name 127.0.0.1; - access_log off; - - # Upload limit for pictshare - client_max_body_size 50M; - - location ~ ^/(api|docs|pictrs|feeds|nodeinfo|.well-known) { - proxy_pass http://lemmy-gamma; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - } - location / { - set $proxpass http://lemmy-gamma-ui; - if ($http_accept = "application/activity+json") { - set $proxpass http://lemmy-gamma; - } - if ($http_accept = "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"") { - set $proxpass http://lemmy-gamma; - } - proxy_pass $proxpass; - - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header Host $host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - - # Cuts off the trailing slash on URLs to make them valid - rewrite ^(.+)/+$ $1 permanent; - } - location /iframely/ { - proxy_pass http://iframely:80/; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header Host $host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - } - } - - upstream lemmy-delta { - server "lemmy-delta:8571"; - } - upstream lemmy-delta-ui { - server "lemmy-delta-ui:1234"; - } - server { - listen 8570; - server_name 127.0.0.1; - access_log off; - - # Upload limit for pictshare - client_max_body_size 50M; - - location ~ ^/(api|docs|pictrs|feeds|nodeinfo|.well-known) { - proxy_pass http://lemmy-delta; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - } - location / { - set $proxpass http://lemmy-delta-ui; - if ($http_accept = "application/activity+json") { - set $proxpass http://lemmy-delta; - } - if ($http_accept = "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"") { - set $proxpass http://lemmy-delta; - } - proxy_pass $proxpass; - - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header Host $host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - - # Cuts off the trailing slash on URLs to make them valid - rewrite ^(.+)/+$ $1 permanent; - } - location /iframely/ { - proxy_pass http://iframely:80/; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header Host $host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - } - } - - upstream lemmy-epsilon { - server "lemmy-epsilon:8581"; - } - upstream lemmy-epsilon-ui { - server "lemmy-epsilon-ui:1234"; - } - server { - listen 8580; - server_name 127.0.0.1; - access_log off; - - # Upload limit for pictshare - client_max_body_size 50M; - - location ~ ^/(api|docs|pictrs|feeds|nodeinfo|.well-known) { - proxy_pass http://lemmy-epsilon; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - } - location / { - set $proxpass http://lemmy-epsilon-ui; - if ($http_accept = "application/activity+json") { - set $proxpass http://lemmy-epsilon; - } - if ($http_accept = "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"") { - set $proxpass http://lemmy-epsilon; - } - proxy_pass $proxpass; - - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header Host $host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - - # Cuts off the trailing slash on URLs to make them valid - rewrite ^(.+)/+$ $1 permanent; - } - location /iframely/ { - proxy_pass http://iframely:80/; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header Host $host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - } - } -} diff --git a/docker/federation/run-tests.bash b/docker/federation/run-tests.bash deleted file mode 100755 index 03f18d7e6..000000000 --- a/docker/federation/run-tests.bash +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash -set -e - -# make sure there are no old containers or old data around -sudo docker-compose down -sudo rm -rf volumes - -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 ../dev/Dockerfile --tag lemmy-federation:latest - -sudo mkdir -p volumes/pictrs_alpha -sudo chown -R 991:991 volumes/pictrs_alpha - -sudo docker-compose up -d - -pushd ../../api_tests -echo "Waiting for Lemmy to start..." -while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8541/api/v1/site')" != "200" ]]; do sleep 1; done -while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8551/api/v1/site')" != "200" ]]; do sleep 1; done -while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8561/api/v1/site')" != "200" ]]; do sleep 1; done -while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8571/api/v1/site')" != "200" ]]; do sleep 1; done -while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8581/api/v1/site')" != "200" ]]; do sleep 1; done -yarn -yarn api-test || true -popd - -sudo docker-compose down - -sudo rm -r volumes diff --git a/docker/federation/start-local-instances.bash b/docker/federation/start-local-instances.bash deleted file mode 100755 index ec2712f14..000000000 --- a/docker/federation/start-local-instances.bash +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash -set -e - -sudo docker build ../../ --file ../dev/volume_mount.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 -d - -echo "Waiting for Lemmy to start..." -while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8541/api/v1/site')" != "200" ]]; do sleep 1; done -while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8551/api/v1/site')" != "200" ]]; do sleep 1; done -while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8561/api/v1/site')" != "200" ]]; do sleep 1; done -while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8571/api/v1/site')" != "200" ]]; do sleep 1; done -while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8581/api/v1/site')" != "200" ]]; do sleep 1; done -echo "All instances started." - -sudo docker-compose logs -f diff --git a/docker/prod/deploy.sh b/docker/prod/deploy.sh index 81bfdab8e..1206f8c96 100755 --- a/docker/prod/deploy.sh +++ b/docker/prod/deploy.sh @@ -19,22 +19,16 @@ cd docker/prod || exit # Changing various references to the Lemmy version sed -i "s/dessalines\/lemmy-ui:.*/dessalines\/lemmy-ui:$new_tag/" ../dev/docker-compose.yml -sed -i "s/dessalines\/lemmy-ui:.*/dessalines\/lemmy-ui:$new_tag/" ../federation/docker-compose.yml sed -i "s/dessalines\/lemmy:.*/dessalines\/lemmy:$new_tag/" ../prod/docker-compose.yml sed -i "s/dessalines\/lemmy-ui:.*/dessalines\/lemmy-ui:$new_tag/" ../prod/docker-compose.yml -sed -i "s/dessalines\/lemmy:v.*/dessalines\/lemmy:$new_tag/" ../travis/docker_push.sh git add ../dev/docker-compose.yml -git add ../federation/docker-compose.yml git add ../prod/docker-compose.yml -git add ../travis/docker_push.sh # The commit git commit -m"Version $new_tag" git tag $new_tag -# Now doing the building on travis, but leave this in for when you need to do an arm build - # export COMPOSE_DOCKER_CLI_BUILD=1 # export DOCKER_BUILDKIT=1 diff --git a/docker/travis/docker-compose.yml b/docker/travis/docker-compose.yml deleted file mode 100644 index 565f7a000..000000000 --- a/docker/travis/docker-compose.yml +++ /dev/null @@ -1,159 +0,0 @@ -version: '3.3' - -services: - lemmy-alpha: - image: dessalines/lemmy:travis - environment: - - LEMMY_HOSTNAME=lemmy-alpha:8541 - - LEMMY_DATABASE_URL=postgres://lemmy:password@postgres_alpha:5432/lemmy - - LEMMY_JWT_SECRET=changeme - - LEMMY_FEDERATION__ENABLED=true - - LEMMY_TLS_ENABLED=false - - LEMMY_FEDERATION__ALLOWED_INSTANCES=lemmy-beta,lemmy-gamma,lemmy-delta,lemmy-epsilon - - LEMMY_PORT=8541 - - LEMMY_SETUP__ADMIN_USERNAME=lemmy_alpha - - LEMMY_SETUP__ADMIN_PASSWORD=lemmy - - LEMMY_SETUP__SITE_NAME=lemmy-alpha - - LEMMY_RATE_LIMIT__POST=99999 - - LEMMY_RATE_LIMIT__REGISTER=99999 - - LEMMY_CAPTCHA__ENABLED=false - - RUST_BACKTRACE=1 - - RUST_LOG=debug - depends_on: - - postgres_alpha - ports: - - "8541:8541" - postgres_alpha: - image: postgres:12-alpine - environment: - - POSTGRES_USER=lemmy - - POSTGRES_PASSWORD=password - - POSTGRES_DB=lemmy - volumes: - - ./volumes/postgres_alpha:/var/lib/postgresql/data - - lemmy-beta: - image: dessalines/lemmy:travis - environment: - - LEMMY_HOSTNAME=lemmy-beta:8551 - - LEMMY_DATABASE_URL=postgres://lemmy:password@postgres_beta:5432/lemmy - - LEMMY_JWT_SECRET=changeme - - LEMMY_FEDERATION__ENABLED=true - - LEMMY_TLS_ENABLED=false - - LEMMY_FEDERATION__ALLOWED_INSTANCES=lemmy-alpha,lemmy-gamma,lemmy-delta,lemmy-epsilon - - LEMMY_PORT=8551 - - LEMMY_SETUP__ADMIN_USERNAME=lemmy_beta - - LEMMY_SETUP__ADMIN_PASSWORD=lemmy - - LEMMY_SETUP__SITE_NAME=lemmy-beta - - LEMMY_RATE_LIMIT__POST=99999 - - LEMMY_RATE_LIMIT__REGISTER=99999 - - LEMMY_CAPTCHA__ENABLED=false - - RUST_BACKTRACE=1 - - RUST_LOG=debug - depends_on: - - postgres_beta - ports: - - "8551:8551" - postgres_beta: - image: postgres:12-alpine - environment: - - POSTGRES_USER=lemmy - - POSTGRES_PASSWORD=password - - POSTGRES_DB=lemmy - volumes: - - ./volumes/postgres_beta:/var/lib/postgresql/data - - lemmy-gamma: - image: dessalines/lemmy:travis - environment: - - LEMMY_HOSTNAME=lemmy-gamma:8561 - - LEMMY_DATABASE_URL=postgres://lemmy:password@postgres_gamma:5432/lemmy - - LEMMY_JWT_SECRET=changeme - - LEMMY_FEDERATION__ENABLED=true - - LEMMY_TLS_ENABLED=false - - LEMMY_FEDERATION__ALLOWED_INSTANCES=lemmy-alpha,lemmy-beta,lemmy-delta,lemmy-epsilon - - LEMMY_PORT=8561 - - LEMMY_SETUP__ADMIN_USERNAME=lemmy_gamma - - LEMMY_SETUP__ADMIN_PASSWORD=lemmy - - LEMMY_SETUP__SITE_NAME=lemmy-gamma - - LEMMY_RATE_LIMIT__POST=99999 - - LEMMY_RATE_LIMIT__REGISTER=99999 - - LEMMY_CAPTCHA__ENABLED=false - - RUST_BACKTRACE=1 - - RUST_LOG=debug - depends_on: - - postgres_gamma - ports: - - "8561:8561" - postgres_gamma: - image: postgres:12-alpine - environment: - - POSTGRES_USER=lemmy - - POSTGRES_PASSWORD=password - - POSTGRES_DB=lemmy - volumes: - - ./volumes/postgres_gamma:/var/lib/postgresql/data - - # An instance with only an allowlist for beta - lemmy-delta: - image: dessalines/lemmy:travis - environment: - - LEMMY_HOSTNAME=lemmy-delta:8571 - - LEMMY_DATABASE_URL=postgres://lemmy:password@postgres_delta:5432/lemmy - - LEMMY_JWT_SECRET=changeme - - LEMMY_FEDERATION__ENABLED=true - - LEMMY_TLS_ENABLED=false - - LEMMY_FEDERATION__ALLOWED_INSTANCES=lemmy-beta - - LEMMY_PORT=8571 - - LEMMY_SETUP__ADMIN_USERNAME=lemmy_delta - - LEMMY_SETUP__ADMIN_PASSWORD=lemmy - - LEMMY_SETUP__SITE_NAME=lemmy-delta - - LEMMY_RATE_LIMIT__POST=99999 - - LEMMY_RATE_LIMIT__REGISTER=99999 - - LEMMY_CAPTCHA__ENABLED=false - - RUST_BACKTRACE=1 - - RUST_LOG=debug - depends_on: - - postgres_delta - ports: - - "8571:8571" - postgres_delta: - image: postgres:12-alpine - environment: - - POSTGRES_USER=lemmy - - POSTGRES_PASSWORD=password - - POSTGRES_DB=lemmy - volumes: - - ./volumes/postgres_delta:/var/lib/postgresql/data - - # An instance who has a blocklist, with lemmy-alpha blocked - lemmy-epsilon: - image: dessalines/lemmy:travis - environment: - - LEMMY_HOSTNAME=lemmy-epsilon:8581 - - LEMMY_DATABASE_URL=postgres://lemmy:password@postgres_epsilon:5432/lemmy - - LEMMY_JWT_SECRET=changeme - - LEMMY_FEDERATION__ENABLED=true - - LEMMY_TLS_ENABLED=false - - LEMMY_FEDERATION__BLOCKED_INSTANCES=lemmy-alpha - - LEMMY_PORT=8581 - - LEMMY_SETUP__ADMIN_USERNAME=lemmy_epsilon - - LEMMY_SETUP__ADMIN_PASSWORD=lemmy - - LEMMY_SETUP__SITE_NAME=lemmy-epsilon - - LEMMY_RATE_LIMIT__POST=99999 - - LEMMY_RATE_LIMIT__REGISTER=99999 - - LEMMY_CAPTCHA__ENABLED=false - - RUST_BACKTRACE=1 - - RUST_LOG=debug - depends_on: - - postgres_epsilon - ports: - - "8581:8581" - postgres_epsilon: - image: postgres:12-alpine - environment: - - POSTGRES_USER=lemmy - - POSTGRES_PASSWORD=password - - POSTGRES_DB=lemmy - volumes: - - ./volumes/postgres_epsilon:/var/lib/postgresql/data diff --git a/docker/travis/docker_push.sh b/docker/travis/docker_push.sh deleted file mode 100644 index ba77f0264..000000000 --- a/docker/travis/docker_push.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin -docker tag dessalines/lemmy:travis \ - dessalines/lemmy:v0.8.10 -docker push dessalines/lemmy:v0.8.10 diff --git a/docker/travis/run-tests.bash b/docker/travis/run-tests.bash deleted file mode 100755 index 01460d30a..000000000 --- a/docker/travis/run-tests.bash +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash -set -e - -# make sure there are no old containers or old data around -sudo docker-compose down -sudo rm -rf volumes - -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 ../prod/Dockerfile --tag dessalines/lemmy:travis - -sudo docker-compose up -d - -pushd ../../api_tests -echo "Waiting for Lemmy to start..." -while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8541/api/v1/site')" != "200" ]]; do sleep 1; done -while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8551/api/v1/site')" != "200" ]]; do sleep 1; done -while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8561/api/v1/site')" != "200" ]]; do sleep 1; done -while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8571/api/v1/site')" != "200" ]]; do sleep 1; done -while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8581/api/v1/site')" != "200" ]]; do sleep 1; done -yarn -yarn api-test -popd - -sudo docker-compose down - -sudo rm -r volumes/ diff --git a/lemmy_apub/src/fetcher.rs b/lemmy_apub/src/fetcher.rs index 4e1fa98a6..c26f1464c 100644 --- a/lemmy_apub/src/fetcher.rs +++ b/lemmy_apub/src/fetcher.rs @@ -95,7 +95,7 @@ enum SearchAcceptedObjects { /// Attempt to parse the query as URL, and fetch an ActivityPub object from it. /// -/// Some working examples for use with the `docker/federation/` setup: +/// Some working examples for use with the `api_tests` setup: /// http://lemmy_alpha:8541/c/main, or !main@lemmy_alpha:8541 /// http://lemmy_beta:8551/u/lemmy_alpha, or @lemmy_beta@lemmy_beta:8551 /// http://lemmy_gamma:8561/post/3 From e483b6b51fdbe70f77c28cf3ef4efe9c7cb6237a Mon Sep 17 00:00:00 2001 From: Dessalines Date: Tue, 12 Jan 2021 10:39:15 -0500 Subject: [PATCH 2/6] Revert "Removing docker/federation and docker/travis folders." This reverts commit 689f5c13064f8000e387fafc6d1b1dab3e7b8873. --- README.md | 2 +- docker/federation/docker-compose.yml | 237 +++++++++++++++++++ docker/federation/nginx.conf | 230 ++++++++++++++++++ docker/federation/run-tests.bash | 31 +++ docker/federation/start-local-instances.bash | 21 ++ docker/prod/deploy.sh | 6 + docker/travis/docker-compose.yml | 159 +++++++++++++ docker/travis/docker_push.sh | 5 + docker/travis/run-tests.bash | 28 +++ lemmy_apub/src/fetcher.rs | 2 +- 10 files changed, 719 insertions(+), 2 deletions(-) create mode 100644 docker/federation/docker-compose.yml create mode 100644 docker/federation/nginx.conf create mode 100755 docker/federation/run-tests.bash create mode 100755 docker/federation/start-local-instances.bash create mode 100644 docker/travis/docker-compose.yml create mode 100644 docker/travis/docker_push.sh create mode 100755 docker/travis/run-tests.bash diff --git a/README.md b/README.md index 6d1aede68..211759e1f 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@
![GitHub tag (latest SemVer)](https://img.shields.io/github/tag/LemmyNet/lemmy.svg) -![Build Status](https://cloud.drone.io/api/badges/LemmyNet/lemmy/status.svg) +[![Build Status](https://travis-ci.org/LemmyNet/lemmy.svg?branch=main)](https://travis-ci.org/LemmyNet/lemmy) [![GitHub issues](https://img.shields.io/github/issues-raw/LemmyNet/lemmy.svg)](https://github.com/LemmyNet/lemmy/issues) [![Docker Pulls](https://img.shields.io/docker/pulls/dessalines/lemmy.svg)](https://cloud.docker.com/repository/docker/dessalines/lemmy/) [![Translation status](http://weblate.yerbamate.ml/widgets/lemmy/-/lemmy/svg-badge.svg)](http://weblate.yerbamate.ml/engage/lemmy/) diff --git a/docker/federation/docker-compose.yml b/docker/federation/docker-compose.yml new file mode 100644 index 000000000..dc015a289 --- /dev/null +++ b/docker/federation/docker-compose.yml @@ -0,0 +1,237 @@ +version: '3.3' + +services: + nginx: + image: nginx:1.17-alpine + ports: + - "8540:8540" + - "8550:8550" + - "8560:8560" + - "8570:8570" + - "8580:8580" + volumes: + - ./nginx.conf:/etc/nginx/nginx.conf + restart: on-failure + depends_on: + - pictrs + - iframely + - lemmy-alpha-ui + - lemmy-beta-ui + - lemmy-gamma-ui + - lemmy-delta-ui + - lemmy-epsilon-ui + + pictrs: + restart: always + image: asonix/pictrs:v0.2.5-r0 + user: 991:991 + volumes: + - ./volumes/pictrs_alpha:/mnt + + lemmy-alpha-ui: + image: dessalines/lemmy-ui:v0.8.10 + environment: + - LEMMY_INTERNAL_HOST=lemmy-alpha:8541 + - LEMMY_EXTERNAL_HOST=localhost:8541 + - LEMMY_HTTPS=false + depends_on: + - lemmy-alpha + lemmy-alpha: + image: lemmy-federation:latest + environment: + - LEMMY_HOSTNAME=lemmy-alpha:8541 + - LEMMY_DATABASE_URL=postgres://lemmy:password@postgres_alpha:5432/lemmy + - LEMMY_JWT_SECRET=changeme + - LEMMY_FEDERATION__ENABLED=true + - LEMMY_TLS_ENABLED=false + - LEMMY_FEDERATION__ALLOWED_INSTANCES=lemmy-beta,lemmy-gamma,lemmy-delta,lemmy-epsilon + - LEMMY_PORT=8541 + - LEMMY_SETUP__ADMIN_USERNAME=lemmy_alpha + - LEMMY_SETUP__ADMIN_PASSWORD=lemmy + - LEMMY_SETUP__SITE_NAME=lemmy-alpha + - LEMMY_RATE_LIMIT__POST=99999 + - LEMMY_RATE_LIMIT__REGISTER=99999 + - LEMMY_CAPTCHA__ENABLED=false + - LEMMY_TEST_SEND_SYNC=1 + - RUST_BACKTRACE=1 + - RUST_LOG=debug + depends_on: + - postgres_alpha + ports: + - "8541:8541" + postgres_alpha: + image: postgres:12-alpine + environment: + - POSTGRES_USER=lemmy + - POSTGRES_PASSWORD=password + - POSTGRES_DB=lemmy + volumes: + - ./volumes/postgres_alpha:/var/lib/postgresql/data + + lemmy-beta-ui: + image: dessalines/lemmy-ui:v0.8.10 + environment: + - LEMMY_INTERNAL_HOST=lemmy-beta:8551 + - LEMMY_EXTERNAL_HOST=localhost:8551 + - LEMMY_HTTPS=false + depends_on: + - lemmy-beta + lemmy-beta: + image: lemmy-federation:latest + environment: + - LEMMY_HOSTNAME=lemmy-beta:8551 + - LEMMY_DATABASE_URL=postgres://lemmy:password@postgres_beta:5432/lemmy + - LEMMY_JWT_SECRET=changeme + - LEMMY_FEDERATION__ENABLED=true + - LEMMY_TLS_ENABLED=false + - LEMMY_FEDERATION__ALLOWED_INSTANCES=lemmy-alpha,lemmy-gamma,lemmy-delta,lemmy-epsilon + - LEMMY_PORT=8551 + - LEMMY_SETUP__ADMIN_USERNAME=lemmy_beta + - LEMMY_SETUP__ADMIN_PASSWORD=lemmy + - LEMMY_SETUP__SITE_NAME=lemmy-beta + - LEMMY_RATE_LIMIT__POST=99999 + - LEMMY_RATE_LIMIT__REGISTER=99999 + - LEMMY_CAPTCHA__ENABLED=false + - LEMMY_TEST_SEND_SYNC=1 + - RUST_BACKTRACE=1 + - RUST_LOG=debug + depends_on: + - postgres_beta + ports: + - "8551:8551" + postgres_beta: + image: postgres:12-alpine + environment: + - POSTGRES_USER=lemmy + - POSTGRES_PASSWORD=password + - POSTGRES_DB=lemmy + volumes: + - ./volumes/postgres_beta:/var/lib/postgresql/data + + lemmy-gamma-ui: + image: dessalines/lemmy-ui:v0.8.10 + environment: + - LEMMY_INTERNAL_HOST=lemmy-gamma:8561 + - LEMMY_EXTERNAL_HOST=localhost:8561 + - LEMMY_HTTPS=false + depends_on: + - lemmy-gamma + lemmy-gamma: + image: lemmy-federation:latest + environment: + - LEMMY_HOSTNAME=lemmy-gamma:8561 + - LEMMY_DATABASE_URL=postgres://lemmy:password@postgres_gamma:5432/lemmy + - LEMMY_JWT_SECRET=changeme + - LEMMY_FEDERATION__ENABLED=true + - LEMMY_TLS_ENABLED=false + - LEMMY_FEDERATION__ALLOWED_INSTANCES=lemmy-alpha,lemmy-beta,lemmy-delta,lemmy-epsilon + - LEMMY_PORT=8561 + - LEMMY_SETUP__ADMIN_USERNAME=lemmy_gamma + - LEMMY_SETUP__ADMIN_PASSWORD=lemmy + - LEMMY_SETUP__SITE_NAME=lemmy-gamma + - LEMMY_RATE_LIMIT__POST=99999 + - LEMMY_RATE_LIMIT__REGISTER=99999 + - LEMMY_CAPTCHA__ENABLED=false + - LEMMY_TEST_SEND_SYNC=1 + - RUST_BACKTRACE=1 + - RUST_LOG=debug + depends_on: + - postgres_gamma + ports: + - "8561:8561" + postgres_gamma: + image: postgres:12-alpine + environment: + - POSTGRES_USER=lemmy + - POSTGRES_PASSWORD=password + - POSTGRES_DB=lemmy + volumes: + - ./volumes/postgres_gamma:/var/lib/postgresql/data + + # An instance with only an allowlist for beta + lemmy-delta-ui: + image: dessalines/lemmy-ui:v0.8.10 + environment: + - LEMMY_INTERNAL_HOST=lemmy-delta:8571 + - LEMMY_EXTERNAL_HOST=localhost:8571 + - LEMMY_HTTPS=false + depends_on: + - lemmy-delta + lemmy-delta: + image: lemmy-federation:latest + environment: + - LEMMY_HOSTNAME=lemmy-delta:8571 + - LEMMY_DATABASE_URL=postgres://lemmy:password@postgres_delta:5432/lemmy + - LEMMY_JWT_SECRET=changeme + - LEMMY_FEDERATION__ENABLED=true + - LEMMY_TLS_ENABLED=false + - LEMMY_FEDERATION__ALLOWED_INSTANCES=lemmy-beta + - LEMMY_PORT=8571 + - LEMMY_SETUP__ADMIN_USERNAME=lemmy_delta + - LEMMY_SETUP__ADMIN_PASSWORD=lemmy + - LEMMY_SETUP__SITE_NAME=lemmy-delta + - LEMMY_RATE_LIMIT__POST=99999 + - LEMMY_RATE_LIMIT__REGISTER=99999 + - LEMMY_CAPTCHA__ENABLED=false + - LEMMY_TEST_SEND_SYNC=1 + - RUST_BACKTRACE=1 + - RUST_LOG=debug + depends_on: + - postgres_delta + ports: + - "8571:8571" + postgres_delta: + image: postgres:12-alpine + environment: + - POSTGRES_USER=lemmy + - POSTGRES_PASSWORD=password + - POSTGRES_DB=lemmy + volumes: + - ./volumes/postgres_delta:/var/lib/postgresql/data + + # An instance who has a blocklist, with lemmy-alpha blocked + lemmy-epsilon-ui: + image: dessalines/lemmy-ui:v0.8.10 + environment: + - LEMMY_INTERNAL_HOST=lemmy-epsilon:8581 + - LEMMY_EXTERNAL_HOST=localhost:8581 + - LEMMY_HTTPS=false + depends_on: + - lemmy-epsilon + lemmy-epsilon: + image: lemmy-federation:latest + environment: + - LEMMY_HOSTNAME=lemmy-epsilon:8581 + - LEMMY_DATABASE_URL=postgres://lemmy:password@postgres_epsilon:5432/lemmy + - LEMMY_JWT_SECRET=changeme + - LEMMY_FEDERATION__ENABLED=true + - LEMMY_TLS_ENABLED=false + - LEMMY_FEDERATION__BLOCKED_INSTANCES=lemmy-alpha + - LEMMY_PORT=8581 + - LEMMY_SETUP__ADMIN_USERNAME=lemmy_epsilon + - LEMMY_SETUP__ADMIN_PASSWORD=lemmy + - LEMMY_SETUP__SITE_NAME=lemmy-epsilon + - LEMMY_RATE_LIMIT__POST=99999 + - LEMMY_RATE_LIMIT__REGISTER=99999 + - LEMMY_CAPTCHA__ENABLED=false + - LEMMY_TEST_SEND_SYNC=1 + - RUST_BACKTRACE=1 + - RUST_LOG=debug + depends_on: + - postgres_epsilon + ports: + - "8581:8581" + postgres_epsilon: + image: postgres:12-alpine + environment: + - POSTGRES_USER=lemmy + - POSTGRES_PASSWORD=password + - POSTGRES_DB=lemmy + volumes: + - ./volumes/postgres_epsilon:/var/lib/postgresql/data + + iframely: + image: dogbin/iframely:latest + volumes: + - ../iframely.config.local.js:/iframely/config.local.js:ro + restart: always diff --git a/docker/federation/nginx.conf b/docker/federation/nginx.conf new file mode 100644 index 000000000..357b87c90 --- /dev/null +++ b/docker/federation/nginx.conf @@ -0,0 +1,230 @@ +events { + worker_connections 1024; +} + +http { + upstream lemmy-alpha { + server "lemmy-alpha:8541"; + } + upstream lemmy-alpha-ui { + server "lemmy-alpha-ui:1234"; + } + server { + listen 8540; + server_name 127.0.0.1; + access_log off; + + # Upload limit for pictshare + client_max_body_size 50M; + + location ~ ^/(api|docs|pictrs|feeds|nodeinfo|.well-known) { + proxy_pass http://lemmy-alpha; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + } + location / { + set $proxpass http://lemmy-alpha-ui; + if ($http_accept = "application/activity+json") { + set $proxpass http://lemmy-alpha; + } + if ($http_accept = "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"") { + set $proxpass http://lemmy-alpha; + } + proxy_pass $proxpass; + + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + + # Cuts off the trailing slash on URLs to make them valid + rewrite ^(.+)/+$ $1 permanent; + } + location /iframely/ { + proxy_pass http://iframely:80/; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + } + + upstream lemmy-beta { + server "lemmy-beta:8551"; + } + upstream lemmy-beta-ui { + server "lemmy-beta-ui:1234"; + } + server { + listen 8550; + server_name 127.0.0.1; + access_log off; + + # Upload limit for pictshare + client_max_body_size 50M; + + location ~ ^/(api|docs|pictrs|feeds|nodeinfo|.well-known) { + proxy_pass http://lemmy-beta; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + } + location / { + set $proxpass http://lemmy-beta-ui; + if ($http_accept = "application/activity+json") { + set $proxpass http://lemmy-beta; + } + if ($http_accept = "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"") { + set $proxpass http://lemmy-beta; + } + proxy_pass $proxpass; + + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + + # Cuts off the trailing slash on URLs to make them valid + rewrite ^(.+)/+$ $1 permanent; + } + location /iframely/ { + proxy_pass http://iframely:80/; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + } + + upstream lemmy-gamma { + server "lemmy-gamma:8561"; + } + upstream lemmy-gamma-ui { + server "lemmy-gamma-ui:1234"; + } + server { + listen 8560; + server_name 127.0.0.1; + access_log off; + + # Upload limit for pictshare + client_max_body_size 50M; + + location ~ ^/(api|docs|pictrs|feeds|nodeinfo|.well-known) { + proxy_pass http://lemmy-gamma; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + } + location / { + set $proxpass http://lemmy-gamma-ui; + if ($http_accept = "application/activity+json") { + set $proxpass http://lemmy-gamma; + } + if ($http_accept = "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"") { + set $proxpass http://lemmy-gamma; + } + proxy_pass $proxpass; + + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + + # Cuts off the trailing slash on URLs to make them valid + rewrite ^(.+)/+$ $1 permanent; + } + location /iframely/ { + proxy_pass http://iframely:80/; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + } + + upstream lemmy-delta { + server "lemmy-delta:8571"; + } + upstream lemmy-delta-ui { + server "lemmy-delta-ui:1234"; + } + server { + listen 8570; + server_name 127.0.0.1; + access_log off; + + # Upload limit for pictshare + client_max_body_size 50M; + + location ~ ^/(api|docs|pictrs|feeds|nodeinfo|.well-known) { + proxy_pass http://lemmy-delta; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + } + location / { + set $proxpass http://lemmy-delta-ui; + if ($http_accept = "application/activity+json") { + set $proxpass http://lemmy-delta; + } + if ($http_accept = "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"") { + set $proxpass http://lemmy-delta; + } + proxy_pass $proxpass; + + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + + # Cuts off the trailing slash on URLs to make them valid + rewrite ^(.+)/+$ $1 permanent; + } + location /iframely/ { + proxy_pass http://iframely:80/; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + } + + upstream lemmy-epsilon { + server "lemmy-epsilon:8581"; + } + upstream lemmy-epsilon-ui { + server "lemmy-epsilon-ui:1234"; + } + server { + listen 8580; + server_name 127.0.0.1; + access_log off; + + # Upload limit for pictshare + client_max_body_size 50M; + + location ~ ^/(api|docs|pictrs|feeds|nodeinfo|.well-known) { + proxy_pass http://lemmy-epsilon; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + } + location / { + set $proxpass http://lemmy-epsilon-ui; + if ($http_accept = "application/activity+json") { + set $proxpass http://lemmy-epsilon; + } + if ($http_accept = "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"") { + set $proxpass http://lemmy-epsilon; + } + proxy_pass $proxpass; + + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + + # Cuts off the trailing slash on URLs to make them valid + rewrite ^(.+)/+$ $1 permanent; + } + location /iframely/ { + proxy_pass http://iframely:80/; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + } +} diff --git a/docker/federation/run-tests.bash b/docker/federation/run-tests.bash new file mode 100755 index 000000000..03f18d7e6 --- /dev/null +++ b/docker/federation/run-tests.bash @@ -0,0 +1,31 @@ +#!/bin/bash +set -e + +# make sure there are no old containers or old data around +sudo docker-compose down +sudo rm -rf volumes + +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 ../dev/Dockerfile --tag lemmy-federation:latest + +sudo mkdir -p volumes/pictrs_alpha +sudo chown -R 991:991 volumes/pictrs_alpha + +sudo docker-compose up -d + +pushd ../../api_tests +echo "Waiting for Lemmy to start..." +while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8541/api/v1/site')" != "200" ]]; do sleep 1; done +while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8551/api/v1/site')" != "200" ]]; do sleep 1; done +while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8561/api/v1/site')" != "200" ]]; do sleep 1; done +while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8571/api/v1/site')" != "200" ]]; do sleep 1; done +while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8581/api/v1/site')" != "200" ]]; do sleep 1; done +yarn +yarn api-test || true +popd + +sudo docker-compose down + +sudo rm -r volumes diff --git a/docker/federation/start-local-instances.bash b/docker/federation/start-local-instances.bash new file mode 100755 index 000000000..ec2712f14 --- /dev/null +++ b/docker/federation/start-local-instances.bash @@ -0,0 +1,21 @@ +#!/bin/bash +set -e + +sudo docker build ../../ --file ../dev/volume_mount.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 -d + +echo "Waiting for Lemmy to start..." +while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8541/api/v1/site')" != "200" ]]; do sleep 1; done +while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8551/api/v1/site')" != "200" ]]; do sleep 1; done +while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8561/api/v1/site')" != "200" ]]; do sleep 1; done +while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8571/api/v1/site')" != "200" ]]; do sleep 1; done +while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8581/api/v1/site')" != "200" ]]; do sleep 1; done +echo "All instances started." + +sudo docker-compose logs -f diff --git a/docker/prod/deploy.sh b/docker/prod/deploy.sh index 1206f8c96..81bfdab8e 100755 --- a/docker/prod/deploy.sh +++ b/docker/prod/deploy.sh @@ -19,16 +19,22 @@ cd docker/prod || exit # Changing various references to the Lemmy version sed -i "s/dessalines\/lemmy-ui:.*/dessalines\/lemmy-ui:$new_tag/" ../dev/docker-compose.yml +sed -i "s/dessalines\/lemmy-ui:.*/dessalines\/lemmy-ui:$new_tag/" ../federation/docker-compose.yml sed -i "s/dessalines\/lemmy:.*/dessalines\/lemmy:$new_tag/" ../prod/docker-compose.yml sed -i "s/dessalines\/lemmy-ui:.*/dessalines\/lemmy-ui:$new_tag/" ../prod/docker-compose.yml +sed -i "s/dessalines\/lemmy:v.*/dessalines\/lemmy:$new_tag/" ../travis/docker_push.sh git add ../dev/docker-compose.yml +git add ../federation/docker-compose.yml git add ../prod/docker-compose.yml +git add ../travis/docker_push.sh # The commit git commit -m"Version $new_tag" git tag $new_tag +# Now doing the building on travis, but leave this in for when you need to do an arm build + # export COMPOSE_DOCKER_CLI_BUILD=1 # export DOCKER_BUILDKIT=1 diff --git a/docker/travis/docker-compose.yml b/docker/travis/docker-compose.yml new file mode 100644 index 000000000..565f7a000 --- /dev/null +++ b/docker/travis/docker-compose.yml @@ -0,0 +1,159 @@ +version: '3.3' + +services: + lemmy-alpha: + image: dessalines/lemmy:travis + environment: + - LEMMY_HOSTNAME=lemmy-alpha:8541 + - LEMMY_DATABASE_URL=postgres://lemmy:password@postgres_alpha:5432/lemmy + - LEMMY_JWT_SECRET=changeme + - LEMMY_FEDERATION__ENABLED=true + - LEMMY_TLS_ENABLED=false + - LEMMY_FEDERATION__ALLOWED_INSTANCES=lemmy-beta,lemmy-gamma,lemmy-delta,lemmy-epsilon + - LEMMY_PORT=8541 + - LEMMY_SETUP__ADMIN_USERNAME=lemmy_alpha + - LEMMY_SETUP__ADMIN_PASSWORD=lemmy + - LEMMY_SETUP__SITE_NAME=lemmy-alpha + - LEMMY_RATE_LIMIT__POST=99999 + - LEMMY_RATE_LIMIT__REGISTER=99999 + - LEMMY_CAPTCHA__ENABLED=false + - RUST_BACKTRACE=1 + - RUST_LOG=debug + depends_on: + - postgres_alpha + ports: + - "8541:8541" + postgres_alpha: + image: postgres:12-alpine + environment: + - POSTGRES_USER=lemmy + - POSTGRES_PASSWORD=password + - POSTGRES_DB=lemmy + volumes: + - ./volumes/postgres_alpha:/var/lib/postgresql/data + + lemmy-beta: + image: dessalines/lemmy:travis + environment: + - LEMMY_HOSTNAME=lemmy-beta:8551 + - LEMMY_DATABASE_URL=postgres://lemmy:password@postgres_beta:5432/lemmy + - LEMMY_JWT_SECRET=changeme + - LEMMY_FEDERATION__ENABLED=true + - LEMMY_TLS_ENABLED=false + - LEMMY_FEDERATION__ALLOWED_INSTANCES=lemmy-alpha,lemmy-gamma,lemmy-delta,lemmy-epsilon + - LEMMY_PORT=8551 + - LEMMY_SETUP__ADMIN_USERNAME=lemmy_beta + - LEMMY_SETUP__ADMIN_PASSWORD=lemmy + - LEMMY_SETUP__SITE_NAME=lemmy-beta + - LEMMY_RATE_LIMIT__POST=99999 + - LEMMY_RATE_LIMIT__REGISTER=99999 + - LEMMY_CAPTCHA__ENABLED=false + - RUST_BACKTRACE=1 + - RUST_LOG=debug + depends_on: + - postgres_beta + ports: + - "8551:8551" + postgres_beta: + image: postgres:12-alpine + environment: + - POSTGRES_USER=lemmy + - POSTGRES_PASSWORD=password + - POSTGRES_DB=lemmy + volumes: + - ./volumes/postgres_beta:/var/lib/postgresql/data + + lemmy-gamma: + image: dessalines/lemmy:travis + environment: + - LEMMY_HOSTNAME=lemmy-gamma:8561 + - LEMMY_DATABASE_URL=postgres://lemmy:password@postgres_gamma:5432/lemmy + - LEMMY_JWT_SECRET=changeme + - LEMMY_FEDERATION__ENABLED=true + - LEMMY_TLS_ENABLED=false + - LEMMY_FEDERATION__ALLOWED_INSTANCES=lemmy-alpha,lemmy-beta,lemmy-delta,lemmy-epsilon + - LEMMY_PORT=8561 + - LEMMY_SETUP__ADMIN_USERNAME=lemmy_gamma + - LEMMY_SETUP__ADMIN_PASSWORD=lemmy + - LEMMY_SETUP__SITE_NAME=lemmy-gamma + - LEMMY_RATE_LIMIT__POST=99999 + - LEMMY_RATE_LIMIT__REGISTER=99999 + - LEMMY_CAPTCHA__ENABLED=false + - RUST_BACKTRACE=1 + - RUST_LOG=debug + depends_on: + - postgres_gamma + ports: + - "8561:8561" + postgres_gamma: + image: postgres:12-alpine + environment: + - POSTGRES_USER=lemmy + - POSTGRES_PASSWORD=password + - POSTGRES_DB=lemmy + volumes: + - ./volumes/postgres_gamma:/var/lib/postgresql/data + + # An instance with only an allowlist for beta + lemmy-delta: + image: dessalines/lemmy:travis + environment: + - LEMMY_HOSTNAME=lemmy-delta:8571 + - LEMMY_DATABASE_URL=postgres://lemmy:password@postgres_delta:5432/lemmy + - LEMMY_JWT_SECRET=changeme + - LEMMY_FEDERATION__ENABLED=true + - LEMMY_TLS_ENABLED=false + - LEMMY_FEDERATION__ALLOWED_INSTANCES=lemmy-beta + - LEMMY_PORT=8571 + - LEMMY_SETUP__ADMIN_USERNAME=lemmy_delta + - LEMMY_SETUP__ADMIN_PASSWORD=lemmy + - LEMMY_SETUP__SITE_NAME=lemmy-delta + - LEMMY_RATE_LIMIT__POST=99999 + - LEMMY_RATE_LIMIT__REGISTER=99999 + - LEMMY_CAPTCHA__ENABLED=false + - RUST_BACKTRACE=1 + - RUST_LOG=debug + depends_on: + - postgres_delta + ports: + - "8571:8571" + postgres_delta: + image: postgres:12-alpine + environment: + - POSTGRES_USER=lemmy + - POSTGRES_PASSWORD=password + - POSTGRES_DB=lemmy + volumes: + - ./volumes/postgres_delta:/var/lib/postgresql/data + + # An instance who has a blocklist, with lemmy-alpha blocked + lemmy-epsilon: + image: dessalines/lemmy:travis + environment: + - LEMMY_HOSTNAME=lemmy-epsilon:8581 + - LEMMY_DATABASE_URL=postgres://lemmy:password@postgres_epsilon:5432/lemmy + - LEMMY_JWT_SECRET=changeme + - LEMMY_FEDERATION__ENABLED=true + - LEMMY_TLS_ENABLED=false + - LEMMY_FEDERATION__BLOCKED_INSTANCES=lemmy-alpha + - LEMMY_PORT=8581 + - LEMMY_SETUP__ADMIN_USERNAME=lemmy_epsilon + - LEMMY_SETUP__ADMIN_PASSWORD=lemmy + - LEMMY_SETUP__SITE_NAME=lemmy-epsilon + - LEMMY_RATE_LIMIT__POST=99999 + - LEMMY_RATE_LIMIT__REGISTER=99999 + - LEMMY_CAPTCHA__ENABLED=false + - RUST_BACKTRACE=1 + - RUST_LOG=debug + depends_on: + - postgres_epsilon + ports: + - "8581:8581" + postgres_epsilon: + image: postgres:12-alpine + environment: + - POSTGRES_USER=lemmy + - POSTGRES_PASSWORD=password + - POSTGRES_DB=lemmy + volumes: + - ./volumes/postgres_epsilon:/var/lib/postgresql/data diff --git a/docker/travis/docker_push.sh b/docker/travis/docker_push.sh new file mode 100644 index 000000000..ba77f0264 --- /dev/null +++ b/docker/travis/docker_push.sh @@ -0,0 +1,5 @@ +#!/bin/sh +echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin +docker tag dessalines/lemmy:travis \ + dessalines/lemmy:v0.8.10 +docker push dessalines/lemmy:v0.8.10 diff --git a/docker/travis/run-tests.bash b/docker/travis/run-tests.bash new file mode 100755 index 000000000..01460d30a --- /dev/null +++ b/docker/travis/run-tests.bash @@ -0,0 +1,28 @@ +#!/bin/bash +set -e + +# make sure there are no old containers or old data around +sudo docker-compose down +sudo rm -rf volumes + +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 ../prod/Dockerfile --tag dessalines/lemmy:travis + +sudo docker-compose up -d + +pushd ../../api_tests +echo "Waiting for Lemmy to start..." +while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8541/api/v1/site')" != "200" ]]; do sleep 1; done +while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8551/api/v1/site')" != "200" ]]; do sleep 1; done +while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8561/api/v1/site')" != "200" ]]; do sleep 1; done +while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8571/api/v1/site')" != "200" ]]; do sleep 1; done +while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8581/api/v1/site')" != "200" ]]; do sleep 1; done +yarn +yarn api-test +popd + +sudo docker-compose down + +sudo rm -r volumes/ diff --git a/lemmy_apub/src/fetcher.rs b/lemmy_apub/src/fetcher.rs index c26f1464c..4e1fa98a6 100644 --- a/lemmy_apub/src/fetcher.rs +++ b/lemmy_apub/src/fetcher.rs @@ -95,7 +95,7 @@ enum SearchAcceptedObjects { /// Attempt to parse the query as URL, and fetch an ActivityPub object from it. /// -/// Some working examples for use with the `api_tests` setup: +/// Some working examples for use with the `docker/federation/` setup: /// http://lemmy_alpha:8541/c/main, or !main@lemmy_alpha:8541 /// http://lemmy_beta:8551/u/lemmy_alpha, or @lemmy_beta@lemmy_beta:8551 /// http://lemmy_gamma:8561/post/3 From 7db754e94c58c078005d1c2bc71380a51b90ae2b Mon Sep 17 00:00:00 2001 From: Dessalines Date: Tue, 12 Jan 2021 10:40:38 -0500 Subject: [PATCH 3/6] Revert "Revert "Removing docker/federation and docker/travis folders."" This reverts commit e483b6b51fdbe70f77c28cf3ef4efe9c7cb6237a. --- README.md | 2 +- docker/federation/docker-compose.yml | 237 ------------------- docker/federation/nginx.conf | 230 ------------------ docker/federation/run-tests.bash | 31 --- docker/federation/start-local-instances.bash | 21 -- docker/prod/deploy.sh | 6 - docker/travis/docker-compose.yml | 159 ------------- docker/travis/docker_push.sh | 5 - docker/travis/run-tests.bash | 28 --- lemmy_apub/src/fetcher.rs | 2 +- 10 files changed, 2 insertions(+), 719 deletions(-) delete mode 100644 docker/federation/docker-compose.yml delete mode 100644 docker/federation/nginx.conf delete mode 100755 docker/federation/run-tests.bash delete mode 100755 docker/federation/start-local-instances.bash delete mode 100644 docker/travis/docker-compose.yml delete mode 100644 docker/travis/docker_push.sh delete mode 100755 docker/travis/run-tests.bash diff --git a/README.md b/README.md index 211759e1f..6d1aede68 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@
![GitHub tag (latest SemVer)](https://img.shields.io/github/tag/LemmyNet/lemmy.svg) -[![Build Status](https://travis-ci.org/LemmyNet/lemmy.svg?branch=main)](https://travis-ci.org/LemmyNet/lemmy) +![Build Status](https://cloud.drone.io/api/badges/LemmyNet/lemmy/status.svg) [![GitHub issues](https://img.shields.io/github/issues-raw/LemmyNet/lemmy.svg)](https://github.com/LemmyNet/lemmy/issues) [![Docker Pulls](https://img.shields.io/docker/pulls/dessalines/lemmy.svg)](https://cloud.docker.com/repository/docker/dessalines/lemmy/) [![Translation status](http://weblate.yerbamate.ml/widgets/lemmy/-/lemmy/svg-badge.svg)](http://weblate.yerbamate.ml/engage/lemmy/) diff --git a/docker/federation/docker-compose.yml b/docker/federation/docker-compose.yml deleted file mode 100644 index dc015a289..000000000 --- a/docker/federation/docker-compose.yml +++ /dev/null @@ -1,237 +0,0 @@ -version: '3.3' - -services: - nginx: - image: nginx:1.17-alpine - ports: - - "8540:8540" - - "8550:8550" - - "8560:8560" - - "8570:8570" - - "8580:8580" - volumes: - - ./nginx.conf:/etc/nginx/nginx.conf - restart: on-failure - depends_on: - - pictrs - - iframely - - lemmy-alpha-ui - - lemmy-beta-ui - - lemmy-gamma-ui - - lemmy-delta-ui - - lemmy-epsilon-ui - - pictrs: - restart: always - image: asonix/pictrs:v0.2.5-r0 - user: 991:991 - volumes: - - ./volumes/pictrs_alpha:/mnt - - lemmy-alpha-ui: - image: dessalines/lemmy-ui:v0.8.10 - environment: - - LEMMY_INTERNAL_HOST=lemmy-alpha:8541 - - LEMMY_EXTERNAL_HOST=localhost:8541 - - LEMMY_HTTPS=false - depends_on: - - lemmy-alpha - lemmy-alpha: - image: lemmy-federation:latest - environment: - - LEMMY_HOSTNAME=lemmy-alpha:8541 - - LEMMY_DATABASE_URL=postgres://lemmy:password@postgres_alpha:5432/lemmy - - LEMMY_JWT_SECRET=changeme - - LEMMY_FEDERATION__ENABLED=true - - LEMMY_TLS_ENABLED=false - - LEMMY_FEDERATION__ALLOWED_INSTANCES=lemmy-beta,lemmy-gamma,lemmy-delta,lemmy-epsilon - - LEMMY_PORT=8541 - - LEMMY_SETUP__ADMIN_USERNAME=lemmy_alpha - - LEMMY_SETUP__ADMIN_PASSWORD=lemmy - - LEMMY_SETUP__SITE_NAME=lemmy-alpha - - LEMMY_RATE_LIMIT__POST=99999 - - LEMMY_RATE_LIMIT__REGISTER=99999 - - LEMMY_CAPTCHA__ENABLED=false - - LEMMY_TEST_SEND_SYNC=1 - - RUST_BACKTRACE=1 - - RUST_LOG=debug - depends_on: - - postgres_alpha - ports: - - "8541:8541" - postgres_alpha: - image: postgres:12-alpine - environment: - - POSTGRES_USER=lemmy - - POSTGRES_PASSWORD=password - - POSTGRES_DB=lemmy - volumes: - - ./volumes/postgres_alpha:/var/lib/postgresql/data - - lemmy-beta-ui: - image: dessalines/lemmy-ui:v0.8.10 - environment: - - LEMMY_INTERNAL_HOST=lemmy-beta:8551 - - LEMMY_EXTERNAL_HOST=localhost:8551 - - LEMMY_HTTPS=false - depends_on: - - lemmy-beta - lemmy-beta: - image: lemmy-federation:latest - environment: - - LEMMY_HOSTNAME=lemmy-beta:8551 - - LEMMY_DATABASE_URL=postgres://lemmy:password@postgres_beta:5432/lemmy - - LEMMY_JWT_SECRET=changeme - - LEMMY_FEDERATION__ENABLED=true - - LEMMY_TLS_ENABLED=false - - LEMMY_FEDERATION__ALLOWED_INSTANCES=lemmy-alpha,lemmy-gamma,lemmy-delta,lemmy-epsilon - - LEMMY_PORT=8551 - - LEMMY_SETUP__ADMIN_USERNAME=lemmy_beta - - LEMMY_SETUP__ADMIN_PASSWORD=lemmy - - LEMMY_SETUP__SITE_NAME=lemmy-beta - - LEMMY_RATE_LIMIT__POST=99999 - - LEMMY_RATE_LIMIT__REGISTER=99999 - - LEMMY_CAPTCHA__ENABLED=false - - LEMMY_TEST_SEND_SYNC=1 - - RUST_BACKTRACE=1 - - RUST_LOG=debug - depends_on: - - postgres_beta - ports: - - "8551:8551" - postgres_beta: - image: postgres:12-alpine - environment: - - POSTGRES_USER=lemmy - - POSTGRES_PASSWORD=password - - POSTGRES_DB=lemmy - volumes: - - ./volumes/postgres_beta:/var/lib/postgresql/data - - lemmy-gamma-ui: - image: dessalines/lemmy-ui:v0.8.10 - environment: - - LEMMY_INTERNAL_HOST=lemmy-gamma:8561 - - LEMMY_EXTERNAL_HOST=localhost:8561 - - LEMMY_HTTPS=false - depends_on: - - lemmy-gamma - lemmy-gamma: - image: lemmy-federation:latest - environment: - - LEMMY_HOSTNAME=lemmy-gamma:8561 - - LEMMY_DATABASE_URL=postgres://lemmy:password@postgres_gamma:5432/lemmy - - LEMMY_JWT_SECRET=changeme - - LEMMY_FEDERATION__ENABLED=true - - LEMMY_TLS_ENABLED=false - - LEMMY_FEDERATION__ALLOWED_INSTANCES=lemmy-alpha,lemmy-beta,lemmy-delta,lemmy-epsilon - - LEMMY_PORT=8561 - - LEMMY_SETUP__ADMIN_USERNAME=lemmy_gamma - - LEMMY_SETUP__ADMIN_PASSWORD=lemmy - - LEMMY_SETUP__SITE_NAME=lemmy-gamma - - LEMMY_RATE_LIMIT__POST=99999 - - LEMMY_RATE_LIMIT__REGISTER=99999 - - LEMMY_CAPTCHA__ENABLED=false - - LEMMY_TEST_SEND_SYNC=1 - - RUST_BACKTRACE=1 - - RUST_LOG=debug - depends_on: - - postgres_gamma - ports: - - "8561:8561" - postgres_gamma: - image: postgres:12-alpine - environment: - - POSTGRES_USER=lemmy - - POSTGRES_PASSWORD=password - - POSTGRES_DB=lemmy - volumes: - - ./volumes/postgres_gamma:/var/lib/postgresql/data - - # An instance with only an allowlist for beta - lemmy-delta-ui: - image: dessalines/lemmy-ui:v0.8.10 - environment: - - LEMMY_INTERNAL_HOST=lemmy-delta:8571 - - LEMMY_EXTERNAL_HOST=localhost:8571 - - LEMMY_HTTPS=false - depends_on: - - lemmy-delta - lemmy-delta: - image: lemmy-federation:latest - environment: - - LEMMY_HOSTNAME=lemmy-delta:8571 - - LEMMY_DATABASE_URL=postgres://lemmy:password@postgres_delta:5432/lemmy - - LEMMY_JWT_SECRET=changeme - - LEMMY_FEDERATION__ENABLED=true - - LEMMY_TLS_ENABLED=false - - LEMMY_FEDERATION__ALLOWED_INSTANCES=lemmy-beta - - LEMMY_PORT=8571 - - LEMMY_SETUP__ADMIN_USERNAME=lemmy_delta - - LEMMY_SETUP__ADMIN_PASSWORD=lemmy - - LEMMY_SETUP__SITE_NAME=lemmy-delta - - LEMMY_RATE_LIMIT__POST=99999 - - LEMMY_RATE_LIMIT__REGISTER=99999 - - LEMMY_CAPTCHA__ENABLED=false - - LEMMY_TEST_SEND_SYNC=1 - - RUST_BACKTRACE=1 - - RUST_LOG=debug - depends_on: - - postgres_delta - ports: - - "8571:8571" - postgres_delta: - image: postgres:12-alpine - environment: - - POSTGRES_USER=lemmy - - POSTGRES_PASSWORD=password - - POSTGRES_DB=lemmy - volumes: - - ./volumes/postgres_delta:/var/lib/postgresql/data - - # An instance who has a blocklist, with lemmy-alpha blocked - lemmy-epsilon-ui: - image: dessalines/lemmy-ui:v0.8.10 - environment: - - LEMMY_INTERNAL_HOST=lemmy-epsilon:8581 - - LEMMY_EXTERNAL_HOST=localhost:8581 - - LEMMY_HTTPS=false - depends_on: - - lemmy-epsilon - lemmy-epsilon: - image: lemmy-federation:latest - environment: - - LEMMY_HOSTNAME=lemmy-epsilon:8581 - - LEMMY_DATABASE_URL=postgres://lemmy:password@postgres_epsilon:5432/lemmy - - LEMMY_JWT_SECRET=changeme - - LEMMY_FEDERATION__ENABLED=true - - LEMMY_TLS_ENABLED=false - - LEMMY_FEDERATION__BLOCKED_INSTANCES=lemmy-alpha - - LEMMY_PORT=8581 - - LEMMY_SETUP__ADMIN_USERNAME=lemmy_epsilon - - LEMMY_SETUP__ADMIN_PASSWORD=lemmy - - LEMMY_SETUP__SITE_NAME=lemmy-epsilon - - LEMMY_RATE_LIMIT__POST=99999 - - LEMMY_RATE_LIMIT__REGISTER=99999 - - LEMMY_CAPTCHA__ENABLED=false - - LEMMY_TEST_SEND_SYNC=1 - - RUST_BACKTRACE=1 - - RUST_LOG=debug - depends_on: - - postgres_epsilon - ports: - - "8581:8581" - postgres_epsilon: - image: postgres:12-alpine - environment: - - POSTGRES_USER=lemmy - - POSTGRES_PASSWORD=password - - POSTGRES_DB=lemmy - volumes: - - ./volumes/postgres_epsilon:/var/lib/postgresql/data - - iframely: - image: dogbin/iframely:latest - volumes: - - ../iframely.config.local.js:/iframely/config.local.js:ro - restart: always diff --git a/docker/federation/nginx.conf b/docker/federation/nginx.conf deleted file mode 100644 index 357b87c90..000000000 --- a/docker/federation/nginx.conf +++ /dev/null @@ -1,230 +0,0 @@ -events { - worker_connections 1024; -} - -http { - upstream lemmy-alpha { - server "lemmy-alpha:8541"; - } - upstream lemmy-alpha-ui { - server "lemmy-alpha-ui:1234"; - } - server { - listen 8540; - server_name 127.0.0.1; - access_log off; - - # Upload limit for pictshare - client_max_body_size 50M; - - location ~ ^/(api|docs|pictrs|feeds|nodeinfo|.well-known) { - proxy_pass http://lemmy-alpha; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - } - location / { - set $proxpass http://lemmy-alpha-ui; - if ($http_accept = "application/activity+json") { - set $proxpass http://lemmy-alpha; - } - if ($http_accept = "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"") { - set $proxpass http://lemmy-alpha; - } - proxy_pass $proxpass; - - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header Host $host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - - # Cuts off the trailing slash on URLs to make them valid - rewrite ^(.+)/+$ $1 permanent; - } - location /iframely/ { - proxy_pass http://iframely:80/; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header Host $host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - } - } - - upstream lemmy-beta { - server "lemmy-beta:8551"; - } - upstream lemmy-beta-ui { - server "lemmy-beta-ui:1234"; - } - server { - listen 8550; - server_name 127.0.0.1; - access_log off; - - # Upload limit for pictshare - client_max_body_size 50M; - - location ~ ^/(api|docs|pictrs|feeds|nodeinfo|.well-known) { - proxy_pass http://lemmy-beta; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - } - location / { - set $proxpass http://lemmy-beta-ui; - if ($http_accept = "application/activity+json") { - set $proxpass http://lemmy-beta; - } - if ($http_accept = "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"") { - set $proxpass http://lemmy-beta; - } - proxy_pass $proxpass; - - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header Host $host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - - # Cuts off the trailing slash on URLs to make them valid - rewrite ^(.+)/+$ $1 permanent; - } - location /iframely/ { - proxy_pass http://iframely:80/; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header Host $host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - } - } - - upstream lemmy-gamma { - server "lemmy-gamma:8561"; - } - upstream lemmy-gamma-ui { - server "lemmy-gamma-ui:1234"; - } - server { - listen 8560; - server_name 127.0.0.1; - access_log off; - - # Upload limit for pictshare - client_max_body_size 50M; - - location ~ ^/(api|docs|pictrs|feeds|nodeinfo|.well-known) { - proxy_pass http://lemmy-gamma; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - } - location / { - set $proxpass http://lemmy-gamma-ui; - if ($http_accept = "application/activity+json") { - set $proxpass http://lemmy-gamma; - } - if ($http_accept = "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"") { - set $proxpass http://lemmy-gamma; - } - proxy_pass $proxpass; - - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header Host $host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - - # Cuts off the trailing slash on URLs to make them valid - rewrite ^(.+)/+$ $1 permanent; - } - location /iframely/ { - proxy_pass http://iframely:80/; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header Host $host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - } - } - - upstream lemmy-delta { - server "lemmy-delta:8571"; - } - upstream lemmy-delta-ui { - server "lemmy-delta-ui:1234"; - } - server { - listen 8570; - server_name 127.0.0.1; - access_log off; - - # Upload limit for pictshare - client_max_body_size 50M; - - location ~ ^/(api|docs|pictrs|feeds|nodeinfo|.well-known) { - proxy_pass http://lemmy-delta; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - } - location / { - set $proxpass http://lemmy-delta-ui; - if ($http_accept = "application/activity+json") { - set $proxpass http://lemmy-delta; - } - if ($http_accept = "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"") { - set $proxpass http://lemmy-delta; - } - proxy_pass $proxpass; - - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header Host $host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - - # Cuts off the trailing slash on URLs to make them valid - rewrite ^(.+)/+$ $1 permanent; - } - location /iframely/ { - proxy_pass http://iframely:80/; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header Host $host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - } - } - - upstream lemmy-epsilon { - server "lemmy-epsilon:8581"; - } - upstream lemmy-epsilon-ui { - server "lemmy-epsilon-ui:1234"; - } - server { - listen 8580; - server_name 127.0.0.1; - access_log off; - - # Upload limit for pictshare - client_max_body_size 50M; - - location ~ ^/(api|docs|pictrs|feeds|nodeinfo|.well-known) { - proxy_pass http://lemmy-epsilon; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - } - location / { - set $proxpass http://lemmy-epsilon-ui; - if ($http_accept = "application/activity+json") { - set $proxpass http://lemmy-epsilon; - } - if ($http_accept = "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"") { - set $proxpass http://lemmy-epsilon; - } - proxy_pass $proxpass; - - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header Host $host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - - # Cuts off the trailing slash on URLs to make them valid - rewrite ^(.+)/+$ $1 permanent; - } - location /iframely/ { - proxy_pass http://iframely:80/; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header Host $host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - } - } -} diff --git a/docker/federation/run-tests.bash b/docker/federation/run-tests.bash deleted file mode 100755 index 03f18d7e6..000000000 --- a/docker/federation/run-tests.bash +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash -set -e - -# make sure there are no old containers or old data around -sudo docker-compose down -sudo rm -rf volumes - -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 ../dev/Dockerfile --tag lemmy-federation:latest - -sudo mkdir -p volumes/pictrs_alpha -sudo chown -R 991:991 volumes/pictrs_alpha - -sudo docker-compose up -d - -pushd ../../api_tests -echo "Waiting for Lemmy to start..." -while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8541/api/v1/site')" != "200" ]]; do sleep 1; done -while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8551/api/v1/site')" != "200" ]]; do sleep 1; done -while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8561/api/v1/site')" != "200" ]]; do sleep 1; done -while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8571/api/v1/site')" != "200" ]]; do sleep 1; done -while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8581/api/v1/site')" != "200" ]]; do sleep 1; done -yarn -yarn api-test || true -popd - -sudo docker-compose down - -sudo rm -r volumes diff --git a/docker/federation/start-local-instances.bash b/docker/federation/start-local-instances.bash deleted file mode 100755 index ec2712f14..000000000 --- a/docker/federation/start-local-instances.bash +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash -set -e - -sudo docker build ../../ --file ../dev/volume_mount.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 -d - -echo "Waiting for Lemmy to start..." -while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8541/api/v1/site')" != "200" ]]; do sleep 1; done -while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8551/api/v1/site')" != "200" ]]; do sleep 1; done -while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8561/api/v1/site')" != "200" ]]; do sleep 1; done -while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8571/api/v1/site')" != "200" ]]; do sleep 1; done -while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8581/api/v1/site')" != "200" ]]; do sleep 1; done -echo "All instances started." - -sudo docker-compose logs -f diff --git a/docker/prod/deploy.sh b/docker/prod/deploy.sh index 81bfdab8e..1206f8c96 100755 --- a/docker/prod/deploy.sh +++ b/docker/prod/deploy.sh @@ -19,22 +19,16 @@ cd docker/prod || exit # Changing various references to the Lemmy version sed -i "s/dessalines\/lemmy-ui:.*/dessalines\/lemmy-ui:$new_tag/" ../dev/docker-compose.yml -sed -i "s/dessalines\/lemmy-ui:.*/dessalines\/lemmy-ui:$new_tag/" ../federation/docker-compose.yml sed -i "s/dessalines\/lemmy:.*/dessalines\/lemmy:$new_tag/" ../prod/docker-compose.yml sed -i "s/dessalines\/lemmy-ui:.*/dessalines\/lemmy-ui:$new_tag/" ../prod/docker-compose.yml -sed -i "s/dessalines\/lemmy:v.*/dessalines\/lemmy:$new_tag/" ../travis/docker_push.sh git add ../dev/docker-compose.yml -git add ../federation/docker-compose.yml git add ../prod/docker-compose.yml -git add ../travis/docker_push.sh # The commit git commit -m"Version $new_tag" git tag $new_tag -# Now doing the building on travis, but leave this in for when you need to do an arm build - # export COMPOSE_DOCKER_CLI_BUILD=1 # export DOCKER_BUILDKIT=1 diff --git a/docker/travis/docker-compose.yml b/docker/travis/docker-compose.yml deleted file mode 100644 index 565f7a000..000000000 --- a/docker/travis/docker-compose.yml +++ /dev/null @@ -1,159 +0,0 @@ -version: '3.3' - -services: - lemmy-alpha: - image: dessalines/lemmy:travis - environment: - - LEMMY_HOSTNAME=lemmy-alpha:8541 - - LEMMY_DATABASE_URL=postgres://lemmy:password@postgres_alpha:5432/lemmy - - LEMMY_JWT_SECRET=changeme - - LEMMY_FEDERATION__ENABLED=true - - LEMMY_TLS_ENABLED=false - - LEMMY_FEDERATION__ALLOWED_INSTANCES=lemmy-beta,lemmy-gamma,lemmy-delta,lemmy-epsilon - - LEMMY_PORT=8541 - - LEMMY_SETUP__ADMIN_USERNAME=lemmy_alpha - - LEMMY_SETUP__ADMIN_PASSWORD=lemmy - - LEMMY_SETUP__SITE_NAME=lemmy-alpha - - LEMMY_RATE_LIMIT__POST=99999 - - LEMMY_RATE_LIMIT__REGISTER=99999 - - LEMMY_CAPTCHA__ENABLED=false - - RUST_BACKTRACE=1 - - RUST_LOG=debug - depends_on: - - postgres_alpha - ports: - - "8541:8541" - postgres_alpha: - image: postgres:12-alpine - environment: - - POSTGRES_USER=lemmy - - POSTGRES_PASSWORD=password - - POSTGRES_DB=lemmy - volumes: - - ./volumes/postgres_alpha:/var/lib/postgresql/data - - lemmy-beta: - image: dessalines/lemmy:travis - environment: - - LEMMY_HOSTNAME=lemmy-beta:8551 - - LEMMY_DATABASE_URL=postgres://lemmy:password@postgres_beta:5432/lemmy - - LEMMY_JWT_SECRET=changeme - - LEMMY_FEDERATION__ENABLED=true - - LEMMY_TLS_ENABLED=false - - LEMMY_FEDERATION__ALLOWED_INSTANCES=lemmy-alpha,lemmy-gamma,lemmy-delta,lemmy-epsilon - - LEMMY_PORT=8551 - - LEMMY_SETUP__ADMIN_USERNAME=lemmy_beta - - LEMMY_SETUP__ADMIN_PASSWORD=lemmy - - LEMMY_SETUP__SITE_NAME=lemmy-beta - - LEMMY_RATE_LIMIT__POST=99999 - - LEMMY_RATE_LIMIT__REGISTER=99999 - - LEMMY_CAPTCHA__ENABLED=false - - RUST_BACKTRACE=1 - - RUST_LOG=debug - depends_on: - - postgres_beta - ports: - - "8551:8551" - postgres_beta: - image: postgres:12-alpine - environment: - - POSTGRES_USER=lemmy - - POSTGRES_PASSWORD=password - - POSTGRES_DB=lemmy - volumes: - - ./volumes/postgres_beta:/var/lib/postgresql/data - - lemmy-gamma: - image: dessalines/lemmy:travis - environment: - - LEMMY_HOSTNAME=lemmy-gamma:8561 - - LEMMY_DATABASE_URL=postgres://lemmy:password@postgres_gamma:5432/lemmy - - LEMMY_JWT_SECRET=changeme - - LEMMY_FEDERATION__ENABLED=true - - LEMMY_TLS_ENABLED=false - - LEMMY_FEDERATION__ALLOWED_INSTANCES=lemmy-alpha,lemmy-beta,lemmy-delta,lemmy-epsilon - - LEMMY_PORT=8561 - - LEMMY_SETUP__ADMIN_USERNAME=lemmy_gamma - - LEMMY_SETUP__ADMIN_PASSWORD=lemmy - - LEMMY_SETUP__SITE_NAME=lemmy-gamma - - LEMMY_RATE_LIMIT__POST=99999 - - LEMMY_RATE_LIMIT__REGISTER=99999 - - LEMMY_CAPTCHA__ENABLED=false - - RUST_BACKTRACE=1 - - RUST_LOG=debug - depends_on: - - postgres_gamma - ports: - - "8561:8561" - postgres_gamma: - image: postgres:12-alpine - environment: - - POSTGRES_USER=lemmy - - POSTGRES_PASSWORD=password - - POSTGRES_DB=lemmy - volumes: - - ./volumes/postgres_gamma:/var/lib/postgresql/data - - # An instance with only an allowlist for beta - lemmy-delta: - image: dessalines/lemmy:travis - environment: - - LEMMY_HOSTNAME=lemmy-delta:8571 - - LEMMY_DATABASE_URL=postgres://lemmy:password@postgres_delta:5432/lemmy - - LEMMY_JWT_SECRET=changeme - - LEMMY_FEDERATION__ENABLED=true - - LEMMY_TLS_ENABLED=false - - LEMMY_FEDERATION__ALLOWED_INSTANCES=lemmy-beta - - LEMMY_PORT=8571 - - LEMMY_SETUP__ADMIN_USERNAME=lemmy_delta - - LEMMY_SETUP__ADMIN_PASSWORD=lemmy - - LEMMY_SETUP__SITE_NAME=lemmy-delta - - LEMMY_RATE_LIMIT__POST=99999 - - LEMMY_RATE_LIMIT__REGISTER=99999 - - LEMMY_CAPTCHA__ENABLED=false - - RUST_BACKTRACE=1 - - RUST_LOG=debug - depends_on: - - postgres_delta - ports: - - "8571:8571" - postgres_delta: - image: postgres:12-alpine - environment: - - POSTGRES_USER=lemmy - - POSTGRES_PASSWORD=password - - POSTGRES_DB=lemmy - volumes: - - ./volumes/postgres_delta:/var/lib/postgresql/data - - # An instance who has a blocklist, with lemmy-alpha blocked - lemmy-epsilon: - image: dessalines/lemmy:travis - environment: - - LEMMY_HOSTNAME=lemmy-epsilon:8581 - - LEMMY_DATABASE_URL=postgres://lemmy:password@postgres_epsilon:5432/lemmy - - LEMMY_JWT_SECRET=changeme - - LEMMY_FEDERATION__ENABLED=true - - LEMMY_TLS_ENABLED=false - - LEMMY_FEDERATION__BLOCKED_INSTANCES=lemmy-alpha - - LEMMY_PORT=8581 - - LEMMY_SETUP__ADMIN_USERNAME=lemmy_epsilon - - LEMMY_SETUP__ADMIN_PASSWORD=lemmy - - LEMMY_SETUP__SITE_NAME=lemmy-epsilon - - LEMMY_RATE_LIMIT__POST=99999 - - LEMMY_RATE_LIMIT__REGISTER=99999 - - LEMMY_CAPTCHA__ENABLED=false - - RUST_BACKTRACE=1 - - RUST_LOG=debug - depends_on: - - postgres_epsilon - ports: - - "8581:8581" - postgres_epsilon: - image: postgres:12-alpine - environment: - - POSTGRES_USER=lemmy - - POSTGRES_PASSWORD=password - - POSTGRES_DB=lemmy - volumes: - - ./volumes/postgres_epsilon:/var/lib/postgresql/data diff --git a/docker/travis/docker_push.sh b/docker/travis/docker_push.sh deleted file mode 100644 index ba77f0264..000000000 --- a/docker/travis/docker_push.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin -docker tag dessalines/lemmy:travis \ - dessalines/lemmy:v0.8.10 -docker push dessalines/lemmy:v0.8.10 diff --git a/docker/travis/run-tests.bash b/docker/travis/run-tests.bash deleted file mode 100755 index 01460d30a..000000000 --- a/docker/travis/run-tests.bash +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash -set -e - -# make sure there are no old containers or old data around -sudo docker-compose down -sudo rm -rf volumes - -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 ../prod/Dockerfile --tag dessalines/lemmy:travis - -sudo docker-compose up -d - -pushd ../../api_tests -echo "Waiting for Lemmy to start..." -while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8541/api/v1/site')" != "200" ]]; do sleep 1; done -while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8551/api/v1/site')" != "200" ]]; do sleep 1; done -while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8561/api/v1/site')" != "200" ]]; do sleep 1; done -while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8571/api/v1/site')" != "200" ]]; do sleep 1; done -while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8581/api/v1/site')" != "200" ]]; do sleep 1; done -yarn -yarn api-test -popd - -sudo docker-compose down - -sudo rm -r volumes/ diff --git a/lemmy_apub/src/fetcher.rs b/lemmy_apub/src/fetcher.rs index 4e1fa98a6..c26f1464c 100644 --- a/lemmy_apub/src/fetcher.rs +++ b/lemmy_apub/src/fetcher.rs @@ -95,7 +95,7 @@ enum SearchAcceptedObjects { /// Attempt to parse the query as URL, and fetch an ActivityPub object from it. /// -/// Some working examples for use with the `docker/federation/` setup: +/// Some working examples for use with the `api_tests` setup: /// http://lemmy_alpha:8541/c/main, or !main@lemmy_alpha:8541 /// http://lemmy_beta:8551/u/lemmy_alpha, or @lemmy_beta@lemmy_beta:8551 /// http://lemmy_gamma:8561/post/3 From 3d4cc32525bd06131811f953d088e81767f72474 Mon Sep 17 00:00:00 2001 From: Dessalines Date: Tue, 12 Jan 2021 10:42:34 -0500 Subject: [PATCH 4/6] Adding back start-local-instances. --- docker/federation/start-local-instances.bash | 21 ++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100755 docker/federation/start-local-instances.bash diff --git a/docker/federation/start-local-instances.bash b/docker/federation/start-local-instances.bash new file mode 100755 index 000000000..ec2712f14 --- /dev/null +++ b/docker/federation/start-local-instances.bash @@ -0,0 +1,21 @@ +#!/bin/bash +set -e + +sudo docker build ../../ --file ../dev/volume_mount.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 -d + +echo "Waiting for Lemmy to start..." +while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8541/api/v1/site')" != "200" ]]; do sleep 1; done +while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8551/api/v1/site')" != "200" ]]; do sleep 1; done +while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8561/api/v1/site')" != "200" ]]; do sleep 1; done +while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8571/api/v1/site')" != "200" ]]; do sleep 1; done +while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8581/api/v1/site')" != "200" ]]; do sleep 1; done +echo "All instances started." + +sudo docker-compose logs -f From 116d908002f255f0cdd040327424dbf5129f5fea Mon Sep 17 00:00:00 2001 From: Dessalines Date: Wed, 13 Jan 2021 14:18:26 -0500 Subject: [PATCH 5/6] Restoring docker-compose and nginx in federation folder. --- docker/federation/docker-compose.yml | 237 +++++++++++++++++++++++++++ docker/federation/nginx.conf | 230 ++++++++++++++++++++++++++ 2 files changed, 467 insertions(+) create mode 100644 docker/federation/docker-compose.yml create mode 100644 docker/federation/nginx.conf diff --git a/docker/federation/docker-compose.yml b/docker/federation/docker-compose.yml new file mode 100644 index 000000000..dc015a289 --- /dev/null +++ b/docker/federation/docker-compose.yml @@ -0,0 +1,237 @@ +version: '3.3' + +services: + nginx: + image: nginx:1.17-alpine + ports: + - "8540:8540" + - "8550:8550" + - "8560:8560" + - "8570:8570" + - "8580:8580" + volumes: + - ./nginx.conf:/etc/nginx/nginx.conf + restart: on-failure + depends_on: + - pictrs + - iframely + - lemmy-alpha-ui + - lemmy-beta-ui + - lemmy-gamma-ui + - lemmy-delta-ui + - lemmy-epsilon-ui + + pictrs: + restart: always + image: asonix/pictrs:v0.2.5-r0 + user: 991:991 + volumes: + - ./volumes/pictrs_alpha:/mnt + + lemmy-alpha-ui: + image: dessalines/lemmy-ui:v0.8.10 + environment: + - LEMMY_INTERNAL_HOST=lemmy-alpha:8541 + - LEMMY_EXTERNAL_HOST=localhost:8541 + - LEMMY_HTTPS=false + depends_on: + - lemmy-alpha + lemmy-alpha: + image: lemmy-federation:latest + environment: + - LEMMY_HOSTNAME=lemmy-alpha:8541 + - LEMMY_DATABASE_URL=postgres://lemmy:password@postgres_alpha:5432/lemmy + - LEMMY_JWT_SECRET=changeme + - LEMMY_FEDERATION__ENABLED=true + - LEMMY_TLS_ENABLED=false + - LEMMY_FEDERATION__ALLOWED_INSTANCES=lemmy-beta,lemmy-gamma,lemmy-delta,lemmy-epsilon + - LEMMY_PORT=8541 + - LEMMY_SETUP__ADMIN_USERNAME=lemmy_alpha + - LEMMY_SETUP__ADMIN_PASSWORD=lemmy + - LEMMY_SETUP__SITE_NAME=lemmy-alpha + - LEMMY_RATE_LIMIT__POST=99999 + - LEMMY_RATE_LIMIT__REGISTER=99999 + - LEMMY_CAPTCHA__ENABLED=false + - LEMMY_TEST_SEND_SYNC=1 + - RUST_BACKTRACE=1 + - RUST_LOG=debug + depends_on: + - postgres_alpha + ports: + - "8541:8541" + postgres_alpha: + image: postgres:12-alpine + environment: + - POSTGRES_USER=lemmy + - POSTGRES_PASSWORD=password + - POSTGRES_DB=lemmy + volumes: + - ./volumes/postgres_alpha:/var/lib/postgresql/data + + lemmy-beta-ui: + image: dessalines/lemmy-ui:v0.8.10 + environment: + - LEMMY_INTERNAL_HOST=lemmy-beta:8551 + - LEMMY_EXTERNAL_HOST=localhost:8551 + - LEMMY_HTTPS=false + depends_on: + - lemmy-beta + lemmy-beta: + image: lemmy-federation:latest + environment: + - LEMMY_HOSTNAME=lemmy-beta:8551 + - LEMMY_DATABASE_URL=postgres://lemmy:password@postgres_beta:5432/lemmy + - LEMMY_JWT_SECRET=changeme + - LEMMY_FEDERATION__ENABLED=true + - LEMMY_TLS_ENABLED=false + - LEMMY_FEDERATION__ALLOWED_INSTANCES=lemmy-alpha,lemmy-gamma,lemmy-delta,lemmy-epsilon + - LEMMY_PORT=8551 + - LEMMY_SETUP__ADMIN_USERNAME=lemmy_beta + - LEMMY_SETUP__ADMIN_PASSWORD=lemmy + - LEMMY_SETUP__SITE_NAME=lemmy-beta + - LEMMY_RATE_LIMIT__POST=99999 + - LEMMY_RATE_LIMIT__REGISTER=99999 + - LEMMY_CAPTCHA__ENABLED=false + - LEMMY_TEST_SEND_SYNC=1 + - RUST_BACKTRACE=1 + - RUST_LOG=debug + depends_on: + - postgres_beta + ports: + - "8551:8551" + postgres_beta: + image: postgres:12-alpine + environment: + - POSTGRES_USER=lemmy + - POSTGRES_PASSWORD=password + - POSTGRES_DB=lemmy + volumes: + - ./volumes/postgres_beta:/var/lib/postgresql/data + + lemmy-gamma-ui: + image: dessalines/lemmy-ui:v0.8.10 + environment: + - LEMMY_INTERNAL_HOST=lemmy-gamma:8561 + - LEMMY_EXTERNAL_HOST=localhost:8561 + - LEMMY_HTTPS=false + depends_on: + - lemmy-gamma + lemmy-gamma: + image: lemmy-federation:latest + environment: + - LEMMY_HOSTNAME=lemmy-gamma:8561 + - LEMMY_DATABASE_URL=postgres://lemmy:password@postgres_gamma:5432/lemmy + - LEMMY_JWT_SECRET=changeme + - LEMMY_FEDERATION__ENABLED=true + - LEMMY_TLS_ENABLED=false + - LEMMY_FEDERATION__ALLOWED_INSTANCES=lemmy-alpha,lemmy-beta,lemmy-delta,lemmy-epsilon + - LEMMY_PORT=8561 + - LEMMY_SETUP__ADMIN_USERNAME=lemmy_gamma + - LEMMY_SETUP__ADMIN_PASSWORD=lemmy + - LEMMY_SETUP__SITE_NAME=lemmy-gamma + - LEMMY_RATE_LIMIT__POST=99999 + - LEMMY_RATE_LIMIT__REGISTER=99999 + - LEMMY_CAPTCHA__ENABLED=false + - LEMMY_TEST_SEND_SYNC=1 + - RUST_BACKTRACE=1 + - RUST_LOG=debug + depends_on: + - postgres_gamma + ports: + - "8561:8561" + postgres_gamma: + image: postgres:12-alpine + environment: + - POSTGRES_USER=lemmy + - POSTGRES_PASSWORD=password + - POSTGRES_DB=lemmy + volumes: + - ./volumes/postgres_gamma:/var/lib/postgresql/data + + # An instance with only an allowlist for beta + lemmy-delta-ui: + image: dessalines/lemmy-ui:v0.8.10 + environment: + - LEMMY_INTERNAL_HOST=lemmy-delta:8571 + - LEMMY_EXTERNAL_HOST=localhost:8571 + - LEMMY_HTTPS=false + depends_on: + - lemmy-delta + lemmy-delta: + image: lemmy-federation:latest + environment: + - LEMMY_HOSTNAME=lemmy-delta:8571 + - LEMMY_DATABASE_URL=postgres://lemmy:password@postgres_delta:5432/lemmy + - LEMMY_JWT_SECRET=changeme + - LEMMY_FEDERATION__ENABLED=true + - LEMMY_TLS_ENABLED=false + - LEMMY_FEDERATION__ALLOWED_INSTANCES=lemmy-beta + - LEMMY_PORT=8571 + - LEMMY_SETUP__ADMIN_USERNAME=lemmy_delta + - LEMMY_SETUP__ADMIN_PASSWORD=lemmy + - LEMMY_SETUP__SITE_NAME=lemmy-delta + - LEMMY_RATE_LIMIT__POST=99999 + - LEMMY_RATE_LIMIT__REGISTER=99999 + - LEMMY_CAPTCHA__ENABLED=false + - LEMMY_TEST_SEND_SYNC=1 + - RUST_BACKTRACE=1 + - RUST_LOG=debug + depends_on: + - postgres_delta + ports: + - "8571:8571" + postgres_delta: + image: postgres:12-alpine + environment: + - POSTGRES_USER=lemmy + - POSTGRES_PASSWORD=password + - POSTGRES_DB=lemmy + volumes: + - ./volumes/postgres_delta:/var/lib/postgresql/data + + # An instance who has a blocklist, with lemmy-alpha blocked + lemmy-epsilon-ui: + image: dessalines/lemmy-ui:v0.8.10 + environment: + - LEMMY_INTERNAL_HOST=lemmy-epsilon:8581 + - LEMMY_EXTERNAL_HOST=localhost:8581 + - LEMMY_HTTPS=false + depends_on: + - lemmy-epsilon + lemmy-epsilon: + image: lemmy-federation:latest + environment: + - LEMMY_HOSTNAME=lemmy-epsilon:8581 + - LEMMY_DATABASE_URL=postgres://lemmy:password@postgres_epsilon:5432/lemmy + - LEMMY_JWT_SECRET=changeme + - LEMMY_FEDERATION__ENABLED=true + - LEMMY_TLS_ENABLED=false + - LEMMY_FEDERATION__BLOCKED_INSTANCES=lemmy-alpha + - LEMMY_PORT=8581 + - LEMMY_SETUP__ADMIN_USERNAME=lemmy_epsilon + - LEMMY_SETUP__ADMIN_PASSWORD=lemmy + - LEMMY_SETUP__SITE_NAME=lemmy-epsilon + - LEMMY_RATE_LIMIT__POST=99999 + - LEMMY_RATE_LIMIT__REGISTER=99999 + - LEMMY_CAPTCHA__ENABLED=false + - LEMMY_TEST_SEND_SYNC=1 + - RUST_BACKTRACE=1 + - RUST_LOG=debug + depends_on: + - postgres_epsilon + ports: + - "8581:8581" + postgres_epsilon: + image: postgres:12-alpine + environment: + - POSTGRES_USER=lemmy + - POSTGRES_PASSWORD=password + - POSTGRES_DB=lemmy + volumes: + - ./volumes/postgres_epsilon:/var/lib/postgresql/data + + iframely: + image: dogbin/iframely:latest + volumes: + - ../iframely.config.local.js:/iframely/config.local.js:ro + restart: always diff --git a/docker/federation/nginx.conf b/docker/federation/nginx.conf new file mode 100644 index 000000000..357b87c90 --- /dev/null +++ b/docker/federation/nginx.conf @@ -0,0 +1,230 @@ +events { + worker_connections 1024; +} + +http { + upstream lemmy-alpha { + server "lemmy-alpha:8541"; + } + upstream lemmy-alpha-ui { + server "lemmy-alpha-ui:1234"; + } + server { + listen 8540; + server_name 127.0.0.1; + access_log off; + + # Upload limit for pictshare + client_max_body_size 50M; + + location ~ ^/(api|docs|pictrs|feeds|nodeinfo|.well-known) { + proxy_pass http://lemmy-alpha; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + } + location / { + set $proxpass http://lemmy-alpha-ui; + if ($http_accept = "application/activity+json") { + set $proxpass http://lemmy-alpha; + } + if ($http_accept = "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"") { + set $proxpass http://lemmy-alpha; + } + proxy_pass $proxpass; + + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + + # Cuts off the trailing slash on URLs to make them valid + rewrite ^(.+)/+$ $1 permanent; + } + location /iframely/ { + proxy_pass http://iframely:80/; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + } + + upstream lemmy-beta { + server "lemmy-beta:8551"; + } + upstream lemmy-beta-ui { + server "lemmy-beta-ui:1234"; + } + server { + listen 8550; + server_name 127.0.0.1; + access_log off; + + # Upload limit for pictshare + client_max_body_size 50M; + + location ~ ^/(api|docs|pictrs|feeds|nodeinfo|.well-known) { + proxy_pass http://lemmy-beta; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + } + location / { + set $proxpass http://lemmy-beta-ui; + if ($http_accept = "application/activity+json") { + set $proxpass http://lemmy-beta; + } + if ($http_accept = "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"") { + set $proxpass http://lemmy-beta; + } + proxy_pass $proxpass; + + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + + # Cuts off the trailing slash on URLs to make them valid + rewrite ^(.+)/+$ $1 permanent; + } + location /iframely/ { + proxy_pass http://iframely:80/; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + } + + upstream lemmy-gamma { + server "lemmy-gamma:8561"; + } + upstream lemmy-gamma-ui { + server "lemmy-gamma-ui:1234"; + } + server { + listen 8560; + server_name 127.0.0.1; + access_log off; + + # Upload limit for pictshare + client_max_body_size 50M; + + location ~ ^/(api|docs|pictrs|feeds|nodeinfo|.well-known) { + proxy_pass http://lemmy-gamma; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + } + location / { + set $proxpass http://lemmy-gamma-ui; + if ($http_accept = "application/activity+json") { + set $proxpass http://lemmy-gamma; + } + if ($http_accept = "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"") { + set $proxpass http://lemmy-gamma; + } + proxy_pass $proxpass; + + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + + # Cuts off the trailing slash on URLs to make them valid + rewrite ^(.+)/+$ $1 permanent; + } + location /iframely/ { + proxy_pass http://iframely:80/; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + } + + upstream lemmy-delta { + server "lemmy-delta:8571"; + } + upstream lemmy-delta-ui { + server "lemmy-delta-ui:1234"; + } + server { + listen 8570; + server_name 127.0.0.1; + access_log off; + + # Upload limit for pictshare + client_max_body_size 50M; + + location ~ ^/(api|docs|pictrs|feeds|nodeinfo|.well-known) { + proxy_pass http://lemmy-delta; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + } + location / { + set $proxpass http://lemmy-delta-ui; + if ($http_accept = "application/activity+json") { + set $proxpass http://lemmy-delta; + } + if ($http_accept = "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"") { + set $proxpass http://lemmy-delta; + } + proxy_pass $proxpass; + + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + + # Cuts off the trailing slash on URLs to make them valid + rewrite ^(.+)/+$ $1 permanent; + } + location /iframely/ { + proxy_pass http://iframely:80/; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + } + + upstream lemmy-epsilon { + server "lemmy-epsilon:8581"; + } + upstream lemmy-epsilon-ui { + server "lemmy-epsilon-ui:1234"; + } + server { + listen 8580; + server_name 127.0.0.1; + access_log off; + + # Upload limit for pictshare + client_max_body_size 50M; + + location ~ ^/(api|docs|pictrs|feeds|nodeinfo|.well-known) { + proxy_pass http://lemmy-epsilon; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + } + location / { + set $proxpass http://lemmy-epsilon-ui; + if ($http_accept = "application/activity+json") { + set $proxpass http://lemmy-epsilon; + } + if ($http_accept = "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"") { + set $proxpass http://lemmy-epsilon; + } + proxy_pass $proxpass; + + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + + # Cuts off the trailing slash on URLs to make them valid + rewrite ^(.+)/+$ $1 permanent; + } + location /iframely/ { + proxy_pass http://iframely:80/; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + } +} From fe4b516bd9ac85b8f4fa8b655ff10bc0792e543b Mon Sep 17 00:00:00 2001 From: Dessalines Date: Fri, 15 Jan 2021 12:38:44 -0500 Subject: [PATCH 6/6] Adding back in federation docker-compose lemmy-ui writing --- docker/prod/deploy.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docker/prod/deploy.sh b/docker/prod/deploy.sh index 1206f8c96..79bedce72 100755 --- a/docker/prod/deploy.sh +++ b/docker/prod/deploy.sh @@ -19,8 +19,9 @@ cd docker/prod || exit # Changing various references to the Lemmy version sed -i "s/dessalines\/lemmy-ui:.*/dessalines\/lemmy-ui:$new_tag/" ../dev/docker-compose.yml -sed -i "s/dessalines\/lemmy:.*/dessalines\/lemmy:$new_tag/" ../prod/docker-compose.yml +sed -i "s/dessalines\/lemmy-ui:.*/dessalines\/lemmy-ui:$new_tag/" ../federation/docker-compose.yml sed -i "s/dessalines\/lemmy-ui:.*/dessalines\/lemmy-ui:$new_tag/" ../prod/docker-compose.yml +sed -i "s/dessalines\/lemmy:.*/dessalines\/lemmy:$new_tag/" ../prod/docker-compose.yml git add ../dev/docker-compose.yml git add ../prod/docker-compose.yml