Setup deployment for Khufu
This commit is contained in:
parent
5d35d66713
commit
9bed3908d3
10 changed files with 101 additions and 39 deletions
10
Dockerfile
10
Dockerfile
|
@ -1,10 +1,10 @@
|
||||||
FROM node:latest
|
FROM node:latest
|
||||||
RUN apt-get update && apt-get upgrade -y
|
RUN apt-get update && apt-get upgrade -y
|
||||||
RUN apt-get install libsass-dev build-essential -y
|
|
||||||
WORKDIR /dunestorm/khufu
|
WORKDIR /dunestorm/khufu
|
||||||
COPY build /dunestorm/khufu/build/
|
COPY package.json .
|
||||||
RUN npm i -g serve
|
RUN npm i --only=prod
|
||||||
|
COPY server server
|
||||||
|
COPY build build
|
||||||
ENV KHUFU_DEV_TOKEN $KHUFU_DEV_TOKEN
|
ENV KHUFU_DEV_TOKEN $KHUFU_DEV_TOKEN
|
||||||
CMD ["serve", "-s", "build", "-l", "52026"]
|
CMD ["npm", "start"]
|
||||||
# EXPOSE PORTS
|
|
||||||
EXPOSE 52026
|
EXPOSE 52026
|
||||||
|
|
33
docker-compose.yml
Normal file
33
docker-compose.yml
Normal 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
|
32
package.json
32
package.json
|
@ -1,13 +1,17 @@
|
||||||
{
|
{
|
||||||
"name": "dunestash-frontend",
|
"name": "khufu",
|
||||||
"version": "0.1.0",
|
"version": "1.0.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@fortawesome/fontawesome-svg-core": "^1.2.35",
|
"http-proxy-middleware": "^2.0.1",
|
||||||
"@fortawesome/free-brands-svg-icons": "^5.15.3",
|
"express": "^4.17.1"
|
||||||
"@fortawesome/free-regular-svg-icons": "^5.15.3",
|
},
|
||||||
"@fortawesome/free-solid-svg-icons": "^5.15.3",
|
"devDependencies": {
|
||||||
"@fortawesome/react-fontawesome": "^0.1.14",
|
"@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",
|
"js-file-download": "^0.4.12",
|
||||||
"react": "^17.0.2",
|
"react": "^17.0.2",
|
||||||
"react-axios": "^2.0.5",
|
"react-axios": "^2.0.5",
|
||||||
|
@ -17,15 +21,12 @@
|
||||||
"react-router-dom": "^5.2.0",
|
"react-router-dom": "^5.2.0",
|
||||||
"react-scripts": "^4.0.3",
|
"react-scripts": "^4.0.3",
|
||||||
"react-toastify": "^7.0.4",
|
"react-toastify": "^7.0.4",
|
||||||
"remove": "^0.1.5",
|
"sass": "^1.37.5"
|
||||||
"sass": "^1.36.0",
|
|
||||||
"web-vitals": "^2.1.0"
|
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "PORT=52026 react-scripts start",
|
"start": "node server/main.js",
|
||||||
"build": "react-scripts build",
|
"start:dev": "PORT=52026 react-scripts start",
|
||||||
"test": "react-scripts test",
|
"build": "react-scripts build"
|
||||||
"eject": "react-scripts eject"
|
|
||||||
},
|
},
|
||||||
"eslintConfig": {
|
"eslintConfig": {
|
||||||
"extends": [
|
"extends": [
|
||||||
|
@ -44,8 +45,5 @@
|
||||||
"last 1 firefox version",
|
"last 1 firefox version",
|
||||||
"last 1 safari version"
|
"last 1 safari version"
|
||||||
]
|
]
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"serve": "^12.0.0"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
10
server/main.js
Normal file
10
server/main.js
Normal 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}! 🌴`));
|
|
@ -6,7 +6,7 @@ import "react-toastify/dist/ReactToastify.css";
|
||||||
import Stash from "./Stash";
|
import Stash from "./Stash";
|
||||||
//Constants
|
//Constants
|
||||||
const token =
|
const token =
|
||||||
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1dWlkIjoiYmVjYWNjNjdhNmRjLTBlN2QtMDBlNi1jYmVhLWVhZGNlYmUxIiwiaWF0IjoxNjI3MTcxMDU1LCJleHAiOjE2Mjk3NjMwNTV9.zqiHrYnJlB7ozwjMnpgVUsBAt9vfLHLICFgWB0MguLA";
|
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjYxMDhiMjI1ODBmYWEwMDAxMzQwZDdjMiIsImVtYWlsIjoiZHVuZXFhK3VzZXJAZ21haWwuY29tIiwiaXAiOiI6OmZmZmY6MTkyLjE2OC4yMjQuMSIsImlhdCI6MTYyNzk1OTg0NSwiZXhwIjoxNjMwNTUxODQ1fQ.mGybyFVxGzQ0cSIU4oE-RQpkQM45kIGHVFNAQmwsvvk";
|
||||||
localStorage.setItem("authToken", token);
|
localStorage.setItem("authToken", token);
|
||||||
class App extends React.Component {
|
class App extends React.Component {
|
||||||
render() {
|
render() {
|
||||||
|
|
|
@ -6,10 +6,10 @@ import { toast } from "react-toastify";
|
||||||
import Stashbar from "./stash/Stashbar";
|
import Stashbar from "./stash/Stashbar";
|
||||||
import StashUpload from "./stash/StashUpload";
|
import StashUpload from "./stash/StashUpload";
|
||||||
import StashContextMenu from "./stash/StashContextMenu";
|
import StashContextMenu from "./stash/StashContextMenu";
|
||||||
import { serverUrls, serverAddress } from "./stash/api.json";
|
import { serverUrls} from "./stash/api.json";
|
||||||
import "./stash/scss/Stash.scss";
|
import "./stash/scss/Stash.scss";
|
||||||
//Constants
|
//Constants
|
||||||
const filesUrl = `${serverAddress}/${serverUrls.GET.filesUrl}`;
|
const filesUrl = `${serverUrls.GET.filesUrl}`;
|
||||||
//Class
|
//Class
|
||||||
const getConfig = () => ({
|
const getConfig = () => ({
|
||||||
headers: {
|
headers: {
|
||||||
|
|
23
src/setupProxy.js
Normal file
23
src/setupProxy.js
Normal 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",
|
||||||
|
})
|
||||||
|
);
|
||||||
|
};
|
|
@ -12,11 +12,11 @@ import {
|
||||||
} from "@fortawesome/free-solid-svg-icons";
|
} from "@fortawesome/free-solid-svg-icons";
|
||||||
//Local Imports
|
//Local Imports
|
||||||
import "./scss/stash/StashContextMenu.scss";
|
import "./scss/stash/StashContextMenu.scss";
|
||||||
import { serverUrls, serverAddress } from "./api.json";
|
import { serverUrls } from "./api.json";
|
||||||
//Constants
|
//Constants
|
||||||
const downloadUrl = `${serverAddress}/${serverUrls.POST.downloadUrl}`;
|
const downloadUrl = `${serverUrls.POST.downloadUrl}`;
|
||||||
const deleteUrl = `${serverAddress}/${serverUrls.POST.deleteUrl}`;
|
const deleteUrl = `${serverUrls.POST.deleteUrl}`;
|
||||||
const publicUrl = `${serverAddress}/${serverUrls.POST.publicUrl}`;
|
const publicUrl = `${serverUrls.POST.publicUrl}`;
|
||||||
|
|
||||||
function getConfig() {
|
function getConfig() {
|
||||||
var authToken = localStorage.getItem("authToken");
|
var authToken = localStorage.getItem("authToken");
|
||||||
|
|
|
@ -6,8 +6,8 @@ import { toast } from "react-toastify";
|
||||||
import StashDropzone from "./StashDropzone";
|
import StashDropzone from "./StashDropzone";
|
||||||
import StashUploadDialog from "./uploader/StashUploadDialog";
|
import StashUploadDialog from "./uploader/StashUploadDialog";
|
||||||
//Constants
|
//Constants
|
||||||
import { serverUrls, serverFields, serverAddress } from "./api.json";
|
import { serverUrls, serverFields } from "./api.json";
|
||||||
const uploadUrl = `${serverAddress}/${serverUrls.POST.uploadUrl}`;
|
const uploadUrl = `${serverUrls.POST.uploadUrl}`;
|
||||||
const uploadField = serverFields.uploadField;
|
const uploadField = serverFields.uploadField;
|
||||||
const cancelMessage = "User Canceled";
|
const cancelMessage = "User Canceled";
|
||||||
const successClearTime = 200;
|
const successClearTime = 200;
|
||||||
|
|
|
@ -1,16 +1,14 @@
|
||||||
{
|
{
|
||||||
"serverAddress": "http://nubian.dunestorm.net:52001",
|
|
||||||
"serverUrls": {
|
"serverUrls": {
|
||||||
"POST": {
|
"POST": {
|
||||||
"uploadUrl": "api/stash/upload",
|
"uploadUrl": "/api/nubian/stash/upload",
|
||||||
"downloadUrl": "api/stash/download",
|
"downloadUrl": "/api/nubian/stash/download",
|
||||||
"deleteUrl": "api/stash/delete",
|
"deleteUrl": "/api/nubian/stash/delete",
|
||||||
"publicUrl": "api/stash/public"
|
"publicUrl": "/api/nubian/stash/public"
|
||||||
},
|
},
|
||||||
"GET": {
|
"GET": {
|
||||||
"filesUrl": "api/stash/files",
|
"filesUrl": "/api/nubian/stash/files",
|
||||||
"rawUrl": "api/stash/raw",
|
"rawUrl": "/api/nubian/stash/raw"
|
||||||
"avatar": "api/user/avatar"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"serverFields": {
|
"serverFields": {
|
||||||
|
|
Reference in a new issue