Old Website
  • HTML 77%
  • CSS 15.5%
  • JavaScript 5.6%
  • Dockerfile 1.9%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-07-02 08:47:24 +02:00
.claude claude settings and playwright mcp 2026-01-06 10:45:40 +01:00
assets logoing 2026-01-06 11:14:47 +01:00
config/_default cleanups 2026-01-06 10:45:53 +01:00
content initial version 2025-12-02 09:12:10 +01:00
data remove ti&m 2026-07-02 08:47:24 +02:00
deploy correct registry 2026-01-06 12:00:10 +01:00
i18n initial version 2025-12-02 09:12:10 +01:00
layouts video compression 2026-01-06 11:21:36 +01:00
static video compression 2026-01-06 11:21:36 +01:00
.dockerignore dockerfile, deployment, pipeline 2026-01-06 11:48:50 +01:00
.gitignore initial version 2025-12-02 09:12:10 +01:00
.gitlab-ci.yml dockerfile, deployment, pipeline 2026-01-06 11:48:50 +01:00
.mcp.json claude settings and playwright mcp 2026-01-06 10:45:40 +01:00
CLAUDE.md initialize Claude 2026-01-06 10:29:51 +01:00
Dockerfile externalize nginx config file 2026-01-06 11:51:11 +01:00
nginx.conf externalize nginx config file 2026-01-06 11:51:11 +01:00
package-lock.json fix hugo config 2025-12-02 13:38:10 +01:00
package.json initial version 2025-12-02 09:12:10 +01:00
postcss.config.js initial version 2025-12-02 09:12:10 +01:00
README.md correct registry 2026-01-06 12:00:10 +01:00
tailwind.config.js initial version 2025-12-02 09:12:10 +01:00

Open Sovereign Website

Running at https://www.open-sovereign.ch

Local Development

Prerequisites:

  • Node.js
  • Hugo extended v0.148.1+
# Install dependencies
npm install

# Run development server
hugo server

# Run with drafts enabled
hugo server -D --disableFastRender

Container Build

The site is packaged as a container image using nginx.

# Build locally
docker build -t open-sovereign-website .

# Run locally
docker run -p 8080:8080 open-sovereign-website

CI/CD

The GitLab CI pipeline automatically builds and pushes the container image on every push to the main branch.

Image location: registry.vshn.net/vshn/open-sovereign-website

Kubernetes Deployment

Prerequisites

  1. Access to a Kubernetes cluster
  2. kubectl configured for your cluster
  3. A namespace for the deployment

Create Registry Credentials

Create a GitLab Deploy Token for pulling images:

  1. Go to https://git.vshn.net/vshn/open-sovereign-website/-/settings/repository
  2. Expand "Deploy tokens"
  3. Create a new token with:
    • Name: k8s-pull
    • Scopes: read_registry
  4. Save the generated token

Create the Kubernetes secret:

kubectl create secret docker-registry gitlab-registry \
  --docker-server=registry.vshn.net \
  --docker-username=<deploy-token-name> \
  --docker-password=<deploy-token-value> \
  --docker-email=admin@vshn.ch

Deploy

# Preview the manifests
kubectl kustomize deploy/

# Apply to cluster
kubectl apply -k deploy/

DNS Configuration

Configure DNS records for all domains:

Domain Type Target
www.open-sovereign.ch CNAME <ingress-hostname>
open-sovereign.ch A/ALIAS <ingress-ip>
www.opensovereign.ch CNAME <ingress-hostname>
opensovereign.ch A/ALIAS <ingress-ip>

The nginx configuration redirects all domains to the canonical URL https://www.open-sovereign.ch.

TLS Certificates

The Ingress is configured to use cert-manager with the letsencrypt-production cluster issuer. Certificates are automatically provisioned for:

  • open-sovereign-ch-tls: covers www.open-sovereign.ch and open-sovereign.ch
  • opensovereign-ch-tls: covers www.opensovereign.ch and opensovereign.ch

Update Deployment

To deploy a new version after a push to main:

# Restart deployment to pull latest image
kubectl rollout restart deployment/open-sovereign-website

# Watch rollout status
kubectl rollout status deployment/open-sovereign-website