From 82fce63dcec6ac8d159a9e135a183dcf4f5203da Mon Sep 17 00:00:00 2001 From: Ben Allfree Date: Thu, 13 Oct 2022 06:14:49 +0000 Subject: [PATCH] Prod fixes --- .gitignore | 1 + development.md | 72 ++++++++++++++++++++++++++ .env.template => docker/.env-template | 0 docker/docker-compose.yaml | 4 +- docker/mount/ssl/.gitignore | 1 + packages/daemon/package.json | 2 +- packages/daemon/src/InstanceManager.ts | 8 ++- packages/pocketbase/package.json | 3 +- packages/pockethost.io/.env-template | 2 + 9 files changed, 88 insertions(+), 5 deletions(-) create mode 100644 development.md rename .env.template => docker/.env-template (100%) create mode 100644 docker/mount/ssl/.gitignore create mode 100644 packages/pockethost.io/.env-template diff --git a/.gitignore b/.gitignore index 6e9ebd8a..5a452982 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ node_modules .secret .vscode +*.out .env \ No newline at end of file diff --git a/development.md b/development.md new file mode 100644 index 00000000..fe6482cc --- /dev/null +++ b/development.md @@ -0,0 +1,72 @@ +# Developer instructions + + +## Deployment + +### Clone +```bash +git clone git@github.com:benallfree/pockethost.git +cd pockethost +``` + +### Build custom PockeBase + +```bash +cd packages/pocketbase +yarn build +``` + +### Build daemon + +```bash +cd packages/daemon +yarn build +``` + +### Build web app + +```bash +cd packages/pockethost.io +cp .env-template .env +nano .env +``` + +Edit vars as needed + +```bash +yarn build +``` + +### Prepare Docker + +```bash +cd docker +cp .env.template .env +nano .env +``` + +Edit `APP_DOMAIN` and `CORE_PB_PASSWORD` (needed by daemon) + + +Ensure that your ssl files are present there. + +```bash +cd ../docker +ls ssl +``` + +```bash +sudo certbot --server https://acme-v02.api.letsencrypt.org/directory -d *.pockethost.io -d pockethost.io --manual --preferred-challenges dns-01 certonly +``` + +```bash +nano nginx-conf/nginx.conf +``` + +Edit as needed + +## Run + +```bash +sudo docker-compose up +``` \ No newline at end of file diff --git a/.env.template b/docker/.env-template similarity index 100% rename from .env.template rename to docker/.env-template diff --git a/docker/docker-compose.yaml b/docker/docker-compose.yaml index fd6d7519..8283ff9a 100644 --- a/docker/docker-compose.yaml +++ b/docker/docker-compose.yaml @@ -16,10 +16,10 @@ services: depends_on: - pbproxy env_file: - - ../.env + - ./.env pbproxy: env_file: - - ../.env + - ./.env image: node:18 container_name: pbproxy restart: unless-stopped diff --git a/docker/mount/ssl/.gitignore b/docker/mount/ssl/.gitignore new file mode 100644 index 00000000..612424a3 --- /dev/null +++ b/docker/mount/ssl/.gitignore @@ -0,0 +1 @@ +*.pem \ No newline at end of file diff --git a/packages/daemon/package.json b/packages/daemon/package.json index 551b4ec0..e9a245cd 100644 --- a/packages/daemon/package.json +++ b/packages/daemon/package.json @@ -3,7 +3,7 @@ "version": "0.0.1", "license": "MIT", "scripts": { - "build": "esbuild src/server.ts --bundle --platform=node > dist/server.js", + "build": "mkdir -p dist && esbuild src/server.ts --bundle --platform=node > dist/server.js", "watch": "chokidar 'src/**' -c 'yarn build' --initial", "serve": "node dist/server.js" }, diff --git a/packages/daemon/src/InstanceManager.ts b/packages/daemon/src/InstanceManager.ts index d8c822f1..34949c72 100644 --- a/packages/daemon/src/InstanceManager.ts +++ b/packages/daemon/src/InstanceManager.ts @@ -5,6 +5,7 @@ import { ChildProcessWithoutNullStreams, spawn } from 'child_process' import getPort from 'get-port' import fetch from 'node-fetch' import { + APP_DOMAIN, CORE_PB_PASSWORD, CORE_PB_PORT, CORE_PB_SUBDOMAIN, @@ -98,7 +99,12 @@ export const createInstanceManger = async () => { heartbeat: () => {}, } await tryFetch(coreInternalUrl) - await client.adminAuthViaEmail(CORE_PB_USERNAME, CORE_PB_PASSWORD) + try { + await client.adminAuthViaEmail(CORE_PB_USERNAME, CORE_PB_PASSWORD)} + catch(e) { + console.error(`***WARNING*** CANNOT AUTHENTICATE TO https://${CORE_PB_SUBDOMAIN}.${APP_DOMAIN}/_/`) + console.error(`***WARNING*** LOG IN MANUALLY, ADJUST .env, AND RESTART DOCKER`) + } const limiter = new Bottleneck({ maxConcurrent: 1 }) diff --git a/packages/pocketbase/package.json b/packages/pocketbase/package.json index fa339217..d5491df7 100644 --- a/packages/pocketbase/package.json +++ b/packages/pocketbase/package.json @@ -3,6 +3,7 @@ "version": "0.0.1", "license": "MIT", "scripts": { - "build": "GOOS=linux GOARCH=arm64 CGO_ENABLED=0 go build" + "build:arm64": "GOOS=linux GOARCH=arm64 CGO_ENABLED=0 go build", + "build:386": "GOOS=linux GOARCH=386 CGO_ENABLED=0 go build" } } \ No newline at end of file diff --git a/packages/pockethost.io/.env-template b/packages/pockethost.io/.env-template new file mode 100644 index 00000000..f4200ca1 --- /dev/null +++ b/packages/pockethost.io/.env-template @@ -0,0 +1,2 @@ +PUBLIC_APP_DOMAIN = pockethost.local +PUBLIC_CORE_PB_SUBDOMAIN = pockethost-central