Old Website
- HTML 77%
- CSS 15.5%
- JavaScript 5.6%
- Dockerfile 1.9%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .claude | ||
| assets | ||
| config/_default | ||
| content | ||
| data | ||
| deploy | ||
| i18n | ||
| layouts | ||
| static | ||
| .dockerignore | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| .mcp.json | ||
| CLAUDE.md | ||
| Dockerfile | ||
| nginx.conf | ||
| package-lock.json | ||
| package.json | ||
| postcss.config.js | ||
| README.md | ||
| tailwind.config.js | ||
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
- Access to a Kubernetes cluster
kubectlconfigured for your cluster- A namespace for the deployment
Create Registry Credentials
Create a GitLab Deploy Token for pulling images:
- Go to https://git.vshn.net/vshn/open-sovereign-website/-/settings/repository
- Expand "Deploy tokens"
- Create a new token with:
- Name:
k8s-pull - Scopes:
read_registry
- Name:
- 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: coverswww.open-sovereign.chandopen-sovereign.chopensovereign-ch-tls: coverswww.opensovereign.chandopensovereign.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