Setup deployment for Khufu

This commit is contained in:
Dunemask 2021-08-06 19:56:59 -06:00
parent 5d35d66713
commit 9bed3908d3
10 changed files with 101 additions and 39 deletions

View file

@ -1,10 +1,10 @@
FROM node:latest
RUN apt-get update && apt-get upgrade -y
RUN apt-get install libsass-dev build-essential -y
WORKDIR /dunestorm/khufu
COPY build /dunestorm/khufu/build/
RUN npm i -g serve
COPY package.json .
RUN npm i --only=prod
COPY server server
COPY build build
ENV KHUFU_DEV_TOKEN $KHUFU_DEV_TOKEN
CMD ["serve", "-s", "build", "-l", "52026"]
# EXPOSE PORTS
CMD ["npm", "start"]
EXPOSE 52026

33
docker-compose.yml Normal file
View file

@ -0,0 +1,33 @@
version: "3"
services:
cairo.dunestorm.net:
image: cairo.dunestorm.net
ports:
- "52000:52000"
environment:
- ALEXANDRIA_DATABASE_PASSWORD=${ALEXANDRIA_DATABASE_PASSWORD}
nubian.dunestorm.net:
image: nubian.dunestorm.net
ports:
- "52001:52001"
environment:
- ALEXANDRIA_DATABASE_PASSWORD=${ALEXANDRIA_DATABASE_PASSWORD}
khufu.dunestorm.net:
image: khufu.dunestorm.net
build: .
ports:
- "80:52026"
alexandria.dunestorm.net:
image: mongo
environment:
- MONGO_INITDB_ROOT_USERNAME=admin
- MONGO_INITDB_ROOT_PASSWORD=${ALEXANDRIA_DATABASE_PASSWORD}
volumes:
- /home/dunemask/Documents/dev/Dunestorm/mongodb/database:/data/db
ports:
- "27017:27017"
restart: unless-stopped
command: --quiet

View file

@ -1,13 +1,17 @@
{
"name": "dunestash-frontend",
"version": "0.1.0",
"name": "khufu",
"version": "1.0.0",
"private": true,
"dependencies": {
"@fortawesome/fontawesome-svg-core": "^1.2.35",
"@fortawesome/free-brands-svg-icons": "^5.15.3",
"@fortawesome/free-regular-svg-icons": "^5.15.3",
"@fortawesome/free-solid-svg-icons": "^5.15.3",
"@fortawesome/react-fontawesome": "^0.1.14",
"http-proxy-middleware": "^2.0.1",
"express": "^4.17.1"
},
"devDependencies": {
"@fortawesome/fontawesome-svg-core": "^1.2.36",
"@fortawesome/free-brands-svg-icons": "^5.15.4",
"@fortawesome/free-regular-svg-icons": "^5.15.4",
"@fortawesome/free-solid-svg-icons": "^5.15.4",
"@fortawesome/react-fontawesome": "^0.1.15",
"js-file-download": "^0.4.12",
"react": "^17.0.2",
"react-axios": "^2.0.5",
@ -17,15 +21,12 @@
"react-router-dom": "^5.2.0",
"react-scripts": "^4.0.3",
"react-toastify": "^7.0.4",
"remove": "^0.1.5",
"sass": "^1.36.0",
"web-vitals": "^2.1.0"
"sass": "^1.37.5"
},
"scripts": {
"start": "PORT=52026 react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
"start": "node server/main.js",
"start:dev": "PORT=52026 react-scripts start",
"build": "react-scripts build"
},
"eslintConfig": {
"extends": [
@ -44,8 +45,5 @@
"last 1 firefox version",
"last 1 safari version"
]
},
"devDependencies": {
"serve": "^12.0.0"
}
}

10
server/main.js Normal file
View file

@ -0,0 +1,10 @@
const express = require("express");
const { createProxyMiddleware } = require("http-proxy-middleware");
const port = process.env.PORT || 52026;
const cairoUrl = process.env.CAIRO_URL || "http://cairo.dunestorm.net:52000";
const nubianUrl = process.env.NUBIAN_URL || "http://nubian.dunestorm.net:52001";
const app = express();
app.use("/", express.static("build"));
app.use("/api/cairo", createProxyMiddleware({ target: cairoUrl }));
app.use("/api/nubian", createProxyMiddleware({ target: nubianUrl }));
app.listen(port, () => console.log(`🌴 Nile server started on ${port}! 🌴`));

View file

