deytenit
502ef94bb2
feat(infra): update SOPS configuration, cloud-init templates, and secondary disk automation ( #26 )
...
### Summary of Changes
This PR incorporates the final infrastructure optimizations following
the initial merge of PR #25 :
1. **SOPS & Secrets Management**:
- Generated dedicated Age keypair
(`age1jpa7hqyzzdfq7lvnw3l8qy6648mtjgpcqnljl5jz92dcqjrnsqfsn7m0fl`) and
updated `.sops.yaml`.
- Added SOPS-encrypted production secrets for PostgreSQL
(`ci/k8s/apps/postgres/secret.sops.yaml`) and Umami Analytics
(`ci/k8s/apps/umami/secret.sops.yaml`).
- Verified 100% clean round-trip decryption.
2. **Cloud-Init Template & Git Safety**:
- Converted `user-data.yaml` into `user-data.template.yaml` with clear
stubs for public SSH keys and private Age keys.
- Added `ci/cloud-init/user-data.yaml` to `.gitignore` to prevent
accidental secret leaks.
3. **Persistent Secondary Storage**:
- Added automated detection, ext4 formatting, and mounting of secondary
persistent disk (`/dev/vdb`) to `/var/lib/rancher/k3s/storage` with
`noatime` in `user-data.template.yaml`.
4. **Golden Image Naming & Workflows**:
- Updated image naming convention to include hyphenated UTC timestamps:
`com-ermnvldmr-debian-12-k3s-amd64-YYYY-MM-DD-HH-MM-SS-sha-<short_sha>.qcow2`.
- Verified successful CI golden image build and S3 upload.
2026-08-23 14:02:08 +03:00
deytenit
710873e72c
feat(infra): add K3s GitOps infrastructure and Packer golden image build ( #25 )
...
### Summary of Changes
This PR introduces a declarative, GitOps-managed cloud infrastructure
for the monorepo using K3s, Flux v2, and HashiCorp Packer:
1. **Packer Golden Image Builder (`ci/packer/`)**:
- Automated Debian 12 minimal base OS image creation using QEMU builder,
UEFI firmware, GPT partition scheme, and 2M cluster size `.qcow2`
conversion.
- Cloud-init, `virtio` kernel drivers, and serial console (`ttyS0`,
115200 baud).
- Pre-installed K3s binary (`v1.31.2+k3s1`) with isolated first-boot
token and cert generation.
- Full identity sanitization (`machine-id` and SSH host key resets).
2. **First-Boot Cloud-Init Bootstrapping
(`ci/cloud-init/user-data.yaml`)**:
- Configures K3s with `servicelb` disabled and TLS SANs for custom
domains and static IP.
- Waits for API readiness, initializes `flux-system` namespace, injects
`sops-age` secret, and triggers Flux sync.
3. **SOPS & GitOps Root Orchestration (`.sops.yaml`,
`ci/k8s/clusters/production/`)**:
- SOPS encryption configuration targeting Kubernetes secrets with `age`
key recipient.
- Flux v2 `GitRepository` and `Kustomization` manifests tracking `next`.
4. **Infrastructure & Networking (`ci/k8s/base/`,
`ci/k8s/infrastructure/`)**:
- Dedicated `com-ermnvldmr` namespace.
- `cert-manager` HTTP-01 `ClusterIssuer` (`letsencrypt-prod` &
`letsencrypt-staging`).
- Traefik Ingress routing for `ermnvldmr.com`, `www.ermnvldmr.com`,
`docs.ermnvldmr.com`, and `analytics.ermnvldmr.com`.
5. **PostgreSQL & Applications (`ci/k8s/apps/`)**:
- PostgreSQL 16 StatefulSet on 5Gi `local-path` persistent storage with
low-memory tuning.
- Deployments for `www` (pinned `sha-6d33b71`), `docs` (pinned
`sha-91f5245`), and `umami` (pinned `postgresql-v2.14.0`) with
zero-downtime rolling update strategy.
6. **CI/CD Workflows (`.github/workflows/`)**:
- `ci - next/build-golden-image`: Workflow to build and upload
`com-ermnvldmr-debian-12-k3s-amd64-<tag>.qcow2` to static S3
`/dev/images/`.
- Updated `services-www-releases-dispatch-release.yml` and
`services-docs-next-required.yml` with GitOps deployment steps.
2026-08-23 02:11:54 +03:00
deytenit
6d33b71405
fix(ci): fix docker build for www service by copying kits/cli package… ( #23 )
...
…s and updating build:deps
2026-08-10 09:39:01 +03:00
deytenit
77afcca98e
fix: Fix containing various changes that stacked up in a period of time ( #22 )
2026-08-10 09:04:39 +03:00
deytenit
1b3d7cecb2
ci: Add release rebase workflow ( #21 )
2026-07-12 11:38:02 +03:00
deytenit
c41450e884
fix: fix www docker build ( #20 )
2026-07-12 02:38:00 +03:00
deytenit
91f5245823
fix, feat, doc: massive build system refactorion, bug fixes and apex documentation ( #19 )
2026-07-12 01:57:40 +03:00
deytenit and copilot-swe-agent[bot]
ef6ca40c72
feat (www): Add Wanted (wishlist) page ( #15 )
...
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
2026-05-04 18:58:46 +03:00
deytenit
51a783f93a
docs: Update docs for the correctness ( #13 )
2026-04-15 00:48:06 +03:00
deytenit
8dba55272c
docs: update references to renamed commons repository ( #11 )
2026-04-06 22:18:55 +03:00
deytenit
6b0a893c86
Update package.json to remove broken postinstall ( #10 )
2026-03-20 01:41:14 +03:00
deytenit
575959ffa2
Add joplin web article ( #9 )
2026-03-20 01:32:26 +03:00
deytenit
90bf68c4c8
fix(nginx): add explicit root and fix regex location priority for sta… ( #8 )
...
…tic assets
Regex locations (~* .js|css|woff2 etc) have higher priority than prefix
locations (/en/, /ru/) in nginx. Without an explicit root in the server
block, the caching location had no root to serve files from, causing
404s for all /en/static/... and /ru/static/... assets.
- Add root /usr/share/nginx/html to server block so all locations
inherit it
- Remove alias from /en/ and /ru/ locations (redundant with explicit
root)
- Reorder: caching regex locations before locale prefix locations
(documents intent)
Made-with: Cursor
2026-03-16 01:33:29 +03:00
deytenit
cd40139eea
fix(www): resolve SSG build issues with font preloads, dark theme and… ( #7 )
...
… RU locale
- Fix depth-dependent duplicate font preload prefixes by using
locale-absolute fontBase path and publicPath:false on html.tags to
prevent Rsbuild from re-applying assetPrefix (path.posix.join behavior
with MPA nested entries)
- Fix .dark CSS rule stripped by critters: set reduceInlineStyles:false
so critters only processes external stylesheets and leaves inline theme
init styles (THEME_INIT_STYLES) intact
- Fix NormalModuleReplacementPlugin lost in mergeConfig: refactored
locale MDX replacement from tools.rspack function into a proper Rsbuild
plugin so mergeConfig concatenates plugin arrays correctly (enables RU
locale articles)
- Extend Critters type declaration to include reduceInlineStyles option
Made-with: Cursor
2026-03-16 01:27:42 +03:00
deytenit
f5e901c131
Add i18n build step to releases workflows ( #6 )
...
Build @ermnvldmr/i18n and include its dist in the config-artifacts
bundle for services-www-releases-required and
services-www-releases-dispatch-release workflows, matching the fix
already applied to pr/next workflows.
Made-with: Cursor
2026-03-16 00:12:02 +03:00
deytenit
b84ef775b8
Various build shenenigans ( #5 )
...
This PR extends the build pipeline of the www service to support
locale-prefixed static builds (EN/RU) with build-time SSG output
injection, while also refactoring UI typography to a tokenized Tailwind
v4 @theme-driven approach.
Changes:
- Add build-time SSG plugin to @ermnvldmr/rsbuild-config and wire
multi-locale builds (/en/, /ru/) into services/www.
- Introduce new @ermnvldmr/i18n package (locale constants, path helpers,
keysets, pluralization) and apply it to www navigation/text.
- Refactor ui typography to a shared getTypographyClassNames utility +
Tailwind token definitions, with stl/cn updated for correct
Tailwind-merge behavior.
2026-03-16 00:00:20 +03:00
deytenit
ea35a3d9f5
TRIVIAL: Add xray-core-subnet-mimicry article ( #4 )
2026-03-08 02:29:09 +03:00
deytenit
49b545f1b4
E1: Refactor layouts and fix styles for visible elements in www
2026-03-07 21:02:22 +03:00
deytenit
f3a3a52aa8
feat: Refactor layouts in www
2026-03-07 20:59:03 +03:00
deytenit
6aa3a03319
fix: Fix PR issues
2026-03-07 10:51:54 +03:00
deytenit
d2903a3715
feat: Update styles for Article
2026-03-06 23:27:01 +03:00
deytenit
7b574a1a66
ci: Add workflows for prs
2026-03-06 23:14:13 +03:00
deytenit
56d0d65971
feat: Add codehighlight for the Code'
2026-03-06 23:06:30 +03:00
deytenit
6784a28701
feat: Variate Separator thinkness
2026-03-06 22:41:44 +03:00
deytenit
a95723c4f1
feat: Update Code styles
2026-03-06 22:16:34 +03:00
deytenit
4e36e800d4
feat: Add more thinned variants to Separator
2026-03-06 21:19:41 +03:00
deytenit
8d57d6ba1b
feat: Add PageHead component
2026-03-06 09:50:38 +03:00
deytenit
30fd52b8e9
chore: Bump hextra submodule
2026-02-26 22:25:25 +03:00
deytenit
e9f27f2437
ci: Fix docs build via author
2026-02-26 00:37:31 +03:00
deytenit
52ada4eba6
docs: Add missing docs for initial host setup
2026-02-26 00:32:15 +03:00
deytenit
9c8e57a7b1
feat: Add local fontfaces
2026-02-15 19:26:23 +03:00
deytenit
a571b343c8
fix: Fix several lighthouse issues
2026-02-15 19:14:12 +03:00
deytenit
90e8fad496
chore: Fix lint errors in UI
2026-02-15 18:57:01 +03:00
deytenit
0784e0b305
feat: Introduce SSG
2026-02-15 18:48:51 +03:00
deytenit
7fd11d2220
ci: Update release-dispatch build workflow
2026-02-15 17:55:21 +03:00
deytenit
1b0fa16adc
chore: Fix lint issues in static
2026-02-15 17:30:16 +03:00
deytenit
3546594d41
feat: Add matrix deployment article
2026-02-15 17:26:42 +03:00
deytenit
45c7189b6b
ci: Fix www storybook build
2026-02-15 16:30:49 +03:00
deytenit
3aa169ae29
build: Fix build issues
2026-02-15 16:19:50 +03:00
deytenit
2d1bc9d119
feat: Add theme switch
2026-02-15 15:36:31 +03:00
deytenit
891027cab0
refactor: Continue refactoring after migrating to rsbuild
2026-02-15 12:23:04 +03:00
deytenit
baba22ad6f
docs: Update readme and gemini mds
2026-02-13 01:50:49 +03:00
deytenit
a12b03b3b5
ci: Fix lint in www && storybook build errors
2026-02-13 01:41:33 +03:00
deytenit
0534b784c6
ci: Fix vitest module resolution in CI
2026-02-13 01:21:20 +03:00
deytenit
e193e75cc4
ci: Fix config artifacts download/upload
2026-02-13 00:59:34 +03:00
deytenit
54b0bf0314
ci: Fix storybook CI issues
2026-02-13 00:46:50 +03:00
deytenit
be56500148
chore: Delete ignored dir
2026-02-13 00:35:06 +03:00
deytenit
9ed7409dc8
ci: Fix CI issues after rspack migration
2026-02-13 00:20:45 +03:00
deytenit
4628c043ce
feat(infra): migrate to rsbuild
2026-02-12 23:39:20 +03:00
deytenit
97c6347f2e
feat: Add markdown components
2026-02-10 08:48:12 +03:00
deytenit
25044c75ff
feat: Migrate www to the ui components
2026-02-10 08:01:18 +03:00
deytenit
cb956be216
fix: Make Code more like pre/code elements
2026-02-10 07:26:53 +03:00
deytenit
42a0b71a8f
feat(ui): implement comprehensive Table component system with compound API
2026-02-09 23:15:39 +03:00
deytenit
df2abc06f2
feat: Add more base component to UI
2026-02-01 16:24:45 +03:00
deytenit
ca20310460
refactor: Refactor UI structure
2026-02-01 01:49:02 +03:00
deytenit
bbb9503172
ci: Add astro type generation in CI
2026-01-31 21:08:50 +03:00
deytenit
ef9d521e86
chore: Delete AI generated plan
2026-01-31 17:53:25 +03:00
deytenit
054cf4f5e3
feat: Add generic components for UI
2026-01-31 17:52:45 +03:00
deytenit
08a7f44588
feat: Add articles in www
2026-01-31 13:16:38 +03:00
deytenit
283b1c87c2
ci: Update semantic-release script
2026-01-31 02:17:58 +03:00
deytenit
50deaa0ca1
ci: Add correct domain for www
2026-01-31 02:16:15 +03:00
deytenit
979d455eea
ci: Add version number to RC release
2026-01-31 01:56:54 +03:00
deytenit
0e2084e2c1
ci: Add deploy to releases CI
2026-01-31 01:53:38 +03:00
deytenit
8171e69a86
ci: Make releases flow run on push
2026-01-31 01:34:41 +03:00
deytenit
b0c51bdcc2
ci: Fix CI issues in WWW
2026-01-31 01:23:53 +03:00
deytenit
13d5f11c4d
ci: Fix Storybook job for www
2026-01-31 00:53:24 +03:00
deytenit
6b1f6bf915
ci: Add playwright dependency to UI
2026-01-31 00:04:42 +03:00
deytenit
a82dec8ba2
refactor: Prefix Paper components
2026-01-30 23:45:13 +03:00
deytenit
1f7c8566df
ci: Optimize CI config builds
2026-01-30 23:09:09 +03:00
deytenit
ff15814404
ci: Add codecov
2026-01-30 22:54:10 +03:00
deytenit
5225285aba
docs: Remove root slug from docs
2026-01-28 23:32:53 +03:00
deytenit
bd83b2f676
docs: Update root.ermnvldmr.com via prompt
2026-01-28 23:25:39 +03:00
deytenit
ac54562996
docs: Write quetza docs
2026-01-28 21:23:42 +03:00
deytenit
214e8ceeb3
docs: Clear unused assets and references in docs
2026-01-28 01:45:02 +03:00
deytenit
c1642dd3a6
docs: Remove questionable doc and update initial setup
2026-01-27 23:02:40 +03:00
deytenit
bffdc3ad60
ci: Update static deploy script to copy all of the build artifacts
2026-01-27 01:47:26 +03:00
deytenit
ac5f2e23da
fix(ui): mark stl as external dependency in vite build
2026-01-27 01:42:58 +03:00
deytenit
6fc44815e7
chore: Update readme structure to refernce 'quick start' at the top
2026-01-27 01:42:00 +03:00
deytenit
e181f1da46
chore: Drop www from repo across projects
2026-01-27 01:32:23 +03:00
deytenit
b02e88fbd4
chore: Update content license terms
2026-01-27 01:26:11 +03:00
deytenit
fa977037d5
feat: Add services/static
2026-01-27 00:01:55 +03:00
deytenit
bc87ca601e
fix: Fix tailwind and type issues in www
2026-01-27 00:01:31 +03:00
deytenit
439dabc118
ci: Fix deploy script
2026-01-26 02:36:59 +03:00
deytenit
538b763d34
chore: Update license wording and docker recreate
2026-01-26 02:12:20 +03:00
deytenit
6d9c08b5f4
chore: Add license
2026-01-26 01:55:19 +03:00
deytenit
a3abb2a971
docs: Update docs structure for the monorepo setup
2026-01-26 01:37:10 +03:00
deytenit
5b0c647d20
feat(ci): add certbot deployment script with cloudflare dns support
2026-01-26 01:20:28 +03:00
deytenit
fba2412f52
ci: Update cert location in deploy
2026-01-25 22:22:54 +03:00
deytenit
1f634d2911
ci: Set names for networks in deploy
2026-01-25 22:06:05 +03:00
deytenit
40d0960d54
ci: Update nginx version and docs image in deploy
2026-01-25 22:03:56 +03:00
deytenit
a187da9553
feat: Add en note in docs recipies index
2026-01-25 21:55:27 +03:00
deytenit
dfd685034f
build(docs): provide git context for hugo enableGitInfo
2026-01-25 21:53:55 +03:00
deytenit
a97f80b9cc
build(docs): update hugo image to v0.154.5 and ignore build artifacts
2026-01-25 21:41:11 +03:00
deytenit
258e9ff691
feat: Add user groupadd statement in the docs
2026-01-25 21:31:49 +03:00
deytenit
2da10d8a35
ci(docs): rename deploy job and add SSH port secret
2026-01-25 21:29:39 +03:00
deytenit
effaa0abe3
fix(deploy): handle default values in script due to envsubst limitations
2026-01-25 21:06:05 +03:00
deytenit
72c9d43f8c
ci(docs): add deployment job using VPS secrets
2026-01-25 21:03:41 +03:00
deytenit
a6cbc6aa61
feat(deploy): add envsubst-based deployment script
2026-01-25 21:01:13 +03:00
deytenit
c143518119
feat(deploy): add hardened docker-compose and production nginx configs
2026-01-25 21:00:02 +03:00
deytenit
0d8a706af3
ci: Add release workflows for docs and www
2026-01-25 19:51:56 +03:00