diff --git a/sites/infra.mareshq.com/.eslintrc.json b/sites/infra.mareshq.com/.eslintrc.json
new file mode 100644
index 0000000..bffb357
--- /dev/null
+++ b/sites/infra.mareshq.com/.eslintrc.json
@@ -0,0 +1,3 @@
+{
+ "extends": "next/core-web-vitals"
+}
diff --git a/sites/infra.mareshq.com/.gitignore b/sites/infra.mareshq.com/.gitignore
new file mode 100644
index 0000000..88b6f0d
--- /dev/null
+++ b/sites/infra.mareshq.com/.gitignore
@@ -0,0 +1,37 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.js
+
+# testing
+/coverage
+
+# next.js
+/.next/
+/out/
+
+# production
+/build
+
+# misc
+.DS_Store
+*.pem
+
+# debug
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# local env files
+.env.local
+.env.development.local
+.env.test.local
+.env.production.local
+
+# vercel
+.vercel
+
+# typescript
+*.tsbuildinfo
diff --git a/sites/infra.mareshq.com/.gitlab-ci.yml b/sites/infra.mareshq.com/.gitlab-ci.yml
new file mode 100644
index 0000000..97cf49a
--- /dev/null
+++ b/sites/infra.mareshq.com/.gitlab-ci.yml
@@ -0,0 +1,29 @@
+default:
+ image: sikalabs/ci
+
+stages:
+ - build
+ - deploy
+
+variables:
+ IMAGE: $CI_REGISTRY_IMAGE/infra.mareshq.com
+ IMAGE_TAG: $CI_COMMIT_BRANCH-$CI_COMMIT_SHORT_SHA
+
+build:
+ stage: build
+ before_script:
+ - docker info
+ script:
+ - echo $CI_REGISTRY_PASSWORD | docker login --username $CI_REGISTRY_USER --password-stdin $CI_REGISTRY
+ - docker build --tag $IMAGE:$IMAGE_TAG --file ./build/Containerfile --build-arg SITE=infra.mareshq.com .
+ - docker push $IMAGE:$IMAGE_TAG
+
+deploy:
+ stage: deploy
+ script:
+ - helm upgrade --install --namespace internal-static-sites -f ./sites/infra.mareshq.com/helm-values.yaml --set image.tag=$IMAGE_TAG --set image.pullSecretBase64=$REGISTRY_PULL_SECRET_BASE64 infra-mareshq-com ./deploy/charts/static-site
+ rules:
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
+ environment:
+ name: infra-mareshq-com
+ url: https://infra.mareshq.com
diff --git a/sites/infra.mareshq.com/.vscode/settings.json b/sites/infra.mareshq.com/.vscode/settings.json
new file mode 100644
index 0000000..f62af99
--- /dev/null
+++ b/sites/infra.mareshq.com/.vscode/settings.json
@@ -0,0 +1,7 @@
+{
+ "editor.formatOnSave": true,
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
+ "[javascript]": {
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
+ }
+}
diff --git a/sites/infra.mareshq.com/NEXT.README.md b/sites/infra.mareshq.com/NEXT.README.md
new file mode 100644
index 0000000..c87e042
--- /dev/null
+++ b/sites/infra.mareshq.com/NEXT.README.md
@@ -0,0 +1,34 @@
+This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).
+
+## Getting Started
+
+First, run the development server:
+
+```bash
+npm run dev
+# or
+yarn dev
+```
+
+Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
+
+You can start editing the page by modifying `pages/index.tsx`. The page auto-updates as you edit the file.
+
+[API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.ts`.
+
+The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages.
+
+## Learn More
+
+To learn more about Next.js, take a look at the following resources:
+
+- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
+- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
+
+You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!
+
+## Deploy on Vercel
+
+The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
+
+Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.
diff --git a/sites/infra.mareshq.com/README.md b/sites/infra.mareshq.com/README.md
new file mode 100644
index 0000000..8889033
--- /dev/null
+++ b/sites/infra.mareshq.com/README.md
@@ -0,0 +1,3 @@
+# signpost.mareshq.com
+
+Crossroad for all my services currently running
diff --git a/sites/infra.mareshq.com/content/dedicated-servers.json b/sites/infra.mareshq.com/content/dedicated-servers.json
new file mode 100644
index 0000000..8699cdc
--- /dev/null
+++ b/sites/infra.mareshq.com/content/dedicated-servers.json
@@ -0,0 +1,30 @@
+[
+ {
+ "name": "loris",
+ "provider": "hetzner-dedicated",
+ "zone": "fsn1",
+ "ip": "142.132.144.165",
+ "belongsTo": "kubernetes/bee.k8s.vxm.cz"
+ },
+ {
+ "name": "otary",
+ "provider": "hetzner-dedicated",
+ "zone": "fsn1",
+ "ip": "167.235.7.102",
+ "belongsTo": "kubernetes/bee.k8s.vxm.cz"
+ },
+ {
+ "name": "rhino",
+ "provider": "hetzner-dedicated",
+ "zone": "fsn1",
+ "ip": "167.235.7.101",
+ "belongsTo": "kubernetes/bee.k8s.vxm.cz"
+ },
+ {
+ "name": "maple",
+ "provider": "hetzner-dedicated",
+ "zone": "fsn1",
+ "ip": "138.201.254.39",
+ "belongsTo": "acaslab/pterodcatyl"
+ }
+]
diff --git a/sites/infra.mareshq.com/content/kubernetes.json b/sites/infra.mareshq.com/content/kubernetes.json
new file mode 100644
index 0000000..365f983
--- /dev/null
+++ b/sites/infra.mareshq.com/content/kubernetes.json
@@ -0,0 +1,8 @@
+[
+ {
+ "name": "bee",
+ "provider": "k3s",
+ "zone": "fsn1",
+ "url": "bee.k8s.vxm.cz"
+ }
+]
diff --git a/sites/infra.mareshq.com/content/links.json b/sites/infra.mareshq.com/content/links.json
new file mode 100644
index 0000000..fc7bd4d
--- /dev/null
+++ b/sites/infra.mareshq.com/content/links.json
@@ -0,0 +1,21 @@
+[
+ { "name": "GitLab", "url": "https://gitlab.mareshq.com" },
+ { "name": "Sentry", "url": "https://sentry.mareshq.com" },
+ {
+ "name": "Prometheus",
+ "url": "https://prometheus.cloud.mareshq.com"
+ },
+ {
+ "name": "Alert Manager",
+ "url": "https://alertmanager.cloud.mareshq.com"
+ },
+ { "name": "Grafana", "url": "https://grafana.cloud.mareshq.com" },
+ {
+ "name": "bee.k8s.vxm.cz",
+ "url": "https://signpost.cloud.mareshq.com"
+ },
+ {
+ "name": "signpost.mareshq.com",
+ "url": "https://signpost.mareshq.com"
+ }
+]
diff --git a/sites/infra.mareshq.com/content/loadbalancers.json b/sites/infra.mareshq.com/content/loadbalancers.json
new file mode 100644
index 0000000..ce32e9f
--- /dev/null
+++ b/sites/infra.mareshq.com/content/loadbalancers.json
@@ -0,0 +1,9 @@
+[
+ {
+ "name": "bee-k8s",
+ "provider": "hetzner-cloud",
+ "zone": "fsn1",
+ "ip": "49.12.17.251",
+ "belongsTo": "kubernetes/bee.k8s.vxm.cz"
+ }
+]
diff --git a/sites/infra.mareshq.com/content/virtual-servers.json b/sites/infra.mareshq.com/content/virtual-servers.json
new file mode 100644
index 0000000..2166d53
--- /dev/null
+++ b/sites/infra.mareshq.com/content/virtual-servers.json
@@ -0,0 +1,44 @@
+[
+ {
+ "name": "gitlab",
+ "provider": "hetzner-cloud",
+ "zone": "fsn1",
+ "ip": "142.132.144.165",
+ "belongsTo": "gitlab"
+ },
+ {
+ "name": "sentry",
+ "provider": "hetzner-cloud",
+ "zone": "fsn1",
+ "ip": "167.235.7.102",
+ "belongsTo": "sentry"
+ },
+ {
+ "name": "willow",
+ "provider": "hetzner-cloud",
+ "zone": "fsn1",
+ "ip": "142.132.229.156",
+ "belongsTo": "wsj"
+ },
+ {
+ "name": "alder",
+ "provider": "hetzner-cloud",
+ "zone": "fsn1",
+ "ip": "188.34.153.130",
+ "belongsTo": "acaslab/pterodactyl"
+ },
+ {
+ "name": "gitlab-runner-micro",
+ "provider": "hetzner-cloud",
+ "zone": "fsn1",
+ "ip": "142.132.182.136",
+ "belongsTo": "gitlab"
+ },
+ {
+ "name": "controlplane-bee-k8s",
+ "provider": "hetzner-cloud",
+ "zone": "fsn1",
+ "ip": "167.235.226.67",
+ "belongsTo": "kubernetes/bee.k8s.vxm.cz"
+ }
+]
diff --git a/sites/infra.mareshq.com/helm-values.yaml b/sites/infra.mareshq.com/helm-values.yaml
new file mode 100644
index 0000000..fa4d730
--- /dev/null
+++ b/sites/infra.mareshq.com/helm-values.yaml
@@ -0,0 +1,18 @@
+image:
+ repository: registry.mareshq.com/mareshq/internal-static-sites/infra.mareshq.com
+
+ingress:
+ enabled: true
+ className: nginx
+ annotations:
+ cert-manager.io/cluster-issuer: letsencrypt-prod
+ kubernetes.io/tls-acme: 'true'
+ hosts:
+ - host: infra.mareshq.com
+ paths:
+ - path: /
+ pathType: ImplementationSpecific
+ tls:
+ - secretName: infra-mareshq-com
+ hosts:
+ - infra.mareshq.com
diff --git a/sites/infra.mareshq.com/next-env.d.ts b/sites/infra.mareshq.com/next-env.d.ts
new file mode 100644
index 0000000..4f11a03
--- /dev/null
+++ b/sites/infra.mareshq.com/next-env.d.ts
@@ -0,0 +1,5 @@
+///
+///
+
+// NOTE: This file should not be edited
+// see https://nextjs.org/docs/basic-features/typescript for more information.
diff --git a/sites/infra.mareshq.com/next.config.js b/sites/infra.mareshq.com/next.config.js
new file mode 100644
index 0000000..4a24c2f
--- /dev/null
+++ b/sites/infra.mareshq.com/next.config.js
@@ -0,0 +1,12 @@
+/** @type {import('next').NextConfig} */
+module.exports = {
+ reactStrictMode: true,
+};
+
+const withTM = require('next-transpile-modules')([
+ '@themes/infra',
+ '@themes/common',
+ '@themes/signpost',
+]);
+
+module.exports = withTM(module.exports);
diff --git a/sites/infra.mareshq.com/package.json b/sites/infra.mareshq.com/package.json
new file mode 100644
index 0000000..fef785d
--- /dev/null
+++ b/sites/infra.mareshq.com/package.json
@@ -0,0 +1,27 @@
+{
+ "name": "@sites/www.vxm.cz",
+ "private": true,
+ "version": "0.0.0",
+ "scripts": {
+ "dev": "next dev",
+ "build": "next build && next export",
+ "start": "next start",
+ "lint": "next lint"
+ },
+ "dependencies": {
+ "next": "12.0.7",
+ "react": "17.0.2",
+ "react-dom": "17.0.2"
+ },
+ "devDependencies": {
+ "@types/node": "16.11.7",
+ "@types/react": "17.0.34",
+ "autoprefixer": "^10.4.0",
+ "eslint": "7",
+ "eslint-config-next": "12.0.3",
+ "next-transpile-modules": "^9.0.0",
+ "postcss": "^8.3.11",
+ "tailwindcss": "^3.0.8",
+ "typescript": "4.4.4"
+ }
+}
diff --git a/sites/infra.mareshq.com/pages/_app.tsx b/sites/infra.mareshq.com/pages/_app.tsx
new file mode 100644
index 0000000..b3c651a
--- /dev/null
+++ b/sites/infra.mareshq.com/pages/_app.tsx
@@ -0,0 +1,8 @@
+import '../styles/globals.css';
+import type { AppProps } from 'next/app';
+
+function App({ Component, pageProps }: AppProps) {
+ return ;
+}
+
+export default App;
diff --git a/sites/infra.mareshq.com/pages/index.tsx b/sites/infra.mareshq.com/pages/index.tsx
new file mode 100644
index 0000000..c600b46
--- /dev/null
+++ b/sites/infra.mareshq.com/pages/index.tsx
@@ -0,0 +1,164 @@
+import type { NextPage } from 'next';
+import Head from 'next/head';
+import Layout from '@themes/infra/components/Layout';
+import Link from '@themes/signpost/components/Link';
+import links from '../content/links.json';
+import dedicatedServers from '../content/dedicated-servers.json';
+import virtualServers from '../content/virtual-servers.json';
+import loadbalancers from '../content/loadbalancers.json';
+import kubernetes from '../content/kubernetes.json';
+
+const Home: NextPage = () => {
+ return (
+ <>
+
+ infra.mareshq.com
+
+
+
+
+
+ infra.mareshq.com
+
+
+
+ MaresHQ Infrastructure
+
+
+
+
+
links
+
+ {links.map((l) => (
+ -
+
+
+ ))}
+
+
+
+
+
+
+ virtual servers
+
+
+
+
+ | name |
+ provider |
+ zone |
+ ip |
+ belongs to |
+
+
+
+ {virtualServers.map((vs) => (
+
+ | {vs.name} |
+ {vs.provider} |
+ {vs.zone} |
+
+ {vs.ip}
+ |
+ {vs.belongsTo} |
+
+ ))}
+
+
+
+
+
+ dedicated servers
+
+
+
+
+ | name |
+ provider |
+ zone |
+ ip |
+ belongs to |
+
+
+
+ {dedicatedServers.map((ds) => (
+
+ | {ds.name} |
+ {ds.provider} |
+ {ds.zone} |
+
+ {ds.ip}
+ |
+ {ds.belongsTo} |
+
+ ))}
+
+
+
+
+
load balancers
+
+
+
+ | name |
+ provider |
+ zone |
+ ip |
+ belongs to |
+
+
+
+ {loadbalancers.map((lb) => (
+
+ | {lb.name} |
+ {lb.provider} |
+ {lb.zone} |
+
+ {lb.ip}
+ |
+ {lb.belongsTo} |
+
+ ))}
+
+
+
+
+
+ kubernetes clusters
+
+
+
+
+ | name |
+ provider |
+ zone |
+ url |
+ |
+
+
+
+ {kubernetes.map((k8s) => (
+
+ | {k8s.name} |
+ {k8s.provider} |
+ {k8s.zone} |
+ {k8s.url} |
+ |
+
+ ))}
+
+
+
+
+
+
+
+ >
+ );
+};
+
+export default Home;
diff --git a/sites/infra.mareshq.com/postcss.config.js b/sites/infra.mareshq.com/postcss.config.js
new file mode 100644
index 0000000..12a703d
--- /dev/null
+++ b/sites/infra.mareshq.com/postcss.config.js
@@ -0,0 +1,6 @@
+module.exports = {
+ plugins: {
+ tailwindcss: {},
+ autoprefixer: {},
+ },
+};
diff --git a/sites/infra.mareshq.com/public/favicon.ico b/sites/infra.mareshq.com/public/favicon.ico
new file mode 100644
index 0000000..718d6fe
Binary files /dev/null and b/sites/infra.mareshq.com/public/favicon.ico differ
diff --git a/sites/infra.mareshq.com/styles/globals.css b/sites/infra.mareshq.com/styles/globals.css
new file mode 100644
index 0000000..b5c61c9
--- /dev/null
+++ b/sites/infra.mareshq.com/styles/globals.css
@@ -0,0 +1,3 @@
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
diff --git a/sites/infra.mareshq.com/tailwind.config.js b/sites/infra.mareshq.com/tailwind.config.js
new file mode 100644
index 0000000..5ba1725
--- /dev/null
+++ b/sites/infra.mareshq.com/tailwind.config.js
@@ -0,0 +1,16 @@
+module.exports = {
+ content: [
+ './**/*.tsx',
+ './../../themes/infra/**/*.tsx',
+ './../../themes/common/**/*.tsx',
+ './../../themes/signpost/**/*.tsx',
+ ],
+ darkMode: false, // or 'media' or 'class'
+ theme: {
+ extend: {},
+ },
+ variants: {
+ extend: {},
+ },
+ plugins: [],
+};
diff --git a/sites/infra.mareshq.com/tsconfig.json b/sites/infra.mareshq.com/tsconfig.json
new file mode 100644
index 0000000..99710e8
--- /dev/null
+++ b/sites/infra.mareshq.com/tsconfig.json
@@ -0,0 +1,20 @@
+{
+ "compilerOptions": {
+ "target": "es5",
+ "lib": ["dom", "dom.iterable", "esnext"],
+ "allowJs": true,
+ "skipLibCheck": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "noEmit": true,
+ "esModuleInterop": true,
+ "module": "esnext",
+ "moduleResolution": "node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "jsx": "preserve",
+ "incremental": true
+ },
+ "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"],
+ "exclude": ["node_modules"]
+}