@ -6,7 +6,7 @@ import "react-toastify/dist/ReactToastify.css";
import Stash from "./Stash";
//Constants
const token =
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1dWlkIjoiYmVjYWNjNjdhNmRjLTBlN2QtMDBlNi1jYmVhLWVhZGNlYmUxIiwiaWF0IjoxNjI3MTcxMDU1LCJleHAiOjE2Mjk3NjMwNTV9.zqiHrYnJlB7ozwjMnpgVUsBAt9vfLHLICFgWB0MguLA";
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjYxMDhiMjI1ODBmYWEwMDAxMzQwZDdjMiIsImVtYWlsIjoiZHVuZXFhK3VzZXJAZ21haWwuY29tIiwiaXAiOiI6OmZmZmY6MTkyLjE2OC4yMjQuMSIsImlhdCI6MTYyNzk1OTg0NSwiZXhwIjoxNjMwNTUxODQ1fQ.mGybyFVxGzQ0cSIU4oE-RQpkQM45kIGHVFNAQmwsvvk";
localStorage.setItem("authToken", token);
class App extends React.Component {
render() {

View file

@ -6,10 +6,10 @@ import { toast } from "react-toastify";
import Stashbar from "./stash/Stashbar";
import StashUpload from "./stash/StashUpload";
import StashContextMenu from "./stash/StashContextMenu";
import { serverUrls, serverAddress } from "./stash/api.json";
import { serverUrls} from "./stash/api.json";
import "./stash/scss/Stash.scss";
//Constants
const filesUrl = `${serverAddress}/${serverUrls.GET.filesUrl}`;
const filesUrl = `${serverUrls.GET.filesUrl}`;
//Class
const getConfig = () => ({
headers: {

23
src/setupProxy.js Normal file
View file

@ -0,0 +1,23 @@
const { createProxyMiddleware } = require("http-proxy-middleware");
const cairoUrl =
process.env.CAIRO_URL || "http://cairo.dunestorm.net:52000";
const nubianUrl =
process.env.NUBIAN_URL || "http://nubian.dunestorm.net:52001";
module.exports = (app) => {
// Cairo Proxy
app.use(
"/api/cairo",
createProxyMiddleware({
target: cairoUrl,
// logLevel: "silent",
})
);
// Nubian Proxy
app.use(
"/api/nubian",
createProxyMiddleware({
target: nubianUrl,
// logLevel: "silent",
})
);
};

View file

@ -12,11 +12,11 @@ import {
} from "@fortawesome/free-solid-svg-icons";
//Local Imports
import "./scss/stash/StashContextMenu.scss";
import { serverUrls, serverAddress } from "./api.json";
import { serverUrls } from "./api.json";
//Constants
const downloadUrl = `${serverAddress}/${serverUrls.POST.downloadUrl}`;
const deleteUrl = `${serverAddress}/${serverUrls.POST.deleteUrl}`;
const publicUrl = `${serverAddress}/${serverUrls.POST.publicUrl}`;
const downloadUrl = `${serverUrls.POST.downloadUrl}`;
const deleteUrl = `${serverUrls.POST.deleteUrl}`;
const publicUrl = `${serverUrls.POST.publicUrl}`;
function getConfig() {
var authToken = localStorage.getItem("authToken");

View file

@ -6,8 +6,8 @@ import { toast } from "react-toastify";
import StashDropzone from "./StashDropzone";
import StashUploadDialog from "./uploader/StashUploadDialog";
//Constants
import { serverUrls, serverFields, serverAddress } from "./api.json";
const uploadUrl = `${serverAddress}/${serverUrls.POST.uploadUrl}`;
import { serverUrls, serverFields } from "./api.json";
const uploadUrl = `${serverUrls.POST.uploadUrl}`;
const uploadField = serverFields.uploadField;
const cancelMessage = "User Canceled";
const successClearTime = 200;

View file

@ -1,16 +1,14 @@
{
"serverAddress": "http://nubian.dunestorm.net:52001",
"serverUrls": {
"POST": {
"uploadUrl": "api/stash/upload",
"downloadUrl": "api/stash/download",
"deleteUrl": "api/stash/delete",
"publicUrl": "api/stash/public"
"uploadUrl": "/api/nubian/stash/upload",
"downloadUrl": "/api/nubian/stash/download",
"deleteUrl": "/api/nubian/stash/delete",
"publicUrl": "/api/nubian/stash/public"
},
"GET": {
"filesUrl": "api/stash/files",
"rawUrl": "api/stash/raw",
"avatar": "api/user/avatar"
"filesUrl": "/api/nubian/stash/files",
"rawUrl": "/api/nubian/stash/raw"
}
},
"serverFields": {