diff --git a/docker-compose.accounts.yml b/docker-compose.accounts.yml new file mode 100644 index 00000000..d0c06888 --- /dev/null +++ b/docker-compose.accounts.yml @@ -0,0 +1,163 @@ +version: "3.7" + +x-logging: &default-logging + driver: json-file + options: + max-size: "10m" + max-file: "3" + +services: + webapp: + build: + args: + WITH_ACCOUNTS: 1 + + nginx: + volumes: + - ./docker/accounts/nginx.secure.conf:/etc/nginx/conf.extra.d/nginx.secure.conf:ro + + accounts: + build: + context: ./docker/accounts + dockerfile: Dockerfile + container_name: accounts + restart: unless-stopped + logging: *default-logging + env_file: + - .env + environment: + - SKYNET_DB_HOST=mongo + - SKYNET_DB_PORT=27017 + - SKYNET_DB_USER=${SKYNET_DB_USER} + - SKYNET_DB_PASS=${SKYNET_DB_PASS} + - COOKIE_DOMAIN=${COOKIE_DOMAIN} + - COOKIE_HASH_KEY=${COOKIE_HASH_KEY} + - COOKIE_ENC_KEY=${COOKIE_ENC_KEY} + expose: + - 3000 + networks: + shared: + ipv4_address: 10.10.10.70 + depends_on: + - mongo + - oathkeeper + + mongo: + image: mongo:4.4.1 + command: --keyFile=/data/mgkey --replSet=skynet + container_name: mongo + restart: unless-stopped + logging: *default-logging + volumes: + - ./docker/data/mongo/db:/data/db + - ./docker/data/mongo/mgkey:/data/mgkey:rw + networks: + shared: + ipv4_address: 10.10.10.71 + ports: + - "27017:27017" + + kratos-migrate: + image: oryd/kratos:v0.5.4-alpha.1 + container_name: kratos-migrate + restart: on-failure + logging: *default-logging + environment: + - DSN=cockroach://root@cockroach:26257/defaultdb?max_conns=20&max_idle_conns=4&sslmode=verify-full&sslcert=/certs/node.crt&sslkey=/certs/node.key&sslrootcert=/certs/ca.crt + - SQA_OPT_OUT=true + volumes: + - ./docker/kratos/config:/etc/config/kratos + - ./docker/data/cockroach/sqlite:/var/lib/sqlite + - ./docker/kratos/cr_certs:/certs + command: -c /etc/config/kratos/kratos.yml migrate sql -e --yes + networks: + shared: + ipv4_address: 10.10.10.80 + + kratos: + image: oryd/kratos:v0.5.4-alpha.1 + container_name: kratos + restart: unless-stopped + logging: *default-logging + ports: + - "4433:4433" # public + - "4434:4434" # admin + expose: + - 4433 # public + - 4434 # admin + environment: + - DSN=cockroach://root@cockroach:26257/defaultdb?max_conns=20&max_idle_conns=4&sslmode=verify-full&sslcert=/certs/node.crt&sslkey=/certs/node.key&sslrootcert=/certs/ca.crt + - LOG_LEVEL=trace + - SERVE_PUBLIC_BASE_URL=/.ory/kratos/public/ + - SQA_OPT_OUT=true + command: serve -c /etc/config/kratos/kratos.yml + volumes: + - ./docker/kratos/config:/etc/config/kratos + - ./docker/data/cockroach/sqlite:/var/lib/sqlite + - ./docker/kratos/cr_certs:/certs + networks: + shared: + ipv4_address: 10.10.10.81 + depends_on: + - kratos-migrate + + kratos-selfservice-ui-node: + image: oryd/kratos-selfservice-ui-node:v0.5.0-alpha.1 + container_name: kratos-selfservice-ui-node + restart: on-failure + logging: *default-logging + volumes: + - ./docker/kratos-selfservice-ui-node/main.hbs:/usr/src/app/views/layouts/main.hbs:ro + - ./docker/kratos-selfservice-ui-node/login.hbs:/usr/src/app/views/login.hbs:ro + - ./docker/kratos-selfservice-ui-node/dashboard.hbs:/usr/src/app/views/dashboard.hbs:ro + - ./docker/kratos-selfservice-ui-node/registration.hbs:/usr/src/app/views/registration.hbs:ro + - ./docker/kratos-selfservice-ui-node/icon_logo.hbs:/usr/src/app/views/partials/icon_logo.hbs:ro + - ./docker/kratos-selfservice-ui-node/branding.css:/usr/src/app/public/branding.css:ro + - ./docker/kratos-selfservice-ui-node/favico.png:/usr/src/app/public/favico.png:ro + environment: + - PORT=4435 + - SECURITY_MODE=jwks + - PROJECT_NAME=Skynet + - BASE_URL=/ + - KRATOS_BROWSER_URL=/.ory/kratos/public + - JWKS_URL=http://oathkeeper:4456/.well-known/jwks.json + - KRATOS_PUBLIC_URL=http://kratos:4433/ + - KRATOS_ADMIN_URL=http://kratos:4434/ + - SQA_OPT_OUT=true + networks: + shared: + ipv4_address: 10.10.10.82 + + oathkeeper: + image: oryd/oathkeeper:v0.38 + container_name: oathkeeper + depends_on: + - kratos + expose: + - 4455 + - 4456 + command: serve proxy -c "/etc/config/oathkeeper/oathkeeper.yml" + environment: + - LOG_LEVEL=debug + volumes: + - ./docker/kratos/oathkeeper:/etc/config/oathkeeper + restart: on-failure + networks: + shared: + ipv4_address: 10.10.10.83 + + cockroach: + image: cockroachdb/cockroach:v20.2.3 + container_name: cockroach + env_file: + - .env + command: start --advertise-addr=${CR_IP} --join=${CR_CLUSTER_NODES} --certs-dir=/certs --listen-addr=0.0.0.0:26257 --http-addr=0.0.0.0:8080 + volumes: + - ./docker/data/cockroach/sqlite:/cockroach/cockroach-data + - ./docker/cockroach/certs:/certs + ports: + - "4080:8080" + - "26257:26257" + networks: + shared: + ipv4_address: 10.10.10.84 diff --git a/docker-compose.yml b/docker-compose.yml index c5173ab6..c5500452 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -163,149 +163,3 @@ services: depends_on: - handshake - handshake-api - - accounts: - build: - context: ./docker/accounts - dockerfile: Dockerfile - container_name: accounts - restart: unless-stopped - logging: *default-logging - env_file: - - .env - environment: - - SKYNET_DB_HOST=mongo - - SKYNET_DB_PORT=27017 - - SKYNET_DB_USER=${SKYNET_DB_USER} - - SKYNET_DB_PASS=${SKYNET_DB_PASS} - - COOKIE_DOMAIN=${COOKIE_DOMAIN} - - COOKIE_HASH_KEY=${COOKIE_HASH_KEY} - - COOKIE_ENC_KEY=${COOKIE_ENC_KEY} - expose: - - 3000 - networks: - shared: - ipv4_address: 10.10.10.70 - depends_on: - - mongo - - oathkeeper - - mongo: - image: mongo:4.4.1 - command: --keyFile=/data/mgkey --replSet=skynet - container_name: mongo - restart: unless-stopped - logging: *default-logging - volumes: - - ./docker/data/mongo/db:/data/db - - ./docker/data/mongo/mgkey:/data/mgkey:rw - networks: - shared: - ipv4_address: 10.10.10.71 - ports: - - "27017:27017" - - kratos-migrate: - image: oryd/kratos:v0.5.4-alpha.1 - container_name: kratos-migrate - restart: on-failure - logging: *default-logging - environment: - - DSN=cockroach://root@cockroach:26257/defaultdb?max_conns=20&max_idle_conns=4&sslmode=verify-full&sslcert=/certs/node.crt&sslkey=/certs/node.key&sslrootcert=/certs/ca.crt - - SQA_OPT_OUT=true - volumes: - - ./docker/kratos/config:/etc/config/kratos - - ./docker/data/cockroach/sqlite:/var/lib/sqlite - - ./docker/kratos/cr_certs:/certs - command: -c /etc/config/kratos/kratos.yml migrate sql -e --yes - networks: - shared: - ipv4_address: 10.10.10.80 - - kratos: - image: oryd/kratos:v0.5.4-alpha.1 - container_name: kratos - restart: unless-stopped - logging: *default-logging - ports: - - "4433:4433" # public - - "4434:4434" # admin - expose: - - 4433 # public - - 4434 # admin - environment: - - DSN=cockroach://root@cockroach:26257/defaultdb?max_conns=20&max_idle_conns=4&sslmode=verify-full&sslcert=/certs/node.crt&sslkey=/certs/node.key&sslrootcert=/certs/ca.crt - - LOG_LEVEL=trace - - SERVE_PUBLIC_BASE_URL=/.ory/kratos/public/ - - SQA_OPT_OUT=true - command: serve -c /etc/config/kratos/kratos.yml - volumes: - - ./docker/kratos/config:/etc/config/kratos - - ./docker/data/cockroach/sqlite:/var/lib/sqlite - - ./docker/kratos/cr_certs:/certs - networks: - shared: - ipv4_address: 10.10.10.81 - depends_on: - - kratos-migrate - - kratos-selfservice-ui-node: - image: oryd/kratos-selfservice-ui-node:v0.5.0-alpha.1 - container_name: kratos-selfservice-ui-node - restart: on-failure - logging: *default-logging - volumes: - - ./docker/kratos-selfservice-ui-node/main.hbs:/usr/src/app/views/layouts/main.hbs:ro - - ./docker/kratos-selfservice-ui-node/login.hbs:/usr/src/app/views/login.hbs:ro - - ./docker/kratos-selfservice-ui-node/dashboard.hbs:/usr/src/app/views/dashboard.hbs:ro - - ./docker/kratos-selfservice-ui-node/registration.hbs:/usr/src/app/views/registration.hbs:ro - - ./docker/kratos-selfservice-ui-node/icon_logo.hbs:/usr/src/app/views/partials/icon_logo.hbs:ro - - ./docker/kratos-selfservice-ui-node/branding.css:/usr/src/app/public/branding.css:ro - - ./docker/kratos-selfservice-ui-node/favico.png:/usr/src/app/public/favico.png:ro - environment: - - PORT=4435 - - SECURITY_MODE=jwks - - PROJECT_NAME=Skynet - - BASE_URL=/ - - KRATOS_BROWSER_URL=/.ory/kratos/public - - JWKS_URL=http://oathkeeper:4456/.well-known/jwks.json - - KRATOS_PUBLIC_URL=http://kratos:4433/ - - KRATOS_ADMIN_URL=http://kratos:4434/ - - SQA_OPT_OUT=true - networks: - shared: - ipv4_address: 10.10.10.82 - - oathkeeper: - image: oryd/oathkeeper:v0.38 - container_name: oathkeeper - depends_on: - - kratos - expose: - - 4455 - - 4456 - command: serve proxy -c "/etc/config/oathkeeper/oathkeeper.yml" - environment: - - LOG_LEVEL=debug - volumes: - - ./docker/kratos/oathkeeper:/etc/config/oathkeeper - restart: on-failure - networks: - shared: - ipv4_address: 10.10.10.83 - - cockroach: - image: cockroachdb/cockroach:v20.2.3 - container_name: cockroach - env_file: - - .env - command: start --advertise-addr=${CR_IP} --join=${CR_CLUSTER_NODES} --certs-dir=/certs --listen-addr=0.0.0.0:26257 --http-addr=0.0.0.0:8080 - volumes: - - ./docker/data/cockroach/sqlite:/cockroach/cockroach-data - - ./docker/cockroach/certs:/certs - ports: - - "4080:8080" - - "26257:26257" - networks: - shared: - ipv4_address: 10.10.10.84 diff --git a/docker/nginx/conf.d/secure.conf b/docker/accounts/nginx.secure.conf similarity index 100% rename from docker/nginx/conf.d/secure.conf rename to docker/accounts/nginx.secure.conf diff --git a/docker/nginx/nginx.conf b/docker/nginx/nginx.conf index 4cff1f70..1bceb5f9 100644 --- a/docker/nginx/nginx.conf +++ b/docker/nginx/nginx.conf @@ -63,4 +63,5 @@ http { #gzip on; include /etc/nginx/conf.d/*.conf; + include /etc/nginx/conf.extra.d/*.conf; } diff --git a/packages/webapp/Dockerfile b/packages/webapp/Dockerfile index db99e207..8a4398da 100644 --- a/packages/webapp/Dockerfile +++ b/packages/webapp/Dockerfile @@ -4,12 +4,16 @@ RUN apk add --no-cache autoconf automake libtool gcc make g++ zlib-dev file nasm WORKDIR /usr/app +ARG WITH_ACCOUNTS=0 + COPY src ./src COPY static ./static COPY gatsby-config.js . COPY package.json . ENV CYPRESS_INSTALL_BINARY 0 -ENV GATSBY_TELEMETRY_DISABLED 1 RUN yarn --no-lockfile + +ENV GATSBY_TELEMETRY_DISABLED 1 +ENV GATSBY_WITH_ACCOUNTS $WITH_ACCOUNTS RUN yarn build diff --git a/packages/webapp/package.json b/packages/webapp/package.json index f2f85400..5a70ab21 100644 --- a/packages/webapp/package.json +++ b/packages/webapp/package.json @@ -5,6 +5,7 @@ "author": "Nebulous", "dependencies": { "axios": "0.21.1", + "boolean": "^3.0.2", "bytes": "3.1.0", "classnames": "2.2.6", "fontsource-metropolis": "4.0.0", diff --git a/packages/webapp/src/components/HomeTop/HomeTop.js b/packages/webapp/src/components/HomeTop/HomeTop.js index ba62c1eb..ada73032 100644 --- a/packages/webapp/src/components/HomeTop/HomeTop.js +++ b/packages/webapp/src/components/HomeTop/HomeTop.js @@ -1,4 +1,5 @@ import React from "react"; +import { boolean } from "boolean"; import logo from "../../images/logo.svg"; import "./HomeTop.scss"; import { Skynet, Deco1, Deco2 } from "../../svg"; @@ -15,15 +16,17 @@ export default function HomeTop() { The decentralized CDN and file sharing platform for devs. Skynet is the storage foundation for a Free Internet!

-

- - Sign up now! - {" "} - Already have an account? Go to your{" "} - - dashboard - -

+ {boolean(process.env.GATSBY_WITH_ACCOUNTS) && ( +

+ + Sign up now! + {" "} + Already have an account? Go to your{" "} + + dashboard + +

+ )}