diff --git a/dev/serve b/dev/serve index c3131b5..d477f08 100755 --- a/dev/serve +++ b/dev/serve @@ -1,24 +1,31 @@ #!/bin/sh cd "$(dirname "$0")" -if [ ! -f "../.env" ] -then - echo "../.env file not found!" - exit 1 +if [ -z $APP_PORT ]; then + APP_PORT="8080" fi -export $(cat ../.env | sed 's/#.*//g' | xargs) +if [ -z $APP_HOST ]; then + for i in $(ifconfig -l 2>/dev/null); do + APP_HOST=$(ipconfig getifaddr $i) + if [ ! -z $APP_HOST ]; then + break + fi + done + + if [ -z $APP_HOST ]; then + APP_HOST=$(hostname -i 2>/dev/null) + fi +fi + +echo "Using app port: ${APP_PORT}" +echo "Using IP address: ${APP_HOST}" docker run --rm -it \ - --name="neko_rooms_client" \ - -v "${PWD}/../client:/app" \ - -e "TZ=${TZ}" \ - --net="${NEKO_ROOMS_TRAEFIK_NETWORK}" \ - -l "traefik.enable=true" \ - -l "traefik.http.services.neko-rooms-client-fe.loadbalancer.server.port=8080" \ - -l "traefik.http.routers.neko-rooms-client.entrypoints=${NEKO_ROOMS_TRAEFIK_ENTRYPOINT}" \ - -l "traefik.http.routers.neko-rooms-client.rule=Host(\`${NEKO_ROOMS_TRAEFIK_DOMAIN}\`)" \ + -p 8081:8080 \ + -e "API_PROXY=http://${APP_HOST}:${APP_PORT}" \ --user="$(id -u):$(id -g)" \ - --workdir="/app" \ + --volume "${PWD}/../client:/app" \ --entrypoint="npm" \ + --workdir="/app" \ node:14 run serve; diff --git a/dev/start b/dev/start index fbfb64e..fed2a65 100755 --- a/dev/start +++ b/dev/start @@ -1,13 +1,36 @@ #!/bin/sh cd "$(dirname "$0")" -if [ ! -f "../.env" ] -then - echo "../.env file not found!" - exit 1 +if [ -z $NEKO_ROOMS_PORT ]; then + NEKO_ROOMS_PORT="8080" fi -export $(cat ../.env | sed 's/#.*//g' | xargs) +if [ -z $NEKO_ROOMS_EPR ]; then + NEKO_ROOMS_EPR="52090-52099" +fi + +if [ -z $NEKO_ROOMS_NAT1TO1 ]; then + for i in $(ifconfig -l 2>/dev/null); do + NEKO_ROOMS_NAT1TO1=$(ipconfig getifaddr $i) + if [ ! -z $NEKO_ROOMS_NAT1TO1 ]; then + break + fi + done + + if [ -z $NEKO_ROOMS_NAT1TO1 ]; then + NEKO_ROOMS_NAT1TO1=$(hostname -i 2>/dev/null) + fi +fi + +NEKO_ROOMS_INSTANCE_NETWORK="neko-rooms-net" +docker network create --attachable "${NEKO_ROOMS_INSTANCE_NETWORK}"; + +trap on_exit EXIT + +on_exit() { + echo "Removing neko-rooms network" + docker network rm "${NEKO_ROOMS_INSTANCE_NETWORK}"; +} DATA_PATH="./data" mkdir -p "${DATA_PATH}" @@ -17,24 +40,22 @@ mkdir -p "${EXTERNAL_PATH}" docker run --rm -it \ --name="neko_rooms_server" \ + -p "${NEKO_ROOMS_PORT}:8080" \ -v "`realpath ..`:/app" \ -v "`realpath ${DATA_PATH}`:/data" \ -e "TZ=${TZ}" \ - -e "NEKO_ROOMS_EPR=${NEKO_ROOMS_EPR}" \ -e "NEKO_ROOMS_MUX=true" \ + -e "NEKO_ROOMS_EPR=${NEKO_ROOMS_EPR}" \ -e "NEKO_ROOMS_NAT1TO1=${NEKO_ROOMS_NAT1TO1}" \ + -e "NEKO_ROOMS_INSTANCE_URL=http://${NEKO_ROOMS_NAT1TO1}:${NEKO_ROOMS_PORT}/" \ + -e "NEKO_ROOMS_INSTANCE_NETWORK=${NEKO_ROOMS_INSTANCE_NETWORK}" \ -e "NEKO_ROOMS_STORAGE_INTERNAL=/data" \ -e "NEKO_ROOMS_STORAGE_EXTERNAL=`realpath ${DATA_PATH}`" \ -e "NEKO_ROOMS_MOUNTS_WHITELIST=`realpath ${EXTERNAL_PATH}`" \ - -e "NEKO_ROOMS_TRAEFIK_DOMAIN=${NEKO_ROOMS_TRAEFIK_DOMAIN}" \ - -e "NEKO_ROOMS_TRAEFIK_ENTRYPOINT=${NEKO_ROOMS_TRAEFIK_ENTRYPOINT}" \ - -e "NEKO_ROOMS_TRAEFIK_NETWORK=${NEKO_ROOMS_TRAEFIK_NETWORK}" \ + -e "NEKO_ROOMS_PATH_PREFIX=/room/" \ + -e "NEKO_ROOMS_TRAEFIK_ENABLED=false" \ -e 'DOCKER_API_VERSION=1.39' \ -v "/var/run/docker.sock:/var/run/docker.sock" \ - --net="${NEKO_ROOMS_TRAEFIK_NETWORK}" \ - -l "traefik.enable=true" \ - -l "traefik.http.services.neko-rooms-server-fe.loadbalancer.server.port=8080" \ - -l "traefik.http.routers.neko-rooms-server.entrypoints=${NEKO_ROOMS_TRAEFIK_ENTRYPOINT}" \ - -l "traefik.http.routers.neko-rooms-server.rule=Host(\`${NEKO_ROOMS_TRAEFIK_DOMAIN}\`) && PathPrefix(\`/api\`)" \ + --net="${NEKO_ROOMS_INSTANCE_NETWORK}" \ --entrypoint="/app/bin/neko_rooms" \ neko_rooms_img serve --bind :8080; diff --git a/dev/traefik/.env.example b/dev/traefik/.env.example new file mode 100644 index 0000000..be6d773 --- /dev/null +++ b/dev/traefik/.env.example @@ -0,0 +1,9 @@ +NEKO_ROOMS_EPR=59000-59049 +NEKO_ROOMS_NAT1TO1=192.168.1.20 + +NEKO_ROOMS_TRAEFIK_DOMAIN=neko-rooms.server.lan +NEKO_ROOMS_TRAEFIK_ENTRYPOINT=websecure +NEKO_ROOMS_TRAEFIK_NETWORK=neko-rooms-traefik +NEKO_ROOMS_TRAEFIK_CERTRESOLVER=lets-encrypt + +TZ=Europe/Vienna diff --git a/dev/traefik/rebuild b/dev/traefik/rebuild new file mode 100755 index 0000000..345525a --- /dev/null +++ b/dev/traefik/rebuild @@ -0,0 +1,11 @@ +#!/bin/sh +cd "$(dirname "$0")" + +set -e + +docker run --rm -it \ + -v "${PWD}/../../:/app" \ + --entrypoint="go" \ + neko_rooms_img build -o bin/neko_rooms cmd/neko_rooms/main.go + +./start diff --git a/dev/traefik/serve b/dev/traefik/serve new file mode 100755 index 0000000..9fc655d --- /dev/null +++ b/dev/traefik/serve @@ -0,0 +1,24 @@ +#!/bin/sh +cd "$(dirname "$0")" + +if [ ! -f ".env" ] +then + echo ".env file not found!" + exit 1 +fi + +export $(cat .env | sed 's/#.*//g' | xargs) + +docker run --rm -it \ + --name="neko_rooms_client" \ + -v "${PWD}/../../client:/app" \ + -e "TZ=${TZ}" \ + --net="${NEKO_ROOMS_TRAEFIK_NETWORK}" \ + -l "traefik.enable=true" \ + -l "traefik.http.services.neko-rooms-client-fe.loadbalancer.server.port=8080" \ + -l "traefik.http.routers.neko-rooms-client.entrypoints=${NEKO_ROOMS_TRAEFIK_ENTRYPOINT}" \ + -l "traefik.http.routers.neko-rooms-client.rule=Host(\`${NEKO_ROOMS_TRAEFIK_DOMAIN}\`)" \ + --user="$(id -u):$(id -g)" \ + --workdir="/app" \ + --entrypoint="npm" \ + node:14 run serve; diff --git a/dev/traefik/start b/dev/traefik/start new file mode 100755 index 0000000..7371258 --- /dev/null +++ b/dev/traefik/start @@ -0,0 +1,43 @@ +#!/bin/sh +cd "$(dirname "$0")" + +if [ ! -f ".env" ] +then + echo ".env file not found!" + exit 1 +fi + +export $(cat .env | sed 's/#.*//g' | xargs) + +DATA_PATH="../data" +mkdir -p "${DATA_PATH}" + +EXTERNAL_PATH="../ext" +mkdir -p "${EXTERNAL_PATH}" + +docker run --rm -it \ + --name="neko_rooms_server" \ + -v "`realpath ../../`:/app" \ + -v "`realpath ${DATA_PATH}`:/data" \ + -e "TZ=${TZ}" \ + -e "NEKO_ROOMS_EPR=${NEKO_ROOMS_EPR}" \ + -e "NEKO_ROOMS_MUX=true" \ + -e "NEKO_ROOMS_NAT1TO1=${NEKO_ROOMS_NAT1TO1}" \ + -e "NEKO_ROOMS_PATH_PREFIX=/room/" \ + -e "NEKO_ROOMS_ADMIN_PATH_PREFIX=/" \ + -e "NEKO_ROOMS_STORAGE_INTERNAL=/data" \ + -e "NEKO_ROOMS_STORAGE_EXTERNAL=`realpath ${DATA_PATH}`" \ + -e "NEKO_ROOMS_MOUNTS_WHITELIST=`realpath ${EXTERNAL_PATH}`" \ + -e "NEKO_ROOMS_TRAEFIK_ENABLED=true" \ + -e "NEKO_ROOMS_TRAEFIK_DOMAIN=${NEKO_ROOMS_TRAEFIK_DOMAIN}" \ + -e "NEKO_ROOMS_TRAEFIK_ENTRYPOINT=${NEKO_ROOMS_TRAEFIK_ENTRYPOINT}" \ + -e "NEKO_ROOMS_TRAEFIK_NETWORK=${NEKO_ROOMS_TRAEFIK_NETWORK}" \ + -e 'DOCKER_API_VERSION=1.39' \ + -v "/var/run/docker.sock:/var/run/docker.sock" \ + --net="${NEKO_ROOMS_TRAEFIK_NETWORK}" \ + -l "traefik.enable=true" \ + -l "traefik.http.services.neko-rooms-server-fe.loadbalancer.server.port=8080" \ + -l "traefik.http.routers.neko-rooms-server.entrypoints=${NEKO_ROOMS_TRAEFIK_ENTRYPOINT}" \ + -l "traefik.http.routers.neko-rooms-server.rule=Host(\`${NEKO_ROOMS_TRAEFIK_DOMAIN}\`) && (PathPrefix(\`/api\`) || PathPrefix(\`/room\`))" \ + --entrypoint="/app/bin/neko_rooms" \ + neko_rooms_img serve --bind :8080; diff --git a/dev/traefik b/dev/traefik/traefik similarity index 85% rename from dev/traefik rename to dev/traefik/traefik index 6970692..c787d74 100755 --- a/dev/traefik +++ b/dev/traefik/traefik @@ -1,13 +1,13 @@ #!/bin/sh cd "$(dirname "$0")" -if [ ! -f "../.env" ] +if [ ! -f ".env" ] then - echo "../.env file not found!" + echo ".env file not found!" exit 1 fi -export $(cat ../.env | sed 's/#.*//g' | xargs) +export $(cat .env | sed 's/#.*//g' | xargs) docker network create --attachable "${NEKO_ROOMS_TRAEFIK_NETWORK}"; @@ -22,7 +22,7 @@ docker run --rm -it \ --name="neko_rooms_traefik" \ -p "${1:-80}:80" \ -p "8080:8080" \ - -v "${PWD}/../:/app" \ + -v "${PWD}/../../:/app" \ -e "TZ=${TZ}" \ -v "/var/run/docker.sock:/var/run/docker.sock" \ --net="${NEKO_ROOMS_TRAEFIK_NETWORK}" \